1 00:00:00,000 --> 00:00:02,970 >> [CHWARAE CERDDORIAETH] 2 00:00:02,970 --> 00:00:14,355 3 00:00:14,355 --> 00:00:15,700 >> DAVID J. Malan: pob hawl. 4 00:00:15,700 --> 00:00:18,832 Mae hyn yn CS50, ac mae hyn yn ddechrau Wythnos 2. 5 00:00:18,832 --> 00:00:21,040 A byddwch yn cofio bod dros y ychydig wythnosau diwethaf, 6 00:00:21,040 --> 00:00:24,490 rydym wedi bod yn cyflwyno cyfrifiadur gwyddoniaeth ac, yn ei dro, rhaglennu. 7 00:00:24,490 --> 00:00:27,640 >> Ac rydym yn dechrau ar y stori ar ffurf Scratch, yr iaith graffigol 8 00:00:27,640 --> 00:00:28,990 o Lab Cyfryngau MIT'S. 9 00:00:28,990 --> 00:00:30,780 Ac yna yn fwyaf diweddar, yr wythnos diwethaf, gwnaethom 10 00:00:30,780 --> 00:00:34,450 cyflwyno higher-- yn iaith lefel is-hysbys 11 00:00:34,450 --> 00:00:36,770 fel C, rhywbeth sy'n testunol yn unig. 12 00:00:36,770 --> 00:00:39,440 Ac, yn wir, tro diwethaf i ni harchwilio o fewn y cyd-destun 13 00:00:39,440 --> 00:00:40,450 nifer o gysyniadau. 14 00:00:40,450 --> 00:00:43,010 >> Mae hyn, galw i gof, yn yr union rhaglen gyntaf buom yn edrych ar. 15 00:00:43,010 --> 00:00:45,710 Ac mae'r rhaglen hon, yn syml iawn, brintiau allan, "helo, byd." 16 00:00:45,710 --> 00:00:47,730 Ond mae cymaint yn ôl pob golwg hud yn digwydd. 17 00:00:47,730 --> 00:00:51,460 Mae #include hwn gyda cromfachau ongl hyn. 18 00:00:51,460 --> 00:00:52,170 Mae int. 19 00:00:52,170 --> 00:00:53,020 Mae (ddi-rym). 20 00:00:53,020 --> 00:00:56,330 Mae cromfachau, braces cyrliog, hanner colon, a llawer iawn mwy. 21 00:00:56,330 --> 00:00:58,480 >> Ac felly, yn cofio bod gwnaethom gyflwyno Scratch 22 00:00:58,480 --> 00:01:02,110 fel y gallem, yn ddelfrydol, gweler y gorffennol hynny cystrawen, y pethau sydd wir nid 23 00:01:02,110 --> 00:01:04,590 bob un sy'n ddeallusol ddiddorol ond yn gynnar 24 00:01:04,590 --> 00:01:07,700 yw, yn gwbl, ychydig yn anodd i lapio eich meddwl o amgylch. 25 00:01:07,700 --> 00:01:10,860 Ac, yn wir, un o'r rhai mwyaf cyffredin pethau yn gynnar mewn dosbarth rhaglennu, 26 00:01:10,860 --> 00:01:13,443 yn enwedig ar gyfer y rhai sy'n llai cyfforddus, yw cael rhwystredig oherwydd 27 00:01:13,443 --> 00:01:17,460 a baglu gan cystrawennol penodol camgymeriadau, heb sôn am gwallau rhesymegol. 28 00:01:17,460 --> 00:01:19,800 Ac felly ymhlith ein nodau heddiw, mewn gwirionedd, bydd 29 00:01:19,800 --> 00:01:23,280 fydd eich paratoi gyda rhai technegau datrys problemau ar gyfer sut y 30 00:01:23,280 --> 00:01:26,705 i ddatrys problemau eu hunain yn well ar ffurf debugging. 31 00:01:26,705 --> 00:01:29,330 A byddwch yn cofio, hefyd, fod y amgylchedd a gyflwynwyd gennym 32 00:01:29,330 --> 00:01:31,780 tro diwethaf oedd enw CS50 IDE. 33 00:01:31,780 --> 00:01:34,850 Mae hyn yn feddalwedd ar y we sy'n yn eich galluogi i raglen yn y cwmwl, 34 00:01:34,850 --> 00:01:38,450 fel petai, tra'n cadw eich holl ffeiliau gyda'i gilydd, fel yr ydym eto bydd heddiw. 35 00:01:38,450 --> 00:01:41,480 A dwyn i gof bod yn ailystyried y pynciau hyn yma, 36 00:01:41,480 --> 00:01:44,480 yn eu plith swyddogaethau, a dolenni, a newidynnau, ac ymadroddion Boole, 37 00:01:44,480 --> 00:01:45,110 ac amodau. 38 00:01:45,110 --> 00:01:49,190 Ac mewn gwirionedd ychydig yn fwy ein bod yn cyfieithu o fyd Scratch 39 00:01:49,190 --> 00:01:50,800 i fyd C. 40 00:01:50,800 --> 00:01:53,220 >> Ond mae'r adeiladu sylfaenol blociau, fel petai, 41 00:01:53,220 --> 00:01:55,150 yn wirioneddol dal i fod yr un fath yr wythnos diwethaf. 42 00:01:55,150 --> 00:01:57,900 Yn wir, rydym yn wir yn newydd gael gwahanol ddarn pos, os mynnwch. 43 00:01:57,900 --> 00:02:00,300 Yn lle hynny porffor arbed bloc, rydym yn lle hynny 44 00:02:00,300 --> 00:02:02,940 wedi printf, sef swyddogaeth hon yn C sy'n 45 00:02:02,940 --> 00:02:05,890 yn eich galluogi i argraffu rhywbeth a fformat ar y sgrin. 46 00:02:05,890 --> 00:02:07,950 Cyflwynasom y CS50 Llyfrgell, lle rydych yn 47 00:02:07,950 --> 00:02:11,420 yn awr yn eich get_char gwaredu, a get_int, a get_string, 48 00:02:11,420 --> 00:02:14,610 ac ychydig o swyddogaethau eraill fel yn dda, trwy y gallwch gael mewnbwn 49 00:02:14,610 --> 00:02:16,260 oddi wrth y defnyddiwr bysellfwrdd hun. 50 00:02:16,260 --> 00:02:20,640 Ac rydym hefyd yn cymryd golwg ar bethau fel hyn- bool, a torgoch, 51 00:02:20,640 --> 00:02:22,490 a dwbl, arnofio, int, llinyn long_long. 52 00:02:22,490 --> 00:02:25,170 Ac mae hyd yn oed mathau data eraill yn C. 53 00:02:25,170 --> 00:02:28,560 >> Mewn geiriau eraill, pan fyddwch yn datgan newidyn i storio rhywfaint o werth, 54 00:02:28,560 --> 00:02:32,600 neu pan fyddwch yn gweithredu swyddogaeth sy'n dychwelyd rhywfaint o werth, 55 00:02:32,600 --> 00:02:35,290 gallwch nodi pa math o werth sy'n cael ei. 56 00:02:35,290 --> 00:02:37,310 A yw'n llinyn, fel dilyniant o gymeriadau? 57 00:02:37,310 --> 00:02:39,490 A yw'n rif, fel cyfanrif? 58 00:02:39,490 --> 00:02:41,390 Ai pwynt arnawf gwerth, neu debyg? 59 00:02:41,390 --> 00:02:46,180 Felly, yn C, yn wahanol Scratch, rydym mewn gwirionedd Dechreuodd i bennu pa fath o ddata 60 00:02:46,180 --> 00:02:48,330 rydym yn dychwelyd neu ddefnyddio. 61 00:02:48,330 --> 00:02:51,910 >> Ond, wrth gwrs, rydym hefyd yn rhedeg i mewn rhai cyfyngiadau sylfaenol cyfrifiadurol. 62 00:02:51,910 --> 00:02:54,100 Ac yn benodol, yr iaith hon C, galw i gof 63 00:02:54,100 --> 00:02:57,070 ein bod yn cymryd golwg ar gorlif cyfanrif, y gwir amdani 64 00:02:57,070 --> 00:03:00,460 os mai dim ond gennych swm cyfyngedig o gof 65 00:03:00,460 --> 00:03:04,600 neu, yn benodol, mae nifer cyfyngedig o ddarnau, gallwch gyfrif mor uchel. 66 00:03:04,600 --> 00:03:08,460 Ac felly rydym yn edrych ar yr enghraifft hon yma lle cownter mewn awyren,, 67 00:03:08,460 --> 00:03:13,510 mewn gwirionedd, os rhedeg yn ddigon hir y byddai orlifo ac yn arwain at meddalwedd 68 00:03:13,510 --> 00:03:15,560 gwirioneddol gwall potensial corfforol. 69 00:03:15,560 --> 00:03:18,600 >> Rydym hefyd yn edrych ar fel y bo'r angen pwynt imprecision, y realiti 70 00:03:18,600 --> 00:03:22,280 hynny gyda dim ond nifer cyfyngedig o ddarnau, boed yn 32 neu 64, 71 00:03:22,280 --> 00:03:27,330 gallwch nodi cymaint o rifau ar ôl pwynt degol, ac ar ôl hynny i chi 72 00:03:27,330 --> 00:03:29,110 yn dechrau cael anfanwl. 73 00:03:29,110 --> 00:03:32,360 Felly, er enghraifft, un rhan o dair yn y byd yma, yn ein byd dynol, 74 00:03:32,360 --> 00:03:35,360 rydym yn gwybod yn unig yw nifer anfeidrol o 3s ôl y pwynt degol. 75 00:03:35,360 --> 00:03:38,820 Ond nid yw cyfrifiadur yn gallu reidrwydd yn cynrychioli nifer anfeidrol o rifau 76 00:03:38,820 --> 00:03:42,590 os mai dim ond caniatáu iddo rai swm cyfyngedig o wybodaeth. 77 00:03:42,590 --> 00:03:45,900 >> Felly, nid yn unig y gwnaethom yn eich paratoi gyda mwy o bŵer yn nhermau 78 00:03:45,900 --> 00:03:49,280 o sut y gallech chi fynegi eich hun yn fysellfwrdd o ran rhaglennu, 79 00:03:49,280 --> 00:03:51,430 rydym hefyd yn gyfyngedig beth gallwch chi ei wneud mewn gwirionedd. 80 00:03:51,430 --> 00:03:55,790 Ac yn wir, chwilod a chamgymeriadau yn gallu codi o mathau hynny o faterion. 81 00:03:55,790 --> 00:03:59,900 Ac yn wir, ymhlith y pynciau heddiw yn mynd i fod pynciau fel debugging 82 00:03:59,900 --> 00:04:03,699 ac mewn gwirionedd yn edrych o dan y cwfl ar sut mae pethau'n cael eu cyflwyno wythnos ddiwethaf 83 00:04:03,699 --> 00:04:05,490 yn cael eu rhoi ar waith mewn gwirionedd er mwyn i chi yn well 84 00:04:05,490 --> 00:04:10,530 deall y galluoedd a cyfyngiadau iaith fel C. 85 00:04:10,530 --> 00:04:14,770 >> Ac yn wir, byddwn yn edrychwch drwy'r haenau o'r symlaf o strwythur data, 86 00:04:14,770 --> 00:04:17,756 rhywbeth o'r enw arae, a oedd yn Scratch digwydd i alw "rhestr." 87 00:04:17,756 --> 00:04:19,589 Mae'n ychydig bach wahanol yn y cyd-destun. 88 00:04:19,589 --> 00:04:23,340 Ac yna byddwn hefyd yn cyflwyno un o'r cyntaf o'n problemau parth-benodol 89 00:04:23,340 --> 00:04:26,790 yn CS50, byd cryptograffiaeth, y grefft o sgrialu 90 00:04:26,790 --> 00:04:29,650 neu wrth ciphering gwybodaeth fel eich bod yn gallu anfon negeseuon cudd 91 00:04:29,650 --> 00:04:34,520 a dadgodio negeseuon cudd rhwng dau berson, A a B. 92 00:04:34,520 --> 00:04:37,490 >> Felly, cyn trosglwyddo i ni at y byd newydd, 93 00:04:37,490 --> 00:04:42,059 gadewch i ni geisio eich paratoi gyda rhai technegau y gallwch chi gael gwared ag ef 94 00:04:42,059 --> 00:04:43,850 neu leihau o leiaf rai o'r rhwystredigaethau 95 00:04:43,850 --> 00:04:46,630 eich bod yn ôl pob tebyg wedi dod ar draws dros yr wythnos diwethaf yn unig. 96 00:04:46,630 --> 00:04:50,830 Yn wir, o flaen ydych yn such-- rhai o eich problemau cyntaf yn C. Ac groes yn, 97 00:04:50,830 --> 00:04:54,010 os ydych chi fel fi, y tro cyntaf eich bod yn ceisio deipio rhaglen, 98 00:04:54,010 --> 00:04:57,330 hyd yn oed os ydych yn meddwl yn rhesymegol mae'r rhaglen yn eithaf syml, 99 00:04:57,330 --> 00:05:01,200 efallai y byddwch yn dda iawn yn taro wal, a nid yw'r compiler yn mynd i gydweithredu. 100 00:05:01,200 --> 00:05:03,940 Gwneud neu beidio chlang yn mynd i mewn gwirionedd yn gwneud eich cais. 101 00:05:03,940 --> 00:05:05,450 >> A pham y gallai hynny fod? 102 00:05:05,450 --> 00:05:07,950 Wel, gadewch i ni edrych ar, efallai, yn rhaglen syml. 103 00:05:07,950 --> 00:05:11,190 Rydw i'n mynd i fynd yn ei flaen ac arbed hyn yn ffeil o'r enw fwriadol buggy0.c, 104 00:05:11,190 --> 00:05:13,590 gan fy mod yn gwybod ei fod i yn ddiffygiol o flaen llaw. 105 00:05:13,590 --> 00:05:17,400 Ond efallai nad wyf yn sylweddoli bod os yw hyn yw'r rhaglen gyntaf neu'r ail neu'r trydydd 106 00:05:17,400 --> 00:05:18,830 fy mod mewn gwirionedd yn gwneud fy hun. 107 00:05:18,830 --> 00:05:23,820 Felly, yr wyf i'n mynd i fynd yn ei flaen a deipio allan, int prif (ddi-rym). 108 00:05:23,820 --> 00:05:28,130 Ac yna y tu mewn fy braces cyrliog, yn gyfarwydd iawn ( "hello, world-- 109 00:05:28,130 --> 00:05:30,980 slaes, n ") - a hanner colon. 110 00:05:30,980 --> 00:05:32,360 >> Rwyf wedi arbed y ffeil. 111 00:05:32,360 --> 00:05:34,850 Nawr rydw i'n mynd i fynd i lawr i fy ffenestr terfynell 112 00:05:34,850 --> 00:05:40,340 a math gwneud buggy0, oherwydd, unwaith eto, enw'r ffeil heddiw yn buggy0.c. 113 00:05:40,340 --> 00:05:43,660 Felly, yr wyf teipio gwneud buggy0, Enter. 114 00:05:43,660 --> 00:05:48,200 >> Ac, oh, diar, dwyn i gof o dro diwethaf nad oes unrhyw negeseuon gwall yn beth da. 115 00:05:48,200 --> 00:05:49,740 Felly dim allbwn yn beth da. 116 00:05:49,740 --> 00:05:52,920 Ond yma mae gen i yn glir rhyw nifer o gamgymeriadau. 117 00:05:52,920 --> 00:05:56,470 >> Felly, y llinell gyntaf o allbwn ar ôl teipio gwneud buggy0, galw i gof, 118 00:05:56,470 --> 00:05:59,540 yw allbwn weddol amleiriog chlang yn. 119 00:05:59,540 --> 00:06:02,067 O dan y cwfl, IDE CS50 ei ffurfweddu 120 00:06:02,067 --> 00:06:04,150 i ddefnyddio criw cyfan o opsiynau gyda crynhoydd hwn 121 00:06:04,150 --> 00:06:05,941 fel nad oes gennych i feddwl amdanyn nhw. 122 00:06:05,941 --> 00:06:08,840 A dyna'r cyfan y llinell gyntaf dulliau sy'n dechrau gyda chlang. 123 00:06:08,840 --> 00:06:11,720 >> Ond ar ôl hynny, y problemau yn dechrau gwneud eu hymddangosiad. 124 00:06:11,720 --> 00:06:17,390 Buggy0.c ar llinell 3, cymeriad 5, mae yna fawr, gwall coch. 125 00:06:17,390 --> 00:06:18,380 Beth yw hynny? 126 00:06:18,380 --> 00:06:23,562 Ymhlyg datgan swyddogaeth llyfrgell printf â'r math int (Etholaeth torgoch *, 127 00:06:23,562 --> 00:06:26,050 ...) [-Werror]. 128 00:06:26,050 --> 00:06:28,379 Yr wyf yn golygu, yn gyflym iawn mynd arcane iawn. 129 00:06:28,379 --> 00:06:30,170 Ac yn sicr, ar y dechrau yr olwg, nid ydym fyddai 130 00:06:30,170 --> 00:06:32,380 yn disgwyl i chi ddeall y gyfanrwydd y neges honno. 131 00:06:32,380 --> 00:06:34,213 Ac felly un o'r gwersi ar gyfer heddiw yn mynd 132 00:06:34,213 --> 00:06:36,919 i fod i geisio i hysbysiad patrymau, neu bethau tebyg, 133 00:06:36,919 --> 00:06:38,960 i wallau a allai fod gennych dod ar eu traws yn y gorffennol. 134 00:06:38,960 --> 00:06:41,335 Felly gadewch i ni tynnu ar wahân yn unig geiriau hynny sy'n edrych yn gyfarwydd. 135 00:06:41,335 --> 00:06:44,290 Mae'r mawr, gwall coch yn amlwg symbolaidd o rywbeth yn anghywir. 136 00:06:44,290 --> 00:06:47,940 >> ymhlyg datgan printf swyddogaeth llyfrgell. 137 00:06:47,940 --> 00:06:51,680 Felly hyd yn oed os nad wyf yn deall yn hollol beth ymhlyg datgan swyddogaeth llyfrgell 138 00:06:51,680 --> 00:06:54,900 fodd, y broblem yn sicr yn ymwneud â printf rhywsut. 139 00:06:54,900 --> 00:06:59,130 A ffynhonnell y mater hwnnw wedi ei wneud â datgan ei. 140 00:06:59,130 --> 00:07:02,440 >> Datgan swyddogaeth yw sôn am y tro cyntaf. 141 00:07:02,440 --> 00:07:06,210 Ac rydym yn defnyddio'r derminoleg wythnos ddiwethaf o ddatgan prototeip swyddogaeth, yn 142 00:07:06,210 --> 00:07:11,860 naill ai gydag un llinell ar ben eich ffeil eu hunain neu mewn hyn a elwir yn ffeil flaen. 143 00:07:11,860 --> 00:07:15,300 Ac yn yr hyn a wnaeth ffeil a ddywedwn yr wythnos diwethaf fod printf yw dyfyniad, 144 00:07:15,300 --> 00:07:17,080 unquote, datganodd? 145 00:07:17,080 --> 00:07:20,950 Ym mha ffeil yw ei prototeip? 146 00:07:20,950 --> 00:07:24,640 >> Felly, os ydych yn cofio, y peth cyntaf i mi teipio, mae bron pob rhaglen adeg-- diwethaf 147 00:07:24,640 --> 00:07:30,790 ac yn ddamweiniol funud yn ôl dechreuodd teipio myself-- oedd hyn un Yma-- 148 00:07:30,790 --> 00:07:38,630 hash-- #include 00:07:41,860 os wyf yn awr yn arbed y ffeil, dwi'n mynd i fynd yn ei flaen a chlirio fy sgrîn, 150 00:07:41,860 --> 00:07:44,740 a gallwch wneud hyn drwy deipio Clir, neu gallwch ddal Rheoli L, 151 00:07:44,740 --> 00:07:47,680 dim ond i glirio eich ffenestr terfynell dim ond cael gwared â rhai annibendod. 152 00:07:47,680 --> 00:07:51,370 >> Rydw i'n mynd i fynd yn ei flaen a ail-math gwneud buggy0, Enter. 153 00:07:51,370 --> 00:07:53,790 A voila, yr wyf yn dal i weld bod gorchymyn hir o chlang, 154 00:07:53,790 --> 00:07:55,470 ond does dim neges gwall y tro hwn. 155 00:07:55,470 --> 00:07:58,800 Ac yn wir, os wyf yn gwneud ./buggy0, yn union fel y tro diwethaf, 156 00:07:58,800 --> 00:08:01,860 lle mae dot yn golygu hwn cyfeiriadur, Slash unig yn golygu, 157 00:08:01,860 --> 00:08:05,040 yma hon enw'r rhaglen a bod enw'r rhaglen yn buggy0, 158 00:08:05,040 --> 00:08:07,340 Mewnbynnu, "helo, byd." 159 00:08:07,340 --> 00:08:09,440 >> Nawr, sut y gallai fod gennych gafwyd ateb hwn 160 00:08:09,440 --> 00:08:12,017 heb o reidrwydd gan gydnabod cymaint o eiriau 161 00:08:12,017 --> 00:08:14,350 fel y gwneuthum, yn sicr, ar ôl gwneud hyn am gymaint o flynyddoedd? 162 00:08:14,350 --> 00:08:18,720 Wel, yn sylweddoli y broblem yn gyntaf set, rydym yn eich cyflwyno i gorchymyn 163 00:08:18,720 --> 00:08:21,175 bod staff CS50 ei hun Ysgrifennodd enw help50. 164 00:08:21,175 --> 00:08:24,300 Ac yn wir, C yn fanyleb ar gyfer y broblem a osodwyd ar sut i ddefnyddio hyn. 165 00:08:24,300 --> 00:08:27,210 >> Ond a help50 y bôn rhaglen sy'n staff CS50 yn 166 00:08:27,210 --> 00:08:30,850 ysgrifenasoch sy'n caniatáu i redeg gorchymyn neu rhedeg rhaglen, 167 00:08:30,850 --> 00:08:36,169 ac os nad ydych yn deall ei allbwn, i basio ei allbwn i help50, 168 00:08:36,169 --> 00:08:38,890 a phryd y feddalwedd a ysgrifennodd y staff y cwrs 169 00:08:38,890 --> 00:08:42,429 Bydd yn edrych ar gynnyrch eich rhaglen linell wrth linell, cymeriad gan cymeriad. 170 00:08:42,429 --> 00:08:46,000 Ac os ydym, staff, yn cydnabod yr neges wall nad ydych yn dioddef, 171 00:08:46,000 --> 00:08:50,580 byddwn yn ceisio ysgogi chi gyda rhai cwestiynau rhethregol, gyda rhywfaint o gyngor, 172 00:08:50,580 --> 00:08:54,890 yn debyg iawn i TF neu CA neu fi fy hun Byddai gwneud yn bersonol mewn oriau swyddfa. 173 00:08:54,890 --> 00:08:58,320 >> Felly edrychwch i help50 os nad ydych yn ei wneud o reidrwydd yn cydnabod problem. 174 00:08:58,320 --> 00:09:00,790 Ond peidiwch â dibynnu arno gormod fel crutch. 175 00:09:00,790 --> 00:09:03,990 Yn sicr ceisio deall ei allbwn ac yna dysgu oddi wrtho 176 00:09:03,990 --> 00:09:07,571 fel mai dim ond unwaith neu ddwywaith ydych chi'n byth yn rhedeg help50 gyfer gwall penodol 177 00:09:07,571 --> 00:09:08,070 neges. 178 00:09:08,070 --> 00:09:10,660 Ar ôl hynny, dylech fod yn offer eich hun yn well 179 00:09:10,660 --> 00:09:13,180 i ffigwr beth ydyw mewn gwirionedd. 180 00:09:13,180 --> 00:09:14,350 >> Gadewch i ni wneud un arall yma. 181 00:09:14,350 --> 00:09:20,410 Gadewch i mi fynd yn ei flaen, ac mewn un arall ffeil byddwn yn galw buggy1.c hwn. 182 00:09:20,410 --> 00:09:23,110 Ac yn y ffeil hon rwy'n mynd i deliberately-- 183 00:09:23,110 --> 00:09:26,330 ond esgus nad wyf yn ei wneud deall pa camgymeriad Rydw i wedi gwneud. 184 00:09:26,330 --> 00:09:31,420 >> Rydw i'n mynd i fynd yn ei flaen ac yn gwneud this-- #include, ers i mi i wedi 185 00:09:31,420 --> 00:09:33,660 dysgu fy ngwers o eiliad yn ôl. 186 00:09:33,660 --> 00:09:36,220 Int prif (ddi-rym), fel o'r blaen. 187 00:09:36,220 --> 00:09:40,880 Ac yna i mewn yma dwi'n mynd i wneud llinyn s - get_string. 188 00:09:40,880 --> 00:09:43,770 A galw i gof o dro diwethaf fodd hon, hey, cyfrifiaduron, 189 00:09:43,770 --> 00:09:48,280 rhoi newidyn mi, ffoniwch mae'n s, a gwneud y math hwnnw newidyn llinyn 190 00:09:48,280 --> 00:09:50,150 felly rwy'n gallu storio un neu fwy o eiriau ynddo. 191 00:09:50,150 --> 00:09:52,191 >> Ac yna ar y dde ochr y hafalnod 192 00:09:52,191 --> 00:09:54,980 yn get_string, sydd yn swyddogaeth yn y Llyfrgell CS50 193 00:09:54,980 --> 00:09:55,980 sy'n gwneud yn union hynny. 194 00:09:55,980 --> 00:09:59,740 Mae'n cael swyddogaeth ac yna dwylo mae'n o'r dde i'r chwith. 195 00:09:59,740 --> 00:10:02,670 Felly, nid yw hyn hafalnod yn golygu "Hafal" fel y gallem feddwl mewn mathemateg. 196 00:10:02,670 --> 00:10:04,750 Mae'n golygu aseiniad o'r dde i'r chwith. 197 00:10:04,750 --> 00:10:09,640 Felly, mae hyn yn golygu, yn cymryd y llinyn o y defnyddiwr ac yn ei storio y tu mewn o s. 198 00:10:09,640 --> 00:10:10,460 >> Nawr, gadewch i ddefnyddio. 199 00:10:10,460 --> 00:10:13,820 Gadewch i mi fynd yn ei flaen yn awr ac fel ail llinell, gadewch i mi fynd yn ei flaen ac yn dweud "helo" - 200 00:10:13,820 --> 00:10:19,330 Nid yw "byd," ond "helo,% s-- sef ein dalfan, coma s, 201 00:10:19,330 --> 00:10:22,030 sef ein amrywiol, ac yna hanner colon. 202 00:10:22,030 --> 00:10:26,070 Felly os nad oeddwn yn sgriw i fyny gormod yma, mae hyn yn edrych fel cod cywir. 203 00:10:26,070 --> 00:10:28,090 >> Ac mae fy greddfau awr yw llunio iddo. 204 00:10:28,090 --> 00:10:30,400 Yr enw ar y ffeil yn buggy1.c. 205 00:10:30,400 --> 00:10:33,770 Felly, yr wyf i'n mynd i wneud gwneud buggy1, Enter. 206 00:10:33,770 --> 00:10:36,377 Ac asio-it, os nad oes hyd yn oed mwy o wallau nag o'r blaen. 207 00:10:36,377 --> 00:10:38,210 Yr wyf yn golygu, mae mwy negeseuon gwall byddai'n 208 00:10:38,210 --> 00:10:40,400 Ymddengys na llinellau gwirioneddol yn y rhaglen hon. 209 00:10:40,400 --> 00:10:42,730 >> Ond mae'r prydau parod yma yw, hyd yn oed os ydych yn llethu 210 00:10:42,730 --> 00:10:45,040 gyda dau neu dri neu pedwar mwy o negeseuon gwall, 211 00:10:45,040 --> 00:10:48,340 canolbwyntio bob amser ar yr union cyntaf o negeseuon hynny. 212 00:10:48,340 --> 00:10:52,220 O edrych ar y mwyaf top-un, sgrolio yn ôl i fyny fel y bydd angen. 213 00:10:52,220 --> 00:10:53,930 Felly dyma yr wyf yn teipio gwneud buggy1. 214 00:10:53,930 --> 00:10:55,700 Dyma bod allbwn chlang yn ôl y disgwyl. 215 00:10:55,700 --> 00:10:57,290 >> A dyma y gwall coch cyntaf. 216 00:10:57,290 --> 00:11:02,370 Defnyddio dynodwr heb ei ddatgan llinyn, oedd yr wyf yn golygu safonol mewn? 217 00:11:02,370 --> 00:11:04,260 Felly, yn safonol yw mewn gwirionedd yn rhywbeth arall. 218 00:11:04,260 --> 00:11:06,240 Mae'n cyfeirio at y defnyddiwr bysellfwrdd, yn y bôn. 219 00:11:06,240 --> 00:11:08,080 >> Ond nid dyna beth oeddwn yn ei olygu. 220 00:11:08,080 --> 00:11:11,770 Oeddwn yn ei olygu llinyn, ac yr wyf yn golygu get_string. 221 00:11:11,770 --> 00:11:16,200 Felly beth yw hi i mi anghofio i wneud y tro hwn? 222 00:11:16,200 --> 00:11:20,230 Beth sydd ar goll y tro hwn? 223 00:11:20,230 --> 00:11:23,600 Mae gen i fy #include, felly yr wyf yn cael mynediad at printf. 224 00:11:23,600 --> 00:11:26,090 >> Ond beth ddylwn i ei oes rhaid mynediad i ddim ond eto? 225 00:11:26,090 --> 00:11:29,420 Wel, yn union fel y tro diwethaf, Mae angen i mi ddweud wrth y compiler 226 00:11:29,420 --> 00:11:31,691 Chlang pa swyddogaethau hyn yn cael eu. 227 00:11:31,691 --> 00:11:33,940 Nid Get_string yn dod gyda C. Ac yn arbennig, mae'n 228 00:11:33,940 --> 00:11:38,160 nid yw'n dod yn y header ffeil,. 229 00:11:38,160 --> 00:11:40,770 Mae'n lle hynny yn dod i mewn rhywbeth ysgrifennodd y staff, 230 00:11:40,770 --> 00:11:44,176 sy'n ffeil gwahanol enwi ond enw addas. 231 00:11:44,176 --> 00:11:46,990 232 00:11:46,990 --> 00:11:50,861 >> Felly syml drwy ychwanegu fod un llinell o adalw code-- o dro diwethaf 233 00:11:50,861 --> 00:11:53,610 pan chlang yn rhedeg, mae'n mynd i edrych ar fy cod top i'r gwaelod, 234 00:11:53,610 --> 00:11:54,193 o'r chwith i'r dde. 235 00:11:54,193 --> 00:11:57,200 Mae'n mynd i hysbysiad, oh, rydych am. 236 00:11:57,200 --> 00:11:59,900 Gadewch i mi fynd a dod o hyd hynny, lle bynnag y mae ar y gweinydd, 237 00:11:59,900 --> 00:12:03,090 adysgrifia a bastio iddo, yn ei hanfod, i ben eich ffeil eich hun 238 00:12:03,090 --> 00:12:06,820 fel eu bod yn y fan hon yn y stori, llinell 1, gweddill y rhaglen 239 00:12:06,820 --> 00:12:11,651 Gall, yn wir, yn defnyddio unrhyw un o'r swyddogaethau ynddo, yn eu plith get_string. 240 00:12:11,651 --> 00:12:13,650 Felly, yr wyf i'n mynd i anwybyddu gweddill gwallau hynny, 241 00:12:13,650 --> 00:12:17,190 oherwydd fy mod, yn wir, yn amau ​​mai dim ond yr un cyntaf mewn gwirionedd yn bwysig. 242 00:12:17,190 --> 00:12:20,780 Ac yr wyf i'n mynd i fynd yn ei flaen ac ailgynnal, ar ôl arbed fy ffeil yn gwneud buggy1. 243 00:12:20,780 --> 00:12:22,580 Ac voila, yr oedd y gwaith. 244 00:12:22,580 --> 00:12:29,200 Ac os wyf yn gwneud ./buggy1 a deipio i mewn, i enghraifft, Zamyla, yr wyf yn awr yn cael helo, 245 00:12:29,200 --> 00:12:32,000 Zamyla, yn hytrach na helo, byd. 246 00:12:32,000 --> 00:12:32,550 >> Iawn. 247 00:12:32,550 --> 00:12:35,890 Felly mae'r siopau cludfwyd yma wedyn yn mynd i, un, ceisiwch i gywain cymaint ag y gallwch 248 00:12:35,890 --> 00:12:39,140 o'r negeseuon gwall ei ben ei hun, yn edrych ar rai o'r geiriau adnabyddadwy. 249 00:12:39,140 --> 00:12:43,070 Gwahardd hynny, defnyddiwch help50 fesul y broblem a osodwyd fanyleb. 250 00:12:43,070 --> 00:12:46,500 Ond gwahardd hynny, hefyd, bob amser yn edrych ar y gwall uchaf yn unig, o leiaf 251 00:12:46,500 --> 00:12:50,051 i ddechrau, i weld pa wybodaeth gallai cynnyrch mewn gwirionedd. 252 00:12:50,051 --> 00:12:52,300 Ond mae'n troi allan yno yn hyd yn oed mwy ymarferoldeb a adeiladwyd 253 00:12:52,300 --> 00:12:55,030 i mewn i'r llyfrgell CS50 i helpu rydych yn gynnar yn y semester 254 00:12:55,030 --> 00:12:57,580 ac yn gynnar yn rhaglennu chyfrif i maes beth sy'n mynd o'i le. 255 00:12:57,580 --> 00:12:59,840 Felly gadewch i ni wneud esiampl arall yma. 256 00:12:59,840 --> 00:13:04,350 Rydw i'n mynd i alw buggy2 hwn, sydd, unwaith eto, yn mynd i fod yn ddiffygiol allan 257 00:13:04,350 --> 00:13:05,650 y porth, drwy ddylunio. 258 00:13:05,650 --> 00:13:09,980 >> Ac yr wyf i'n mynd i fynd yn ei flaen a gwneud #include. 259 00:13:09,980 --> 00:13:12,580 Ac yna dwi'n mynd i wneud int prif (ddi-rym). 260 00:13:12,580 --> 00:13:14,840 Ac yna dwi'n mynd i wneud am ddolen. 261 00:13:14,840 --> 00:13:16,690 Ar gyfer (int i _ 0. 262 00:13:16,690 --> 00:13:18,750 ff yn llai na neu'n hafal i 10. 263 00:13:18,750 --> 00:13:24,260 ff ++, ac yna yn braces cyrliog, dwi'n mynd i argraffu dim ond symbol hashtag yma 264 00:13:24,260 --> 00:13:25,920 ac yn gymeriad llinell newydd. 265 00:13:25,920 --> 00:13:29,220 >> Felly fy bwriad gyda hyn rhaglen yn eithaf syml, 266 00:13:29,220 --> 00:13:33,150 i ailadrodd 10 gwaith ac ar bob iteriad 267 00:13:33,150 --> 00:13:35,260 o'r ddolen bob tro drwy'r cylch, 268 00:13:35,260 --> 00:13:37,660 argraffu hashtag, yn hashtag, mae hashtag. 269 00:13:37,660 --> 00:13:40,480 Un i bob llinell oherwydd fy mod yn yn cael y llinell newydd yno. 270 00:13:40,480 --> 00:13:42,787 A dwyn i gof bod y ar gyfer dolen, fesul week-- diwethaf 271 00:13:42,787 --> 00:13:44,620 a byddwch yn cael mwy o gyfarwydd â'r gystrawen 272 00:13:44,620 --> 00:13:47,170 drwy ei ddefnyddio ag arferion cyn long-- mae hyn yn rhoi i mi 273 00:13:47,170 --> 00:13:49,740 newidyn enw i ac yn gosod i 0. 274 00:13:49,740 --> 00:13:52,650 >> Mae hyn yn cynnyddu ff ar pob iteriad erbyn 1. 275 00:13:52,650 --> 00:13:54,940 Felly, fi yn mynd at 1 i 2 i 3. 276 00:13:54,940 --> 00:13:57,690 Ac yna y cyflwr hwn yn y canol rhwng y hanner colon 277 00:13:57,690 --> 00:14:03,010 yn cael eu gwirio ar bob iteriad i wneud yn siŵr ein bod yn dal i fod o fewn yr ystod. 278 00:14:03,010 --> 00:14:06,830 Felly, yr wyf yn awyddus i ailadrodd 10 gwaith, felly rwy'n rhaid i reddfol fath o iawn yn unig 279 00:14:06,830 --> 00:14:09,070 rhoi 10 fel fy uchaf rhwymo yno. 280 00:14:09,070 --> 00:14:14,310 >> Ac eto, pan fyddaf yn rhedeg hyn, ar ôl llunio gyda gwneud buggy2-- 281 00:14:14,310 --> 00:14:15,440 ac mae'n llunio OK. 282 00:14:15,440 --> 00:14:17,980 Felly, nid oes gennyf cystrawen gwall y tro hwn. 283 00:14:17,980 --> 00:14:20,940 Gadewch i mi fynd yn ei flaen yn awr a rhedeg buggy2, Enter. 284 00:14:20,940 --> 00:14:22,620 Ac yn awr sgrolio i fyny. 285 00:14:22,620 --> 00:14:24,890 A gadewch i mi gynyddu maint y ffenestr. 286 00:14:24,890 --> 00:14:33,720 >> Yr wyf yn ymddangos i gael 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11. 287 00:14:33,720 --> 00:14:38,891 Felly mae 11 o hashtags, er bod Rwyf yn amlwg yn rhoi 10 tu mewn dolen hwn. 288 00:14:38,891 --> 00:14:42,140 Yn awr, efallai y bydd rhai ohonoch yn gweld ar unwaith beth y gwall yw oherwydd, yn wir, mae hyn yn 289 00:14:42,140 --> 00:14:43,720 Nid yw gwall galed iawn i wneud. 290 00:14:43,720 --> 00:14:46,070 Ond mae'n gyffredin iawn gwneud yn gynnar iawn ar. 291 00:14:46,070 --> 00:14:49,820 >> Yr hyn yr wyf am dynnu sylw, fodd bynnag, yw, sut y gallai Rwy'n ffigur hwn allan? 292 00:14:49,820 --> 00:14:52,300 Wel, mae'n ymddangos fod daw'r Llyfrgell CS50 293 00:14:52,300 --> 00:14:55,380 nid yn unig gyda get_string a get_int a get_float a swyddogaethau eraill. 294 00:14:55,380 --> 00:14:59,980 Mae hefyd yn dod gyda swyddogaeth arbennig Gelwir eprintf, neu, gwall printf. 295 00:14:59,980 --> 00:15:03,270 Ac mae'n bodoli yn gyfan gwbl i wneud ei fod yn ychydig yn haws i chi 296 00:15:03,270 --> 00:15:06,310 pan debugging eich cod i ychydig argraffu neges gwall ar y sgrîn 297 00:15:06,310 --> 00:15:07,850 ac yn gwybod o ble y daeth. 298 00:15:07,850 --> 00:15:11,000 >> Felly, er enghraifft, un peth wyf yn gallai wneud yma gyda swyddogaeth hon yn this-- 299 00:15:11,000 --> 00:15:20,230 eprintf, ac yna dwi'n mynd i fynd yn ei flaen ac yn dweud fi yn awr% i, slaes, n. 300 00:15:20,230 --> 00:15:22,330 Ac yr wyf i'n mynd i plwg yn werth i. 301 00:15:22,330 --> 00:15:25,400 A hyd top, gan fod hyn yn y Llyfrgell CS50, 302 00:15:25,400 --> 00:15:27,580 Rydw i'n mynd i fynd yn ei flaen ac maent yn cynnwys 303 00:15:27,580 --> 00:15:29,169 felly yr wyf yn cael mynediad at y swyddogaeth hon. 304 00:15:29,169 --> 00:15:31,460 Ond gadewch i ni ystyried pa linell 9 i fod i fod yn ei wneud. 305 00:15:31,460 --> 00:15:32,670 Rydw i'n mynd i ddileu'r hyn yn y pen draw. 306 00:15:32,670 --> 00:15:34,670 Mae hyn wedi ddim i'w wneud gyda fy nod trosfwaol. 307 00:15:34,670 --> 00:15:39,090 Ond eprintf, gwall printf, yn unig a olygir i roi rhywfaint o wybodaeth ddiagnostig mi. 308 00:15:39,090 --> 00:15:42,460 Pan fyddaf yn rhedeg fy rhaglen, yr wyf am gweld hyn ar y sgrin dros dro 309 00:15:42,460 --> 00:15:44,550 yn ogystal dim ond er mwyn deall beth sy'n Digwydd. 310 00:15:44,550 --> 00:15:47,330 >> Ac, yn wir, ar bob un ailadrodd yma o linell 9 311 00:15:47,330 --> 00:15:49,260 Rwyf am weld, beth yw gwerth i? 312 00:15:49,260 --> 00:15:50,290 Beth yw gwerth i? 313 00:15:50,290 --> 00:15:51,280 Beth yw gwerth i? 314 00:15:51,280 --> 00:15:55,650 A, gobeithio, yr wyf yn unig y dylai gweld bod neges, hefyd, 10 gwaith. 315 00:15:55,650 --> 00:15:57,780 >> Felly, gadewch i mi fynd yn ei flaen ac ail-grynhoi fy rhaglen, 316 00:15:57,780 --> 00:15:59,905 fel y rhaid i mi wneud unrhyw bryd Rwy'n gwneud newid. ./buggy2. 317 00:15:59,905 --> 00:16:02,680 318 00:16:02,680 --> 00:16:03,640 Ac yn now-- OK. 319 00:16:03,640 --> 00:16:04,820 Mae llawer mwy yn mynd ymlaen. 320 00:16:04,820 --> 00:16:07,610 Felly gadewch i mi sgrolio i fyny mewn ffenestr hyd yn oed yn fwy. 321 00:16:07,610 --> 00:16:10,190 >> A byddwch yn gweld bod pob un o'r hashtags yn dal i argraffu. 322 00:16:10,190 --> 00:16:15,270 Ond ym rhwng pob un ohonynt yn awr mae hyn allbwn diagnostig fformatio fel a ganlyn. 323 00:16:15,270 --> 00:16:17,960 Mae'r enw fy rhaglen yma yn buggy2. 324 00:16:17,960 --> 00:16:20,432 Mae enw'r ffeil yn buggy2.c. 325 00:16:20,432 --> 00:16:24,080 Y rhif llinell y mae hon gael ei hargraffu yn llinell 9. 326 00:16:24,080 --> 00:16:27,500 Ac yna ar y dde o'r dyna'r neges gwall fy mod i'n disgwyl. 327 00:16:27,500 --> 00:16:30,701 >> A beth sy'n neis am hyn yw bod Nid yn awr mae'n rhaid i mi o reidrwydd yn cyfrif 328 00:16:30,701 --> 00:16:32,200 yn fy mhen beth yw fy rhaglen yn ei wneud. 329 00:16:32,200 --> 00:16:34,240 Gallaf weld bod ar y iteriad cyntaf i yw 0, 330 00:16:34,240 --> 00:16:39,420 Yna 1, yna 2, yna 3, yna 4, yna 5, yna 6, yna 7, yna 8, yna 9, yna 331 00:16:39,420 --> 00:16:40,980 10. 332 00:16:40,980 --> 00:16:42,050 Felly arhoswch funud. 333 00:16:42,050 --> 00:16:43,740 Beth sy'n mynd ymlaen fan hyn? 334 00:16:43,740 --> 00:16:48,190 Rwy'n dal i ymddangos i fod yn cyfrif yn ôl y bwriad hyd at 10. 335 00:16:48,190 --> 00:16:50,550 >> Ond ble wnes i ddechrau? 336 00:16:50,550 --> 00:16:53,240 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 10. 337 00:16:53,240 --> 00:16:58,040 Felly 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10-- y bys 11eg 338 00:16:58,040 --> 00:16:59,990 yn arwydd o'r broblem. 339 00:16:59,990 --> 00:17:02,850 Rwyf yn ymddangos i wedi cyfrif anghywir yn fy ddolen. 340 00:17:02,850 --> 00:17:06,599 Yn hytrach na mynd 10 iteriadau, Rwy'n dechrau ar 0, 341 00:17:06,599 --> 00:17:09,550 Im 'yn dod i ben am a thrwy 10. 342 00:17:09,550 --> 00:17:12,030 Ond oherwydd, fel cyfrifiadur, Dwi'n dechrau cyfrif ar 0, 343 00:17:12,030 --> 00:17:15,250 dylwn i fod yn gyfrif i fyny i, ond nid trwy, 10. 344 00:17:15,250 --> 00:17:18,510 >> Ac felly y atgyweiria, yr wyf yn y pen draw gwireddu yma, yn un o ddau beth. 345 00:17:18,510 --> 00:17:22,430 Gallwn yn syml iawn dweud yn cyfrif hyd at lai na 10. 346 00:17:22,430 --> 00:17:27,260 Felly 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, sef, yn wir, yn gywir, 347 00:17:27,260 --> 00:17:28,900 hyd yn oed er ei fod yn swnio'n braidd yn anghywir. 348 00:17:28,900 --> 00:17:35,070 Neu gallwn i wneud llai na neu'n hafal i 9, cyhyd ag y byddaf yn dechrau ar 0. 349 00:17:35,070 --> 00:17:40,056 Neu os ydych ddim wir yn hoffi hynny, byddwch yn yn gallu cyfrif i fyny trwy 10 ond yn dechrau am 1. 350 00:17:40,056 --> 00:17:41,680 Ond unwaith eto, mae hyn yn unig nid yw hynny'n gyffredin. 351 00:17:41,680 --> 00:17:43,977 Yn programming-- er nid cymaint yn Scratch-- 352 00:17:43,977 --> 00:17:45,810 ond mewn rhaglenni mewn C ac ieithoedd eraill, 353 00:17:45,810 --> 00:17:47,670 fel JavaScript a Python ac eraill, mae'n 354 00:17:47,670 --> 00:17:49,880 jyst gyffredin iawn i ein trafodaeth ar deuaidd 355 00:17:49,880 --> 00:17:53,450 i dim ond dechrau cyfrif yn y nifer isaf gallwch, sef 0. 356 00:17:53,450 --> 00:17:53,950 Iawn. 357 00:17:53,950 --> 00:17:55,160 Felly dyna eprintf. 358 00:17:55,160 --> 00:17:58,600 Ac eto, yn awr fy mod i wedi cyfrifedig allan fy broblem, ac yr wyf i'n mynd i fynd yn ôl i 0 359 00:17:58,600 --> 00:18:01,470 drwy llai na 10, dwi'n mynd i fynd i mewn a dileu eprintf. 360 00:18:01,470 --> 00:18:04,580 >> ni ddylai fod yn yno pan fyddaf yn llong fy cod neu gyflwyno fy cod 361 00:18:04,580 --> 00:18:05,800 neu ddangos i unrhyw un arall. 362 00:18:05,800 --> 00:18:07,980 Mae wedi wirioneddol yn unig yn golygu i gael ei ddefnyddio dros dro. 363 00:18:07,980 --> 00:18:11,650 Ond yn awr yr wyf i wedi sefydlog hyn broblem arbennig yn ogystal. 364 00:18:11,650 --> 00:18:16,780 >> Wel, gadewch i ni wneud un enghraifft mwy yma fy mod i'n mynd i chwip i fyny fel a ganlyn. 365 00:18:16,780 --> 00:18:22,850 Rydw i'n mynd i fynd yn ei flaen a #include. $ 50 366 00:18:22,850 --> 00:18:25,580 Ac yr wyf i'n mynd i fynd yn ei flaen a #include. 367 00:18:25,580 --> 00:18:29,030 >> Ac yr wyf i'n mynd i achub y ffeil fel buggy3.c. 368 00:18:29,030 --> 00:18:31,740 Ac yr wyf i'n mynd i fynd yn ei flaen a datgan int prif (ddi-rym). 369 00:18:31,740 --> 00:18:34,186 Ac yna y tu mewn o yno Rydw i'n mynd i wneud int i _ - 370 00:18:34,186 --> 00:18:36,435 Rwyf am i weithredu rhaglen gyda get_negative_int. 371 00:18:36,435 --> 00:18:39,146 372 00:18:39,146 --> 00:18:40,770 Nid yw hon yn swyddogaeth sy'n bodoli eto. 373 00:18:40,770 --> 00:18:42,870 Felly, rydym yn mynd i weithredu mewn dim ond hyn o bryd. 374 00:18:42,870 --> 00:18:45,541 Ond rydym yn mynd i weld pam mae'n bygi yn pasio cyntaf. 375 00:18:45,541 --> 00:18:47,290 Ac unwaith y byddaf wedi gotten mae int gan y defnyddiwr, 376 00:18:47,290 --> 00:18:53,365 Im 'jyst yn mynd i argraffu% ff yn negyddol cyfanrif, slaes, n, coma, i. 377 00:18:53,365 --> 00:18:55,240 Mewn geiriau eraill, yr wyf yn gyd am i'r rhaglen hon i wneud 378 00:18:55,240 --> 00:18:58,000 yn cael int negyddol o y defnyddiwr ac yna argraffu 379 00:18:58,000 --> 00:18:59,980 bod y fath ac o'r fath yn int negyddol. 380 00:18:59,980 --> 00:19:02,080 >> Nawr mae angen i mi roi'r swyddogaeth hon. 381 00:19:02,080 --> 00:19:05,740 Felly nes ymlaen yn fy ffeil, dw i'n mynd i fynd ymlaen a datgan swyddogaeth o'r enw 382 00:19:05,740 --> 00:19:10,670 get_negative_int (gwagle) - ac fe wnawn ni yn dod yn ôl at yr hyn y llinell olygu eto 383 00:19:10,670 --> 00:19:18,790 mewn int moment-- n; do-- do y printf canlynol-- n yw :. 384 00:19:18,790 --> 00:19:26,210 Ac yna dwi'n mynd i wneud n - get_int, ac wneud hyn tra'n n yn fwy na 0. 385 00:19:26,210 --> 00:19:28,310 Ac yna dychwelyd n ;. 386 00:19:28,310 --> 00:19:31,730 >> Felly mae llawer yn digwydd yn hyn, ond nid oes yr un nad wnaethom 387 00:19:31,730 --> 00:19:33,710 edrych ar yr wythnos diwethaf, o leiaf yn fyr. 388 00:19:33,710 --> 00:19:36,980 Felly, ar llinell 10 yma rwyf wedi datgan swyddogaeth a elwir yn get_negative_int, 389 00:19:36,980 --> 00:19:39,620 ac rydw i wedi rhoi (yn ddi-rym), yn cromfachau, y rheswm, mae hyn yn 390 00:19:39,620 --> 00:19:40,950 nid yw'n cymryd mewnbwn. 391 00:19:40,950 --> 00:19:42,910 Dydw i ddim yn pasio unrhyw beth i swyddogaeth hon. 392 00:19:42,910 --> 00:19:44,690 Im 'jyst yn cael rhywbeth yn ôl oddi wrtho. 393 00:19:44,690 --> 00:19:47,270 >> A hyn yr wyf i'n gobeithio fynd yn ôl yn gyfanrif. 394 00:19:47,270 --> 00:19:50,040 Nid oes unrhyw fath o ddata yn C a elwir negative_int. 395 00:19:50,040 --> 00:19:52,880 'I' jyst int, felly mae'n mynd i fod arnom i wneud yn siŵr 396 00:19:52,880 --> 00:19:55,340 bod y gwerth sy'n mewn gwirionedd Nid yn unig ddychwelwyd yn cael ei yn int 397 00:19:55,340 --> 00:19:56,380 ond hefyd yn negyddol. 398 00:19:56,380 --> 00:20:02,150 >> Ar llinell 12 Rydw i'n datgan newidyn Gelwir n a'i gwneud yn o int fath. 399 00:20:02,150 --> 00:20:07,500 Ac yna, yn unol 13 trwy 18 Rwy'n gwneud rhywbeth tra bod rhywbeth yn wir. 400 00:20:07,500 --> 00:20:11,040 Rydw i'n mynd yn ei flaen ac argraffu n yw, colon, ac yna yn lle, 401 00:20:11,040 --> 00:20:12,800 fel prydlon ar gyfer y defnyddiwr. 402 00:20:12,800 --> 00:20:16,410 >> Yna, rwy'n galw get_int a storio ei hyn a elwir yn werth dychwelyd 403 00:20:16,410 --> 00:20:18,130 yn y newidyn n. 404 00:20:18,130 --> 00:20:22,600 Ond dw i'n mynd i barhau i wneud tra bod y n yn fwy na 0. 405 00:20:22,600 --> 00:20:27,960 Mewn geiriau eraill, os yw'r defnyddiwr yn rhoi i mi yn int ac mae'r nifer yn fwy na 0, 406 00:20:27,960 --> 00:20:31,180 ergo, cadarnhaol, dw i'n mynd i jyst cadw reprompting y defnyddiwr, 407 00:20:31,180 --> 00:20:37,160 cadw reprompting, drwy eu gorfodi i cydweithredu ac yn rhoi int negyddol mi. 408 00:20:37,160 --> 00:20:41,640 >> Ac unwaith n mewn gwirionedd negative-- Mae'n debyg y defnyddiwr yn olaf mathau -50, 409 00:20:41,640 --> 00:20:46,710 Yna, nid yw hyn dolen tra yn wir oherwydd -50 ddim yn fwy na 0. 410 00:20:46,710 --> 00:20:51,140 Felly, rydym yn torri allan o hynny dolen yn rhesymegol ac yn dychwelyd n. 411 00:20:51,140 --> 00:20:53,520 >> Ond mae un arall beth mae'n rhaid i mi ei wneud. 412 00:20:53,520 --> 00:20:56,190 A allaf wneud hyn yn syml trwy gopïo a gludo 413 00:20:56,190 --> 00:20:58,540 un llinell o god ar frig y ffeil. 414 00:20:58,540 --> 00:21:01,630 angen i mi ddysgu chlang, neu addewid i chlang, 415 00:21:01,630 --> 00:21:04,630 yn benodol y byddaf, yn wir, ewch a gweithredu 416 00:21:04,630 --> 00:21:06,020 hwn get_negative_int swyddogaeth. 417 00:21:06,020 --> 00:21:07,674 efallai y bydd yn fod yn is yn y ffeil. 418 00:21:07,674 --> 00:21:09,840 Unwaith eto, dwyn i gof bod chlang darllen pethau top i'r gwaelod, 419 00:21:09,840 --> 00:21:12,330 o'r chwith i'r dde, felly ni allwch ffoniwch swyddogaeth os chlang 420 00:21:12,330 --> 00:21:15,330 nid yw'n gwybod ei fod yn mynd i fodoli. 421 00:21:15,330 --> 00:21:18,430 >> Yn awr, yn anffodus, mae'r rhaglen hon, fel y gallai rhai ohonoch wedi sylwi, 422 00:21:18,430 --> 00:21:19,590 eisoes yn bygi. 423 00:21:19,590 --> 00:21:21,400 Gadewch i mi fynd yn ei flaen ac yn gwneud buggy3. 424 00:21:21,400 --> 00:21:26,904 Mae'n llunio, felly mae fy broblem nid yn awr yw gwall cystrawen, fel gwall testunol, 425 00:21:26,904 --> 00:21:29,570 mewn gwirionedd mae'n mynd i fod yn rhesymegol gwall fy mod i wedi fwriadol 426 00:21:29,570 --> 00:21:32,450 wnaed fel cyfle i gamu trwy'r hyn sy'n digwydd. 427 00:21:32,450 --> 00:21:35,540 >> Rydw i'n mynd i fynd yn ei flaen yn awr ac yn rhedeg buggy3. 428 00:21:35,540 --> 00:21:37,490 Ac yr wyf i'n mynd i fynd ymlaen ac nid yn cydweithredu. 429 00:21:37,490 --> 00:21:39,494 Rydw i'n mynd i roi rhif 1. 430 00:21:39,494 --> 00:21:41,410 Nid oedd yn ei hoffi, felly mae wedi fy ysgogi eto. 431 00:21:41,410 --> 00:21:42,147 >> Beth am 2? 432 00:21:42,147 --> 00:21:43,021 3? 433 00:21:43,021 --> 00:21:43,520 50? 434 00:21:43,520 --> 00:21:44,740 Dim un o'r rheini yn gweithio. 435 00:21:44,740 --> 00:21:46,890 Beth am -50? 436 00:21:46,890 --> 00:21:48,560 Ac mae'r rhaglen yn ymddangos i weithio. 437 00:21:48,560 --> 00:21:49,970 >> Gadewch i mi roi cynnig arni unwaith eto. 438 00:21:49,970 --> 00:21:53,400 Gadewch i mi roi cynnig -1, ymddangos i weithio. 439 00:21:53,400 --> 00:21:56,380 Gadewch i mi roi cynnig -2, ymddangos i weithio. 440 00:21:56,380 --> 00:21:59,640 Gadewch i mi roi cynnig ar 0. 441 00:21:59,640 --> 00:22:01,684 Huh, dyna anghywir. 442 00:22:01,684 --> 00:22:03,350 Nawr, rydym yn cael ychydig yn bedantig yma. 443 00:22:03,350 --> 00:22:07,090 Ond mae'n, yn wir, yn wir bod 0 oes na yn gadarnhaol nac yn negyddol. 444 00:22:07,090 --> 00:22:11,150 Ac felly y ffaith bod fy rhaglen yn yn dweud bod 0 yn gyfanrif negatif, 445 00:22:11,150 --> 00:22:12,820 nid yw hynny'n dechnegol gywir. 446 00:22:12,820 --> 00:22:15,180 >> Yn awr, pam y mae'n gwneud hyn? 447 00:22:15,180 --> 00:22:16,270 Wel, gallai fod yn amlwg. 448 00:22:16,270 --> 00:22:18,110 Ac, yn wir, mae'r rhaglen yn i fod i fod yn weddol syml 449 00:22:18,110 --> 00:22:19,670 felly gennym rywbeth i archwilio. 450 00:22:19,670 --> 00:22:25,870 >> Ond gadewch i ni gyflwyno trydydd debugging dechneg a elwir yn yma debug50. 451 00:22:25,870 --> 00:22:27,750 Felly, mae hyn yn rhaglen ein bod ni newydd ei greu 452 00:22:27,750 --> 00:22:30,770 blwyddyn gelwir hyn debug50 a fydd yn caniatáu i chi 453 00:22:30,770 --> 00:22:34,130 i ddefnyddio'r hyn a elwir yn adeiledig yn debugger graffigol yn IDE CS50. 454 00:22:34,130 --> 00:22:38,400 Ac mae dadnamydd yn unig yw rhaglen sy'n Yn gyffredinol, yn gadael i chi redeg eich rhaglen 455 00:22:38,400 --> 00:22:44,050 ond gam wrth gam wrth gam, llinell drwy linell wrth linell, gan oedi, procio 456 00:22:44,050 --> 00:22:47,626 o gwmpas, gan edrych ar newidynnau fel bod Nid yw'r rhaglen yn unig chwythu heibio i chi 457 00:22:47,626 --> 00:22:49,750 ac yn gyflym argraffu rhywbeth neu beidio argraffu rhywbeth. 458 00:22:49,750 --> 00:22:53,250 Mae'n rhoi cyfle i chi, yn cyflymder dynol, i ryngweithio ag ef. 459 00:22:53,250 --> 00:22:55,470 >> Ac i wneud hyn, byddwch yn syml, yn gwneud y canlynol. 460 00:22:55,470 --> 00:22:58,479 Ar ôl llunio eich cod, yr wyf yn gwneud yn barod, buggy3, 461 00:22:58,479 --> 00:23:00,020 byddwch yn mynd yn ei flaen ac yn rhedeg debug50 ./buggy. 462 00:23:00,020 --> 00:23:03,460 463 00:23:03,460 --> 00:23:06,760 Felly yn debyg help50 ganddo ydych yn rhedeg help50 ac yna bydd y gorchymyn, 464 00:23:06,760 --> 00:23:10,120 debug50 Mae gan y byddwch yn rhedeg debug50 a Yna enw'r gorchymyn. 465 00:23:10,120 --> 00:23:14,440 >> Nawr gwylio beth sy'n digwydd ar fy sgrin, ar yr ochr dde yn arbennig. 466 00:23:14,440 --> 00:23:19,400 Pan fyddaf yn taro Run, pob un o'r sydyn panel hwn dde 467 00:23:19,400 --> 00:23:20,419 yn agor i fyny ar y sgrin. 468 00:23:20,419 --> 00:23:22,210 Ac mae llawer yn digwydd ar ar yr olwg gyntaf. 469 00:23:22,210 --> 00:23:25,110 Ond nid oes yn rhy llawer i boeni am eto. 470 00:23:25,110 --> 00:23:28,570 >> Mae hyn yn dangos i mi bopeth sy'n mynd ymlaen y tu mewn fy rhaglen 471 00:23:28,570 --> 00:23:31,130 ar hyn o bryd a thrwy gyfrwng y rhain botymau i fyny top wedyn 472 00:23:31,130 --> 00:23:35,910 caniatáu i mi gamu drwy fy cod cam yn y pen draw wrth gam wrth gam. 473 00:23:35,910 --> 00:23:37,140 Ond nid dim ond eto. 474 00:23:37,140 --> 00:23:38,060 Sylwi ar yr hyn sy'n digwydd. 475 00:23:38,060 --> 00:23:40,600 Yn fy ffenestr terfynell Im 'yn cael eu cymell i n. 476 00:23:40,600 --> 00:23:44,560 Ac yr wyf i'n mynd i fynd yn ei flaen a gydweithredu y tro hwn a deipio i mewn -1. 477 00:23:44,560 --> 00:23:48,770 Ac er ychydig gryptig, -1 yn cyfanrif negyddol, yn ôl y disgwyl. 478 00:23:48,770 --> 00:23:52,020 >> Ac yna plentyn exited gyda statws 0 GDBserver cyffrous. 479 00:23:52,020 --> 00:23:55,180 GDB, GNU Bar offer, yw'r enw o'r meddalwedd sylfaenol 480 00:23:55,180 --> 00:23:56,620 sy'n gweithredu'r debugger hwn. 481 00:23:56,620 --> 00:24:00,500 Ond mae hyn i gyd ei olygu mewn gwirionedd, y dadnamydd mynd i ffwrdd oherwydd bod fy rhaglen rhoi'r gorau iddi 482 00:24:00,500 --> 00:24:01,710 ac roedd popeth yn dda. 483 00:24:01,710 --> 00:24:06,020 Os ydw i eisiau i wir dadfygio fy rhaglen, Mae'n rhaid i mi ddweud wrth debug50 preemptively, 484 00:24:06,020 --> 00:24:08,920 ble ydw i am ddechrau camu trwy fy cod? 485 00:24:08,920 --> 00:24:11,750 >> Ac efallai y ffordd symlaf i wneud hynny fel a ganlyn. 486 00:24:11,750 --> 00:24:15,300 Os byddaf yn hofran dros y gwter fy golygydd yma, 487 00:24:15,300 --> 00:24:19,090 felly mewn gwirionedd dim ond yn y bar ochr yma, i'r chwith y rhif llinell, 488 00:24:19,090 --> 00:24:21,870 rhybudd, os Fi jyst chlecia unwaith, yr wyf yn rhoi ychydig o dot coch. 489 00:24:21,870 --> 00:24:24,460 Ac mai ychydig dot coch, fel arwydd stop, golygu, hey, 490 00:24:24,460 --> 00:24:29,430 debug50, oedi gweithredu fy cod iawn yno pan fyddaf yn rhedeg y rhaglen hon. 491 00:24:29,430 --> 00:24:30,260 >> Felly gadewch i ni wneud hynny. 492 00:24:30,260 --> 00:24:37,340 Gadewch i mi fynd yn ei flaen ac yn rhedeg fy rhaglen eto gyda debug50 ./buggy3, Enter. 493 00:24:37,340 --> 00:24:40,110 Ac yn awr, hysbysiad, rhywbeth gwahanol wedi digwydd. 494 00:24:40,110 --> 00:24:42,440 Dydw i ddim yn cael eu hysgogi eto yn fy ffenestr terfynell 495 00:24:42,440 --> 00:24:45,430 ar gyfer unrhyw beth, gan nad wyf wedi gotten yno eto yn fy rhaglen. 496 00:24:45,430 --> 00:24:47,950 Sylwch fod ar linell 8 sydd bellach yn cael ei amlygu, 497 00:24:47,950 --> 00:24:51,720 ac mae ychydig o saeth yn ddywediad chwith, rydych yn seibio yma. 498 00:24:51,720 --> 00:24:55,030 Mae'r llinell hon o god, llinell 8, nid yw wedi cyflawni eto. 499 00:24:55,030 --> 00:24:58,940 >> A beth sy'n chwilfrydig, os wyf yn edrych dros yma ar yr ochr dde, 500 00:24:58,940 --> 00:25:03,530 sylwi bod fi yn lleol newidiol, lleol yn yr ystyr 501 00:25:03,530 --> 00:25:05,450 ei fod y tu mewn i'r swyddogaeth bresennol. 502 00:25:05,450 --> 00:25:08,920 A'i werth, yn ôl pob golwg yn ddiofyn, a math o gyfleus, yw 0. 503 00:25:08,920 --> 00:25:10,260 Ond doeddwn i ddim yn teipio 0. 504 00:25:10,260 --> 00:25:13,410 Mae hynny'n unig fydd yn digwydd i fod yn ei gwerth diofyn ar hyn o bryd. 505 00:25:13,410 --> 00:25:15,490 >> Felly, gadewch i mi fynd yn ei flaen ac yn gwneud hyn yn awr. 506 00:25:15,490 --> 00:25:18,680 Gadewch i mi fynd yn ei flaen ac ar top dde yma, rwy'n 507 00:25:18,680 --> 00:25:20,970 mynd i fynd yn ei flaen a cliciwch yma icon cyntaf sy'n 508 00:25:20,970 --> 00:25:25,360 yn golygu cam dros sy'n golygu nad oes sgip ond cam dros y llinell hon o god, 509 00:25:25,360 --> 00:25:27,770 gweithredu ar hyd y ffordd. 510 00:25:27,770 --> 00:25:30,710 >> Ac yn awr, yn sylwi, fy jyst brydlon wedi newid. 511 00:25:30,710 --> 00:25:31,380 Pam hynny? 512 00:25:31,380 --> 00:25:33,639 Rwyf wedi dweud wrth debug50, rhedeg y llinell hon o god. 513 00:25:33,639 --> 00:25:34,930 Beth mae llinell hon o god yn ei wneud? 514 00:25:34,930 --> 00:25:35,960 Ysgogi i mi am int. 515 00:25:35,960 --> 00:25:36,460 IAWN. 516 00:25:36,460 --> 00:25:37,400 Gadewch i mi gydweithio. 517 00:25:37,400 --> 00:25:41,340 Gadewch i mi fynd yn ei flaen yn awr a math -1, Enter. 518 00:25:41,340 --> 00:25:42,920 Ac yn awr sylwi ar beth sydd wedi newid. 519 00:25:42,920 --> 00:25:46,060 Ar yr ochr dde, fy newidyn lleol i 520 00:25:46,060 --> 00:25:48,200 Dangosir bod -1 nawr. 521 00:25:48,200 --> 00:25:49,810 Ac mae'n dal i fod o int fath. 522 00:25:49,810 --> 00:25:53,102 >> A rhybudd, hefyd, fy hyn a elwir yn ffoniwch stac, lle wnes i oedi? 523 00:25:53,102 --> 00:25:54,810 Byddwn yn siarad mwy am hwn yn y dyfodol. 524 00:25:54,810 --> 00:25:58,620 Ond mae'r pentwr alwad yn unig yn cyfeirio at yr hyn swyddogaethau ar hyn o bryd yn symud. 525 00:25:58,620 --> 00:26:00,040 Ar hyn o bryd dim ond prif. 526 00:26:00,040 --> 00:26:03,590 Ac yn hyn o bryd yr unig lleol newidyn yn fi gyda gwerth o 1. 527 00:26:03,590 --> 00:26:09,840 >> A phan wyf o'r diwedd cam dros y llinell hon yma, gyda'r un eicon ar dde uchaf, 528 00:26:09,840 --> 00:26:11,410 -1 Yw cyfanrif negyddol. 529 00:26:11,410 --> 00:26:13,580 Nawr mae'n oedi dros y brês cyrliog. 530 00:26:13,580 --> 00:26:14,740 Gadewch i ni gadael iddo wneud ei beth. 531 00:26:14,740 --> 00:26:17,300 Yr wyf yn camu dros y llinell, a voila. 532 00:26:17,300 --> 00:26:20,240 >> Felly nid bob un sy'n ofnadwy goleuo eto, 533 00:26:20,240 --> 00:26:23,550 ond oedd yn gadael i mi oedi a meddwl yn rhesymegol drwy 534 00:26:23,550 --> 00:26:24,870 beth mae'r rhaglen hon yn ei wneud. 535 00:26:24,870 --> 00:26:26,890 Ond nid oedd hynny'n wir wallus. 536 00:26:26,890 --> 00:26:28,510 Gadewch i ni wneud hyn eto fel a ganlyn. 537 00:26:28,510 --> 00:26:31,340 >> Rydw i'n mynd i adael y torbwynt ar-lein 8 gyda'r dot coch. 538 00:26:31,340 --> 00:26:32,830 Rydw i'n mynd i ailgynnal debug50. 539 00:26:32,830 --> 00:26:34,400 Mae'n seibio yma yn awtomatig. 540 00:26:34,400 --> 00:26:37,660 Ond y tro hwn, yn hytrach na camu dros y llinell hon, 541 00:26:37,660 --> 00:26:42,290 gadewch i mi mewn gwirionedd yn mynd y tu mewn o get_negative_int a chyfrif i maes, 542 00:26:42,290 --> 00:26:45,530 pam ei fod yn derbyn 0 fel ateb ddilys? 543 00:26:45,530 --> 00:26:47,990 >> Felly, yn lle glicio Cam Over. 544 00:26:47,990 --> 00:26:50,630 Rydw i'n mynd i fynd yn ei flaen a chliciwch Cam Into. 545 00:26:50,630 --> 00:26:54,030 Ac yn sylwi bod y llinell 8 dyna Amlygodd awr yn awr yn sydyn 546 00:26:54,030 --> 00:26:56,900 yn dod yn llinell 17. 547 00:26:56,900 --> 00:26:59,947 >> Nawr, nid yw'n bod y dadnamydd wedi hepgor llinellau 14 a 15 ac 16. 548 00:26:59,947 --> 00:27:01,780 'I' jyst does dim byd i ddangos i chi yno. 549 00:27:01,780 --> 00:27:04,050 Mae'r rhai yn cael eu dim ond datgan newidynnau, ac yna mae 'y gair Gwneud 550 00:27:04,050 --> 00:27:05,390 ac yna brês cyrliog agored. 551 00:27:05,390 --> 00:27:09,227 Yr unig linell swyddogaethol sy'n llawn sudd wir yn yr un yma yma, 17. 552 00:27:09,227 --> 00:27:11,060 A dyna lle rydym wedi seibio yn awtomatig. 553 00:27:11,060 --> 00:27:13,870 >> Felly printf ( "n.is:") ;, felly Nid yw hynny wedi digwydd eto. 554 00:27:13,870 --> 00:27:18,250 Felly gadewch i ni fynd yn ei flaen a chliciwch Camu Dros. 555 00:27:18,250 --> 00:27:20,326 Nawr fy brydlon, yn wir, newid i ( "n yw:"). 556 00:27:20,326 --> 00:27:22,450 Nawr get_int, dydw i ddim yn mynd trafferthu camu i mewn i, 557 00:27:22,450 --> 00:27:24,750 oherwydd dyna swyddogaeth oedd a wnaed gan CS50 yn y Llyfrgell. 558 00:27:24,750 --> 00:27:25,750 Mae'n debyg gywir. 559 00:27:25,750 --> 00:27:28,440 >> Felly, yr wyf i'n mynd i fynd yn ei flaen a fath o gydweithredu drwy roi ei 560 00:27:28,440 --> 00:27:30,590 yn int, ond nid yw int negyddol. 561 00:27:30,590 --> 00:27:32,870 Felly, gadewch i mi fynd yn ei flaen a tharo 0. 562 00:27:32,870 --> 00:27:39,460 Ac yn awr yr hyn sy'n digwydd yma pan fyddaf yn mynd i lawr i linell 21? 563 00:27:39,460 --> 00:27:40,890 Dydw i ddim wedi Ailadroddodd eto. 564 00:27:40,890 --> 00:27:43,320 Nid wyf yn ymddangos i fod yn sownd yn y ddolen. 565 00:27:43,320 --> 00:27:45,990 Mewn geiriau eraill, mae hyn yn melyn Nid yw bar yn dal i fynd o gwmpas, 566 00:27:45,990 --> 00:27:47,130 ac o amgylch, ac o amgylch. 567 00:27:47,130 --> 00:27:48,340 >> Yn awr, pam hynny? 568 00:27:48,340 --> 00:27:49,920 Wel, n, yr hyn sy'n N hyn o bryd? 569 00:27:49,920 --> 00:27:53,280 Gallaf edrych ar y lleol newidynnau mewn dadfygiwr. 570 00:27:53,280 --> 00:27:53,816 n yw 0. 571 00:27:53,816 --> 00:27:55,190 Mae pob hawl, beth oedd fy nghyflwr? 572 00:27:55,190 --> 00:27:58,700 >> 20-- llinell 20 yn, wel, 0 yn fwy na 0. 573 00:27:58,700 --> 00:27:59,500 Nid yw hynny'n wir. 574 00:27:59,500 --> 00:28:01,020 0 Nid yw fwy na 0. 575 00:28:01,020 --> 00:28:02,820 Ac felly yr wyf yn dorrodd allan o hyn. 576 00:28:02,820 --> 00:28:06,370 >> Ac felly dyna pam ar-lein 21, os wyf mewn gwirionedd yn parhau, 577 00:28:06,370 --> 00:28:10,370 Rydw i'n mynd i ddychwelyd 0, hyd yn oed er y dylai yr wyf wedi gwrthod 0 578 00:28:10,370 --> 00:28:12,484 gan nad oedd yn negyddol mewn gwirionedd. 579 00:28:12,484 --> 00:28:14,650 Felly, yn awr, nid wyf yn ei wneud mewn gwirionedd hyd yn oed gofalu am y dadfygiwr. 580 00:28:14,650 --> 00:28:16,900 Got, nid oes angen iddo i mi gwybod beth arall sy'n digwydd. 581 00:28:16,900 --> 00:28:19,233 >> Felly, yr wyf i'n mynd i fynd yn ei flaen a cliciwch y botwm Chwarae, 582 00:28:19,233 --> 00:28:20,240 a gadael gorffen hyn i fyny. 583 00:28:20,240 --> 00:28:23,440 Yn awr, rwyf wedi sylweddoli fod fy bug yn ôl pob golwg ar linell 20. 584 00:28:23,440 --> 00:28:25,160 Dyna fy gwall rhesymegol. 585 00:28:25,160 --> 00:28:28,100 >> Ac felly beth ydw i eisiau i wneud i newid hyn? 586 00:28:28,100 --> 00:28:32,500 Os yw'r broblem yw nad wyf yn dal 0, 'i' jyst yn wall rhesymegol. 587 00:28:32,500 --> 00:28:35,910 A gallaf ddweud wrth n yn fwy na neu'n hafal i 0, 588 00:28:35,910 --> 00:28:38,330 cadw gan annog y defnyddiwr eto ac eto. 589 00:28:38,330 --> 00:28:41,050 >> Felly, unwaith eto, camgymeriad syml, efallai hyd yn oed yn amlwg pan welodd chi fy 590 00:28:41,050 --> 00:28:42,410 ysgrifennu dim ond ychydig funudau yn ôl. 591 00:28:42,410 --> 00:28:44,570 Ond mae'r cludfwyd yma yw bod â dadfygio 50, 592 00:28:44,570 --> 00:28:46,850 a gyda debugging meddalwedd yn fwy cyffredinol, 593 00:28:46,850 --> 00:28:51,370 mae gennych bŵer newydd hwn dod o hyd i cerdded drwy eich cod eich hun, edrychwch 594 00:28:51,370 --> 00:28:55,590 trwy gyfrwng y panel ar y dde beth eich gwerthoedd newidynnau yn cael eu. 595 00:28:55,590 --> 00:28:57,700 Felly nid ydych yn ei wneud o reidrwydd rhaid i ni ddefnyddio rhywbeth 596 00:28:57,700 --> 00:29:00,630 fel chi eprintf i argraffu gwerthoedd hynny. 597 00:29:00,630 --> 00:29:04,430 Gallwch mewn gwirionedd yn eu gweld weledol ar y sgrin. 598 00:29:04,430 --> 00:29:08,920 >> Yn awr, y tu hwnt i hyn, mae'n werth nodi fod yna techneg arall sy'n 599 00:29:08,920 --> 00:29:09,890 mewn gwirionedd super cyffredin. 600 00:29:09,890 --> 00:29:13,120 Ac efallai y byddwch yn meddwl tybed pam mae hyn ychydig guy yma wedi bod yn eistedd ar y llwyfan. 601 00:29:13,120 --> 00:29:16,490 Felly mae yna dechneg hon, yn gyffredinol a elwir yn rwber debugging hwyaden, 602 00:29:16,490 --> 00:29:18,786 sydd mewn gwirionedd yn unig yw dyst i'r ffaith 603 00:29:18,786 --> 00:29:20,660 hynny rhaglenwyr yn aml pan yn ysgrifennu cod, 604 00:29:20,660 --> 00:29:22,650 dydyn nhw ddim o reidrwydd yn cydweithio ag eraill, 605 00:29:22,650 --> 00:29:24,030 neu weithio mewn amgylchedd a rennir. 606 00:29:24,030 --> 00:29:25,050 >> Maent yn fath o gartref. 607 00:29:25,050 --> 00:29:25,910 Efallai ei fod yn hwyr yn y nos. 608 00:29:25,910 --> 00:29:28,190 Eu bod yn ceisio ffigwr rhai bug yn eu cod. 609 00:29:28,190 --> 00:29:29,330 Ac maen nhw'n jyst heb wybod ei fod. 610 00:29:29,330 --> 00:29:30,329 >> A does dim roommate. 611 00:29:30,329 --> 00:29:31,250 Nid oes unrhyw TF. 612 00:29:31,250 --> 00:29:32,680 Nid oes unrhyw CA gwmpas. 613 00:29:32,680 --> 00:29:36,440 Mae pob maent yn ei gael ar eu silff yw hyn ducky rwber bach. 614 00:29:36,440 --> 00:29:39,030 >> Ac felly debugging rwber hwyaden yn unig yw gwahoddiad hwn 615 00:29:39,030 --> 00:29:42,780 i feddwl am rywbeth mor wirion gan fod hyn fel creadur go iawn, 616 00:29:42,780 --> 00:29:46,940 ac mewn gwirionedd yn cerdded drwy eich cod lafar i'r gwrthrych difywyd. 617 00:29:46,940 --> 00:29:49,230 Felly, er enghraifft, os mae hyn yn fy enghraifft Yma-- 618 00:29:49,230 --> 00:29:52,470 a dwyn i gof bod yn gynharach y broblem oedd hyn, 619 00:29:52,470 --> 00:29:58,140 os wyf yn dileu y llinell gyntaf o god, ac yr wyf yn mynd yn ei flaen ac yn gwneud bygi 0 unwaith eto, 620 00:29:58,140 --> 00:30:01,220 yn cofio fy mod wedi hyn negeseuon gwall yma. 621 00:30:01,220 --> 00:30:05,997 Felly, y syniad yma, er fy mod yn hurt yn teimlo ar hyn o bryd yn gwneud hyn yn gyhoeddus, 622 00:30:05,997 --> 00:30:06,580 yw bod gwall. 623 00:30:06,580 --> 00:30:10,910 >> Iawn, felly mae fy broblem yw fy mod i wedi ymhlyg datgan swyddogaeth llyfrgell. 624 00:30:10,910 --> 00:30:12,610 A dyna swyddogaeth llyfrgell yn printf. 625 00:30:12,610 --> 00:30:15,290 Declare-- OK, yn datgan fy atgoffa o brototeipiau. 626 00:30:15,290 --> 00:30:18,930 >> Mae hynny'n golygu bod angen i mewn gwirionedd i mi dweud wrth y compiler ymlaen llaw beth 627 00:30:18,930 --> 00:30:19,980 y swyddogaeth yn edrych fel. 628 00:30:19,980 --> 00:30:20,930 Arhoswch funud. 629 00:30:20,930 --> 00:30:23,580 Doeddwn i ddim yn cael io.h. safonol 630 00:30:23,580 --> 00:30:24,530 Diolch yn fawr iawn. 631 00:30:24,530 --> 00:30:27,330 >> Felly, dim ond y broses hon o- chi Nid oes angen i mewn gwirionedd yn cael hwyaden. 632 00:30:27,330 --> 00:30:29,819 Ond y syniad hwn o gerdded eich hun drwy eich cod eich hun 633 00:30:29,819 --> 00:30:31,610 er mwyn i chi hyd yn oed yn clywed eich hun, er mwyn i chi 634 00:30:31,610 --> 00:30:35,620 sylweddoli hepgoriadau yn eich pen eich hun sylwadau, yn gyffredinol y syniad. 635 00:30:35,620 --> 00:30:38,910 >> Ac, efallai yn fwy rhesymegol, nid felly llawer gyda'r un ond mae'r mwy o ran 636 00:30:38,910 --> 00:30:44,220 enghraifft, rydym yn unig oedd yn 3.c bygi, efallai y byddwch yn cerdded eich hun drwyddo 637 00:30:44,220 --> 00:30:45,310 fel a ganlyn. 638 00:30:45,310 --> 00:30:49,190 Felly iawn, rwber ducky, DDB, os mynnwch. 639 00:30:49,190 --> 00:30:52,350 Yma, mae gennym yn fy mhrif swyddogaeth, Rwy'n galw cael int negyddol. 640 00:30:52,350 --> 00:30:54,660 >> Ac yr wyf yn cael y gwerth dychwelyd. 641 00:30:54,660 --> 00:31:00,410 Im 'yn storio ar yr ochr chwith ar-lein 8 mewn newidyn enw i. 642 00:31:00,410 --> 00:31:02,380 OK, ond aros, sut y gwnaeth bod yn cael y gwerth hwnnw? 643 00:31:02,380 --> 00:31:04,130 Gadewch i mi edrych ar y swyddogaeth yn unol 12. 644 00:31:04,130 --> 00:31:05,760 >> Yn llinell 12, rydym wedi cael int negyddol. 645 00:31:05,760 --> 00:31:08,190 Nid yw'n cymryd unrhyw mewnbynnau, yn dychwelyd yn int, OK. 646 00:31:08,190 --> 00:31:10,929 Yr wyf yn datgan ar linell 14 yn n amrywiol. 647 00:31:10,929 --> 00:31:12,220 Mae'n mynd i storio yn gyfanrif. 648 00:31:12,220 --> 00:31:13,760 Dyna beth rwyf eisiau. 649 00:31:13,760 --> 00:31:18,480 >> Felly wneud y canlynol tra n yw-- gadael mi dadwneud yr hyn y mae'r atgyweiria wneuthum eisoes. 650 00:31:18,480 --> 00:31:22,710 Felly, er n yn fwy na 0, argraffu n yw, OK. 651 00:31:22,710 --> 00:31:25,170 Ac yna ffoniwch cael ei storio int yn n. 652 00:31:25,170 --> 00:31:30,160 Ac yna gwirio os n yn 0, n yn not-- yno y mae. 653 00:31:30,160 --> 00:31:31,910 Felly, unwaith eto, nid ydych yn ei wneud Mae angen i'r hwyaden gwirioneddol. 654 00:31:31,910 --> 00:31:35,650 Ond dim ond cerdded eich hun drwy eich cod fel ymarfer deallusol 655 00:31:35,650 --> 00:31:37,720 Byddwch yn aml yn eich helpu sylweddoli beth sy'n digwydd, 656 00:31:37,720 --> 00:31:41,170 yn hytrach na dim ond gwneud rhywbeth fel hyn, yn syllu ar y sgrin, 657 00:31:41,170 --> 00:31:43,720 ac nad yw siarad eich hun drwy iddo, sydd nid yn onest yn 658 00:31:43,720 --> 00:31:46,270 bron fel techneg effeithiol. 659 00:31:46,270 --> 00:31:48,620 Felly dyna ni, mae nifer o wahanol dechnegau 660 00:31:48,620 --> 00:31:52,102 am gwirionedd yn debugging eich cod a dod o hyd i fai, pob un ohonynt 661 00:31:52,102 --> 00:31:54,810 Dylai fod yn arfau yn eich pecyn cymorth fel nad ydych yn hwyr yn y nos, 662 00:31:54,810 --> 00:31:57,660 yn enwedig, ydych chi yn y fwyta neuaddau, neu ar oriau swyddfa, 663 00:31:57,660 --> 00:32:00,368 taro eich pen yn erbyn y wal, yn ceisio datrys rhyw broblem. 664 00:32:00,368 --> 00:32:02,020 Sylweddoli bod offer meddalwedd. 665 00:32:02,020 --> 00:32:03,720 Mae offer hwyaid rwber. 666 00:32:03,720 --> 00:32:09,630 Ac mae 'na staff cyfan o cefnogi aros i roi help llaw. 667 00:32:09,630 --> 00:32:13,120 >> Felly nawr, gair ar y broblem setiau, ac ar yr hyn rydym ni'n gobeithio i chi 668 00:32:13,120 --> 00:32:15,620 mynd allan ohonynt, a sut byddwn yn mynd ati werthuso. 669 00:32:15,620 --> 00:32:17,680 Fesul maes llafur y cwrs, setiau problem CS50 yn 670 00:32:17,680 --> 00:32:22,320 yn cael eu gwerthuso ar pedair echel cynradd, felly i speak-- cwmpas, cywirdeb, dylunio, 671 00:32:22,320 --> 00:32:23,060 ac arddull. 672 00:32:23,060 --> 00:32:25,910 A chwmpas yn unig yn cyfeirio at faint y darn ydych chi wedi brathu i ffwrdd? 673 00:32:25,910 --> 00:32:28,080 Faint o broblem ydych chi wedi ceisio? 674 00:32:28,080 --> 00:32:30,110 Pa lefel o ymdrech ydych chi wedi amlygu? 675 00:32:30,110 --> 00:32:35,750 >> Cywirdeb yw, gwneud y gwaith rhaglen fel mae'n fod i bob manyleb CS50 676 00:32:35,750 --> 00:32:38,640 pan fyddwch yn rhoi rhai mewnbynnau neu rhai allbynnau yn dod yn ôl? 677 00:32:38,640 --> 00:32:41,130 Dylunio yw'r mwyaf goddrychol ohonynt. 678 00:32:41,130 --> 00:32:43,360 Ac mae'n un a fydd cymryd yr amser hiraf i ddysgu 679 00:32:43,360 --> 00:32:47,220 ac am y cyfnod hiraf i addysgu, yn i'r graddau y mae'n boils i lawr i, 680 00:32:47,220 --> 00:32:49,530 pa mor dda ysgrifenedig yn eich cod? 681 00:32:49,530 --> 00:32:52,920 >> Mae'n un peth i ddim ond argraffu'r cywir allbynnau neu ddychwelyd gwerthoedd cywir. 682 00:32:52,920 --> 00:32:55,400 Ond ydych chi'n gwneud hyn fel effeithlon â phosibl? 683 00:32:55,400 --> 00:32:58,210 Ydych chi'n gwneud hyn rhaniad a gorchfygu, neu deuaidd 684 00:32:58,210 --> 00:33:01,500 chwilio gan y byddwn yn fuan yn gweld bod y gwnaethom bythefnos yn ôl gyda'r llyfr ffôn? 685 00:33:01,500 --> 00:33:04,670 A oes ffyrdd gwell o ddatrys y broblem nag yr ydych wedi yma ar hyn o bryd? 686 00:33:04,670 --> 00:33:06,380 Dyna gyfle i ddylunio gwell. 687 00:33:06,380 --> 00:33:08,530 >> Ac yna style-- sut 'n bert yw eich cod? 688 00:33:08,530 --> 00:33:12,370 Byddwch yn sylwi bod Rwy'n eithaf benodol am tolcio fy cod, 689 00:33:12,370 --> 00:33:15,300 a gwneud yn siwr fy newidynnau yn cael eu henwi yn rhesymol. n, 690 00:33:15,300 --> 00:33:19,660 gyfnod byr, yn enw da ar gyfer rhif, fi am cyfanrif cyfrif, 691 00:33:19,660 --> 00:33:20,727 s ar gyfer llinyn. 692 00:33:20,727 --> 00:33:22,560 A gallwn gael mwy o amser arddull enwau amrywiol. 693 00:33:22,560 --> 00:33:25,500 Style yn union pa mor dda mae eich cod edrych? 694 00:33:25,500 --> 00:33:26,600 A pha mor ddarllenadwy ydyw? 695 00:33:26,600 --> 00:33:29,650 >> A thros amser, beth yw eich CA a bydd TFS wneud yn y cwrs 696 00:33:29,650 --> 00:33:31,870 yn rhoi i chi y math o adborth ansoddol 697 00:33:31,870 --> 00:33:34,330 fel eich bod yn cael gwell ar wahanol agweddau hynny. 698 00:33:34,330 --> 00:33:37,510 Ac o ran y ffordd yr ydym yn gwerthuso pob un o'r bwyeill hyn, 699 00:33:37,510 --> 00:33:40,080 'i' fel arfer gydag ychydig iawn bwcedi er mwyn i chi, yn gyffredinol, 700 00:33:40,080 --> 00:33:41,680 cael ymdeimlad o ba mor dda rydych yn ei wneud. 701 00:33:41,680 --> 00:33:45,680 Ac, yn wir, os byddwch yn derbyn sgôr ar unrhyw un o'r rhai gywirdeb axes--, dylunio 702 00:33:45,680 --> 00:33:49,659 ac arddull especially-- y rhif hwnnw yn gyffredinol yn rhwng 1 a 5. 703 00:33:49,659 --> 00:33:52,450 Ac, yn llythrennol, os ydych yn cael 3 ar ddechrau'r semester, 704 00:33:52,450 --> 00:33:53,977 mae hyn yn beth da iawn. 705 00:33:53,977 --> 00:33:55,810 Mae'n golygu mae dal lle i wella, 706 00:33:55,810 --> 00:33:58,490 y byddech yn gobeithio amdano mewn cymryd dosbarth am y tro cyntaf. 707 00:33:58,490 --> 00:34:01,820 Mae gobeithio rhyw ychydig o nenfwd y mae gennych anelu at gyrraedd. 708 00:34:01,820 --> 00:34:03,970 Ac felly mae cael 3 ar darnau cynharaf, 709 00:34:03,970 --> 00:34:06,550 os nad yw rhai 2 a 4, yw, yn wir, yn beth da. 710 00:34:06,550 --> 00:34:08,880 Mae'n dda o fewn amrediad, ymhell o fewn disgwyliadau. 711 00:34:08,880 --> 00:34:11,421 >> Ac os yw eich meddwl yn rasio, aros munud, tri allan o bump. 712 00:34:11,421 --> 00:34:12,620 Mae hynny'n wir yn 6 allan o 10. 713 00:34:12,620 --> 00:34:13,560 Dyna 60%. 714 00:34:13,560 --> 00:34:14,830 Fy Nuw, dyna F. 715 00:34:14,830 --> 00:34:15,870 >> Nid yw'n. 716 00:34:15,870 --> 00:34:17,600 Dyw hi ddim yn, mewn gwirionedd, hynny. 717 00:34:17,600 --> 00:34:22,710 Yn hytrach, mae'n gyfle i wella yn ystod y semester. 718 00:34:22,710 --> 00:34:25,580 Ac os ydych yn cael rhai Poors, mae'r rhain yn gyfle 719 00:34:25,580 --> 00:34:29,199 i fanteisio ar oriau swyddfa, sicr adrannau ac adnoddau eraill. 720 00:34:29,199 --> 00:34:32,840 >> Gorau yn gyfle, mewn gwirionedd, i fod yn falch o ba mor bell ydych chi wedi 721 00:34:32,840 --> 00:34:34,520 dod yn ystod y semester. 722 00:34:34,520 --> 00:34:38,199 Felly yn sylweddoli, os nad oes dim arall, tri yn dda. 723 00:34:38,199 --> 00:34:40,179 Ac mae'n caniatáu lle i dyfu dros amser. 724 00:34:40,179 --> 00:34:43,090 >> Ynghylch sut y bwyeill hynny bwysoli, yn realistig eich bod yn 725 00:34:43,090 --> 00:34:46,745 mynd i treulio'r rhan fwyaf o'ch amser yn dod pethau i'w gwaith, heb sôn am yn gywir. 726 00:34:46,745 --> 00:34:49,120 Ac felly cywirdeb yn tueddu i gael eu pwysoli fwyaf, fel gyda 727 00:34:49,120 --> 00:34:51,360 y ffactor lluosol dri. 728 00:34:51,360 --> 00:34:54,659 Dylunio hefyd yn bwysig, ond rhywbeth nad ydych yn ei wneud o reidrwydd 729 00:34:54,659 --> 00:34:58,220 yn treulio pob un o'r oriau hynny ar ceisio cael pethau yn unig i weithio. 730 00:34:58,220 --> 00:35:00,019 >> Ac felly mae'n bwysoli ychydig yn fwy ysgafn. 731 00:35:00,019 --> 00:35:01,560 Ac yna arddull yn cael ei bwysoli y lleiaf. 732 00:35:01,560 --> 00:35:03,710 Hyd yn oed er ddim llai 'i' bwysig yn sylfaenol, 733 00:35:03,710 --> 00:35:05,990 'i' jyst, efallai, y peth hawsaf i'w wneud yn iawn, 734 00:35:05,990 --> 00:35:08,440 dynwared yr enghreifftiau yr ydym yn wneud mewn darlith ac adran, 735 00:35:08,440 --> 00:35:11,080 gyda phethau 'n glws hindentio, a dywedodd, 736 00:35:11,080 --> 00:35:14,320 ac yn y blaen ymhlith yr hawsaf pethau i'w gwneud ac yn ei gael yn iawn. 737 00:35:14,320 --> 00:35:16,960 Felly, fel y cyfryw, yn sylweddoli bod y rhai pwyntiau 738 00:35:16,960 --> 00:35:19,000 sy'n gymharol hawdd i'w ddeall. 739 00:35:19,000 --> 00:35:22,360 >> Ac yn awr gair ar this-- gonestrwydd academaidd. 740 00:35:22,360 --> 00:35:25,150 Felly, fesul y cwrs maes llafur, byddwch yn gweld 741 00:35:25,150 --> 00:35:27,630 bod y cwrs wedi eithaf ychydig o iaith o gwmpas hyn. 742 00:35:27,630 --> 00:35:31,380 Ac mae'r cwrs yn cymryd y mater o gonestrwydd academaidd yn eithaf difrifol. 743 00:35:31,380 --> 00:35:33,450 >> Mae gennym y gwahaniaeth, er gwell neu er gwaeth, 744 00:35:33,450 --> 00:35:36,570 o fod wedi ei anfon bob blwyddyn yn fwy myfyrwyr ar gyfer camau disgyblu 745 00:35:36,570 --> 00:35:39,670 na'r rhan fwyaf o unrhyw un arall gwrs, fy mod yn ymwybodol o. 746 00:35:39,670 --> 00:35:42,580 Nid yw hyn o reidrwydd arwydd o'r ffaith 747 00:35:42,580 --> 00:35:46,340 bod myfyrwyr CS, neu fyfyrwyr CS50, yn unrhyw llai gonest na'ch cyd-ddisgyblion. 748 00:35:46,340 --> 00:35:49,090 Ond y gwirionedd sydd yn hyn byd, yn electronig, rydym yn unig 749 00:35:49,090 --> 00:35:50,990 cael technolegol yn golygu o ganfod hyn. 750 00:35:50,990 --> 00:35:53,360 >> Mae'n bwysig i ni am tegwch ar draws y dosbarth 751 00:35:53,360 --> 00:35:58,550 ein bod yn gwneud canfod hyn, a chodi y mater pan ydym yn gweld pethau. 752 00:35:58,550 --> 00:36:01,980 A dim ond i baentio llun, ac yn wir yn i helpu i rhywbeth fel sinc hwn i mewn, 753 00:36:01,980 --> 00:36:04,600 mae'r rhain yn y nifer o fyfyrwyr dros y 10 mlynedd diwethaf 754 00:36:04,600 --> 00:36:07,610 sydd wedi bod yn ymwneud mewn rhyw materion o'r fath o onestrwydd academaidd, 755 00:36:07,610 --> 00:36:10,990 gyda rhai 32 o fyfyrwyr o syrthio 2015, a oedd 756 00:36:10,990 --> 00:36:13,760 yw dweud ein bod yn cymryd y mater yn ddifrifol iawn. 757 00:36:13,760 --> 00:36:18,380 Ac, yn y pen draw, y niferoedd hyn yn cyfansoddi, yn fwyaf diweddar, tua 3%, 4% neu hynny 758 00:36:18,380 --> 00:36:19,120 y dosbarth. 759 00:36:19,120 --> 00:36:25,220 >> Felly, ar gyfer y mwyafrif o fyfyrwyr super mae'n ymddangos bod y llinellau yn glir. 760 00:36:25,220 --> 00:36:27,940 Ond peidiwch cadw hyn mewn meddwl, yn enwedig yn hwyr 761 00:36:27,940 --> 00:36:32,080 yn y nos pan trafferth gyda rhywfaint o ateb i set problem, 762 00:36:32,080 --> 00:36:34,830 bod mecanweithiau ar gyfer cael eich hun yn well 763 00:36:34,830 --> 00:36:37,870 gefnogaeth nag gallech chi yn meddwl, hyd yn oed ar yr awr honno. 764 00:36:37,870 --> 00:36:40,514 Sylweddoli bod pan fyddwn yn derbyn cyflwyniadau i fyfyrwyr, rydym yn croesi 765 00:36:40,514 --> 00:36:43,430 cymharu pob cyflwyniad eleni yn erbyn pob cyflwyniad y llynedd, 766 00:36:43,430 --> 00:36:47,590 yn erbyn pob cyflwyniad o 2007, ac ers hynny, gan edrych ar, yn ogystal, 767 00:36:47,590 --> 00:36:49,931 cod storfeydd ar-lein, fforymau trafod, safleoedd swyddi. 768 00:36:49,931 --> 00:36:51,806 Ac rydym yn sôn am hyn, mewn gwirionedd, pob er mwyn 769 00:36:51,806 --> 00:36:56,040 o ddatgeliad llawn, os Gall rhywun arall yn ei chael yn ar-lein, 770 00:36:56,040 --> 00:36:57,880 yn sicr, felly gallwn cwrs. 771 00:36:57,880 --> 00:37:00,100 Ond, mewn gwirionedd, yr ysbryd y cwrs boils i lawr 772 00:37:00,100 --> 00:37:01,650 cymal hwn yn y maes llafur. 773 00:37:01,650 --> 00:37:03,670 Mae wir yn gyfiawn, yn rhesymol. 774 00:37:03,670 --> 00:37:06,680 >> Ac os ydym yn cael i ymhelaethu ar hynny gyda dim ond ychydig yn fwy iaith, 775 00:37:06,680 --> 00:37:09,770 sylweddoli mai hanfod pob gwaith yr ydych yn cyflwyno i'r cwrs hwn 776 00:37:09,770 --> 00:37:10,954 Rhaid mai eich. 777 00:37:10,954 --> 00:37:13,870 Ond o fewn hynny, yn sicr cyfleoedd, ac anogaeth, 778 00:37:13,870 --> 00:37:17,300 a gwerth phedagogaidd wrth droi at others-- fy hun, mae'r TFS, mae'r MD, 779 00:37:17,300 --> 00:37:20,760 yr Asesiadau Trafnidiaeth, ac eraill yn y dosbarth, am gymorth, gadewch i ffrindiau ei ben ei hun 780 00:37:20,760 --> 00:37:23,547 a roommates sydd wedi astudio CS a rhaglennu o'r blaen. 781 00:37:23,547 --> 00:37:25,130 Ac felly mae lwfans ar gyfer hynny. 782 00:37:25,130 --> 00:37:28,180 Ac mae'r rheol gyffredinol yn this-- wrth ofyn am gymorth, 783 00:37:28,180 --> 00:37:31,470 efallai y byddwch yn dangos eich cod i eraill, ond efallai na fyddwch yn gweld nhw. 784 00:37:31,470 --> 00:37:34,880 Felly hyd yn oed os byddwch chi yn oriau swyddfa, neu yn y neuadd D, neu yn rhywle arall 785 00:37:34,880 --> 00:37:37,450 yn gweithio ar rai set darn, gweithio ochr yn ochr ffrind, a oedd yn 786 00:37:37,450 --> 00:37:40,160 yn hollol iawn, yn y ddiwedd y diwrnod gwaith 787 00:37:40,160 --> 00:37:43,034 Dylai pen draw perthyn i bob ohonoch yn y drefn honno, ac nid 788 00:37:43,034 --> 00:37:45,700 fod rhywfaint o ymdrech ar y cyd, heblaw am y prosiect terfynol lle 789 00:37:45,700 --> 00:37:47,410 mae wedi caniatáu ac annog. 790 00:37:47,410 --> 00:37:49,830 >> Sylweddoli bod os ydych yn trafferth gyda rhywbeth 791 00:37:49,830 --> 00:37:52,520 a bod eich ffrind yn unig fydd yn digwydd i fod yn well ar hyn yna rydych, 792 00:37:52,520 --> 00:37:55,130 neu well ar y broblem na chi, neu ychydig ymhellach ymlaen na chi, 793 00:37:55,130 --> 00:37:57,330 mae'n hollol resymol i droi at eich ffrind a dweud, hey, 794 00:37:57,330 --> 00:38:00,480 ydych chi'n ots edrych ar fy cod yma, fy helpu i weld beth yw fy mater? 795 00:38:00,480 --> 00:38:03,760 A, gobeithio, yn y llog o werth addysgol 796 00:38:03,760 --> 00:38:07,040 bod ffrind yn gwneud nid yn unig yn dweud, oh, yn gwneud hyn, ond yn hytrach, 797 00:38:07,040 --> 00:38:09,917 beth ydych chi'n ei golli ar-lein 6, neu rywbeth fel 'na? 798 00:38:09,917 --> 00:38:12,000 Ond nid yr ateb yw i'r ffrind nesaf i chi 799 00:38:12,000 --> 00:38:15,617 i ddweud, oh, yn dda, yma, gadewch i mi dynnu hyn i fyny, ac yn dangos fy ateb i chi. 800 00:38:15,617 --> 00:38:16,450 Felly dyna'r llinell. 801 00:38:16,450 --> 00:38:18,670 Rydych yn dangos eich cod i eraill, ond efallai nad ydych 802 00:38:18,670 --> 00:38:22,350 gweld nhw, yn amodol ar y llall cyfyngiadau yn maes llafur y cwrs. 803 00:38:22,350 --> 00:38:24,760 >> Felly yn cadw mewn cof hwn hyn a elwir yn gymal difaru 804 00:38:24,760 --> 00:38:27,560 yn y maes llafur y cwrs yn ogystal, os byddwch yn cyflawni rhywfaint o weithred sy'n 805 00:38:27,560 --> 00:38:30,476 Nid yn rhesymol, ond yn dod ag ef i sylw'r penaethiaid y cwrs 806 00:38:30,476 --> 00:38:34,240 o fewn 72 awr, mae'r cwrs Gall osod sancsiynau lleol sy'n 807 00:38:34,240 --> 00:38:37,380 Gall gynnwys anfoddhaol neu methu radd ar gyfer y gwaith a gyflwynwyd. 808 00:38:37,380 --> 00:38:41,410 Ond ni fydd y cwrs yn cyfeirio'r bwys ar gyfer camau disgyblu pellach, 809 00:38:41,410 --> 00:38:43,010 ac eithrio mewn achosion o weithredoedd dro ar ôl tro. 810 00:38:43,010 --> 00:38:46,632 Mewn geiriau eraill, os byddwch yn gwneud rhywfaint o dwp, yn enwedig yn hwyr y nos, penderfyniad 811 00:38:46,632 --> 00:38:49,340 bod y bore wedyn neu ddau ddiwrnod yn ddiweddarach, byddwch yn deffro ac yn sylweddoli, 812 00:38:49,340 --> 00:38:50,870 beth oedd wyf yn meddwl? 813 00:38:50,870 --> 00:38:53,890 Rydych yn gwneud yn CS50 cael allfa ar gyfer gosod y broblem honno 814 00:38:53,890 --> 00:38:57,170 a bod yn berchen i fyny ato, er mwyn i ni Bydd cwrdd â chi hanner ffordd ac yn ymdrin 815 00:38:57,170 --> 00:39:01,500 ag ef mewn mater sydd yn y ddau addysgiadol a gwerthfawr i chi, 816 00:39:01,500 --> 00:39:04,200 ond yn dal cosbol mewn rhyw ffordd. 817 00:39:04,200 --> 00:39:08,590 Ac yn awr, i gymryd y ymyl oddi ar, mae hyn. 818 00:39:08,590 --> 00:39:10,570 >> [VIDEO Playback] 819 00:39:10,570 --> 00:39:13,540 >> [CHWARAE CERDDORIAETH] 820 00:39:13,540 --> 00:39:58,090 821 00:39:58,090 --> 00:39:58,866 >> [DIWEDD Playback] 822 00:39:58,866 --> 00:40:00,490 DAVID J. Malan: pob hawl, yr ydym yn ôl. 823 00:40:00,490 --> 00:40:03,680 Ac yn awr rydym yn edrych ar un o'r cyntaf o'n parthau byd go iawn 824 00:40:03,680 --> 00:40:08,720 yn CS50, y grefft o cryptograffeg, y grefft o anfon a derbyn 825 00:40:08,720 --> 00:40:11,840 negeseuon cudd, wedi'i amgryptio negeseuon os mynnwch, 826 00:40:11,840 --> 00:40:17,060 na ellir ond eu dehongli'r os oes gennych rhywfaint cynhwysyn allweddol y mae'r anfonwr wedi 827 00:40:17,060 --> 00:40:18,030 hefyd. 828 00:40:18,030 --> 00:40:22,120 Felly, i gymell hwn byddwn yn cymryd yn edrych ar y peth hyn yma, 829 00:40:22,120 --> 00:40:26,750 sy'n enghraifft o ffoniwch decoder gyfrinach bod 830 00:40:26,750 --> 00:40:34,042 gellir eu defnyddio er mwyn chyfrif i maes beth neges gudd mewn gwirionedd. 831 00:40:34,042 --> 00:40:35,750 Yn wir, yn ôl yn y diwrnod yn yr ysgol radd, 832 00:40:35,750 --> 00:40:38,787 os ydych chi erioed anfon negeseuon cudd at rhyw ffrind neu ryw wasgfa yn y dosbarth, 833 00:40:38,787 --> 00:40:40,620 efallai eich bod wedi meddwl ydych yn bod yn glyfar 834 00:40:40,620 --> 00:40:46,530 gan ar eich darn o newid papur, fel, A i B, a B i C, a C i D, 835 00:40:46,530 --> 00:40:47,590 ac yn y blaen. 836 00:40:47,590 --> 00:40:50,300 Ond oeddech yn amgryptio mewn gwirionedd eich gwybodaeth, hyd yn oed 837 00:40:50,300 --> 00:40:53,300 os oedd braidd yn ddibwys, nid oedd hynny anodd i'r athro i wireddu, 838 00:40:53,300 --> 00:40:55,675 yn dda, os ydych yn unig yn newid B i A ac C i B, 839 00:40:55,675 --> 00:40:57,550 chi mewn gwirionedd yn chyfrif i maes beth oedd y neges, 840 00:40:57,550 --> 00:40:59,700 ond yr oeddech yn ciphering gwybodaeth. 841 00:40:59,700 --> 00:41:03,420 >> Yr oeddech yn jyst yn gwneud ei yn syml, yn debyg iawn Ralphie yma 842 00:41:03,420 --> 00:41:07,934 mewn ffilm enwog sy'n chwarae 'n bert lawer nauseum ad bob gaeaf. 843 00:41:07,934 --> 00:41:08,600 [VIDEO Playback] 844 00:41:08,600 --> 00:41:11,180 -Bod Yn hysbys i bob un sy'n Ralph Parker yn drwy hyn 845 00:41:11,180 --> 00:41:14,070 penodi aelod o'r Little Amddifad Annie Secret Circle 846 00:41:14,070 --> 00:41:17,700 ac mae ganddo hawl i holl anrhydedd a budd-daliadau sy'n digwydd iddynt. 847 00:41:17,700 --> 00:41:24,340 >> -Signed, Little Orphan Annie, gwrth-lofnodi Pierre Andre, mewn inc. 848 00:41:24,340 --> 00:41:27,160 Anrhydeddau a budd-daliadau, eisoes yn naw oed. 849 00:41:27,160 --> 00:41:30,490 850 00:41:30,490 --> 00:41:31,825 >> [Gweiddi] 851 00:41:31,825 --> 00:41:33,750 852 00:41:33,750 --> 00:41:34,250 -Come Ar. 853 00:41:34,250 --> 00:41:35,210 Gadewch i ni fynd ymlaen ag ef. 854 00:41:35,210 --> 00:41:39,530 Dydw i ddim angen yr holl jazz hynny am smyglwyr a môr-ladron. 855 00:41:39,530 --> 00:41:41,660 >> nos yfory -Listen gyfer yr antur olaf 856 00:41:41,660 --> 00:41:43,880 y llong môr-ladron du. 857 00:41:43,880 --> 00:41:46,650 Nawr, mae'n amser i Neges gyfrinach Annie 858 00:41:46,650 --> 00:41:49,840 ar eich cyfer chi aelodau'r Cylch Secret. 859 00:41:49,840 --> 00:41:53,570 Cofiwch, plant, dim ond aelodau o Annie Secret Circle 860 00:41:53,570 --> 00:41:56,140 Gall dadgodio neges gudd Annie. 861 00:41:56,140 --> 00:42:00,340 >> Cofiwch, Annie yn dibynnu ar chi. 862 00:42:00,340 --> 00:42:02,880 Gosodwch eich pinnau i B2. 863 00:42:02,880 --> 00:42:05,230 Dyma yw'r neges. 864 00:42:05,230 --> 00:42:06,090 12, 11-- 865 00:42:06,090 --> 00:42:10,250 >> -I Wyf mewn, fy nghyfarfod cyfrinachol cyntaf. 866 00:42:10,250 --> 00:42:13,890 >> -14, 11, 18, 16. 867 00:42:13,890 --> 00:42:15,780 >> Roedd -Pierre mewn llais mawr heno. 868 00:42:15,780 --> 00:42:19,000 Gallwn ddweud bod heno neges yn bwysig iawn. 869 00:42:19,000 --> 00:42:22,694 >> -3, 25, dyna neges o Annie ei hun. 870 00:42:22,694 --> 00:42:23,860 Cofiwch, peidiwch â dweud wrth neb. 871 00:42:23,860 --> 00:42:28,760 872 00:42:28,760 --> 00:42:32,930 >> -90 Eiliad yn ddiweddarach, rwy'n yn yr unig ystafell yn y tŷ lle mae bachgen o naw 873 00:42:32,930 --> 00:42:37,040 Gallai eistedd mewn preifatrwydd a dadgodio. 874 00:42:37,040 --> 00:42:39,730 Aha, B! 875 00:42:39,730 --> 00:42:42,360 Es i i'r nesaf, E. 876 00:42:42,360 --> 00:42:44,520 >> Y gair cyntaf yw fod. 877 00:42:44,520 --> 00:42:49,032 S, ei fod yn dod yn haws yn awr, U, 25-- 878 00:42:49,032 --> 00:42:51,733 >> -OH, Yn dod ar, Ralphie, yr wyf yn gotta fynd! 879 00:42:51,733 --> 00:42:53,688 >> -I'll Fod yn iawn i lawr, Ma! 880 00:42:53,688 --> 00:42:54,188 Gee whizz! 881 00:42:54,188 --> 00:42:58,116 882 00:42:58,116 --> 00:43:04,060 >> -T, O, gofalwch eich bod canlynol-- gofalwch eich bod yn beth? 883 00:43:04,060 --> 00:43:05,970 Beth oedd Little Amddifad Annie ceisio ei ddweud? 884 00:43:05,970 --> 00:43:07,264 Byddwch yn siwr i beth? 885 00:43:07,264 --> 00:43:09,634 >> -Ralphie, Andy wedi mynd i yn mynd, byddwch dewch allan? 886 00:43:09,634 --> 00:43:10,480 >> hawl -Mae pob, Ma! 887 00:43:10,480 --> 00:43:12,880 'n annhymerus' fod allan yn iawn! 888 00:43:12,880 --> 00:43:14,550 >> Roedd -I dod yn nes yn awr. 889 00:43:14,550 --> 00:43:16,620 Roedd y tensiwn yn ofnadwy. 890 00:43:16,620 --> 00:43:17,720 Beth oedd ei? 891 00:43:17,720 --> 00:43:20,170 Mae tynged y blaned Gall hongian yn y cydbwysedd. 892 00:43:20,170 --> 00:43:20,670 >> -Ralphie! 893 00:43:20,670 --> 00:43:23,170 gotta Andy fynd! 894 00:43:23,170 --> 00:43:26,890 >> -I'll Fod yn iawn allan, ar gyfer crio yn uchel! 895 00:43:26,890 --> 00:43:32,680 >> -Almost Yno, fy mysedd yn hedfan, fy meddwl Roedd trap dur, pob mandwll vibrated. 896 00:43:32,680 --> 00:43:37,198 Yr oedd bron yn glir, ie, ie, ie. 897 00:43:37,198 --> 00:43:43,091 >> -Bod Yn siwr i yfed eich Ovaltine. 898 00:43:43,091 --> 00:43:43,590 Ovaltine? 899 00:43:43,590 --> 00:43:48,160 900 00:43:48,160 --> 00:43:49,430 Mae masnachol crummy? 901 00:43:49,430 --> 00:43:53,046 902 00:43:53,046 --> 00:43:54,227 Yn fab i ast. 903 00:43:54,227 --> 00:43:54,810 [DIWEDD Playback] 904 00:43:54,810 --> 00:43:57,390 DAVID J. Malan: OK, felly a oedd yn bell iawn 905 00:43:57,390 --> 00:44:00,660 o gyflwyno cryptograffeg, a hefyd Ovaltine. 906 00:44:00,660 --> 00:44:04,470 Yn wir, o hen hysbyseb hon yma, pam mae Ovaltine mor dda? 907 00:44:04,470 --> 00:44:09,470 Mae'n echdynnu ddwys o aeddfed brag haidd, llaeth buwch hufennog pur, yn 908 00:44:09,470 --> 00:44:14,360 a baratowyd yn arbennig coco, ynghyd gyda phosphatides naturiol a fitaminau. 909 00:44:14,360 --> 00:44:18,240 Mae'n cael ei hatgyfnerthu ymhellach gyda fitaminau ychwanegol B a D, iym. 910 00:44:18,240 --> 00:44:21,600 A gallwch ddal i gael ei, mae'n debyg, ar Amazon, fel y gwnaethom yma. 911 00:44:21,600 --> 00:44:24,810 >> Ond mae'r cymhelliant yma oedd cyflwyno cryptograffeg, yn benodol 912 00:44:24,810 --> 00:44:28,340 Math o cryptograffeg hysbys fel cryptograffeg allweddol gyfrinach. 913 00:44:28,340 --> 00:44:34,284 Ac fel yr awgryma'r enw, y cyfan diogelwch system crypto allweddol gyfrinach, 914 00:44:34,284 --> 00:44:36,200 os mynnwch, methodoleg am ddim ond sgrialu 915 00:44:36,200 --> 00:44:40,960 gwybodaeth rhwng dau o bobl, yw bod Dim ond yr anfonwr a dim ond y derbynnydd 916 00:44:40,960 --> 00:44:46,980 gwybod key-- gyfrinach rhywfaint o werth, mae rhai ymadrodd gyfrinach, mae rhai rhif gyfrinach, bod 917 00:44:46,980 --> 00:44:50,660 eu galluogi i ddau amgryptio a dadgryptio gwybodaeth. 918 00:44:50,660 --> 00:44:53,470 A cryptograffeg, mewn gwirionedd, yn unig yw hwn o wythnos 0. 919 00:44:53,470 --> 00:44:56,715 >> Mae'n broblem lle mae mewnbynnau, fel y neges gwirioneddol yn y Saesneg 920 00:44:56,715 --> 00:44:59,340 neu beth bynnag iaith y byddwch yn am anfon at rywun yn y dosbarth, 921 00:44:59,340 --> 00:45:00,580 neu ar draws y rhyngrwyd. 922 00:45:00,580 --> 00:45:03,840 Mae rhywfaint o allbwn, sy'n mynd i fod y neges wedi'i sgramblo eich bod 923 00:45:03,840 --> 00:45:05,250 eisiau gan y bobl dderbyn. 924 00:45:05,250 --> 00:45:07,405 A hyd yn oed os bydd rhywun yn y canol yn derbyn hynny hefyd, 925 00:45:07,405 --> 00:45:09,780 nad ydych chi eisiau iddyn nhw o reidrwydd yn gallu dadgryptio iddo, 926 00:45:09,780 --> 00:45:12,840 oherwydd tu mewn hon blwch du, neu algorithm, 927 00:45:12,840 --> 00:45:17,650 rhywfaint o mecanwaith, rhyw gam wrth gam cyfarwyddiadau, am gymryd y mewnbwn 928 00:45:17,650 --> 00:45:20,710 a throsi i mewn i'r allbwn, mewn gobaith ffordd ddiogel. 929 00:45:20,710 --> 00:45:23,640 >> Ac, mewn gwirionedd, mae rhywfaint o geirfa yn y byd hwn fel a ganlyn. 930 00:45:23,640 --> 00:45:26,100 testun plaen yw'r gair yn gwyddonydd cyfrifiadurol byddai 931 00:45:26,100 --> 00:45:28,449 eu defnyddio i ddisgrifio'r mewnbwn neges, fel y Saesneg 932 00:45:28,449 --> 00:45:31,240 neu beth bynnag iaith chi mewn gwirionedd eisiau anfon i ryw dynol eraill. 933 00:45:31,240 --> 00:45:35,450 Ac yna y ciphertext yw'r scramble i'r enciphered, neu wedi'i amgryptio, 934 00:45:35,450 --> 00:45:36,520 fersiwn ohono. 935 00:45:36,520 --> 00:45:38,750 >> Ond mae yna un cynhwysyn arall yma. 936 00:45:38,750 --> 00:45:43,200 Mae un mewnbwn arall i cryptography allweddol gyfrinach. 937 00:45:43,200 --> 00:45:45,200 A dyna yw'r allwedd ei hun, sydd, yn gyffredinol, 938 00:45:45,200 --> 00:45:48,930 fel y byddwn yn gweld, rhif, neu llythyr, neu air, beth bynnag 939 00:45:48,930 --> 00:45:51,980 yr algorithm ei fod mewn gwirionedd yn disgwyl. 940 00:45:51,980 --> 00:45:53,870 >> A sut ydych chi'n dadgryptio gwybodaeth? 941 00:45:53,870 --> 00:45:55,110 Sut ydych chi'n ddehongli hyn? 942 00:45:55,110 --> 00:45:57,950 Wel, 'ch jyst gwrthdroi'r allbynnau a mewnbynnau. 943 00:45:57,950 --> 00:46:00,900 >> Mewn geiriau eraill, unwaith y bydd rhywun yn derbyn eich neges wedi'i amgryptio, 944 00:46:00,900 --> 00:46:03,740 ef neu hi yn syml gan i wybod bod un allweddol. 945 00:46:03,740 --> 00:46:05,700 Maent wedi derbyn y ciphertext. 946 00:46:05,700 --> 00:46:09,530 A thrwy blygio dau y rhai mewnbynnau i mewn i'r system crypto, 947 00:46:09,530 --> 00:46:14,260 y algorithm, blwch du hwn, allan Dylai ddod i'r plaintext gwreiddiol. 948 00:46:14,260 --> 00:46:17,830 Ac felly dyna y lefel uchel iawn Golygfa o'r hyn cryptography mewn gwirionedd 949 00:46:17,830 --> 00:46:18,590 popeth am. 950 00:46:18,590 --> 00:46:20,030 >> Felly, gadewch i ni fynd yno. 951 00:46:20,030 --> 00:46:22,700 Gadewch i ni yn awr yn edrych oddi tano y cwfl o rywbeth 952 00:46:22,700 --> 00:46:26,000 rydym wedi bod yn cymryd yn ganiataol ar gyfer yr wythnos ddiwethaf, ac ar gyfer y sesiwn hwn 953 00:46:26,000 --> 00:46:27,629 Yma-- y llinyn. 954 00:46:27,629 --> 00:46:30,295 Mae llinyn ar ddiwedd y dydd yn unig yw dilyniant o gymeriadau. 955 00:46:30,295 --> 00:46:33,610 >> Gallai fod yn fyd helo, neu helo Zamyla, neu beth bynnag. 956 00:46:33,610 --> 00:46:37,050 Ond beth mae hynny'n ei olygu i fod dilyniant o gymeriadau? 957 00:46:37,050 --> 00:46:41,520 Yn wir, y llyfrgell CS50 yn rhoi ni fath ddata o'r enw llinyn. 958 00:46:41,520 --> 00:46:45,140 >> Ond nid oes mewn gwirionedd dim y fath beth fel llinyn yn C. 959 00:46:45,140 --> 00:46:49,450 Mae wir yn unig yw dilyniant o cymeriad, cymeriad, cymeriad, 960 00:46:49,450 --> 00:46:52,180 cymeriad, y cefn, wrth gefn, i yn ôl, wrth gefn, i gefnogi y tu mewn 961 00:46:52,180 --> 00:46:54,650 o gof eich cyfrifiadur, neu RAM. 962 00:46:54,650 --> 00:46:58,940 A byddwn yn edrych yn ddyfnach i hynny yn y dyfodol pan fyddwn yn edrych ar cof ei hun, 963 00:46:58,940 --> 00:47:02,030 a defnyddio, a'r bygythiadau sy'n cymryd rhan. 964 00:47:02,030 --> 00:47:04,100 >> Ond gadewch i ni ystyried y llinyn Zamyla. 965 00:47:04,100 --> 00:47:07,480 Felly dim ond enw y dynol yma, Zamyla, 966 00:47:07,480 --> 00:47:12,030 hynny yw dilyniant o cymeriadau, Z-A-M-Y-L-A. 967 00:47:12,030 --> 00:47:16,020 Ac yn awr gadewch i ni dybio bod enw Zamyla yn yn cael ei storio y tu mewn cyfrifiadur 968 00:47:16,020 --> 00:47:16,880 rhaglen. 969 00:47:16,880 --> 00:47:20,830 >> Wel, mae'n sefyll i reswm y dylem yn gallu edrych ar y cymeriadau hynny 970 00:47:20,830 --> 00:47:21,590 yn unigol. 971 00:47:21,590 --> 00:47:24,710 Felly Im 'jyst yn mynd i dynnu ychydig blwch o gwmpas enw Zamyla yma. 972 00:47:24,710 --> 00:47:31,580 Ac mae'n wir yn C pan fyddwch cael llinyn, fel Zamyla-- ac efallai 973 00:47:31,580 --> 00:47:34,940 y llinyn wedi dod yn ôl o swyddogaeth fel get llinyn, 974 00:47:34,940 --> 00:47:38,540 alli 'n weithredol drin mae'n cymeriad gan cymeriad. 975 00:47:38,540 --> 00:47:42,070 >> Yn awr, mae hyn yn germane gyfer y sgwrs wrth law, oherwydd 976 00:47:42,070 --> 00:47:46,420 yn cryptograffiaeth os ydych am newid A i B, a B i C, a C i D, 977 00:47:46,420 --> 00:47:49,650 ac yn y blaen, mae angen i chi fod yn gallu i edrych ar y cymeriadau unigol 978 00:47:49,650 --> 00:47:50,190 mewn llinyn. 979 00:47:50,190 --> 00:47:52,695 Mae angen i chi allu newid Z i rywbeth arall, y A 980 00:47:52,695 --> 00:47:55,280 i rywbeth arall, y M i rhywbeth arall, ac yn y blaen. 981 00:47:55,280 --> 00:47:58,000 Ac felly mae angen ffordd, programmatically, felly 982 00:47:58,000 --> 00:48:03,020 i siarad, yn C i allu newid ac edrych ar llythrennau unigol. 983 00:48:03,020 --> 00:48:05,690 A gallwn wneud hyn fel a ganlyn. 984 00:48:05,690 --> 00:48:08,340 >> Gadewch i mi fynd yn bennaeth yn ôl mewn IDE CS50. 985 00:48:08,340 --> 00:48:11,130 A gadewch i mi fynd yn ei flaen ac yn creu ffeil newydd 986 00:48:11,130 --> 00:48:16,134 y byddaf yn galw amser hwn string0, fel ein enghraifft gyntaf o'r fath, dot c. 987 00:48:16,134 --> 00:48:18,300 Ac yr wyf i'n mynd i fynd yn ei flaen a chwip i fyny fel a ganlyn. 988 00:48:18,300 --> 00:48:22,870 >> Felly gynnwys CS50.h, ac Yna, yn cynnwys io.h safonol, 989 00:48:22,870 --> 00:48:25,990 yr wyf bron bob amser i'n mynd i yn defnyddio yn fy rhaglenni, o leiaf 990 00:48:25,990 --> 00:48:26,780 yn y lle cyntaf. 991 00:48:26,780 --> 00:48:32,180 int prif ddi-rym, ac yna i mewn yma rwy'n mynd i wneud llinynnau yn cael cael llinyn. 992 00:48:32,180 --> 00:48:35,260 Ac yna dwi'n mynd i mynd yn ei flaen ac yn gwneud hyn. 993 00:48:35,260 --> 00:48:37,460 Dw i eisiau mynd ymlaen ac, fel gwiriad pwyll, 994 00:48:37,460 --> 00:48:43,607 dim ond dweud, helo, cant s, hanner colon, yn gwneud llinyn 0. 995 00:48:43,607 --> 00:48:44,690 Uh oh, yr hyn a wnaeth i ei wneud yma? 996 00:48:44,690 --> 00:48:45,930 O, doeddwn i ddim yn plygio i mewn. 997 00:48:45,930 --> 00:48:48,120 Felly ddysgwyd gwersi, bod Nid oedd yn fwriadol. 998 00:48:48,120 --> 00:48:52,480 >> Felly camgymeriad, mwy cant trawsnewidiadau na dadleuon data. 999 00:48:52,480 --> 00:48:54,940 A dyma lle, yn llinell 7-- Iawn, felly mae gen i, 1000 00:48:54,940 --> 00:48:56,690 dyfyniad unquote, dyna fy llinyn i printf. 1001 00:48:56,690 --> 00:48:58,151 Mae gen i arwydd canradd. 1002 00:48:58,151 --> 00:48:59,650 Ond dw i'n colli'r ail ddadl. 1003 00:48:59,650 --> 00:49:03,190 >> Dw i'n colli'r coma, sy'n Oedd gennyf mewn enghreifftiau blaenorol. 1004 00:49:03,190 --> 00:49:06,650 Felly yn gyfle da i osod un yn fwy camgymeriad, yn ddamweiniol. 1005 00:49:06,650 --> 00:49:09,950 Ac yn awr gadewch i mi redeg string0, teipiwch Zamyla. 1006 00:49:09,950 --> 00:49:10,970 OK, helo Zamyla. 1007 00:49:10,970 --> 00:49:14,144 >> Felly rydym wedi cynnal y math hwn o raglen ychydig o adegau gwahanol yn awr. 1008 00:49:14,144 --> 00:49:16,310 Ond gadewch i ni wneud rhywbeth ychydig yn wahanol y tro hwn. 1009 00:49:16,310 --> 00:49:19,450 Yn hytrach na dim ond argraffu Zamyla yn enw cyfan allan gyda printf, 1010 00:49:19,450 --> 00:49:21,350 gadewch i ni wneud hynny cymeriad gan cymeriad. 1011 00:49:21,350 --> 00:49:22,700 >> Rydw i'n mynd i ddefnyddio ar gyfer dolen. 1012 00:49:22,700 --> 00:49:26,160 Ac yr wyf i'n mynd i roi fy hun newidyn cyfrif, enw i. 1013 00:49:26,160 --> 00:49:33,530 Ac yr wyf i'n mynd i gadw ailadrodd, felly hir fel fi yn llai na hyd y s. 1014 00:49:33,530 --> 00:49:35,930 >> Mae'n troi allan, nid y gwnaethom gwneud hyn y tro diwethaf, 1015 00:49:35,930 --> 00:49:39,100 hynny c comes ag a swyddogaeth o'r enw Stirling. 1016 00:49:39,100 --> 00:49:42,690 Yn ôl yn y dydd, ac yn gyffredinol dal wrth weithredu swyddogaethau, 1017 00:49:42,690 --> 00:49:45,405 Bydd pobl yn aml yn dewis iawn Enwau cryno y math hwnnw o sain 1018 00:49:45,405 --> 00:49:48,280 sydd angen arnoch, hyd yn oed er 'i' ar goll rhai llafariaid neu lythyrau. 1019 00:49:48,280 --> 00:49:50,660 Felly Stirling yw'r enwi o swyddogaeth sy'n 1020 00:49:50,660 --> 00:49:53,880 cymryd dadl rhwng cromfachau dylai hynny fod yn llinyn. 1021 00:49:53,880 --> 00:49:56,910 Ac mae'n jyst yn dychwelyd yn gyfanrif, hyd y llinyn. 1022 00:49:56,910 --> 00:50:00,580 >> Felly, mae hyn ar gyfer dolen ar linell 7 yn mynd i ddechrau cyfrif yn i yn dychwelyd 0. 1023 00:50:00,580 --> 00:50:02,530 Mae'n mynd i gynyddiad ff ar bob iteriad 1024 00:50:02,530 --> 00:50:04,350 gan 1, fel yr ydym wedi bod yn gwneud ychydig o weithiau. 1025 00:50:04,350 --> 00:50:06,780 Ond mae'n mynd i wneud yn unig hyd nes y pwynt 1026 00:50:06,780 --> 00:50:09,660 pryd fi yw hyd y llinyn ei hun. 1027 00:50:09,660 --> 00:50:14,520 >> Felly, mae hyn yn ffordd o, yn y pen draw, ailadrodd dros y cymeriadau 1028 00:50:14,520 --> 00:50:17,430 yn y llinyn fel y mae a ganlyn. 1029 00:50:17,430 --> 00:50:20,670 Rydw i'n mynd i argraffu nid llinyn cyfan, ond cant c, 1030 00:50:20,670 --> 00:50:22,860 cymeriad unigol wedi'i ddilyn gan y llinell newydd. 1031 00:50:22,860 --> 00:50:24,880 Ac yna dwi'n mynd i mynd yn ei flaen, ac mae angen i mi 1032 00:50:24,880 --> 00:50:29,080 dweud fy mod eisiau argraffu cymeriad ith o s. 1033 00:50:29,080 --> 00:50:33,450 >> Felly, os fi yw'r newidyn sy'n dynodi mynegai y llinyn, lle 1034 00:50:33,450 --> 00:50:37,230 yn cael eu ynddo, mae angen i chi i mi fod yn gallu dweud, yn rhoi cymeriad ith o s mi. 1035 00:50:37,230 --> 00:50:40,390 Ac c wedi ffordd o wneud hyn gyda cromfachau sgwâr. 1036 00:50:40,390 --> 00:50:43,679 Rydych yn syml yn dweud enw'r llinyn, sydd yn yr achos hwn s. 1037 00:50:43,679 --> 00:50:46,970 Yna, byddwch yn defnyddio cromfachau sgwâr, sy'n cael eu Fel arfer, ychydig uwchben eich Ffurflen Dreth neu Enter 1038 00:50:46,970 --> 00:50:48,110 allweddol ar y bysellfwrdd. 1039 00:50:48,110 --> 00:50:52,410 Ac yna rydych yn rhoi'r mynegai y cymeriad yr ydych am eu hargraffu. 1040 00:50:52,410 --> 00:50:55,960 Felly mae'r mynegai yn mynd i fod yn number-- 0, neu 1, neu 2, neu 3, neu dot, 1041 00:50:55,960 --> 00:50:57,590 dot, dot, rhyw rif arall. 1042 00:50:57,590 --> 00:51:00,920 >> Ac rydym yn sicrhau ei fod yn mynd i fod y nifer cywir, oherwydd yr wyf yn 1043 00:51:00,920 --> 00:51:02,360 yn dechrau cyfrif ar 0. 1044 00:51:02,360 --> 00:51:07,020 Ac at ball, cymeriad cyntaf mewn llinyn yw drwy gonfensiwn 0. 1045 00:51:07,020 --> 00:51:09,230 A'r ail gymeriad yn braced 1. 1046 00:51:09,230 --> 00:51:11,120 A'r trydydd cymeriad yw braced 2. 1047 00:51:11,120 --> 00:51:13,630 Ac nad ydych eisiau mynd yn rhy yn hyn, ond ni fyddwn yn oherwydd ein bod yn 1048 00:51:13,630 --> 00:51:17,780 mynd i dim ond gynyddiad ff nes ei fod hafal i hyd y llinyn. 1049 00:51:17,780 --> 00:51:20,210 Ac a phryd, Bydd hyn ar gyfer dolen stopio. 1050 00:51:20,210 --> 00:51:25,550 >> Felly, gadewch i mi fynd yn ei flaen ac arbed hyn rhaglen, a rhedeg yn gwneud llinyn 0. 1051 00:51:25,550 --> 00:51:28,400 Ond yr wyf gwyneb. 1052 00:51:28,400 --> 00:51:35,390 Ymhlyg datgan swyddogaeth llyfrgell Stirling gyda math o'r fath ac such-- yn awr, 1053 00:51:35,390 --> 00:51:36,430 hyn yn swnio'n gyfarwydd. 1054 00:51:36,430 --> 00:51:37,440 Ond nid yw'n printf. 1055 00:51:37,440 --> 00:51:38,540 Ac nid yw'n cael llinyn. 1056 00:51:38,540 --> 00:51:40,480 >> Doeddwn i ddim yn sgriw i fyny yn yr un ffordd y tro hwn. 1057 00:51:40,480 --> 00:51:45,100 Ond sylwi lawr yma ychydig i lawr ymhellach, yn cynnwys y string.h pennawd, 1058 00:51:45,100 --> 00:51:47,210 darparu'r benodol datganiad ar gyfer Stirling. 1059 00:51:47,210 --> 00:51:48,820 Felly mae mewn gwirionedd yn gliw i mewn 'na. 1060 00:51:48,820 --> 00:51:51,670 >> Ac yn wir mae'n troi allan mae ffeil flaen arall 1061 00:51:51,670 --> 00:51:53,970 nad ydym wedi defnyddio yn y dosbarth eto, ond mae'n 1062 00:51:53,970 --> 00:51:56,480 ymhlith y rhai sydd ar gael i chi, a elwir string.h. 1063 00:51:56,480 --> 00:52:00,930 Ac yn y ffeil, string.h yn datgan Stirling. 1064 00:52:00,930 --> 00:52:05,220 Felly, gadewch i mi fynd yn ei flaen ac arbed hyn, gwneud llinyn 1065 00:52:05,220 --> 00:52:08,040 0-- neis, dim negeseuon gwall y tro hwn. 1066 00:52:08,040 --> 00:52:12,290 >> ./string0 Zamyla, a Rwy'n ar fin daro Chofnoda, 1067 00:52:12,290 --> 00:52:16,710 a phryd getstring yn mynd i ddychwelyd y llinyn, rhowch ef yn s. 1068 00:52:16,710 --> 00:52:21,890 Yna, ar gyfer ddolen yn mynd i ailadrodd dros gymeriadau S un ar y tro, 1069 00:52:21,890 --> 00:52:28,420 ac argraffu un bob llinell iddynt, oherwydd Roedd gen bod n slaes ar y diwedd. 1070 00:52:28,420 --> 00:52:34,530 Felly gallwn i hepgor y slaes n, ac yna dim ond argraffu Zamyla gyd 1071 00:52:34,530 --> 00:52:37,460 yn yr un llinell, reimplementing effeithiol 1072 00:52:37,460 --> 00:52:38,999 printf, ac nid yw bob un sy'n ddefnyddiol. 1073 00:52:38,999 --> 00:52:40,540 Ond yn yr achos hwn, nid wyf wedi gwneud hynny. 1074 00:52:40,540 --> 00:52:43,610 Rwyf wedi eu hargraffu mewn gwirionedd yn un cymeriad ar y tro, un i bob llinell, 1075 00:52:43,610 --> 00:52:45,400 er mwyn i ni mewn gwirionedd yn gweld yr effaith. 1076 00:52:45,400 --> 00:52:46,900 >> Ond dylai Nodaf un peth yma. 1077 00:52:46,900 --> 00:52:48,930 A byddwn yn dod yn ôl at hyn mewn wythnos yn y dyfodol. 1078 00:52:48,930 --> 00:52:52,650 Mae'n ymddangos bod hyn yn cod o bosibl yn buggy. 1079 00:52:52,650 --> 00:52:56,560 >> Mae'n troi allan bod yn cael llinyn a rhai swyddogaethau eraill mewn bywyd 1080 00:52:56,560 --> 00:53:00,280 Nid gwneud o reidrwydd bob amser yn dychwelyd yr hyn yr ydych yn disgwyl. 1081 00:53:00,280 --> 00:53:03,010 Rydym yn gwybod o ddosbarth ddiwethaf amser yn y sy'n cael 1082 00:53:03,010 --> 00:53:04,960 llinyn i fod i ddychwelyd llinyn. 1083 00:53:04,960 --> 00:53:09,900 Ond beth os bydd y mathau ddefnyddiwr allan o'r fath gair hir, neu baragraff, neu draethawd 1084 00:53:09,900 --> 00:53:13,010 fod yna dim ond nid yn ddigon cof yn y cyfrifiadur i ffitio iddo. 1085 00:53:13,010 --> 00:53:15,410 >> Fel, beth os bydd rhywbeth yn mynd anghywir o dan y cwfl? 1086 00:53:15,410 --> 00:53:18,400 Efallai nad yw'n digwydd yn aml, ond gallai ddigwydd unwaith 1087 00:53:18,400 --> 00:53:21,520 mewn blwc, anaml iawn. 1088 00:53:21,520 --> 00:53:25,460 Ac felly mae'n troi allan y get llinyn a swyddogaethau hoffi ei wneud yw o reidrwydd yn 1089 00:53:25,460 --> 00:53:26,380 bob amser yn dychwelyd llinynnau. 1090 00:53:26,380 --> 00:53:30,680 Efallai y byddant yn dychwelyd rhywfaint o werth wall, rhywfaint o werth sentinel fel petai, 1091 00:53:30,680 --> 00:53:32,612 sy'n dangos bod rhywbeth wedi mynd o'i le. 1092 00:53:32,612 --> 00:53:35,320 A fyddech yn unig yn gwybod hyn o wedi dysgu yn y dosbarth yn awr, 1093 00:53:35,320 --> 00:53:37,700 neu ar ôl darllen rhai yn fwy ddogfennaeth. 1094 00:53:37,700 --> 00:53:43,120 Mae'n troi allan bod yn cael llinyn Gall dychwelyd gwerth a elwir yn null. 1095 00:53:43,120 --> 00:53:46,220 Null yn werth arbennig yr ydym annhymerus ' dod yn ôl i mewn wythnos yn y dyfodol. 1096 00:53:46,220 --> 00:53:50,420 Ond am nawr, dim ond yn gwybod bod os ydw i eisiau i fod yn wirioneddol briodol wrth symud ymlaen 1097 00:53:50,420 --> 00:53:52,650 gan ddefnyddio get llinyn, yr wyf yn Ni ddylai dim ond ei alw, 1098 00:53:52,650 --> 00:53:56,870 ac blindly defnyddio ei werth dychwelyd, ymddiried ei fod yn llinyn. 1099 00:53:56,870 --> 00:53:59,420 >> Dylwn ddweud yn gyntaf, hey, arhoswch funud, dim ond 1100 00:53:59,420 --> 00:54:03,380 fwrw ymlaen os s nid yw'n gyfartal null, lle null, unwaith eto, 1101 00:54:03,380 --> 00:54:04,660 yn unig yw rhywfaint o werth arbennig. 1102 00:54:04,660 --> 00:54:07,770 Ac mae'n yr unig werth arbennig i chi Mae angen i chi boeni am i get llinyn. 1103 00:54:07,770 --> 00:54:10,900 Cael llinyn naill ai yn mynd i ddychwelyd llinyn neu null. 1104 00:54:10,900 --> 00:54:17,219 >> Ac mae hyn ebychnod hafal arwydd efallai y byddwch yn gwybod o efallai dosbarth mathemateg 1105 00:54:17,219 --> 00:54:20,510 y gallech dynnu hafalnod gyda llinell trwyddo i ddangos nid yn gyfartal. 1106 00:54:20,510 --> 00:54:23,135 Nid yw hynny'n gyffredinol gymeriad gallwch deipio ar eich bysellfwrdd. 1107 00:54:23,135 --> 00:54:26,480 Ac felly yn y rhan fwyaf o ieithoedd rhaglennu, pan fyddwch eisiau i ddweud nad gyfartal, 1108 00:54:26,480 --> 00:54:29,160 ydych yn defnyddio pwynt ebychnod, a elwir hefyd yn bang. 1109 00:54:29,160 --> 00:54:33,180 Felly, yr ydych yn dweud bang hafal, a oedd yn golygu nad hafal, yn rhesymegol. 1110 00:54:33,180 --> 00:54:38,060 Mae'n union fel nad oes 'na fwy na, neu'n hafal i, neu'n llai na 1111 00:54:38,060 --> 00:54:41,270 neu'n hafal i allwedd ar eich bysellfwrdd hynny mae hyn i gyd mewn un symbol. 1112 00:54:41,270 --> 00:54:44,020 Felly dyna pam, yn enghreifftiau o'r gorffennol, wnaethoch chi gael braced agored, ac yna 1113 00:54:44,020 --> 00:54:48,670 arwydd cyfartal, er mwyn gwneud fwy na neu'n, yn dweud, yn llai na. 1114 00:54:48,670 --> 00:54:49,910 >> Felly beth yw'r prydau parod yma? 1115 00:54:49,910 --> 00:54:53,880 Mae hyn yn syml yn ffordd bellach o cyflwyno cystrawen hwn, nodwedd hon, 1116 00:54:53,880 --> 00:54:57,390 ailadrodd dros unigol cymeriadau mewn llinyn. 1117 00:54:57,390 --> 00:55:00,260 Ac yn union fel y rhai sgwâr cromfachau yn eich galluogi i gael gafael arnynt, 1118 00:55:00,260 --> 00:55:03,790 ystyried y cromfachau sgwâr hynny fel fath o awgrymu ar hyn sylfaenol 1119 00:55:03,790 --> 00:55:06,040 dylunio, lle pob cymeriad tu mewn llinyn 1120 00:55:06,040 --> 00:55:10,180 yn fath o mewn bocs yn rhywle oddi tano y cwfl yn y cof eich cyfrifiadur. 1121 00:55:10,180 --> 00:55:12,340 >> Ond gadewch i ni wneud amrywiad o hyn. 1122 00:55:12,340 --> 00:55:14,880 Mae'n ymddangos bod hyn yn rhaglen yn gywir. 1123 00:55:14,880 --> 00:55:18,810 Felly fesul echelinau CS50 ar gyfer arfarnu cod, mae hyn yn gywir yn awr. 1124 00:55:18,810 --> 00:55:22,959 Yn enwedig yn awr fy mod yn gwirio am null, dylai rhaglen hon byth yn damwain. 1125 00:55:22,959 --> 00:55:24,500 Ac yr wyf yn jyst yn gwybod bod o brofiad. 1126 00:55:24,500 --> 00:55:28,040 Ond does dim byd arall sy'n gallwn ni wir yn mynd o'i le yma. 1127 00:55:28,040 --> 00:55:31,860 Ond nid yw'n cynllunio'n dda iawn, oherwydd gadewch i ni fynd yn ôl at yr hanfodion. 1128 00:55:31,860 --> 00:55:34,450 >> Yn gyntaf, principles-- beth yw gwaith ar gyfer dolen yn ei wneud? 1129 00:55:34,450 --> 00:55:36,290 A am ddolen yn gwneud tri pheth. 1130 00:55:36,290 --> 00:55:39,340 Mae'n initializes rhai werth, os ydych yn gofyn iddo wneud hynny. 1131 00:55:39,340 --> 00:55:41,770 Mae'n gwirio amod. 1132 00:55:41,770 --> 00:55:45,380 Ac yna ar ôl pob iteriad, ar ôl pob cylch, 1133 00:55:45,380 --> 00:55:49,330 mae'n cynnyddu rhai gwerth, neu werthoedd, yma. 1134 00:55:49,330 --> 00:55:50,600 >> Felly beth mae hynny'n ei olygu? 1135 00:55:50,600 --> 00:55:52,940 Rydym ymgychwyn fi i 0. 1136 00:55:52,940 --> 00:55:58,610 Rydym yn gwirio ac yn gwneud yn siwr i yn llai na hyd y s, sy'n Z-A-M-Y-L-A, 1137 00:55:58,610 --> 00:55:59,900 felly sy'n llai na 6. 1138 00:55:59,900 --> 00:56:02,590 Ac, yn wir, 0 yn llai na 6. 1139 00:56:02,590 --> 00:56:05,580 >> Rydym yn argraffu allan Z o enw Zamyla yn. 1140 00:56:05,580 --> 00:56:08,080 Yna, rydym yn cynyddiad i 0-1. 1141 00:56:08,080 --> 00:56:11,290 Yna byddwn yn gwirio, yw 1 yn llai na hyd s? 1142 00:56:11,290 --> 00:56:13,270 Mae hyd y s yw 6. 1143 00:56:13,270 --> 00:56:13,950 Ydy. 1144 00:56:13,950 --> 00:56:16,880 >> Felly rydym yn argraffu mewn enw Zamyla, yn ZA. 1145 00:56:16,880 --> 00:56:20,090 Rydym cynyddiad ff o 0, 1, 2. 1146 00:56:20,090 --> 00:56:23,720 Yna byddwn yn gwirio, yw 2 yn llai na hyd y enw Zamyla yn. 1147 00:56:23,720 --> 00:56:25,380 6- felly 2 yn llai na 6. 1148 00:56:25,380 --> 00:56:30,460 Ie, gadewch i ni argraffu nawr M yn enw Zamyla, sef y trydydd cymeriad. 1149 00:56:30,460 --> 00:56:34,110 >> Yr hyn sy'n allweddol yma yw bod ar bob ailadroddiad o'r stori, dwi'n gwirio, 1150 00:56:34,110 --> 00:56:37,810 yn ff llai na hyd Zamyla? 1151 00:56:37,810 --> 00:56:40,350 Ond mae'r dal yw bod Nid Stirling yn eiddo. 1152 00:56:40,350 --> 00:56:43,100 Mae'r rhai ohonoch sydd wedi rhaglennu o'r blaen yn Java neu ieithoedd eraill 1153 00:56:43,100 --> 00:56:46,310 allai wybod hyd y llinyn yn eiddo, dim ond rhai darllen yn unig werth. 1154 00:56:46,310 --> 00:56:50,220 >> Yn y C yn yr achos hwn, os yw hyn yn swyddogaeth sy'n llythrennol 1155 00:56:50,220 --> 00:56:53,520 cyfrif nifer y cymeriadau yn Zamyla bob tro 1156 00:56:53,520 --> 00:56:54,740 rydym yn galw y swyddogaeth. 1157 00:56:54,740 --> 00:56:58,500 Bob tro y byddwch yn gofyn i'r cyfrifiadur i ddefnyddio Stirling, mae'n cymryd golwg ar Zamyla, 1158 00:56:58,500 --> 00:57:01,960 ac yn dweud Z-A-M-Y-L-A, 6. 1159 00:57:01,960 --> 00:57:02,962 Ac mae'n dychwelyd 6. 1160 00:57:02,962 --> 00:57:04,920 Y tro nesaf y byddwch yn ffonio y tu mewn i hynny dolen, 1161 00:57:04,920 --> 00:57:08,610 mae'n mynd i edrych ar Zamyla eto, yn dweud Z-A-M-Y-L-A, 6. 1162 00:57:08,610 --> 00:57:10,320 Ac mae'n mynd i ddychwelyd 6. 1163 00:57:10,320 --> 00:57:12,980 Felly beth dwp am ddylunio hon? 1164 00:57:12,980 --> 00:57:17,700 >> Pam nad yw fy cod nid 5 allan o 5 ar gyfer dylunio ar hyn o bryd, fel petai? 1165 00:57:17,700 --> 00:57:20,600 Wel, dwi'n gofyn cwestiwn yn ddiangen. 1166 00:57:20,600 --> 00:57:23,030 Rwy'n gwneud mwy o waith nag angen i mi. 1167 00:57:23,030 --> 00:57:25,370 >> Felly er bod y ateb yn gywir, yr wyf yn 1168 00:57:25,370 --> 00:57:29,560 gofyn i'r cyfrifiadur, beth yw hyd Zamyla eto, 1169 00:57:29,560 --> 00:57:31,380 ac unwaith eto, ac unwaith eto, ac unwaith eto? 1170 00:57:31,380 --> 00:57:33,980 A dyna ateb yw byth yn mynd i newid. 1171 00:57:33,980 --> 00:57:35,900 Mae bob amser yn mynd i fod yn 6. 1172 00:57:35,900 --> 00:57:39,730 >> Felly yn ateb gwell na hyn fyddai y fersiwn nesaf. 1173 00:57:39,730 --> 00:57:43,390 Gadewch i mi fynd yn ei flaen ac yn ei roi mewn ffeil ar wahân o'r enw string1.c, 1174 00:57:43,390 --> 00:57:44,990 dim ond er mwyn ei gadw ar wahân. 1175 00:57:44,990 --> 00:57:47,260 Ac mae'n troi allan mewn i dolen, gallwch mewn gwirionedd 1176 00:57:47,260 --> 00:57:50,210 ddatgan newidynnau lluosog ar unwaith. 1177 00:57:50,210 --> 00:57:53,460 >> Felly, yr wyf i'n mynd i gadw fi a'i osod i 0. 1178 00:57:53,460 --> 00:57:56,190 Ond rwyf hefyd yn ddim yn mynd i ychwanegu atalnod, a dweud, 1179 00:57:56,190 --> 00:58:01,050 rhoi newidyn a elwir n, y mae ei fi gwerth hafal i hyd llinyn y s. 1180 00:58:01,050 --> 00:58:09,410 Ac yn awr, os gwelwch yn dda yn gwneud fy nghyflwr cyn belled ag y fi yn llai na n. 1181 00:58:09,410 --> 00:58:14,140 >> Felly, yn y modd hwn, mae'r rhesymeg yn union yr un fath ar ddiwedd y dydd. 1182 00:58:14,140 --> 00:58:18,280 Ond yr wyf yn cofio y gwerth 6, yn yr achos hwn. 1183 00:58:18,280 --> 00:58:19,780 Beth yw hyd y enw Zamyla yn? 1184 00:58:19,780 --> 00:58:20,860 A dwi'n ei roi yn n. 1185 00:58:20,860 --> 00:58:23,050 >> A dwi'n dal i wirio y cyflwr bob tro. 1186 00:58:23,050 --> 00:58:24,300 Yw 0 llai na 6? 1187 00:58:24,300 --> 00:58:25,600 Yw 1 yn llai na 6? 1188 00:58:25,600 --> 00:58:28,600 A yw 2 yn llai na 6, ac yn y blaen? 1189 00:58:28,600 --> 00:58:31,914 >> Ond dydw i ddim yn gofyn y cyfrifiadur eto, ac eto, beth sydd 1190 00:58:31,914 --> 00:58:33,080 hyd y enw Zamyla yn? 1191 00:58:33,080 --> 00:58:34,320 Beth yw hyd y enw Zamyla yn? 1192 00:58:34,320 --> 00:58:35,986 Beth yw hyd y enw Zamyla hwn? 1193 00:58:35,986 --> 00:58:40,440 Im 'yn llythrennol yn cofio bod yn gyntaf a ond ateb yn yr ail n amrywiol. 1194 00:58:40,440 --> 00:58:45,280 Felly, mae hyn yn awr fyddai nid yn unig yn gywir, ond a gynlluniwyd yn dda hefyd. 1195 00:58:45,280 --> 00:58:46,670 >> Nawr, beth am steil? 1196 00:58:46,670 --> 00:58:48,866 Rwyf wedi enwi fy newidynnau eithaf da, byddwn yn dweud. 1197 00:58:48,866 --> 00:58:50,240 Maent yn super gryno iawn yn awr. 1198 00:58:50,240 --> 00:58:52,090 A dyna gwbl iawn. 1199 00:58:52,090 --> 00:58:55,120 >> Os mai dim ond un llinyn mewn rhaglen, 1200 00:58:55,120 --> 00:58:56,860 efallai y byddwch yn ogystal yn ei alw s i linyn. 1201 00:58:56,860 --> 00:58:59,370 Os mai dim ond un newidyn ar gyfer cyfrif mewn rhaglen, 1202 00:58:59,370 --> 00:59:00,710 efallai y byddwch yn ogystal yn ei alw i. 1203 00:59:00,710 --> 00:59:03,500 Os oes gennych hyd, n yn super cyffredin yn ogystal. 1204 00:59:03,500 --> 00:59:05,800 Ond nid wyf wedi gwneud sylwadau unrhyw un o fy cod. 1205 00:59:05,800 --> 00:59:09,200 >> Dydw i ddim wedi gwybod i'r reader-- boed hynny yn fy TF, neu TA, 1206 00:59:09,200 --> 00:59:12,460 neu dim ond colleague-- hyn sydd i fod i fod yn mynd ymlaen yn y rhaglen hon. 1207 00:59:12,460 --> 00:59:15,760 Ac felly i gael arddull da, beth fyddai wyf am ei wneud 1208 00:59:15,760 --> 00:59:24,580 yn this-- rhywbeth fel gofynnwch defnyddiwr ar gyfer mewnbwn. 1209 00:59:24,580 --> 00:59:26,670 A gallwn ailysgrifennu hwn unrhyw nifer o ffyrdd. 1210 00:59:26,670 --> 00:59:35,630 >> Gwnewch yn siwr s-- wneud yn siŵr get llinyn dychwelyd llinyn. 1211 00:59:35,630 --> 00:59:40,280 Ac yna yn y Yma-- ac mae hyn yn bosibl y ailadrodd comment-- pwysicaf 1212 00:59:40,280 --> 00:59:44,450 dros y cymeriadau yn s un ar y tro. 1213 00:59:44,450 --> 00:59:47,060 A gallwn ddefnyddio unrhyw dewis iaith Saesneg 1214 00:59:47,060 --> 00:59:49,650 yma i ddisgrifio pob darnau hyn o god. 1215 00:59:49,650 --> 00:59:52,740 >> Sylwch nad wyf wedi rhoi sylwadau ar bob llinell o god, 1216 00:59:52,740 --> 00:59:55,690 mewn gwirionedd dim ond ar y diddorol rai, y rhai sy'n 1217 00:59:55,690 --> 00:59:59,460 cael rhywfaint o ystyr fy mod gallai am wneud super glir i rywun 1218 00:59:59,460 --> 01:00:00,460 darllen fy cod. 1219 01:00:00,460 --> 01:00:02,920 A pham yr ydych yn ffonio ei gael llinyn gofynnwch defnyddiwr ar gyfer mewnbwn? 1220 01:00:02,920 --> 01:00:05,450 Nid yw hyd yn oed bod un o reidrwydd holl ddisgrifiadol hynny. 1221 01:00:05,450 --> 01:00:09,340 Ond mae'n helpu ddweud stori, gan fod y ail linell yn y stori yw, gwnewch yn siŵr 1222 01:00:09,340 --> 01:00:10,740 cael llinyn dychwelyd llinyn. 1223 01:00:10,740 --> 01:00:14,260 >> A'r llinell yn drydydd yn y stori yw, ailadrodd dros y cymeriadau yn s un 1224 01:00:14,260 --> 01:00:15,380 ar y tro. 1225 01:00:15,380 --> 01:00:17,920 Ac yn awr yn unig ar gyfer mesur da, Rydw i'n mynd i fynd yn ei flaen ac yn ychwanegu 1226 01:00:17,920 --> 01:00:24,560 un sylw mwy na dim ond Dywed print i-ed gymeriad mewn s. 1227 01:00:24,560 --> 01:00:26,520 Yn awr, beth a wneuthum ar ddiwedd y dydd? 1228 01:00:26,520 --> 01:00:29,190 >> Rwyf wedi ychwanegu rhai Saesneg geiriau ar ffurf sylwadau. 1229 01:00:29,190 --> 01:00:32,700 Mae'r symbol slaes slaes golygu, hey, cyfrifiadur hwn yw i'r bobl, 1230 01:00:32,700 --> 01:00:33,820 nid i chi, y cyfrifiadur. 1231 01:00:33,820 --> 01:00:35,119 Felly, maen nhw'n anwybyddu yn rhesymegol. 1232 01:00:35,119 --> 01:00:35,910 Maent yn unig yno. 1233 01:00:35,910 --> 01:00:39,830 >> Ac, yn wir, CS50 IDE dangos iddynt fel llwyd, â bod yn ddefnyddiol, ond nid yn allweddol 1234 01:00:39,830 --> 01:00:41,000 i'r rhaglen. 1235 01:00:41,000 --> 01:00:42,570 Sylwi ar yr hyn y gallwch ei wneud yn awr. 1236 01:00:42,570 --> 01:00:44,950 P'un a ydych yn gwybod C rhaglennu neu beidio, byddwch yn 1237 01:00:44,950 --> 01:00:47,722 Gall dim ond sefyll yn ôl ar hyn rhaglen, a sgimio y sylwadau. 1238 01:00:47,722 --> 01:00:50,180 Gofynnwch defnyddiwr ar gyfer mewnbwn, gwnewch yn siŵr cael llinyn dychwelyd llinyn, 1239 01:00:50,180 --> 01:00:53,009 ailadrodd dros y cymeriadau yn s un ar y tro, argraffwch y cymeriad 1240 01:00:53,009 --> 01:00:55,550 i-fed gymeriad mewn s-- nad ydych yn ei wneud hyd yn oed yn rhaid i ni edrych ar y cod 1241 01:00:55,550 --> 01:00:57,270 i ddeall yr hyn y rhaglen hon yn ei wneud. 1242 01:00:57,270 --> 01:01:00,280 Ac, yn well eto, os ydych chi eich hun yn edrych yn yn y rhaglen hon mewn wythnos neu ddwy, 1243 01:01:00,280 --> 01:01:02,280 neu fis, neu flwyddyn, chi hefyd nad oes rhaid i 1244 01:01:02,280 --> 01:01:04,420 i syllu ar y cod, geisio cofio, 1245 01:01:04,420 --> 01:01:06,630 beth oedd yr wyf yn ceisio'i wneud gyda'r cod hwn? 1246 01:01:06,630 --> 01:01:07,770 >> Rydych chi wedi dweud eich hun. 1247 01:01:07,770 --> 01:01:11,660 Rydych chi wedi disgrifio i chi eich hun, neu ryw gydweithiwr, neu TA, neu TF. 1248 01:01:11,660 --> 01:01:14,860 Ac felly y byddai hyn yn awr yn gywir, a dylunio da, 1249 01:01:14,860 --> 01:01:18,210 ac yn dda arddull yn y pen draw yn ogystal. 1250 01:01:18,210 --> 01:01:19,990 Felly peidiwch gadw hynny mewn cof. 1251 01:01:19,990 --> 01:01:22,200 >> Felly mae un arall beth rwy'n mynd i wneud yma 1252 01:01:22,200 --> 01:01:28,240 Gall fod yn awr yn datgelu yn union beth sydd mynd ymlaen o dan y cwfl. 1253 01:01:28,240 --> 01:01:30,390 Felly mae yna nodwedd hon yn C, ac ieithoedd eraill, 1254 01:01:30,390 --> 01:01:33,010 gelwir stereoteipio naill ai yn ymhlyg 1255 01:01:33,010 --> 01:01:37,250 neu benodol caniatáu i chi droi o un math data i un arall. 1256 01:01:37,250 --> 01:01:39,800 Rydym wedi bod yn delio felly yn hyn heddiw gyda llinynnau. 1257 01:01:39,800 --> 01:01:41,250 >> A llinynnau yn gymeriadau. 1258 01:01:41,250 --> 01:01:44,910 Ond dwyn i gof o wythnos 0, beth yw'r cymeriadau? 1259 01:01:44,910 --> 01:01:49,334 Cymeriadau yn unig echdyniad ar ben y rhifau degol numbers--, 1260 01:01:49,334 --> 01:01:52,500 a rhifau degol yn wir yn unig yn tynnu ar ben y rhifau deuaidd, 1261 01:01:52,500 --> 01:01:53,720 fel yr ydym diffinnir hi. 1262 01:01:53,720 --> 01:01:55,540 >> Felly cymeriadau niferoedd. 1263 01:01:55,540 --> 01:01:58,410 A rhifau yn gymeriadau, dim ond yn dibynnu ar y cyd-destun. 1264 01:01:58,410 --> 01:02:01,250 Ac mae'n ymddangos bod y tu mewn o raglen gyfrifiadurol, 1265 01:02:01,250 --> 01:02:06,830 gallwch nodi sut yr ydych am edrych ar y darnau du mewn y rhaglen? 1266 01:02:06,830 --> 01:02:10,400 >> Dwyn i gof o wythnos 0 a oedd gennym ASCII, sydd ychydig yn y cod hwn 1267 01:02:10,400 --> 01:02:11,620 llythyrau mapio i rifau. 1268 01:02:11,620 --> 01:02:13,660 Ac dywedasom, cyfalaf A yw 65. 1269 01:02:13,660 --> 01:02:15,860 Cyfalaf B yw 66, ac yn y blaen. 1270 01:02:15,860 --> 01:02:20,500 >> A rhybudd, rydym yn y bôn yn cael chars ar y rhes uchaf yma, fel y byddai C yn eu galw, 1271 01:02:20,500 --> 01:02:23,400 cymeriadau, ac yna ints ar yr ail reng. 1272 01:02:23,400 --> 01:02:28,180 Ac mae'n troi allan gallwch drosi ddi-dor rhwng y ddau, fel arfer. 1273 01:02:28,180 --> 01:02:30,042 Ac os ydym am ei wneud mae hyn yn fwriadol, rydym 1274 01:02:30,042 --> 01:02:31,750 Efallai am fynd i'r afael rhywbeth fel hyn. 1275 01:02:31,750 --> 01:02:33,590 >> Efallai y byddwn am newid priflythrennau i ostwng 1276 01:02:33,590 --> 01:02:35,330 achos, neu llythrennau bach i achos uchaf. 1277 01:02:35,330 --> 01:02:38,000 Ac mae'n troi allan yno yn mewn gwirionedd patrwm yma 1278 01:02:38,000 --> 01:02:39,900 gallwn gofleidio mewn dim ond hyn o bryd. 1279 01:02:39,900 --> 01:02:44,120 Ond gadewch i ni edrych yn gyntaf ar Enghraifft o wneud hyn yn benodol. 1280 01:02:44,120 --> 01:02:46,340 >> Rydw i'n mynd i fynd yn ôl i mewn i IDE CS50. 1281 01:02:46,340 --> 01:02:50,640 Rydw i'n mynd i greu ffeil o'r enw ASCII 0.c. 1282 01:02:50,640 --> 01:02:55,960 Ac yr wyf i'n mynd i fynd yn ei flaen ac ychwanegu fy io.h safonol ar y brig, prif ddi-rym int 1283 01:02:55,960 --> 01:02:57,370 ar dop fy swyddogaeth. 1284 01:02:57,370 --> 01:03:02,700 Ac yna Im 'jyst yn mynd i wneud y canlynol-- yn i ddolen o ff hafal, 1285 01:03:02,700 --> 01:03:04,610 gadewch i ni ddweud, 65. 1286 01:03:04,610 --> 01:03:10,460 >> Ac yna i yn mynd i fod yn llai na 65, yn ogystal â 26 o lythyrau yn yr wyddor. 1287 01:03:10,460 --> 01:03:12,640 Felly byddaf yn gadael y cyfrifiadur gwneud y cwestiwn i mi yno. 1288 01:03:12,640 --> 01:03:15,100 Ac yna y tu mewn dolen hwn, beth ydw i'n mynd i argraffu? 1289 01:03:15,100 --> 01:03:19,230 >> % C yw% ff slaes n. 1290 01:03:19,230 --> 01:03:21,290 Ac yn awr yr wyf am i blygio mewn dwy gwerthoedd. 1291 01:03:21,290 --> 01:03:24,530 Rwyf wedi rhoi cwestiwn dros dro marciau yno i wahodd y cwestiwn. 1292 01:03:24,530 --> 01:03:29,940 >> Rwyf am ailadrodd o 65 ymlaen am 26 llythrennau'r wyddor, 1293 01:03:29,940 --> 01:03:35,190 argraffu ar bob iteriad sy'n cyfwerth annatod cymeriad. 1294 01:03:35,190 --> 01:03:38,299 Mewn geiriau eraill, yr wyf am ailadrodd dros 26 rhifau argraffu 1295 01:03:38,299 --> 01:03:41,590 beth mae'r cymeriad ASCII yw, y llythyr, a beth y rhif cyfatebol yw-- 1296 01:03:41,590 --> 01:03:44,650 mewn gwirionedd dim ond ail-greu y siart gan y sleid. 1297 01:03:44,650 --> 01:03:47,010 Felly beth ddylai marciau cwestiwn rhain fod? 1298 01:03:47,010 --> 01:03:51,760 >> Wel, mae'n ymddangos fod yr ail Dylai un yn unig fod y ff amrywiol. 1299 01:03:51,760 --> 01:03:53,860 Yr wyf am weld hynny fel rhif. 1300 01:03:53,860 --> 01:03:58,920 Ac mae'r ddadl canol yma, gallaf ddweud wrth y cyfrifiadur 1301 01:03:58,920 --> 01:04:03,470 i drin y cyfanrif ff fel cymeriad, er 1302 01:04:03,470 --> 01:04:05,880 yn lle yma i cant C. 1303 01:04:05,880 --> 01:04:07,990 >> Mewn geiriau eraill, os wyf i, yr rhaglennydd dynol, yn gwybod 1304 01:04:07,990 --> 01:04:09,865 dyma rhifau ar ddiwedd y dydd. 1305 01:04:09,865 --> 01:04:12,500 Ac yr wyf yn gwybod y dylai 65 map i ryw gymeriad. 1306 01:04:12,500 --> 01:04:15,310 Gyda hyn cast penodol, gyda cromfachau, 1307 01:04:15,310 --> 01:04:18,840 enw'r math data rydych am ei trosi i, ac yn parenthesis cau, 1308 01:04:18,840 --> 01:04:21,200 gallwch ddweud wrth y cyfrifiadur, hey, cyfrifiaduron, 1309 01:04:21,200 --> 01:04:24,130 trosi cyfanrif hon i torgoch. 1310 01:04:24,130 --> 01:04:26,250 >> Felly, pan fyddaf yn rhedeg hyn rhaglen ar ôl lunio, 1311 01:04:26,250 --> 01:04:29,740 gadewch i ni weld yr hyn yr wyf get-- gwneud ASCII 0. 1312 01:04:29,740 --> 01:04:33,020 Darn iddo, beth wnes i yn anghywir fan hyn? 1313 01:04:33,020 --> 01:04:35,884 Defnyddiwch y dynodwr heb ei ddatgan, iawn, nid yn fwriadol, 1314 01:04:35,884 --> 01:04:37,800 ond gadewch i ni weld os na allwn rheswm drwy hyn. 1315 01:04:37,800 --> 01:04:41,220 >> Felly llinell five-- felly doeddwn i ddim yn cael bell iawn cyn sgriwio i fyny. 1316 01:04:41,220 --> 01:04:42,140 Mae hynny'n iawn. 1317 01:04:42,140 --> 01:04:46,560 Felly llinell 5 ar gyfer i hafal 65-- Rwy'n gweld. 1318 01:04:46,560 --> 01:04:50,130 Felly cofiwch fod yn C, yn wahanol i rai ieithoedd os oes gennych rhaglennu ymlaen llaw 1319 01:04:50,130 --> 01:04:52,190 profiad, mae gennych i ddweud wrth y cyfrifiadur, 1320 01:04:52,190 --> 01:04:55,040 yn wahanol i Scratch, beth math o newidyn ydyw. 1321 01:04:55,040 --> 01:04:56,860 >> Ac yr wyf yn anghofio ymadrodd allweddol yma. 1322 01:04:56,860 --> 01:04:59,200 Yn unol pump, dwi wedi dechrau defnyddio i. 1323 01:04:59,200 --> 01:05:01,560 Ond nid wyf wedi dweud wrth C pa ddata math ydyw. 1324 01:05:01,560 --> 01:05:04,570 Felly, yr wyf i'n mynd i fynd i mewn yma ac dweud, AH, yn ei gwneud yn yn gyfanrif. 1325 01:05:04,570 --> 01:05:07,050 >> Nawr rydw i'n mynd i fynd yn ei flaen ac yn ail-grynhoi. 1326 01:05:07,050 --> 01:05:08,080 Mae hynny'n sefydlog hynny. 1327 01:05:08,080 --> 01:05:12,660 ./ascii0 Enter, dyna fath o oer. 1328 01:05:12,660 --> 01:05:15,360 Nid yn unig y mae'n gyflym super i gofynnwch i'r cyfrifiadur y cwestiwn hwn, 1329 01:05:15,360 --> 01:05:18,885 yn hytrach nag edrych i fyny ar sleid, mae'n argraffu un i bob llinell, A yw 65, 1330 01:05:18,885 --> 01:05:24,860 B yw 66, yr holl ffordd down-- ers i mi yn gwneud hyn 26 times-- i'r z llythyrau, 1331 01:05:24,860 --> 01:05:25,630 sef 90. 1332 01:05:25,630 --> 01:05:27,790 Ac, mewn gwirionedd, ychydig yn mwy deallus byddai 1333 01:05:27,790 --> 01:05:31,030 wedi bod i mi beidio â dibynnu ar y cyfrifiadur i ychwanegu 26. 1334 01:05:31,030 --> 01:05:34,060 Gallai Fi jyst wedi gwneud 90 hefyd, cyhyd 1335 01:05:34,060 --> 01:05:37,390 gan nad wyf yn gwneud yr un camgymeriad ddwywaith. 1336 01:05:37,390 --> 01:05:41,880 Dw i eisiau mynd i fyny drwy z, nid dim ond i fyny drwy y. 1337 01:05:41,880 --> 01:05:44,000 >> Felly dyna cast penodol. 1338 01:05:44,000 --> 01:05:47,860 Mae'n ymddangos bod hyn yn Nid yw hyd yn oed yn angenrheidiol. 1339 01:05:47,860 --> 01:05:52,480 Gadewch i mi fynd yn ei flaen ac ailgynnal hwn casglwr, ac ailgynnal ASCII 0. 1340 01:05:52,480 --> 01:05:54,940 Mae'n ymddangos bod C yn eithaf smart. 1341 01:05:54,940 --> 01:05:57,150 >> Ac printf, yn arbennig, yn eithaf smart. 1342 01:05:57,150 --> 01:06:01,260 Os ydych yn unig basio fi ddwywaith ar gyfer y ddau dalfannau, printf 1343 01:06:01,260 --> 01:06:04,510 yn sylweddoli, oh, yn dda yr wyf yn gwybod eich bod rhoddodd mi integer-- rhywfaint o rif, 1344 01:06:04,510 --> 01:06:06,380 fel 65, neu 90, neu beth bynnag. 1345 01:06:06,380 --> 01:06:10,170 Ond yr wyf yn gweld eich bod am i mi fformat y rhif hwnnw fel cymeriad. 1346 01:06:10,170 --> 01:06:16,460 Ac felly printf gall fwrw ymhlyg y int i torgoch i chi yn ogystal. 1347 01:06:16,460 --> 01:06:19,360 Felly nid yw hynny'n broblem o gwbl. 1348 01:06:19,360 --> 01:06:23,100 >> Ond sylwi, oherwydd y cywerthedd hwn gallwn ni ei wneud mewn gwirionedd hyn hefyd. 1349 01:06:23,100 --> 01:06:26,520 Gadewch i mi fynd yn ei flaen ac yn gwneud un Fersiwn arall o'r this-- 1.c. ASCII 1350 01:06:26,520 --> 01:06:31,800 Ac yn lle ailadrodd drosodd cyfanrifau, yn wir chwythu eich meddwl 1351 01:06:31,800 --> 01:06:33,610 drwy ailadrodd dros gymeriadau. 1352 01:06:33,610 --> 01:06:37,660 Os yw torgoch c yn cael cyfalaf A, yr wyf yn am fynd yn ei flaen ac yn gwneud hyn, 1353 01:06:37,660 --> 01:06:41,740 ar yr amod bod C yn llai na neu'n hafal i Z. cyfalaf Ac ar bob iteriad 1354 01:06:41,740 --> 01:06:45,690 Rwyf am i gynyddiad C, gallaf yn awr yn fy llinell printf yma 1355 01:06:45,690 --> 01:06:51,320 dyweder, y cant C yn cant i eto, coma C. 1356 01:06:51,320 --> 01:06:57,200 >> Ac yn awr, gallaf fynd i'r cyfeiriad arall, castio cymeriad benodol 1357 01:06:57,200 --> 01:06:58,500 i yn gyfanrif. 1358 01:06:58,500 --> 01:07:00,560 Felly, unwaith eto, byddai pam eich bod yn gwneud hyn? 1359 01:07:00,560 --> 01:07:03,830 Mae'n ychydig yn rhyfedd i ddidoli o yn cyfrif o safbwynt cymeriadau. 1360 01:07:03,830 --> 01:07:07,430 >> Ond os ydych yn deall yr hyn sydd mynd ymlaen o dan y cwfl, 1361 01:07:07,430 --> 01:07:08,430 nid 'n sylweddol na hud. 1362 01:07:08,430 --> 01:07:13,060 Rydych yn jyst yn deud, hey, cyfrifiadur yn rhoi mi newidyn o'r enw C o torgoch fath. 1363 01:07:13,060 --> 01:07:16,520 Ymgychwyn i gyfalaf A. A sylwi ar y mater dyfynodau sengl. 1364 01:07:16,520 --> 01:07:19,580 >> Ar gyfer cymeriadau yn C, dwyn i gof o yr wythnos diwethaf, byddwch yn defnyddio dyfynodau sengl. 1365 01:07:19,580 --> 01:07:23,720 Ar gyfer llinynnau, am eiriau, ymadroddion, byddwch yn defnyddio dyfynodau dwbl. 1366 01:07:23,720 --> 01:07:27,210 OK, cyfrifiaduron, cadw gwneud hyn, felly belled â bod y cymeriad yn llai na 1367 01:07:27,210 --> 01:07:28,050 neu'n hafal i z. 1368 01:07:28,050 --> 01:07:32,640 Ac yr wyf yn gwybod o fy mwrdd ASCII bod yr holl codau ASCII hyn yn cyffiniol. 1369 01:07:32,640 --> 01:07:33,400 >> Does dim bylchau. 1370 01:07:33,400 --> 01:07:36,737 Felly dim ond A drwy Z, gwahanu gan un rhif un. 1371 01:07:36,737 --> 01:07:38,820 Ac yna gallaf gynyddiad golosg, os wyf wir eisiau. 1372 01:07:38,820 --> 01:07:40,390 Ar ddiwedd y dydd, mai dim ond rhif. 1373 01:07:40,390 --> 01:07:41,030 Rwy'n gwybod hyn. 1374 01:07:41,030 --> 01:07:43,670 Felly gall Fi jyst tybio ychwanegu 1 ato. 1375 01:07:43,670 --> 01:07:46,940 >> Ac yna y tro hwn, yr wyf yn argraffu c, ac yna cyfwerth annatod. 1376 01:07:46,940 --> 01:07:50,170 Ac nid wyf yn hyd yn oed angen y cast penodol. 1377 01:07:50,170 --> 01:07:52,680 Gallaf adael printf a'r ffigur cyfrifiadurol pethau allan, 1378 01:07:52,680 --> 01:07:57,300 felly yn awr os byddaf yn rhedeg gwneud Ascii1./ascii1, 1379 01:07:57,300 --> 01:08:01,520 Rwy'n cael yr un peth yn union yn ogystal. 1380 01:08:01,520 --> 01:08:04,530 >> rhaglen ddiwerth, though-- unrhyw un yn mynd i mewn gwirionedd yn ysgrifennu meddalwedd 1381 01:08:04,530 --> 01:08:07,549 er mwyn chyfrif i maes, beth oedd y rhif sy'n mapio i A, neu B, neu Z? 1382 01:08:07,549 --> 01:08:10,340 Rydych yn jyst yn mynd i Google, neu edrych i fyny ar-lein, neu yn edrych i fyny 1383 01:08:10,340 --> 01:08:11,650 ar sleid, neu debyg. 1384 01:08:11,650 --> 01:08:13,520 Felly, lle mae hyn yn ei gael mewn gwirionedd yn ddefnyddiol? 1385 01:08:13,520 --> 01:08:15,960 >> Wel, yn siarad o hynny sleid, yn sylwi mae 1386 01:08:15,960 --> 01:08:20,890 patrwm gwirioneddol yma rhwng priflythyren a llythrennau bach nad oedd yn ddamweiniol. 1387 01:08:20,890 --> 01:08:23,760 Hysbysiad bod cyfalaf A yw 65. 1388 01:08:23,760 --> 01:08:25,830 Llythrennau bach a yw 97. 1389 01:08:25,830 --> 01:08:29,649 A pha mor bell i ffwrdd yn achos is? 1390 01:08:29,649 --> 01:08:32,649 >> Felly 65 yw faint o gamau i ffwrdd oddi wrth 97? 1391 01:08:32,649 --> 01:08:36,210 Felly 97 minws 65 yw 32. 1392 01:08:36,210 --> 01:08:37,910 Felly cyfalaf yw 65. 1393 01:08:37,910 --> 01:08:39,939 Os ydych yn ychwanegu 32 at hynny, byddwch yn cael llythrennau bach a. 1394 01:08:39,939 --> 01:08:43,729 Ac, cyfwerth ei, os ydych yn tynnu 32, byddwch yn mynd yn ôl i gyfalaf A-- un peth gyda B 1395 01:08:43,729 --> 01:08:46,380 i ychydig b, C mawr i ychydig c. 1396 01:08:46,380 --> 01:08:50,670 >> Mae pob un o'r bylchau hyn yn 32 ar wahân. 1397 01:08:50,670 --> 01:08:54,450 Yn awr, mae hyn yn ymddangos i ganiatáu i ni i wneud rhywbeth fel Microsoft Word, 1398 01:08:54,450 --> 01:08:57,729 neu Google Docs nodwedd, lle rydych yn Gall ddewis popeth ac wedyn yn dweud, 1399 01:08:57,729 --> 01:09:00,520 newid yr holl i lythrennau bach, neu newid i gyd i achos uchaf, 1400 01:09:00,520 --> 01:09:03,840 neu'n newid dim ond y gair cyntaf brawddeg i priflythrennau. 1401 01:09:03,840 --> 01:09:07,390 Gallwn ei wneud mewn gwirionedd rhywbeth fel 'na ni ein hunain. 1402 01:09:07,390 --> 01:09:12,645 >> Gadewch i mi fynd yn ei flaen ac arbed ffeil yma a elwir yn manteisio 0.c. 1403 01:09:12,645 --> 01:09:15,770 A gadewch i ni fynd yn ei flaen a chwip i fyny rhaglen sy'n gwneud yn union hynny fel a ganlyn. 1404 01:09:15,770 --> 01:09:18,460 Felly yn cynnwys y llyfrgell CS50. 1405 01:09:18,460 --> 01:09:21,430 Ac maent yn cynnwys yr wyf yn safonol / O. 1406 01:09:21,430 --> 01:09:22,787 >> Ac yr wyf yn gwybod hyn yn dod yn fuan. 1407 01:09:22,787 --> 01:09:24,870 Felly dw i'n mynd i roi yn yno eisoes, string.h, 1408 01:09:24,870 --> 01:09:26,960 felly yr wyf yn cael mynediad at pethau fel Stirling, 1409 01:09:26,960 --> 01:09:29,620 ac yna int prif ddi-rym, yn ôl yr arfer. 1410 01:09:29,620 --> 01:09:33,420 Ac yna dwi'n mynd i fynd yn ei flaen ac yn gwneud llinynnau yn cael cael llinyn, 1411 01:09:33,420 --> 01:09:35,032 dim ond er mwyn cael llinyn gan y defnyddiwr. 1412 01:09:35,032 --> 01:09:36,740 Ac yna dwi'n mynd i gwneud fy siec bwyll. 1413 01:09:36,740 --> 01:09:40,510 Os nad yw llinyn yn null cyfartal, yna mae'n ddiogel i fynd ymlaen. 1414 01:09:40,510 --> 01:09:42,000 A beth ydw i eisiau ei wneud? 1415 01:09:42,000 --> 01:09:48,700 Rydw i'n mynd i ailadrodd o fi yn dychwelyd 0, a n hyd at hyd llinyn y s. 1416 01:09:48,700 --> 01:09:51,899 >> Ac yr wyf i'n mynd i wneud hyn ar yr amod bod ff yn llai na n, a fi yn ogystal a mwy. 1417 01:09:51,899 --> 01:09:55,060 Hyd yn hyn, rwy'n wir yn unig benthyca syniadau o'r blaen. 1418 01:09:55,060 --> 01:09:57,010 Ac yn awr yr wyf i'n mynd i gyflwyno gangen. 1419 01:09:57,010 --> 01:09:59,635 >> Felly meddyliwch yn ôl i'r Scratch, lle cawsom ffyrc hynny yn y ffordd, 1420 01:09:59,635 --> 01:10:05,110 a'r wythnos diwethaf yn C. Rydw i'n mynd i dweud hyn, os bydd y cymeriad i-fed yn s 1421 01:10:05,110 --> 01:10:09,250 yn fwy na neu'n gyfartal i ostwng achos, 1422 01:10:09,250 --> 01:10:13,340 ac-- yn Scratch byddech yn llythrennol ddweud ac, ond yn C rydych yn ei ddweud ampersand, 1423 01:10:13,340 --> 01:10:19,830 ampersand-- a chymeriad i-ed yn s yn llai na neu'n hafal i ostwng z achos, 1424 01:10:19,830 --> 01:10:21,780 gadewch i ni wneud rhywbeth diddorol. 1425 01:10:21,780 --> 01:10:27,020 Gadewch i ni mewn gwirionedd yn argraffu cymeriad heb unrhyw newline 1426 01:10:27,020 --> 01:10:31,760 hynny yw y cymeriad yn y llinyn, cymeriad i-fed yn y llinyn. 1427 01:10:31,760 --> 01:10:37,420 >> Ond gadewch i ni fynd yn ei flaen ac tynnu 32 ohono. 1428 01:10:37,420 --> 01:10:42,120 Arall os bydd y cymeriad yn y llinyn ein bod yn edrych 1429 01:10:42,120 --> 01:10:45,950 Nid yw rhwng ychydig ac ychydig z, mynd yn ei flaen 1430 01:10:45,950 --> 01:10:48,610 a dim ond hargraffu allan ddigyfnewid. 1431 01:10:48,610 --> 01:10:50,840 Felly rydym wedi cyflwyno hwn nodiant cromfachau 1432 01:10:50,840 --> 01:10:53,560 ar gyfer ein llinynnau i gyrraedd y i-fed gymeriad yn y llinyn. 1433 01:10:53,560 --> 01:10:57,520 >> Rydw i wedi ychwanegu rhai rhesymeg amodol, fel Scratch mewn un wythnos yr wythnos ddiwethaf, lle 1434 01:10:57,520 --> 01:10:59,880 Im 'jyst yn defnyddio fy sylfaenol dealltwriaeth o'r hyn sydd 1435 01:10:59,880 --> 01:11:01,130 mynd ymlaen o dan y cwfl. 1436 01:11:01,130 --> 01:11:04,190 A yw'r cymeriad i-fed s fwy na neu'n hafal i? 1437 01:11:04,190 --> 01:11:08,290 Fel, ai 97 neu 98, neu 99, ac yn y blaen? 1438 01:11:08,290 --> 01:11:11,940 >> Ond a yw'n hefyd yn llai na neu'n hafal at werth z llythrennau bach? 1439 01:11:11,940 --> 01:11:16,210 Ac os felly, beth mae hyn yn ei llinell yn ei olygu? 1440 01:11:16,210 --> 01:11:20,250 14, mae hyn yn fath o germ o'r holl syniad, 1441 01:11:20,250 --> 01:11:23,840 cyfalafu y llythyr gan yn syml dynnu 32 ohono, 1442 01:11:23,840 --> 01:11:29,370 yn yr achos hwn, oherwydd gwn, fesul hynny siart, sut mae fy rhifau yn cael eu cynrychioli. 1443 01:11:29,370 --> 01:11:33,925 Felly gadewch i ni fynd yn ei flaen ac yn rhedeg hyn, ar ôl llunio cyfalafu 0.c, 1444 01:11:33,925 --> 01:11:36,210 a rhedeg cyfalafu 0. 1445 01:11:36,210 --> 01:11:40,300 >> Gadewch i deipio i mewn rhywbeth fel Zamyla ym mhob llythrennau bach fynd i mewn. 1446 01:11:40,300 --> 01:11:42,780 Ac yn awr rydym wedi Zamyla ym mhob priflythyren. 1447 01:11:42,780 --> 01:11:45,050 Gadewch i deipio i mewn Rob ym mhob llythrennau bach. 1448 01:11:45,050 --> 01:11:46,674 Gadewch i ni geisio Jason ym mhob llythrennau bach. 1449 01:11:46,674 --> 01:11:48,590 Ac rydym yn parhau i gael y cyfalafu dan orfod. 1450 01:11:48,590 --> 01:11:50,960 Mae mân bug fy mod math o nid oedd yn rhagweld. 1451 01:11:50,960 --> 01:11:54,050 Hysbysiad fy brydlon newydd yn dod i ben i fyny ar yr un llinell ag eu henwau, 1452 01:11:54,050 --> 01:11:55,520 sy'n teimlo'n ychydig yn flêr. 1453 01:11:55,520 --> 01:11:59,170 >> Felly, yr wyf i'n mynd i fynd yma, a mewn gwirionedd ar ddiwedd y rhaglen hon 1454 01:11:59,170 --> 01:12:02,110 argraffu gymeriad newline. 1455 01:12:02,110 --> 01:12:03,160 Dyna i gyd. 1456 01:12:03,160 --> 01:12:06,120 Gyda printf, nid oes angen i chi pasio mewn newidynnau neu cod fformat. 1457 01:12:06,120 --> 01:12:08,460 Gallwch llythrennol dim ond argraffu rhywbeth fel newline. 1458 01:12:08,460 --> 01:12:13,529 >> Felly gadewch i ni fynd yn ei flaen ac yn gwneud manteisio 0 eto, ailgynnal iddo, Zamyla. 1459 01:12:13,529 --> 01:12:14,820 Ac yn awr mae'n ychydig yn prettier. 1460 01:12:14,820 --> 01:12:17,274 Yn awr, fy brydlon ar ei linell newydd ei hun. 1461 01:12:17,274 --> 01:12:18,440 Felly dyna i gyd iawn ac yn dda. 1462 01:12:18,440 --> 01:12:19,910 Felly dyna yn enghraifft dda. 1463 01:12:19,910 --> 01:12:22,700 Ond nid wyf yn ei wneud hyd yn oed yn o reidrwydd yn Mae angen i cod caled 32. 1464 01:12:22,700 --> 01:12:23,350 Ti'n gwybod beth? 1465 01:12:23,350 --> 01:12:26,350 Gallwn say-- Dydw i ddim erioed cofio beth yw'r gwahaniaeth. 1466 01:12:26,350 --> 01:12:29,330 >> Ond yr wyf yn gwybod os wyf cael llythyren fach, 1467 01:12:29,330 --> 01:12:34,430 Rwyf yn y bôn yn awyddus i dynnu i ffwrdd beth bynnag yw'r pellter rhwng ychydig 1468 01:12:34,430 --> 01:12:39,160 a a mawr A, oherwydd os wyf yn cymryd bod pob un o'r llythyrau eraill yr un fath, 1469 01:12:39,160 --> 01:12:41,045 Dylai bod yn cael y swydd ei wneud. 1470 01:12:41,045 --> 01:12:42,670 Ond yn hytrach na gwneud hynny, eich bod yn gwybod beth? 1471 01:12:42,670 --> 01:12:44,240 Mae ffordd arall o hyd. 1472 01:12:44,240 --> 01:12:48,090 >> Os hynny wedi manteisio 1.c-- pe bawn i roi hynny mewn ffeil ar wahân. 1473 01:12:48,090 --> 01:12:51,030 gadewch i ni yn manteisio 2.c fel a ganlyn. 1474 01:12:51,030 --> 01:12:53,060 Rydw i'n mynd i 'n sylweddol lanhau hyn i fyny yma. 1475 01:12:53,060 --> 01:12:57,420 Ac yn lle hyd yn oed yn gorfod gwybod neu ofal am y rhai lefel isel 1476 01:12:57,420 --> 01:13:01,090 Manylion gweithredu, rwy'n yn lle hynny jyst yn mynd i argraffu gymeriad, 1477 01:13:01,090 --> 01:13:04,610 dyfyniad unquote, cant C, a Yna ffoniwch swyddogaeth arall sydd 1478 01:13:04,610 --> 01:13:09,950 bodoli sy'n cymryd dadl, sydd yn gymeriad, fel hyn. 1479 01:13:09,950 --> 01:13:12,630 >> Mae'n troi allan yn C, mae galwad swyddogaeth arall 1480 01:13:12,630 --> 01:13:15,550 i uwch, sydd, fel ei enw yn awgrymu cymryd gymeriad 1481 01:13:15,550 --> 01:13:19,350 ac yn ei gwneud yn at ei priflythrennau cyfatebol, ac yna ei ddychwelyd 1482 01:13:19,350 --> 01:13:21,410 fel y gall printf plygio i mewn yno. 1483 01:13:21,410 --> 01:13:25,484 Ac felly i wneud hyn, fodd bynnag, yr wyf yn Mae angen i gyflwyno un ffeil arall. 1484 01:13:25,484 --> 01:13:28,400 Mae'n troi allan mae ffeil arall y byddech yn unig yn gwybod o ddosbarth, 1485 01:13:28,400 --> 01:13:33,020 neu werslyfr, neu ar-lein cyfeirio, a elwir yn C type.h. 1486 01:13:33,020 --> 01:13:38,570 >> Felly os byddaf yn ychwanegu bod hyd ymhlith fy header ffeiliau, ac yn awr yn ail-lunio'r rhaglen hon, 1487 01:13:38,570 --> 01:13:43,040 capitalize2, ./capitalize2 Enter. 1488 01:13:43,040 --> 01:13:46,690 Gadewch i deipio i mewn Zamyla ym mhob llythrennau bach, yn dal i weithio yr un fath. 1489 01:13:46,690 --> 01:13:48,040 Ond eich bod yn gwybod beth? 1490 01:13:48,040 --> 01:13:55,590 Mae'n ymddangos bod i uwch Mae rhywfaint o swyddogaethau eraill. 1491 01:13:55,590 --> 01:13:58,410 >> A gadewch i mi gyflwyno hwn yn gorchymyn yma, rhyw fath o lletchwith 1492 01:13:58,410 --> 01:14:00,250 a enwyd, ond dyn am llaw. 1493 01:14:00,250 --> 01:14:03,960 Mae'n ymddangos bod y rhan fwyaf o gyfrifiaduron Linux, gan ein bod yn defnyddio Yma-- gweithredu Linux 1494 01:14:03,960 --> 01:14:06,270 system, gael gorchymyn Gelwir dyn, sy'n dweud, 1495 01:14:06,270 --> 01:14:08,530 hey, cyfrifiadur, roi i mi llawlyfr y cyfrifiadur. 1496 01:14:08,530 --> 01:14:10,680 Beth ydych chi eisiau edrych i fyny yn y llawlyfr? 1497 01:14:10,680 --> 01:14:13,840 >> Rwyf am i chwilio am y swyddogaeth galw i uchaf, Enter. 1498 01:14:13,840 --> 01:14:16,070 Ac mae'n ychydig yn cryptig i ddarllen weithiau. 1499 01:14:16,070 --> 01:14:18,780 Ond sylwch ein bod yn y llawlyfr Linux rhaglennydd. 1500 01:14:18,780 --> 01:14:19,530 Ac mae hyn i gyd destun. 1501 01:14:19,530 --> 01:14:21,905 Ac yn sylwi bod mae y enwi y swyddogaeth yma. 1502 01:14:21,905 --> 01:14:25,030 Mae'n troi allan fod ganddo gefnder o'r enw i ostwng, sy'n gwneud y gwrthwyneb. 1503 01:14:25,030 --> 01:14:29,710 A hysbysiad o dan crynodeb, i ddefnyddio hyn swyddogaeth y dudalen dyn, fel petai, 1504 01:14:29,710 --> 01:14:32,220 yn dweud wrthyf fy mod Mae angen i gynnwys c type.h. 1505 01:14:32,220 --> 01:14:33,630 Ac yr wyf yn gwybod bod o ymarfer. 1506 01:14:33,630 --> 01:14:36,210 >> Yma, mae'n dangos i mi y ddau prototeipiau ar gyfer y swyddogaeth, 1507 01:14:36,210 --> 01:14:39,070 felly os wyf byth yn dymuno defnyddio hyn Yr wyf yn gwybod yr hyn y maent yn cymryd fel mewnbwn, 1508 01:14:39,070 --> 01:14:40,652 a'r hyn y maent yn dychwelyd fel allbwn. 1509 01:14:40,652 --> 01:14:42,360 Ac yna os wyf yn darllen y disgrifiad, yr wyf yn gweld 1510 01:14:42,360 --> 01:14:44,820 yn fwy manwl yr hyn y mae'r swyddogaeth yn ei wneud. 1511 01:14:44,820 --> 01:14:48,100 Ond yn bwysicach, os Edrychaf dan gwerth ddychwelyd, 1512 01:14:48,100 --> 01:14:51,710 mae'n dweud y gwerth a ddychwelwyd yn un y llythyr a addaswyd, 1513 01:14:51,710 --> 01:14:57,880 neu C, mewnbwn gwreiddiol, os nid oedd y trosiad yn bosibl. 1514 01:14:57,880 --> 01:15:01,992 >> Mewn geiriau eraill, i uchaf yn ceisio i drosi llythyr at priflythrennau. 1515 01:15:01,992 --> 01:15:03,450 Ac os felly, mae'n mynd i ddychwelyd. 1516 01:15:03,450 --> 01:15:07,010 Ond os y gall nid ar gyfer rhai reason-- efallai ei bod yn achos eisoes uchaf, 1517 01:15:07,010 --> 01:15:09,550 efallai ei fod yn bwynt ebychnod neu ryw punctuation-- arall 1518 01:15:09,550 --> 01:15:12,200 'i' jyst yn mynd i dychwelyd y C gwreiddiol, 1519 01:15:12,200 --> 01:15:17,340 sy'n golygu y gallaf wneud fy cod dylunio'n well fel a ganlyn. 1520 01:15:17,340 --> 01:15:20,580 >> Dydw i ddim angen yr holl o llinellau darn yma o god. 1521 01:15:20,580 --> 01:15:22,610 Mae pob un o'r llinellau dwi wedi dim ond tynnu sylw at y gall 1522 01:15:22,610 --> 01:15:28,700 gael eu cwympo i mewn i un syml llinell, sef this-- cant printf 1523 01:15:28,700 --> 01:15:33,510 c i S braced uchaf i. 1524 01:15:33,510 --> 01:15:36,090 A byddai hyn yn enghraifft o ddyluniad gwell. 1525 01:15:36,090 --> 01:15:40,040 >> Pam rhoi ar waith yn 7 neu 8 llinell o god, beth bynnag oedd Fi jyst 1526 01:15:40,040 --> 01:15:44,960 dileu, pryd y gallwch yn lle hynny cwympo hynny i gyd rhesymeg a gwneud penderfyniadau 1527 01:15:44,960 --> 01:15:49,620 i mewn i un llinell sengl, 13 awr, sy'n yn dibynnu ar llyfrgell function-- 1528 01:15:49,620 --> 01:15:53,430 swyddogaeth sy'n dod gyda C, ond bod gwneud yn union yr hyn yr ydych eisiau iddo wneud. 1529 01:15:53,430 --> 01:15:55,295 Ac, dweud y gwir, hyd yn oed os nid oedd yn dod gyda C, 1530 01:15:55,295 --> 01:15:58,880 gallech roi ar waith eich hun, fel y rydym wedi gweld, gyda chael int negyddol 1531 01:15:58,880 --> 01:16:01,700 a chael bositif int wythnos diwethaf hefyd. 1532 01:16:01,700 --> 01:16:03,470 >> Mae'r côd hwn yn awr yn llawer mwy darllenadwy. 1533 01:16:03,470 --> 01:16:06,670 Ac, yn wir, os ydym yn sgrolio i fyny, edrych pa faint mwy cryno 1534 01:16:06,670 --> 01:16:08,360 fersiwn yma o fy rhaglen yw. 1535 01:16:08,360 --> 01:16:11,230 Mae'n ychydig yn drwm top awr, gyda'r rhain i gyd yn cynnwys. 1536 01:16:11,230 --> 01:16:14,380 Ond mae hynny'n iawn, oherwydd erbyn hyn Dwi'n sefyll ar ysgwyddau rhaglenwyr 1537 01:16:14,380 --> 01:16:15,300 ger fy mron. 1538 01:16:15,300 --> 01:16:18,440 A phwy bynnag yr oedd pwy gweithredu i uwch mewn gwirionedd 1539 01:16:18,440 --> 01:16:21,470 Gwnaeth i mi ffafr, yn debyg iawn pwy bynnag rhoi ar waith Stirling 'n sylweddol 1540 01:16:21,470 --> 01:16:24,790 Gwnaeth i mi ffafr beth amser yn ôl. 1541 01:16:24,790 --> 01:16:26,970 Ac felly yn awr mae gennym rhaglen dylunio gwell 1542 01:16:26,970 --> 01:16:31,680 sy'n gweithredu'r un rhesymeg union. 1543 01:16:31,680 --> 01:16:35,580 >> Wrth siarad Stirling, gadewch mi fynd yn ei flaen ac yn gwneud hyn. 1544 01:16:35,580 --> 01:16:38,320 Gadewch i mi fynd yn ei flaen ac arbed y ffeil fel stirling.c. 1545 01:16:38,320 --> 01:16:43,255 Ac mae'n troi allan, gallwn plicio yn ôl un haen arall 'n bert syml yn awr. 1546 01:16:43,255 --> 01:16:45,630 Rydw i'n mynd i fynd yn ei flaen a chwip i fyny rhaglen arall yn y prif 1547 01:16:45,630 --> 01:16:49,759 yma yn syml yn ail-offer hyd llinyn fel a ganlyn. 1548 01:16:49,759 --> 01:16:52,300 Felly dyma llinell o cod sy'n cael fy llinyn gan y defnyddiwr. 1549 01:16:52,300 --> 01:16:53,910 Rydym yn cadw defnyddio hyn eto ac eto. 1550 01:16:53,910 --> 01:16:58,900 Gadewch i mi roi newidyn enw fy hun n o int fath sy'n storio rhif. 1551 01:16:58,900 --> 01:17:02,490 >> A gadewch i mi fynd yn ei flaen a gwneud y rhesymeg ganlynol. 1552 01:17:02,490 --> 01:17:15,610 Er bod y cymeriad n-fed yn s yn ei wneud Nid yw slaes gyfartal 0, mynd yn ei flaen 1553 01:17:15,610 --> 01:17:17,930 a cynyddiad n. 1554 01:17:17,930 --> 01:17:23,506 Ac yna argraffwch printf cant ff n. 1555 01:17:23,506 --> 01:17:29,200 Yr wyf yn honni bod y rhaglen hon yma, heb alw hyd llinyn, 1556 01:17:29,200 --> 01:17:31,150 ffigurau allan hyd y llinyn. 1557 01:17:31,150 --> 01:17:34,600 >> Ac mae'r hud yn gwbl crynhoi mewn llinell 8 1558 01:17:34,600 --> 01:17:39,830 yma gyda hyn sy'n edrych fel cystrawen newydd, slaes hwn 0 mewn dyfynodau sengl. 1559 01:17:39,830 --> 01:17:41,360 Ond pam hynny? 1560 01:17:41,360 --> 01:17:44,100 Wel, yn ystyried beth wedi bod mynd ar yr holl amser hwn. 1561 01:17:44,100 --> 01:17:47,990 >> Ac fel o'r neilltu cyn i mi anghofio, yn sylweddoli hefyd, yn ychwanegol at y tudalennau dyn 1562 01:17:47,990 --> 01:17:50,920 sy'n dod gyda nodweddiadol system Linux fel CS50 IDE, 1563 01:17:50,920 --> 01:17:53,770 sylweddoli ein bod ni, y staff y cwrs, yn cael hefyd 1564 01:17:53,770 --> 01:17:56,030 gwneud fersiwn gwefan o hyn un syniad a elwir yn 1565 01:17:56,030 --> 01:17:59,940 reference.cs50.net, sydd â pob un yr un dudalennau dyn hynny, 1566 01:17:59,940 --> 01:18:02,020 hynny i gyd un peth dogfennaeth, yn ogystal â 1567 01:18:02,020 --> 01:18:05,730 blwch bach ar y brig sy'n caniatáu chi i droi'r cyfan o'r deg 1568 01:18:05,730 --> 01:18:09,025 iaith ddirgel i mewn i llai cyfforddus modd, lle yr ydym, staff addysgu, 1569 01:18:09,025 --> 01:18:12,150 wedi mynd drwy ac yn ceisio symleiddio peth o'r iaith i gadw pethau 1570 01:18:12,150 --> 01:18:14,830 canolbwyntio ar y syniadau, ac nid rai o'r materion technegol. 1571 01:18:14,830 --> 01:18:20,070 Felly cadwch mewn cof, reference.cs50.net fel adnodd arall hefyd. 1572 01:18:20,070 --> 01:18:23,800 >> Ond pam yn gweithio hyd llinyn mewn y ffordd rwy'n cynnig funud yn ôl? 1573 01:18:23,800 --> 01:18:25,160 Dyma enw Zamyla eto. 1574 01:18:25,160 --> 01:18:27,690 A dyma enw Zamyla yn mewn bocs i mewn, fel yr wyf yn cadw ei wneud, 1575 01:18:27,690 --> 01:18:31,360 i greu darlun o ei fod, mewn gwirionedd, dim ond dilyniant o gymeriadau. 1576 01:18:31,360 --> 01:18:34,260 Ond nid Zamyla yn bodoli ei ben ei hun mewn rhaglen. 1577 01:18:34,260 --> 01:18:37,420 >> Pan fyddwch yn ysgrifennu ac yn rhedeg rhaglen, ydych chi'n defnyddio eich Mac neu eich cyfrifiadur 1578 01:18:37,420 --> 01:18:40,010 fel cof, neu RAM fel petai. 1579 01:18:40,010 --> 01:18:42,620 A allwch chi feddwl am eich cyfrifiadur fel rhai 1580 01:18:42,620 --> 01:18:44,730 llawer o gigabeit o gof y dyddiau hyn. 1581 01:18:44,730 --> 01:18:47,700 A gig yn golygu biliynau, felly biliynau o bytes. 1582 01:18:47,700 --> 01:18:48,910 >> Ond gadewch i ni ailddirwyn mewn pryd. 1583 01:18:48,910 --> 01:18:51,530 Ac mae'n debyg ein bod yn defnyddio cyfrifiadur hen iawn sy'n 1584 01:18:51,530 --> 01:18:55,150 dim ond 32 bytes o gof. 1585 01:18:55,150 --> 01:18:59,310 Gallai Rwyf i, ar fy sgrin y cyfrifiadur, yn syml tynnu hyn allan fel a ganlyn. 1586 01:18:59,310 --> 01:19:05,240 >> Gallwn ddweud yn syml bod fy cyfrifiadur wedi holl o gof hwn. 1587 01:19:05,240 --> 01:19:08,830 Ac mae hyn yn debyg i ffon cof, os cofiwch ein llun o dro diwethaf. 1588 01:19:08,830 --> 01:19:11,670 Ac os Fi jyst yn rhannu mae hyn yn ddigon o amser, 1589 01:19:11,670 --> 01:19:15,040 Yr wyf yn honni bod gen i 32 bytes o gof ar y sgrin. 1590 01:19:15,040 --> 01:19:18,239 >> Yn awr, mewn gwirionedd, gallaf yn unig tynnu hyd yn hyn ar y sgrin hon yma. 1591 01:19:18,239 --> 01:19:20,280 Felly, yr wyf i'n mynd i fynd yn ei flaen, a dim ond drwy gonfensiwn, 1592 01:19:20,280 --> 01:19:24,050 tynnu cof fy nghyfrifiadur fel grid, nid dim ond fel un llinell syth. 1593 01:19:24,050 --> 01:19:28,190 Yn benodol, yr wyf yn honni nawr bod grid hwn, mae hyn yn 8 o 4 grid, 1594 01:19:28,190 --> 01:19:31,800 dim ond yn cynrychioli pob un o'r 32 bytes o gof sydd ar gael yn fy Mac, 1595 01:19:31,800 --> 01:19:33,030 neu ar gael yn fy PC. 1596 01:19:33,030 --> 01:19:34,780 Ac maen nhw'n lapio ar i ddwy linell, dim ond 1597 01:19:34,780 --> 01:19:38,030 oherwydd ei fod yn cyd-fynd yn fwy ar y sgrin. 1598 01:19:38,030 --> 01:19:40,800 Ond mae hyn yn y beit cyntaf. 1599 01:19:40,800 --> 01:19:41,990 Dyma'r ail beit. 1600 01:19:41,990 --> 01:19:43,300 Mae hyn yn y drydedd beit. 1601 01:19:43,300 --> 01:19:45,310 >> A hon yw'r beit 32ain. 1602 01:19:45,310 --> 01:19:52,910 Neu, os ydym yn meddwl fel cyfrifiadur gwyddonydd, mae hyn yn beit 0, 1, 2, 3, 31. 1603 01:19:52,910 --> 01:19:55,950 Felly, mae gennych 0 i 31, os byddwch yn dechrau cyfrif ar 0. 1604 01:19:55,950 --> 01:19:59,830 >> Felly, os ydym yn defnyddio rhaglen bod galwadau yn cael llinyn, 1605 01:19:59,830 --> 01:20:05,280 ac rydym yn cael llinyn gan y dynol fel yr wyf ddim yn enw Zamyla, Z-A-M-Y-L-A, 1606 01:20:05,280 --> 01:20:09,430 sut yn y byd y mae'r trac cadw cyfrifiadurol y mae beit, 1607 01:20:09,430 --> 01:20:12,230 pa talp o gof, sy'n perthyn i ba llinyn? 1608 01:20:12,230 --> 01:20:16,270 Mewn geiriau eraill, os byddwn yn symud ymlaen i deipio enw arall i mewn i'r cyfrifiadur, 1609 01:20:16,270 --> 01:20:19,890 fel Andi hwn, yn galw cael llinyn yr eildro, 1610 01:20:19,890 --> 01:20:23,030 A-N-D-I ddod i ben i fyny yn y cof cyfrifiadur yn ogystal. 1611 01:20:23,030 --> 01:20:23,850 Ond sut? 1612 01:20:23,850 --> 01:20:29,700 >> Wel, mae'n ymddangos fod o dan y cwfl, pa C yn ei wneud wrth storio llinynnau 1613 01:20:29,700 --> 01:20:35,080 bod y mathau dynol mewn, neu fod dod o ryw ffynhonnell arall, a yw'n 1614 01:20:35,080 --> 01:20:39,190 delineates diwedd iddynt yn slaes character-- arbennig 1615 01:20:39,190 --> 01:20:44,750 0, sydd ychydig yn ffordd arbennig o ddweud 80 ddarnau yn olynol. 1616 01:20:44,750 --> 01:20:47,950 >> Felly A-- dyma'r cofio rhif 97. 1617 01:20:47,950 --> 01:20:51,770 Felly, mae rhai patrwm o 8 did yn cynrychioli rhif degol 97. 1618 01:20:51,770 --> 01:20:58,070 Mae'r slaes 0 yn llythrennol rhif 0, nul a.k.a., N-U-L, yn wahanol yn gynharach, 1619 01:20:58,070 --> 01:20:59,630 N-U-L-L, a oedd yn siarad yr ydym am. 1620 01:20:59,630 --> 01:21:05,700 Ond am nawr, dim ond yn gwybod bod hyn yn slaes 0 yn unig yw 80 darnau yn olynol. 1621 01:21:05,700 --> 01:21:09,810 >> Ac mae'n dim ond llinell hon yn y tywod sy'n dweud unrhyw beth ar y chwith 1622 01:21:09,810 --> 01:21:12,610 yn perthyn i un llinyn, neu un math data. 1623 01:21:12,610 --> 01:21:15,480 Ac unrhyw beth ar y dde yn perthyn i rywbeth arall. 1624 01:21:15,480 --> 01:21:17,440 Andi yn enw, yn y cyfamser, a dim ond ar eu golwg 1625 01:21:17,440 --> 01:21:21,310 digwydd i lapio ar y lein arall, ond dim ond yn fanylyn esthetig, 1626 01:21:21,310 --> 01:21:23,990 yn yr un modd yn nul derfynu. 1627 01:21:23,990 --> 01:21:29,290 >> Mae'n llinyn o A-N-D-I cymeriadau, yn ogystal phumed gymeriad gyfrinach, 1628 01:21:29,290 --> 01:21:33,560 pob 0 ddarnau, mai dim ond llinell rhwng diwedd enw Andi yn ogystal. 1629 01:21:33,560 --> 01:21:37,120 Ac os ydym yn galw cael llinyn trydydd tro yn y cyfrifiadur i gael llinyn fel 1630 01:21:37,120 --> 01:21:44,210 Maria, M-A-R-I-A, yn yr un modd mae Maria enw nul derfynu gyda slaes 0. 1631 01:21:44,210 --> 01:21:47,170 >> Mae hyn yn sylfaenol wahanol o sut y byddai cyfrifiadur nodweddiadol 1632 01:21:47,170 --> 01:21:51,850 storio yn gyfanrif, neu fflôt, neu arall fathau o ddata yn dal, gan fod galw i gof, 1633 01:21:51,850 --> 01:21:57,420 yn gyfanrif fel arfer 32 darnau, neu 4 bytes, neu efallai hyd yn oed 64 darnau, 1634 01:21:57,420 --> 01:21:59,100 neu wyth bytes. 1635 01:21:59,100 --> 01:22:02,620 Ond mae llawer o primitives mewn cyfrifiadur mewn iaith raglennu 1636 01:22:02,620 --> 01:22:05,550 cael nifer penodol o bytes o dan y hood-- 1637 01:22:05,550 --> 01:22:08,100 efallai 1, efallai 2, efallai 4, efallai 8. 1638 01:22:08,100 --> 01:22:13,250 >> Ond llinynnau, drwy gynllunio, yn cael nifer deinamig o gymeriadau. 1639 01:22:13,250 --> 01:22:16,980 Nid ydych yn gwybod ymlaen llaw, nes y mathau dynol mewn Z-A-M-Y-L-A, 1640 01:22:16,980 --> 01:22:21,400 neu M-A-R-I-A, neu A-N-D-I. Nid ydych yn gwybod faint o weithiau y defnyddiwr yn mynd i daro 1641 01:22:21,400 --> 01:22:22,070 y bysellfwrdd. 1642 01:22:22,070 --> 01:22:26,490 Felly, nad ydych yn gwybod sut nifer o gymeriadau o flaen llaw 1643 01:22:26,490 --> 01:22:27,540 rydych yn mynd i angen. 1644 01:22:27,540 --> 01:22:31,840 >> Ac felly C unig fath o ddail fel briwsion bara cudd o dan y cwfl 1645 01:22:31,840 --> 01:22:32,960 ar ddiwedd y llinyn. 1646 01:22:32,960 --> 01:22:39,280 Ar ôl storio Z-A-M-Y-L-A mewn cof, mae hefyd yn jyst yn rhoi'r cyfatebol 1647 01:22:39,280 --> 01:22:40,210 cyfnod. 1648 01:22:40,210 --> 01:22:45,060 Ar ddiwedd brawddeg, ei fod yn rhoi 80 o ddarnau, er 1649 01:22:45,060 --> 01:22:49,120 i gofio ble Zamyla dechrau ac yn gorffen. 1650 01:22:49,120 --> 01:22:51,490 >> Felly beth yw'r cysylltiad, Yna, at y rhaglen hon? 1651 01:22:51,490 --> 01:22:55,190 Mae'r rhaglen hon yma, Stirling, yn unig yw mecanwaith 1652 01:22:55,190 --> 01:22:57,970 ar gyfer cael llinyn oddi wrth y defnyddiwr, llinell 6. 1653 01:22:57,970 --> 01:23:01,160 Llinell 7, yr wyf yn datgan newidyn Gelwir n ac yn gosod yn hafal i 0. 1654 01:23:01,160 --> 01:23:08,680 >> Ac yna yn unol 8, yr wyf yn syml yn gofyn i'r cwestiwn, tra bod y cymeriad n-fed yn ei wneud 1655 01:23:08,680 --> 01:23:12,120 Nid yw cyfartal pob 0 bits-- mewn geiriau eraill, nid yw'n 1656 01:23:12,120 --> 01:23:14,500 gyfartal arbennig hwn cymeriad, slaes 0, a oedd yn 1657 01:23:14,500 --> 01:23:18,470 Roedd yn union hynny character-- nul arbennig mynd yn ei flaen a dim ond cynyddiad n. 1658 01:23:18,470 --> 01:23:21,460 >> Ac yn cadw ei wneud, ac yn cadw ei wneud, ac yn cadw ei wneud. 1659 01:23:21,460 --> 01:23:23,430 Ac felly er bod yn y gorffennol rydym wedi ei ddefnyddio i, 1660 01:23:23,430 --> 01:23:25,181 mae'n berffaith iawn semantig i ddefnyddio n, 1661 01:23:25,181 --> 01:23:27,430 os ydych ond yn ceisio ei cyfrif y tro hwn yn fwriadol, 1662 01:23:27,430 --> 01:23:28,720 a dim ond am ei alw n. 1663 01:23:28,720 --> 01:23:34,720 Felly, mae hyn yn unig yn cadw gofyn y cwestiwn, yw'r cymeriad n-fed s pob 0au? 1664 01:23:34,720 --> 01:23:38,470 Os nad yw, yn edrych i'r golwg nesaf, edrych i'r nesaf, edrychwch i'r nesaf, 1665 01:23:38,470 --> 01:23:39,460 edrych i'r nesaf. 1666 01:23:39,460 --> 01:23:45,540 >> Ond cyn gynted ag y byddwch yn gweld slaes 0, y llinell hon loop-- 9 drwy 11-- stopio. 1667 01:23:45,540 --> 01:23:49,640 Rydych dorri allan o'r ddolen tra, gan adael y tu mewn o hynny n newidyn 1668 01:23:49,640 --> 01:23:54,530 cyfanswm cyfrif o'r holl o'r cymeriadau yn y llinyn a welsoch, 1669 01:23:54,530 --> 01:23:55,660 a thrwy hynny ei brintio. 1670 01:23:55,660 --> 01:23:56,760 Felly gadewch i ni geisio hyn. 1671 01:23:56,760 --> 01:23:59,500 >> Gadewch i mi fynd yn ei flaen ac, heb ddefnyddio'r swyddogaeth Stirling, 1672 01:23:59,500 --> 01:24:04,240 ond dim ond yn defnyddio fy fersiwn homegrown hun yma a elwir yn Stirling, gadewch i mi fynd yn ei flaen 1673 01:24:04,240 --> 01:24:07,700 a rhedeg Stirling, teipiwch rhywbeth fel Zamyla, yr wyf yn gwybod ymlaen llaw 1674 01:24:07,700 --> 01:24:08,670 yw chwe cymeriadau. 1675 01:24:08,670 --> 01:24:10,080 Gadewch i ni weld a yw'n gweithio. 1676 01:24:10,080 --> 01:24:10,920 Yn wir, mae'n chwech. 1677 01:24:10,920 --> 01:24:15,257 Gadewch i ni geisio â Rob, tri chymeriad, tri chymeriad yn ogystal, ac yn y blaen. 1678 01:24:15,257 --> 01:24:17,340 Felly dyna i gyd sy'n mynd ar o dan y cwfl. 1679 01:24:17,340 --> 01:24:19,548 Ac yn sylwi ar y cysylltiadau, Yna, gyda'r wythnos gyntaf 1680 01:24:19,548 --> 01:24:22,370 o ddosbarth, lle buom yn siarad am rhywbeth fel tynnu, 1681 01:24:22,370 --> 01:24:26,960 sydd ychydig haenu hwn o syniadau, neu cymhlethdod, ar ben egwyddorion sylfaenol. 1682 01:24:26,960 --> 01:24:30,710 Yma, rydym yn fath o chwilio o dan y cwfl Stirling, 1683 01:24:30,710 --> 01:24:33,510 fel petai, er mwyn chyfrif i maes, sut y byddai'n cael ei roi ar waith? 1684 01:24:33,510 --> 01:24:35,232 >> A gallem ail-roi ar waith ein hunain. 1685 01:24:35,232 --> 01:24:37,440 Ond rydym yn byth yn mynd eto i ail-weithredu Stirling. 1686 01:24:37,440 --> 01:24:39,780 Rydym yn jyst yn mynd i defnyddio Stirling er mwyn 1687 01:24:39,780 --> 01:24:42,100 i mewn gwirionedd yn cael rhywfaint o hyd llinynnau. 1688 01:24:42,100 --> 01:24:44,200 >> Ond does dim hud o dan y cwfl. 1689 01:24:44,200 --> 01:24:46,716 Os ydych yn gwybod bod oddi tano y cwfl, llinyn 1690 01:24:46,716 --> 01:24:48,090 yn unig yw dilyniant o gymeriadau. 1691 01:24:48,090 --> 01:24:51,090 A bod dilyniant o gymeriadau Gellir mynd i'r afael rhifiadol 1692 01:24:51,090 --> 01:24:53,330 gyda braced 0, braced 1, braced 2, ac yr ydych 1693 01:24:53,330 --> 01:24:57,420 yn gwybod bod ar ddiwedd y llinyn yn cymeriad arbennig, gallwch chyfrif i maes 1694 01:24:57,420 --> 01:25:01,710 sut i wneud unrhyw beth y rhan fwyaf mewn rhaglen, gan fod yr holl ei fod yn boils i lawr i 1695 01:25:01,710 --> 01:25:03,400 yn darllen ac ysgrifennu cof. 1696 01:25:03,400 --> 01:25:06,130 Hynny yw, yn newid ac yn edrych ar gof, neu symud pethau 1697 01:25:06,130 --> 01:25:10,940 o gwmpas yn y cof, pethau argraffu ar y sgrin, ac yn y blaen. 1698 01:25:10,940 --> 01:25:14,800 >> Felly gadewch i ni yn awr yn defnyddio'r newfound hwn dealltwriaeth o'r hyn Llinynnau mewn gwirionedd 1699 01:25:14,800 --> 01:25:17,910 yw o dan y cwfl, a plicio yn ôl un haen arall 1700 01:25:17,910 --> 01:25:20,080 bod hyd yn hyn rydym wedi bod yn anwybyddu yn gyfan gwbl. 1701 01:25:20,080 --> 01:25:22,650 Yn benodol, unrhyw adeg rydym wedi gweithredu rhaglen, 1702 01:25:22,650 --> 01:25:25,930 rydym wedi cael y llinell hon o god agos at y brig yn datgan prif. 1703 01:25:25,930 --> 01:25:27,810 Ac rydym wedi penodedig prif ddi-rym int. 1704 01:25:27,810 --> 01:25:31,240 >> A bod yn ddi-rym y tu mewn i'r cromfachau Mae bod yn ei ddweud yr holl amser hwn y prif 1705 01:25:31,240 --> 01:25:33,440 ei hun yn cymryd unrhyw ddadleuon. 1706 01:25:33,440 --> 01:25:36,210 Unrhyw fewnbwn mai prif yw mynd i gael oddi wrth y defnyddiwr 1707 01:25:36,210 --> 01:25:39,020 rhaid iddo ddod o rai eraill mecanwaith, fel get int, 1708 01:25:39,020 --> 01:25:42,040 neu gael arnofio, neu gael llinyn, neu ryw swyddogaeth arall. 1709 01:25:42,040 --> 01:25:44,710 Ond mae'n troi allan y pan fyddwch yn ysgrifennu rhaglen, 1710 01:25:44,710 --> 01:25:47,690 alli 'n weithredol yn nodi y bydd y rhaglen hon 1711 01:25:47,690 --> 01:25:51,730 cymryd mewnbwn gan y dynol yn y llinell orchymyn ei hun. 1712 01:25:51,730 --> 01:25:56,310 >> Mewn geiriau eraill, er ein bod hyd yn hyn wedi bod yn rhedeg yn unig ./hello helo 1713 01:25:56,310 --> 01:26:00,312 neu raglenni tebyg, pob un o'r rhaglenni eraill yr ydym wedi bod yn defnyddio, 1714 01:26:00,312 --> 01:26:02,770 nad ydym ni ein hunain yn ysgrifennu, wedi bod yn cymryd, mae'n ymddangos, 1715 01:26:02,770 --> 01:26:05,210 arguments-- llinell orchymyn pethau fel gwneud. 1716 01:26:05,210 --> 01:26:07,450 Yr ydych yn dweud rhywbeth fel gwneud, ac yna ail air. 1717 01:26:07,450 --> 01:26:10,950 Neu chlang, byddwch yn dweud chlang, ac yna ail air, enw'r ffeil. 1718 01:26:10,950 --> 01:26:14,410 >> Neu hyd yn oed RM neu CP, fel y gallai wedi gweld neu eu defnyddio eisoes 1719 01:26:14,410 --> 01:26:15,880 i dynnu neu gopïo ffeiliau. 1720 01:26:15,880 --> 01:26:18,920 Mae pob un yn mynd hyn a elwir yn arguments-- llinell orchymyn 1721 01:26:18,920 --> 01:26:21,130 geiriau ychwanegol wrth yr anogwr terfynol. 1722 01:26:21,130 --> 01:26:23,260 Ond hyd yn hyn, rydym yn Nid ni ein hunain wedi cael 1723 01:26:23,260 --> 01:26:27,080 moethus hwn o gymryd mewnbwn gan y defnyddiwr pan fydd ef neu hi mewn gwirionedd yn rhedeg 1724 01:26:27,080 --> 01:26:29,120 y rhaglen ei hun yn y llinell orchymyn. 1725 01:26:29,120 --> 01:26:33,710 >> Ond gallwn wneud hynny drwy ail-ddatgan prif symud ymlaen, nid fel rhai 1726 01:26:33,710 --> 01:26:36,750 gwag mewn cromfachau, ond y ddau dadleuon 1727 01:26:36,750 --> 01:26:40,600 instead-- y cyntaf yn gyfanrif, a'r ail rhywbeth 1728 01:26:40,600 --> 01:26:44,170 newydd, rhywbeth ein bod ni'n mynd i alw amrywiaeth, rhywbeth tebyg mewn ysbryd 1729 01:26:44,170 --> 01:26:49,220 i hyn a welsom yn Scratch fel rhestr, ond amrywiaeth o linynnau, gan y byddwn yn fuan yn gweld. 1730 01:26:49,220 --> 01:26:51,790 Ond gadewch i ni weld hyn drwy Er enghraifft, cyn i ni 1731 01:26:51,790 --> 01:26:53,690 gwahaniaethu yn union beth mae hynny'n ei olygu. 1732 01:26:53,690 --> 01:26:56,520 >> Felly os byddaf yn mynd i mewn i CS50 IDE yma, yr wyf wedi mynd yn ei flaen 1733 01:26:56,520 --> 01:27:01,840 a datgan mewn ffeil o'r enw argv0.c y templed canlynol. 1734 01:27:01,840 --> 01:27:04,120 Ac yn sylwi ar y unig beth mae hynny'n wahanol hyd yn hyn 1735 01:27:04,120 --> 01:27:08,570 yw fy mod i wedi newid yn ddi-rym i int argc llinyn argv braced agored, yn agos 1736 01:27:08,570 --> 01:27:09,070 braced. 1737 01:27:09,070 --> 01:27:11,730 Ac yn sylwi ar hyn o bryd, mae yna dim byd tu mewn cromfachau hynny. 1738 01:27:11,730 --> 01:27:12,620 >> Does dim rhif. 1739 01:27:12,620 --> 01:27:15,070 A does dim i, neu n, neu unrhyw lythyr arall. 1740 01:27:15,070 --> 01:27:17,010 Im 'jyst yn defnyddio'r cromfachau sgwâr ar hyn o bryd, 1741 01:27:17,010 --> 01:27:19,510 am resymau byddwn yn dod yn ôl i mewn dim ond hyn o bryd. 1742 01:27:19,510 --> 01:27:21,330 >> Ac yn awr yr hyn yr wyf i'n mynd i wneud yw hyn. 1743 01:27:21,330 --> 01:27:26,680 Os argc hafal hafal 2-- a dwyn i gof bod hafal hafal 1744 01:27:26,680 --> 01:27:30,040 yw'r gweithredwr cydraddoldeb cymharu chwith ac i'r dde ar gyfer cydraddoldeb. 1745 01:27:30,040 --> 01:27:31,790 Dyw hi ddim yn yr aseiniad gweithredydd, sef 1746 01:27:31,790 --> 01:27:36,510 r hafalnod sengl, sy'n golygu copi o'r dde i'r chwith rhywfaint o werth. 1747 01:27:36,510 --> 01:27:42,840 >> Os argc hafal hafal 2, yr wyf am dyweder, printf, helo, percents, llinell newydd, 1748 01:27:42,840 --> 01:27:47,340 ac yna plwg in-- a dyma y newydd argv trick-- braced 1, am resymau 1749 01:27:47,340 --> 01:27:48,840 y byddwn yn dod yn ôl at mewn munud. 1750 01:27:48,840 --> 01:27:52,110 Else os nad yw argc yn gwneud gyfartal 2, eich bod yn gwybod beth? 1751 01:27:52,110 --> 01:27:57,400 Gadewch i jyst mynd yn ei flaen ac, fel arfer, print allan byd helo heb amnewid. 1752 01:27:57,400 --> 01:28:02,710 >> Felly byddai'n ymddangos bod os argc, a oedd yn yn sefyll am gyfrif dadl, yn hafal i 2, 1753 01:28:02,710 --> 01:28:04,740 Rydw i'n mynd i argraffu helo rhywbeth neu'i gilydd. 1754 01:28:04,740 --> 01:28:07,560 Fel arall, yn ddiofyn, rwy'n mynd i'r wasg helo byd. 1755 01:28:07,560 --> 01:28:08,770 Felly beth mae hyn yn ei olygu? 1756 01:28:08,770 --> 01:28:15,550 >> Wel, gadewch i mi fynd yn ei flaen ac arbed y ffeil, ac yna yn gwneud argv0, 1757 01:28:15,550 --> 01:28:18,940 ac yna ./argv0, Enter. 1758 01:28:18,940 --> 01:28:20,300 Ac mae'n dweud helo byd. 1759 01:28:20,300 --> 01:28:21,260 Yn awr, pam hynny? 1760 01:28:21,260 --> 01:28:24,730 >> Wel, mae'n troi allan unrhyw adeg rydych rhedeg rhaglen yn y llinell orchymyn, 1761 01:28:24,730 --> 01:28:29,570 ydych yn llenwi'r hyn yr ydym annhymerus ' Yn gyffredinol, ffoniwch fector dadl. 1762 01:28:29,570 --> 01:28:33,100 Mewn geiriau eraill, yn awtomatig y cyfrifiadur, y system weithredu, 1763 01:28:33,100 --> 01:28:38,340 yn mynd i law at eich rhaglen ei hun yn rhestr o'r holl o'r geiriau 1764 01:28:38,340 --> 01:28:40,850 bod y dynol teipio yn y brydlon, rhag ofn i chi 1765 01:28:40,850 --> 01:28:43,790 y rhaglennydd eisiau ei wneud rhywbeth gyda'r wybodaeth honno. 1766 01:28:43,790 --> 01:28:48,540 Ac yn yr achos hwn, yr unig air Rwyf wedi teipio wrth yr anogwr yn ./argv0. 1767 01:28:48,540 --> 01:28:55,420 >> Ac felly y nifer o ddadleuon sy'n cael eu trosglwyddo i fy rhaglen yn un. 1768 01:28:55,420 --> 01:28:58,880 Mewn geiriau eraill, mae'r ddadl cyfrif, a elwir hefyd yn argc 1769 01:28:58,880 --> 01:29:00,970 yma fel cyfanrif, dim ond un. 1770 01:29:00,970 --> 01:29:03,000 Un, wrth gwrs, nid yw'n gyfartal dau. 1771 01:29:03,000 --> 01:29:05,980 Ac felly dyma beth printiau, helo byd. 1772 01:29:05,980 --> 01:29:08,170 >> Ond gadewch i mi gymryd hyn yn rhywle. 1773 01:29:08,170 --> 01:29:09,930 Gadewch i mi ddweud, argv0. 1774 01:29:09,930 --> 01:29:12,740 Ac yna beth am Maria? 1775 01:29:12,740 --> 01:29:14,990 Ac yna daro Chofnoda. 1776 01:29:14,990 --> 01:29:18,020 >> A sylwi ar yr hyn sy'n digwydd yn hudol yma. 1777 01:29:18,020 --> 01:29:22,640 Yn awr, yn hytrach na byd helo, mae gennyf Newidiodd ymddygiad y rhaglen hon 1778 01:29:22,640 --> 01:29:26,310 drwy gymryd y cyfraniad chi, ni oddi wrth get llinyn neu ryw swyddogaeth arall, 1779 01:29:26,310 --> 01:29:30,570 ond o, mae'n debyg, fy gorchymyn ei hun, yr hyn yr wyf deipio yn wreiddiol yn. 1780 01:29:30,570 --> 01:29:35,720 Ac yr wyf yn gallu chwarae gêm hon eto gan ei newid i Stelios, er enghraifft. 1781 01:29:35,720 --> 01:29:38,400 >> Ac yn awr yr wyf yn gweld enw arall yn dal i. 1782 01:29:38,400 --> 01:29:40,540 Ac yma, efallai y byddwn yn ei ddweud Andi. 1783 01:29:40,540 --> 01:29:42,137 Ac efallai i mi ddweud Zamyla. 1784 01:29:42,137 --> 01:29:45,220 A gallwn chwarae'r gêm hon drwy'r dydd, jyst topio mewn gwerthoedd gwahanol, 1785 01:29:45,220 --> 01:29:49,550 cyn belled gan fy mod yn rhoi union dau air wrth yr anogwr, 1786 01:29:49,550 --> 01:29:52,260 fel bod argc, fy nadl cyfrif, yw 2. 1787 01:29:52,260 --> 01:29:57,240 >> Ydw i'n gweld bod enw plygio i mewn printf, fesul cyflwr hwn fan hyn? 1788 01:29:57,240 --> 01:30:00,550 Felly, rydym yn ymddangos i fod yn awr y gallu mynegiannol 1789 01:30:00,550 --> 01:30:04,410 o gymryd mewnbwn gan fecanwaith arall, o'r llinell orchymyn fel y'i gelwir, 1790 01:30:04,410 --> 01:30:07,000 yn hytrach na gorfod aros nes bod y defnyddiwr yn rhedeg y rhaglen, 1791 01:30:07,000 --> 01:30:10,220 ac yna ysgogi ef neu hi gan ddefnyddio rhywbeth fel get llinyn. 1792 01:30:10,220 --> 01:30:11,230 >> Felly beth yw hwn? 1793 01:30:11,230 --> 01:30:15,010 Argc, unwaith eto, yn unig yw cyfanrif, y nifer o words-- arguments-- 1794 01:30:15,010 --> 01:30:18,540 bod y defnyddiwr a ddarperir yn y brydlon, yn y ffenestr derfynell, 1795 01:30:18,540 --> 01:30:20,110 gan gynnwys enw'r rhaglen. 1796 01:30:20,110 --> 01:30:23,340 Felly mae ein ./argv0 yw, yn effeithiol, enw'r rhaglen, 1797 01:30:23,340 --> 01:30:24,520 neu sut yr wyf yn rhedeg y rhaglen. 1798 01:30:24,520 --> 01:30:25,810 >> Sy'n cyfrif fel gair. 1799 01:30:25,810 --> 01:30:27,080 Felly, byddai argc fod yn 1. 1800 01:30:27,080 --> 01:30:29,750 Ond pan fyddaf yn ysgrifennu Stelios, neu Andi, neu Zamyla, neu Maria, 1801 01:30:29,750 --> 01:30:31,660 mae hynny'n golygu y cyfrif ddadl yw dau. 1802 01:30:31,660 --> 01:30:33,910 Ac felly yn awr mae dau air pasio yn. 1803 01:30:33,910 --> 01:30:36,070 >> A rhybudd, gallwn barhau rhesymeg hon. 1804 01:30:36,070 --> 01:30:39,050 Os wyf mewn gwirionedd yn dweud rhywbeth fel Zamyla Chan, 1805 01:30:39,050 --> 01:30:42,200 enw llawn, a thrwy hynny fynd heibio tri dadleuon i gyd, 1806 01:30:42,200 --> 01:30:47,410 erbyn hyn mae'n ei ddweud 'r ball eto, oherwydd, wrth gwrs, nid yw 3 yn gwneud hafal 2. 1807 01:30:47,410 --> 01:30:54,080 >> Ac felly yn y modd hwn, mae gen i mynediad drwy argv hwn ddadl newydd 1808 01:30:54,080 --> 01:30:56,080 y gallem dechnegol ffoniwch unrhyw beth yr ydym ei eisiau. 1809 01:30:56,080 --> 01:30:58,940 Ond erbyn confensiwn, mae'n argv a argc, yn y drefn honno. 1810 01:30:58,940 --> 01:31:04,470 Argv, fector dadl, yn garedig o gyfystyr ar gyfer rhaglennu 1811 01:31:04,470 --> 01:31:07,140 nodwedd yn C a elwir arae. 1812 01:31:07,140 --> 01:31:14,410 >> Arae yn rhestr o werthoedd tebyg yn ôl, wrth gefn, i gefnogi, i gefn. 1813 01:31:14,410 --> 01:31:17,810 Mewn geiriau eraill, os oes un yn iawn yma yn RAM, yr un nesaf yn iawn nesaf iddo, 1814 01:31:17,810 --> 01:31:18,800 ac i'r dde nesaf iddo. 1815 01:31:18,800 --> 01:31:20,101 Dydyn nhw ddim i gyd dros y lle. 1816 01:31:20,101 --> 01:31:23,100 A bod senario olaf, ble mae pethau i gyd dros y lle yn y cof, 1817 01:31:23,100 --> 01:31:25,082 mewn gwirionedd gall fod yn nodwedd pwerus. 1818 01:31:25,082 --> 01:31:28,040 Ond byddwn yn dod yn ôl at hynny pan fyddwn yn siarad am strwythurau data ffansi. 1819 01:31:28,040 --> 01:31:32,260 Am y tro, amrywiaeth yn unig yw darn o gof cyffiniol, 1820 01:31:32,260 --> 01:31:36,520 mae pob un o'i elfennau yn yn ôl, wrth gefn, i gefnogi, i gefnogi, 1821 01:31:36,520 --> 01:31:38,050 ac yn gyffredinol yr un fath. 1822 01:31:38,050 --> 01:31:42,630 >> Felly, os ydych yn meddwl am, o eiliad yn ôl, beth yw llinyn? 1823 01:31:42,630 --> 01:31:50,460 Wel, llinyn, fel Zamyla, Z-A-M-Y-L-A, yw, yn dechnegol, 1824 01:31:50,460 --> 01:31:51,400 dim ond arae. 1825 01:31:51,400 --> 01:31:53,700 Mae'n amrywiaeth o gymeriadau. 1826 01:31:53,700 --> 01:31:59,250 >> Ac felly os ydym wir yn tynnu hyn, gan fy mod yn wnaeth yn gynharach, fel darn o gof, 1827 01:31:59,250 --> 01:32:04,510 mae'n ymddangos fod pob un o'r rhain cymeriadau yn cymryd i fyny beit. 1828 01:32:04,510 --> 01:32:07,630 Ac yna mae hynny arbennig cymeriad sentinel, mae'r slaes 0, 1829 01:32:07,630 --> 01:32:12,360 neu bob wyth 0 ddarnau, bod llinell rhwng diwedd y llinyn. 1830 01:32:12,360 --> 01:32:15,090 Felly llinyn, mae'n troi allan, dyfynnu llinyn unquote, 1831 01:32:15,090 --> 01:32:20,580 yn unig yw amrywiaeth o chara-- CHAR bod yn fath data gwirioneddol. 1832 01:32:20,580 --> 01:32:24,560 >> Ac yn awr argv, meanwhile-- gadewch i ni fynd yn ôl at y rhaglen. 1833 01:32:24,560 --> 01:32:29,582 Argv, er ein bod yn gweld y gair llinyn yma, nid yn llinyn ei hun. 1834 01:32:29,582 --> 01:32:33,640 Argv, dadl fector, yn amrywiaeth o dannau. 1835 01:32:33,640 --> 01:32:37,620 >> Felly, yn union fel y gallwch gael amrywiaeth o cymeriadau, gallwch gael lefel uwch, 1836 01:32:37,620 --> 01:32:46,279 amrywiaeth o strings-- felly, er enghraifft, pan fyddaf yn teipio funud yn ôl ./argv0 1837 01:32:46,279 --> 01:33:00,150 argv0, gofod Z-A-M-Y-L-A, yr wyf yn honni bod Roedd gan argv dau linyn yn ./argv0 iddo--, 1838 01:33:00,150 --> 01:33:03,185 a Z-A-M-Y-L-A. yn geiriau eraill, argc yn 2. 1839 01:33:03,185 --> 01:33:03,980 Pam hynny? 1840 01:33:03,980 --> 01:33:08,370 >> Wel, yn effeithiol, beth sy'n mynd ar yw bod pob un o'r llinynnau hyn 1841 01:33:08,370 --> 01:33:13,990 yw, wrth gwrs, amrywiaeth o gymeriadau fel o'r blaen, mae pob un o'i gymeriadau 1842 01:33:13,990 --> 01:33:15,670 cymryd i fyny un beit. 1843 01:33:15,670 --> 01:33:19,720 A pheidiwch drysu'r 0 gwirioneddol yn enw'r rhaglen gyda'r 0, 1844 01:33:19,720 --> 01:33:22,040 sy'n golygu pob un o'r 80 ddarnau. 1845 01:33:22,040 --> 01:33:27,140 Ac Zamyla, yn y cyfamser, yn dal i fod hefyd amrywiaeth o gymeriadau. 1846 01:33:27,140 --> 01:33:31,450 >> Felly, ar ddiwedd y dydd, 'n sylweddol yn edrych fel hyn o dan y cwfl. 1847 01:33:31,450 --> 01:33:38,800 Ond argv, yn ôl natur y modd y prif gwaith, yn caniatáu i mi i lapio hyn oll 1848 01:33:38,800 --> 01:33:44,810 i fyny i mewn, os mynnwch, amrywiaeth mwy hynny, os ydym yn ychydig dros y symleiddio 1849 01:33:44,810 --> 01:33:48,180 beth mae'r darlun yn edrych fel ac nid ydynt yn yn eithaf tynnu i raddfa i fyny yno, 1850 01:33:48,180 --> 01:33:56,720 arae mae hyn yn unig o faint 2, y cyntaf elfen sy'n cynnwys llinyn, 1851 01:33:56,720 --> 01:33:59,230 ail elfen sy'n cynnwys llinyn. 1852 01:33:59,230 --> 01:34:01,687 Ac, yn ei dro, os ydych yn fath o chwyddo i mewn ar bob 1853 01:34:01,687 --> 01:34:03,770 o linynnau hynny, yr hyn yr ydych gweler o dan y cwfl 1854 01:34:03,770 --> 01:34:07,190 yw bod pob llinyn yn unig amrywiaeth o gymeriadau. 1855 01:34:07,190 --> 01:34:11,680 >> Yn awr, yn union fel gyda llinynnau, roeddem yn gallu cael mynediad 1856 01:34:11,680 --> 01:34:15,260 i gymeriad i-ed mewn llinyn defnyddio'r nodiant braced sgwâr. 1857 01:34:15,260 --> 01:34:17,320 Yn yr un modd, gyda arrays yn gyffredinol, gallwn 1858 01:34:17,320 --> 01:34:22,700 defnyddio nodiant braced sgwâr i gael ar unrhyw nifer o linynnau mewn amrywiaeth? 1859 01:34:22,700 --> 01:34:25,100 Er enghraifft, gadewch i mi mynd yn ei flaen ac yn gwneud hyn. 1860 01:34:25,100 --> 01:34:32,420 >> Gadewch i mi fynd yn ei flaen ac yn creu argv1.c, sydd ychydig yn wahanol y tro hwn. 1861 01:34:32,420 --> 01:34:35,635 Yn hytrach na gwirio am argc2, Rydw i'n mynd i yn lle hynny wneud hyn. 1862 01:34:35,635 --> 01:34:41,270 Ar gyfer int i mi gael 0, yr wyf yn llai na argc, yr wyf yn ogystal a mwy, 1863 01:34:41,270 --> 01:34:47,920 ac yna argraffwch y tu mewn o hyn, cant s, llinell newydd, ac yna 1864 01:34:47,920 --> 01:34:50,740 argv braced i. 1865 01:34:50,740 --> 01:34:55,220 >> Felly, mewn geiriau eraill, dydw i ddim yn ymdrin â cymeriadau unigol ar hyn o bryd. 1866 01:34:55,220 --> 01:35:00,190 Argv, fel a awgrymir gan y rhain sgwâr gwag braces ar y dde o'r enw'r argv, 1867 01:35:00,190 --> 01:35:03,320 golygu argv yw amrywiaeth o dannau. 1868 01:35:03,320 --> 01:35:04,870 Ac argc yn unig yw int. 1869 01:35:04,870 --> 01:35:08,800 >> Mae'r llinell yma, 6, yn gan ddweud set ff cyfartal i 0. 1870 01:35:08,800 --> 01:35:11,980 Cyfrwch yr holl ffordd i fyny at, ond heb gynnwys, argc. 1871 01:35:11,980 --> 01:35:14,010 Ac yna ar bob iteriad, argraffu llinyn. 1872 01:35:14,010 --> 01:35:14,800 Pa llinyn? 1873 01:35:14,800 --> 01:35:17,270 >> Mae'r llinyn i-ed yn argv. 1874 01:35:17,270 --> 01:35:19,530 Felly lle o'r blaen roeddwn i'n gan ddefnyddio'r braced sgwâr 1875 01:35:19,530 --> 01:35:22,180 nodiant i gyrraedd y ith cymeriad mewn llinyn, yn awr 1876 01:35:22,180 --> 01:35:27,240 Im 'yn arfer y nodiant braced sgwâr i gyrraedd y llinyn ith yn arae. 1877 01:35:27,240 --> 01:35:30,310 Felly mae'n fath o un haen uchod, gysyniadol. 1878 01:35:30,310 --> 01:35:35,390 >> Ac felly beth daclus am hyn rhaglen bellach, os wyf yn llunio argv1, 1879 01:35:35,390 --> 01:35:42,067 ac yna gwneud ./argv1, ac yna teipiwch yn rhywbeth fel Baz bar foo, 1880 01:35:42,067 --> 01:35:45,400 sef y tri gair diofyn bod Gwyddonydd cyfrifiadurol yn cyrraedd ar gyfer unrhyw adeg 1881 01:35:45,400 --> 01:35:51,010 ef neu hi angen rhai geiriau dalfan, a tharo Enter, pob un o'r geiriau hynny, 1882 01:35:51,010 --> 01:35:54,980 gan gynnwys enw'r rhaglen, sy'n yn argv yn y lleoliad cyntaf, 1883 01:35:54,980 --> 01:35:58,320 yn dod i ben i fyny yn cael eu hargraffu un ar y tro. 1884 01:35:58,320 --> 01:36:05,290 Ac os byddaf yn newid hyn, ac yr wyf yn dweud rhywbeth fel argv1 Zamyla Chan, 1885 01:36:05,290 --> 01:36:08,800 rydym yn cael pob un o'r tri o'r rheiny geiriau, sydd yn argv0, 1886 01:36:08,800 --> 01:36:14,400 argv1, argv2, oherwydd yn yr argc achos, y cyfrif, yw 3. 1887 01:36:14,400 --> 01:36:20,020 >> Ond yr hyn sy'n daclus yw os ydych yn deall hynny argv yn unig yw amrywiaeth o dannau, 1888 01:36:20,020 --> 01:36:24,910 ac eich bod yn deall bod llinyn yn amrywiaeth o gymeriadau, 1889 01:36:24,910 --> 01:36:29,470 gallwn mewn gwirionedd yn fath o yn defnyddio hyn sgwâr nodiant braced sawl gwaith 1890 01:36:29,470 --> 01:36:33,320 i ddewis llinyn, ac yna dewiswch cymeriad o fewn y llinyn, 1891 01:36:33,320 --> 01:36:35,730 deifio yn ddyfnach fel a ganlyn. 1892 01:36:35,730 --> 01:36:40,100 Yn yr enghraifft hon, gadewch i mi fynd ymlaen a galw argv2.c hwn. 1893 01:36:40,100 --> 01:36:43,920 1894 01:36:43,920 --> 01:36:50,180 Ac yn yr enghraifft hon, gadewch i mi fynd yn ei flaen a gwneud y canlynol-- gyfer int fi gael 0, 1895 01:36:50,180 --> 01:36:53,286 ff yn llai na argc, fi plws yn ogystal, yn union fel o'r blaen. 1896 01:36:53,286 --> 01:36:55,910 Felly, mewn words-- eraill ac yn awr mae hyn yn mynd yn ddigon cymhleth. 1897 01:36:55,910 --> 01:36:59,940 Yna mi i'n mynd i ddweud ailadrodd dros llinynnau yn argv, 1898 01:36:59,940 --> 01:37:01,294 fel sylw i mi fy hun. 1899 01:37:01,294 --> 01:37:03,960 Ac yna dwi'n mynd i gael nythu ar gyfer dolen, a oedd mae'n debyg y byddwch 1900 01:37:03,960 --> 01:37:06,290 wedi ei wneud, neu eu hystyried wneud, yn Scratch, lle 1901 01:37:06,290 --> 01:37:08,600 Rydw i'n mynd i ddweud fy mod int-- Nid yw mynd i ddefnyddio i eto, 1902 01:37:08,600 --> 01:37:12,590 oherwydd nid wyf am i gysgodi, neu math o ysgrifennu dros y ff bresennol. 1903 01:37:12,590 --> 01:37:15,780 >> Rydw i'n mynd i, yn lle hynny, yn dweud j, oherwydd dyna fy ewch i amrywiol ar ôl i, 1904 01:37:15,780 --> 01:37:18,590 pan Im 'jyst yn ceisio yn cyfrif rhifau syml. 1905 01:37:18,590 --> 01:37:28,850 Am j cael 0-- a hefyd, n, yn mynd i cael hyd starn o argv braced i, 1906 01:37:28,850 --> 01:37:36,030 cyn belled ag y j yn llai na m, j yn ogystal a mwy, yn gwneud y canlynol. 1907 01:37:36,030 --> 01:37:37,500 A dyma y rhan ddiddorol. 1908 01:37:37,500 --> 01:37:46,330 >> Argraffwch cymeriad a llinell newydd, blygio mewn argv braced i, braced j. 1909 01:37:46,330 --> 01:37:47,940 Iawn, felly gadewch i mi ychwanegu rhai sylwadau yma. 1910 01:37:47,940 --> 01:37:54,820 Ailadrodd drosodd cymeriadau mewn llinyn cyfredol, 1911 01:37:54,820 --> 01:38:02,290 print gymeriad j-fed mewn i-ed llinyn. 1912 01:38:02,290 --> 01:38:04,630 Felly nawr, gadewch i ni ystyried pa sylwadau hyn yn ei olygu. 1913 01:38:04,630 --> 01:38:06,750 >> Ailadrodd dros y tannau mewn argv-- faint o 1914 01:38:06,750 --> 01:38:09,300 llinynnau yn argv, sef arae? 1915 01:38:09,300 --> 01:38:13,420 Argc llawer, felly rwy'n ailadrodd o fi yn gyfartal 0 hyd at argc. 1916 01:38:13,420 --> 01:38:20,020 Yn y cyfamser, faint o gymeriadau yn y llinyn i-ed yn argv? 1917 01:38:20,020 --> 01:38:22,880 >> Wel, er mwyn cael yr ateb hwnnw, Fi jyst yn galw hyd llinyn 1918 01:38:22,880 --> 01:38:26,810 ar y llinyn cyfredol gofal i mi am, sef argv braced i. 1919 01:38:26,810 --> 01:38:30,090 Ac yr wyf i'n mynd i storio dros dro fod gwerth yn n, dim ond ar gyfer pwrpasau caching, 1920 01:38:30,090 --> 01:38:31,590 ei gofio ar gyfer effeithlonrwydd. 1921 01:38:31,590 --> 01:38:36,330 Ac yna dwi'n mynd ymgychwyn j i 0, gadw i fynd cyn belled â j yn llai na n, 1922 01:38:36,330 --> 01:38:38,430 ac ar bob gynyddiad ailadrodd j. 1923 01:38:38,430 --> 01:38:41,030 >> Ac yna i mewn yma, fesul fy sylw ar llinell 12, 1924 01:38:41,030 --> 01:38:43,390 argraffu gymeriad, wedi'i ddilyn gan y llinell newydd, 1925 01:38:43,390 --> 01:38:48,140 braced penodol argv ff rhoi llinyn i-ed i mi 1926 01:38:48,140 --> 01:38:51,690 yn argv-- felly y gair cyntaf, mae'r ail air, y trydydd gair, beth bynnag. 1927 01:38:51,690 --> 01:38:57,370 Ac yna deifio j yn ddyfnach, ac yn cael mi cymeriad j-fed o'r gair. 1928 01:38:57,370 --> 01:39:02,200 Ac felly, i bob pwrpas, gallwch drin argv fel aml-ddimensiwn, 1929 01:39:02,200 --> 01:39:06,050 fel dau-ddimensiwn, array, lle pob gair math o edrych 1930 01:39:06,050 --> 01:39:08,580 fel hyn yn eich meddwl yn llygad, a phob cymeriad 1931 01:39:08,580 --> 01:39:10,930 yn fath o gyfansoddi yn colofn, os yw hynny'n helpu. 1932 01:39:10,930 --> 01:39:13,260 >> Mewn gwirionedd, pan fyddwn yn tynnu hyn ar wahân yn yr wythnosau yn y dyfodol, 1933 01:39:13,260 --> 01:39:15,580 mae'n mynd i fod ychydig yn mwy soffistigedig na hynny. 1934 01:39:15,580 --> 01:39:17,800 Ond gallwch mewn gwirionedd feddwl am hynny, am y tro, 1935 01:39:17,800 --> 01:39:22,110 fel dim ond mae hyn dau ddimensiwn array, lle mae un lefel ohono 1936 01:39:22,110 --> 01:39:23,260 yw pob un o'r llinynnau. 1937 01:39:23,260 --> 01:39:26,760 Ac yna os ydych yn plymio yn ddyfnach, byddwch yn yn gallu cael at y cymeriadau unigol 1938 01:39:26,760 --> 01:39:29,600 ynddynt drwy ddefnyddio'r nodiant hwn yma. 1939 01:39:29,600 --> 01:39:31,620 >> Felly beth yw effaith net? 1940 01:39:31,620 --> 01:39:34,970 Gadewch i mi fynd yn ei flaen ac gwneud darn argv2-- iddo. 1941 01:39:34,970 --> 01:39:36,210 Yr wyf yn gwneud camgymeriad yma. 1942 01:39:36,210 --> 01:39:40,160 Ymhlyg datgan y Stirling swyddogaeth llyfrgell. 1943 01:39:40,160 --> 01:39:42,190 Felly, yr holl amser hwn, mae'n efallai y bo'n briodol 1944 01:39:42,190 --> 01:39:45,130 ein bod yn fath o orffen yn union lle rydym yn dechrau. 1945 01:39:45,130 --> 01:39:48,160 >> Rwy'n gwyneb, ymhlyg datgan Stirling swyddogaeth llyfrgell. 1946 01:39:48,160 --> 01:39:48,987 OK, arhoswch funud. 1947 01:39:48,987 --> 01:39:51,070 Yr wyf yn cofio hynny, yn enwedig gan ei fod yn iawn yma. 1948 01:39:51,070 --> 01:39:54,490 Mae angen i mi gynnwys string.h mewn y fersiwn hon o'r rhaglen. 1949 01:39:54,490 --> 01:40:00,050 >> Gadewch i mi fynd yn ei flaen ac yn cynnwys string.h, ac eithrio bod, mynd yn ei flaen 1950 01:40:00,050 --> 01:40:04,460 ac ail-grynhoi argv2. 1951 01:40:04,460 --> 01:40:08,390 Ac yn awr, dyma ni, yn gwneud argv2, Enter. 1952 01:40:08,390 --> 01:40:10,590 Ac er 'i' ychydig yn cryptig ar yr olwg gyntaf, 1953 01:40:10,590 --> 01:40:15,690 sylwi bod, yn wir, beth ei argraffu yn dot argv2. 1954 01:40:15,690 --> 01:40:19,970 >> Ond os wyf yn teipio rhai geiriau ar ôl y brydlon, fel argv2 Zamyla Chan, 1955 01:40:19,970 --> 01:40:22,560 Mewnbynnu, hefyd ychydig cryptig ar yr olwg gyntaf. 1956 01:40:22,560 --> 01:40:30,540 Ond os ydym yn sgrolio yn ôl i fyny, ./argv2 Z-A-M-Y-L-A C-H-A-N. 1957 01:40:30,540 --> 01:40:32,190 Felly rydym wedi bwysleisiodd dros bob gair. 1958 01:40:32,190 --> 01:40:37,770 Ac, yn ei dro, rydym wedi Ailadroddodd dros pob cymeriad o fewn gair. 1959 01:40:37,770 --> 01:40:40,040 >> Nawr, ar ôl hyn i gyd, sylweddoli fod yna 1960 01:40:40,040 --> 01:40:43,120 un fanylion eraill yr ydym wedi bod yn garedig o anwybyddu y tro cyfan. 1961 01:40:43,120 --> 01:40:46,180 Rydym yn unig pryfocio ar wahân beth Gall prif yn mewnbynnau fod? 1962 01:40:46,180 --> 01:40:47,780 Beth am allbwn prif yn? 1963 01:40:47,780 --> 01:40:50,540 >> Mae hyn i gyd bryd, rydym wedi bod jyst copïo a gludo 1964 01:40:50,540 --> 01:40:53,870 y gair int o flaen y brif, er efallai y byddwch yn gweld ar-lein, 1965 01:40:53,870 --> 01:40:58,340 weithiau yn anghywir mewn fersiynau hŷn o C a crynoadyddion, eu bod yn dweud yn ddi-rym, 1966 01:40:58,340 --> 01:40:59,410 neu ddim byd o gwbl. 1967 01:40:59,410 --> 01:41:01,580 Ond, yn wir, ar gyfer y fersiwn o C yr ydym yn ei ddefnyddio, 1968 01:41:01,580 --> 01:41:06,180 C 11, neu 2011, yn sylweddoli y dylai fod yn int. 1969 01:41:06,180 --> 01:41:09,300 A dylai fod naill ai'n ddi-rym neu argc a argv yma. 1970 01:41:09,300 --> 01:41:10,790 >> Ond prif pam int? 1971 01:41:10,790 --> 01:41:12,480 Beth yw mewn gwirionedd yn dychwelyd? 1972 01:41:12,480 --> 01:41:16,280 Wel, mae'n troi allan i gyd y tro hwn, unrhyw tro y byddwch wedi ysgrifennu prif raglen 1973 01:41:16,280 --> 01:41:18,440 mae bob amser yn dychwelyd rhywbeth. 1974 01:41:18,440 --> 01:41:19,960 Ond mae wedi bod yn gwneud hynny yn gyfrinachol. 1975 01:41:19,960 --> 01:41:23,350 >> Mae hynny'n rhywbeth hwn yn int, fel llinell 5 yn awgrymu. 1976 01:41:23,350 --> 01:41:24,225 Ond beth int? 1977 01:41:24,225 --> 01:41:26,100 Wel, mae hyn yn confensiwn mewn rhaglenni, 1978 01:41:26,100 --> 01:41:29,790 lle os nad oes dim wedi mynd o chwith a popeth yn iawn, 1979 01:41:29,790 --> 01:41:34,250 rhaglenni a swyddogaethau cyffredinol return-- braidd counterintuitively-- 1980 01:41:34,250 --> 01:41:35,230 0. 1981 01:41:35,230 --> 01:41:38,070 0 gyffredinol yn arwydd popeth yn iawn. 1982 01:41:38,070 --> 01:41:40,610 Felly, hyd yn oed er eich barn am fel ffug mewn sawl cyd-destun, 1983 01:41:40,610 --> 01:41:42,930 mewn gwirionedd yn gyffredinol yn golygu yn beth da 1984 01:41:42,930 --> 01:41:49,560 >> Yn y cyfamser, os rhaglen yn dychwelyd 1, neu'n negyddol 1, neu 5, neu negyddol 42, 1985 01:41:49,560 --> 01:41:52,941 neu unrhyw-0 di werth, sydd yn gyffredinol yn arwydd 1986 01:41:52,941 --> 01:41:54,190 bod rhywbeth wedi mynd o'i le. 1987 01:41:54,190 --> 01:41:56,700 Yn wir, ar eich Mac neu PC eich hun, Efallai eich bod wedi gweld mewn gwirionedd 1988 01:41:56,700 --> 01:42:01,050 neges gwall, lle mae'n yn dweud rhywbeth neu'i gilydd, gwall 1989 01:42:01,050 --> 01:42:04,940 cod negyddol 42, neu wall cod 23, neu rywbeth fel 'na. 1990 01:42:04,940 --> 01:42:08,980 Y rhif hwnnw yn gyffredinol dim ond awgrym i'r rhaglennydd, neu'r cwmni 1991 01:42:08,980 --> 01:42:11,174 a wnaeth y meddalwedd, beth aeth o'i le a pham, 1992 01:42:11,174 --> 01:42:13,590 fel y gallant edrych drwy eu dogfennau neu god, 1993 01:42:13,590 --> 01:42:15,465 a chyfrif i maes yr hyn y mae'r gwall yn ei olygu. 1994 01:42:15,465 --> 01:42:18,400 Dyw hi ddim yn gyffredinol ddefnyddiol i ni ddefnyddwyr terfynol. 1995 01:42:18,400 --> 01:42:20,550 >> Ond pan prif dychwelyd 0, popeth yn iawn. 1996 01:42:20,550 --> 01:42:23,770 Ac os nad ydych yn nodi pa brif dylai ddychwelyd, 1997 01:42:23,770 --> 01:42:26,950 bydd yn jyst yn awtomatig dychwelyd 0 ar eich cyfer chi. 1998 01:42:26,950 --> 01:42:30,870 Ond yn dychwelyd rhywbeth arall mewn gwirionedd yn ddefnyddiol. 1999 01:42:30,870 --> 01:42:34,660 >> Yn y rhaglen olaf, gadewch i mi mynd yn ei flaen ac yn galw exit.c hwn, 2000 01:42:34,660 --> 01:42:38,630 a chyflwyno yr olaf o heddiw pynciau, a elwir yn cod gwall. 2001 01:42:38,630 --> 01:42:42,930 Gadewch i mi fynd yn ei flaen ac yn cynnwys ein ffeiliau cyfarwydd i fyny top, yn gwneud prif int. 2002 01:42:42,930 --> 01:42:49,500 A'r tro hwn, gadewch i ni wneud argc int, argv llinyn, a gyda fy cromfachau 2003 01:42:49,500 --> 01:42:50,836 awgrymu ei fod yn y rhesi. 2004 01:42:50,836 --> 01:42:52,460 Ac yna gadewch i mi jyst gwneud gwiriad pwyll. 2005 01:42:52,460 --> 01:42:56,640 Y tro hwn, os nad yw argc yn gwneud gyfartal 2, yna rydych yn gwybod beth? 2006 01:42:56,640 --> 01:42:57,520 Ei anghofio. 2007 01:42:57,520 --> 01:43:03,170 Yr wyf yn mynd i ddweud bod, hey, defnyddwyr, rydych yn colli ymresymiad llinell orchymyn 2008 01:43:03,170 --> 01:43:04,210 n slaes. 2009 01:43:04,210 --> 01:43:05,230 >> Ac yna dyna ni. 2010 01:43:05,230 --> 01:43:06,130 Rwyf am i ymadael. 2011 01:43:06,130 --> 01:43:11,030 Yr wyf yn mynd i preemptively, a cyn pryd mewn gwirionedd, yn dychwelyd 2012 01:43:11,030 --> 01:43:12,810 rhywbeth ar wahân i'r rhif 1. 2013 01:43:12,810 --> 01:43:15,360 Mae'r ewch i werth am y cyntaf gwall all ddigwydd yw 1. 2014 01:43:15,360 --> 01:43:17,860 Os oes gennych rywfaint gwallus eraill sefyllfa a allai ddigwydd, 2015 01:43:17,860 --> 01:43:21,390 gallech ddweud dychwelyd 2 neu ddychwelyd 3, neu efallai hyd yn oed yn negyddol 1 neu negyddol 2. 2016 01:43:21,390 --> 01:43:23,750 >> Mae'r rhain yn codau ymadael yn unig sydd, ar y cyfan, 2017 01:43:23,750 --> 01:43:27,770 ond yn ddefnyddiol i'r rhaglennydd, neu'r cwmni sy'n llongau y meddalwedd. 2018 01:43:27,770 --> 01:43:30,500 Ond mae'r ffaith ei fod yn Nid 0 yn yr hyn sy'n bwysig. 2019 01:43:30,500 --> 01:43:34,310 Felly, os yn y rhaglen hon, yr wyf am gwarantu bod y rhaglen hon yn unig 2020 01:43:34,310 --> 01:43:38,190 yn gweithio os bydd y defnyddiwr yn rhoi i mi gyda cyfrif dadl o ddau, 2021 01:43:38,190 --> 01:43:42,880 enw'r rhaglen, ac mae rhai eraill gair, gallaf orfodi cymaint fel a ganlyn, 2022 01:43:42,880 --> 01:43:46,110 gweiddi ar y defnyddiwr gyda printf dywediad, coll ymresymiad llinell orchymyn, 2023 01:43:46,110 --> 01:43:46,970 dychwelyd 1. 2024 01:43:46,970 --> 01:43:49,940 Bydd hynny yn unig ar unwaith dod allan o'r rhaglen. 2025 01:43:49,940 --> 01:43:55,840 >> Dim ond os argc hafal 2 byddwn yn mynd i lawr yma, a phryd wyf i'n mynd i ddweud, 2026 01:43:55,840 --> 01:44:00,410 helo cant s, slaes n, argv1. 2027 01:44:00,410 --> 01:44:03,827 Mewn geiriau eraill, rwy'n ddim yn mynd ar ôl argv 0, 2028 01:44:03,827 --> 01:44:05,410 sydd ychydig enw'r rhaglen. 2029 01:44:05,410 --> 01:44:09,450 Rwyf am i argraffu helo, coma, yr ail air y mae'r dynol teipio. 2030 01:44:09,450 --> 01:44:12,580 Ac yn yr achos hwn ar llinell 13, popeth yn iawn. 2031 01:44:12,580 --> 01:44:15,920 >> Gwn fod argc yw 2 rhesymegol o'r rhaglen hon. 2032 01:44:15,920 --> 01:44:17,770 Rydw i'n mynd i fynd yn ei flaen ac yn dychwelyd 0. 2033 01:44:17,770 --> 01:44:21,230 Fel o'r neilltu, yn cadw mewn cof bod mae hyn yn wir yn Scratch hefyd. 2034 01:44:21,230 --> 01:44:24,760 >> Yn rhesymegol, gallwn i wneud hyn ac grynhoi y llinellau hyn 2035 01:44:24,760 --> 01:44:27,020 cod mewn arall hwn cymal yma. 2036 01:44:27,020 --> 01:44:29,420 Ond mae hynny'n fath o ddiangen tolcio fy cod. 2037 01:44:29,420 --> 01:44:31,800 Ac yr wyf am wneud super glir nad waeth beth, 2038 01:44:31,800 --> 01:44:34,670 yn ddiofyn, helo bydd rhywbeth yn cael ei argraffu, 2039 01:44:34,670 --> 01:44:36,050 cyhyd ag y bo'r defnyddiwr yn cydweithio. 2040 01:44:36,050 --> 01:44:39,360 >> Felly mae'n gyffredin iawn i'w defnyddio cyflwr, dim ond os, 2041 01:44:39,360 --> 01:44:41,870 i ddal rhai gwallus sefyllfa, ac yna ymadael. 2042 01:44:41,870 --> 01:44:45,690 Ac yna, ar yr amod i gyd yw yn dda, nid yn cael arall, 2043 01:44:45,690 --> 01:44:48,060 ond dim ond yn cael y cod tu allan, os, am ei fod yn 2044 01:44:48,060 --> 01:44:51,060 cyfatebol yn hyn achos penodol, yn rhesymegol. 2045 01:44:51,060 --> 01:44:54,480 Felly rwy'n dychwelyd 0, dim ond i arwyddo benodol popeth yn iawn. 2046 01:44:54,480 --> 01:44:58,480 >> Os byddaf yn hepgor dychwelyd 0, byddai'n cymryd yn ganiataol yn awtomatig i mi. 2047 01:44:58,480 --> 01:45:00,890 Ond yn awr fy mod yn dychwelyd un mewn o leiaf yr achos hwn, 2048 01:45:00,890 --> 01:45:04,940 Rydw i'n mynd i, ar gyfer mesur da a eglurder, yn dychwelyd 0 yn yr achos hwn. 2049 01:45:04,940 --> 01:45:09,690 Felly nawr gadewch i mi fynd yn ei flaen ac yn gwneud allanfa, sydd yn segue perffaith i adael. 2050 01:45:09,690 --> 01:45:14,401 >> Ond gwnewch allanfa, a gadewch i mi fynd ymlaen llaw a gwneud ./exit, Enter. 2051 01:45:14,401 --> 01:45:16,900 Ac mae'r rhaglen yelled ar fi, coll ymresymiad llinell orchymyn. 2052 01:45:16,900 --> 01:45:18,120 OK, gadewch i mi gydweithredu. 2053 01:45:18,120 --> 01:45:23,810 >> Gadewch i mi yn lle hynny wneud ./exit, David, Enter. 2054 01:45:23,810 --> 01:45:25,190 Ac yn awr y mae'n ei ddweud, helo David. 2055 01:45:25,190 --> 01:45:27,300 Ac na fyddech fel arfer yn gweld hyn. 2056 01:45:27,300 --> 01:45:30,650 >> Ond mae'n troi allan bod yna ffordd arbennig mewn Linux i weld mewn gwirionedd 2057 01:45:30,650 --> 01:45:34,470 gyda pha cod allanfa rhaglen exited. 2058 01:45:34,470 --> 01:45:37,184 Weithiau mewn graffigol byd fel Mac OS neu Windows, 2059 01:45:37,184 --> 01:45:40,100 ydych ond yn gweld y rhifau hyn pan fydd neges gwall pops i fyny ar y sgrîn 2060 01:45:40,100 --> 01:45:41,940 a'r rhaglennydd yn dangos eich bod rhif. 2061 01:45:41,940 --> 01:45:44,773 Ond os ydym am weld beth y gwall neges yw, gallwn wneud hynny Yma-- 2062 01:45:44,773 --> 01:45:48,100 felly ./exit, Mewnbynnu, print coll ymresymiad llinell orchymyn. 2063 01:45:48,100 --> 01:45:54,590 >> Os wyf yn awr yn gwneud $ adlais ?, sef chwerthinllyd cryptig yn edrych. 2064 01:45:54,590 --> 01:45:56,590 Ond $? 2065 01:45:56,590 --> 01:45:59,220 yw'r incantation hudol sy'n dweud, hey, cyfrifiaduron, 2066 01:45:59,220 --> 01:46:01,900 ddweud wrthyf beth mae'r blaenorol cod allanfa rhaglen oedd. 2067 01:46:01,900 --> 01:46:03,410 Ac yr wyf daro Chofnoda. 2068 01:46:03,410 --> 01:46:07,520 Gwelaf 1, oherwydd dyna beth yr wyf yn wrth fy mhrif swyddogaeth i ddychwelyd. 2069 01:46:07,520 --> 01:46:12,310 >> Yn y cyfamser, os wyf yn gwneud ./exit David, a tharo Enter, yr wyf yn gweld, helo David. 2070 01:46:12,310 --> 01:46:16,800 Ac os wyf yn awr yn gwneud $ adleisio ?, yr wyf yn gweld helo 0. 2071 01:46:16,800 --> 01:46:19,080 Ac felly y bydd hyn mewn gwirionedd yn yn wybodaeth werthfawr 2072 01:46:19,080 --> 01:46:23,420 yng nghyd-destun y dadnamydd, nid felly llawer y chi, y bobl, y byddai gofal. 2073 01:46:23,420 --> 01:46:26,060 Ond mae'r debugger ac eraill rhaglenni byddwn yn defnyddio semester hwn 2074 01:46:26,060 --> 01:46:29,420 Bydd yn aml yn edrych ar y rhif hwnnw, hyd yn oed er 'i' fath o guddio i ffwrdd 2075 01:46:29,420 --> 01:46:32,780 oni bai eich bod yn edrych ar ei gyfer, i penderfynu a yw rhaglen neu beidio 2076 01:46:32,780 --> 01:46:37,050 gweithredu yn gywir neu'n anghywir. 2077 01:46:37,050 --> 01:46:40,450 >> Ac felly sy'n dod â ni i hyn, ar ddiwedd y dydd. 2078 01:46:40,450 --> 01:46:43,917 Rydym yn dechrau heddiw trwy edrych ar debugging, ac yn ei dro yn y cwrs 2079 01:46:43,917 --> 01:46:46,750 ei hun, ac yna mwy o ddiddorol, dechnegol o dan y cwfl 2080 01:46:46,750 --> 01:46:49,490 ar ba llinynnau yn cael eu, sy'n para wythnos rydym yn unig yn cymryd yn ganiataol, 2081 01:46:49,490 --> 01:46:51,900 ac yn sicr yn mynd â nhw yn ganiataol yn Scratch. 2082 01:46:51,900 --> 01:46:56,040 >> Yna byddwn yn edrych ar sut y gallwn gael gafael ar cymeriadau unigol mewn llinyn, 2083 01:46:56,040 --> 01:47:00,310 ac yna unwaith eto yn cymryd lefel uwch edrych ar bethau, edrych ar sut well-- 2084 01:47:00,310 --> 01:47:04,226 os ydym am gael o unigolion elfennau mewn rhestr fel strwythur, 2085 01:47:04,226 --> 01:47:05,850 ni allwn wneud hynny gyda llinynnau lluosog? 2086 01:47:05,850 --> 01:47:08,050 Ac a allwn gyda dadleuon llinell gorchymyn. 2087 01:47:08,050 --> 01:47:12,800 Ond mae hyn darlun yma o ychydig blychau yn dangosol o syniad cyffredinol hwn 2088 01:47:12,800 --> 01:47:14,451 o amrywiaeth, neu restr, neu fector. 2089 01:47:14,451 --> 01:47:16,450 Ac yn dibynnu ar y cyd-destun, yr holl eiriau hyn 2090 01:47:16,450 --> 01:47:17,880 golygu pethau ychydig yn wahanol. 2091 01:47:17,880 --> 01:47:20,060 Felly, yn C, rydym yn unig yn mynd i siarad am arae. 2092 01:47:20,060 --> 01:47:23,840 Ac amrywiaeth yn dalp o gof, pob un ohonynt yn 2093 01:47:23,840 --> 01:47:27,720 elfennau cydgyffwrdd, yn ôl, i gefnogi, i gefnogi, i gefn. 2094 01:47:27,720 --> 01:47:31,970 >> Ac elfennau hynny, yn gyffredinol, o'r un math data, cymeriad, 2095 01:47:31,970 --> 01:47:35,966 cymeriad, cymeriad, cymeriad, neu llinyn, llinyn, llinyn, llinyn, neu int, 2096 01:47:35,966 --> 01:47:38,600 int, int, beth bynnag ydym yn ceisio ei siop. 2097 01:47:38,600 --> 01:47:42,540 Ond ar ddiwedd y dydd, mae hyn yn sut mae'n edrych yn gysyniadol. 2098 01:47:42,540 --> 01:47:44,530 Rydych yn cymryd eich cof neu RAM cyfrifiadur. 2099 01:47:44,530 --> 01:47:48,590 Ac rydych yn cerfio allan i blychau yn union faint, pob un ohonynt 2100 01:47:48,590 --> 01:47:50,920 yn ôl, wrth gefn, i yn ôl, wrth gefn yn y modd hwn. 2101 01:47:50,920 --> 01:47:53,200 >> A beth sy'n neis am syniad hwn, a'r ffaith 2102 01:47:53,200 --> 01:47:58,580 ein bod yn gallu mynegi gwerthoedd yn y modd hwn gyda'r cyntaf o'n strwythurau data 2103 01:47:58,580 --> 01:48:02,520 yn y dosbarth, yn golygu y gallwn ddechrau i ddatrys problemau gyda cod 2104 01:48:02,520 --> 01:48:04,079 Daeth hynny mor reddfol mewn wythnos 0. 2105 01:48:04,079 --> 01:48:05,870 Byddwch yn cofio y ffôn enghraifft llyfr, lle 2106 01:48:05,870 --> 01:48:09,110 rydym yn defnyddio rhaniad a gorchfygu, neu algorithm chwiliad deuaidd, 2107 01:48:09,110 --> 01:48:13,220 didoli trwy ei gyfanrwydd criw o enwau a rhifau. 2108 01:48:13,220 --> 01:48:18,220 Ond rydym yn cymryd yn ganiataol, galw i gof, bod hynny llyfr ffôn eisoes yn didoli, 2109 01:48:18,220 --> 01:48:21,630 bod rhywun arall eisoes wedi cyfrifedig rhoddwyd rhestr o enwau out-- 2110 01:48:21,630 --> 01:48:24,430 ac numbers-- sut i alphabetize nhw. 2111 01:48:24,430 --> 01:48:26,950 Ac yn awr bod yn C ydym, hefyd, y gallu 2112 01:48:26,950 --> 01:48:30,290 i osod pethau allan, nid gorfforol mewn llyfr ffôn 2113 01:48:30,290 --> 01:48:34,220 ond bron mewn cyfrifiadur cof, byddwn yn gallu yr wythnos nesaf 2114 01:48:34,220 --> 01:48:38,470 i gyflwyno eto this-- y cyntaf o'n strwythurau data mewn array-- 2115 01:48:38,470 --> 01:48:43,530 ond yn bwysicach, cyfrifiadur gwirioneddol algorithmau gwyddoniaeth ar waith 2116 01:48:43,530 --> 01:48:47,720 mewn cod, gallwn storio ag ef data mewn strwythurau fel hyn, 2117 01:48:47,720 --> 01:48:50,730 ac yna cychwyn i drin iddo, a i mewn gwirionedd yn datrys problemau ag ef, 2118 01:48:50,730 --> 01:48:53,570 ac i adeiladu ar ben hynny, yn y pen draw, rhaglenni yn C, 2119 01:48:53,570 --> 01:48:56,730 yn Python, yn JavaScript, ymholi cronfeydd data gyda SQL? 2120 01:48:56,730 --> 01:48:59,980 >> A byddwn yn gweld bod pob un o'r rhain syniadau gwahanol cydgloi. 2121 01:48:59,980 --> 01:49:04,100 Ond am nawr, yn cofio bod y parth a gyflwynwyd gennym heddiw 2122 01:49:04,100 --> 01:49:06,920 Roedd y peth hyn yma, ac byd cryptography. 2123 01:49:06,920 --> 01:49:11,200 Ac ymhlith y problemau nesaf y byddwch chi eich hun yn datrys yw'r grefft o cryptograffeg, 2124 01:49:11,200 --> 01:49:13,630 sgramblo a dad-sgrialu gwybodaeth, a ciphering 2125 01:49:13,630 --> 01:49:15,930 ac ddehongli testun, a chan dybio yn y pen draw 2126 01:49:15,930 --> 01:49:18,970 eich bod bellach yn gwybod beth yw o dan y cwfl 2127 01:49:18,970 --> 01:49:21,860 felly pan fyddwch yn gweld neu dderbyn neges fel hyn, byddwch yn 2128 01:49:21,860 --> 01:49:24,060 Gall eich hun dehongli iddo. 2129 01:49:24,060 --> 01:49:26,740 Mae hyn i gyd, a mwy o amser nesaf. 2130 01:49:26,740 --> 01:49:29,890 2131 01:49:29,890 --> 01:49:30,790 >> [VIDEO Playback] 2132 01:49:30,790 --> 01:49:32,970 >> -Mover Newydd gyrraedd. 2133 01:49:32,970 --> 01:49:35,146 Rydw i'n mynd i fynd ymweliad ei athro coleg. 2134 01:49:35,146 --> 01:49:37,611 Yep. 2135 01:49:37,611 --> 01:49:40,080 Hi. 2136 01:49:40,080 --> 01:49:40,660 Mae'n chi. 2137 01:49:40,660 --> 01:49:44,125 2138 01:49:44,125 --> 01:49:45,110 Aros! 2139 01:49:45,110 --> 01:49:45,610 Dafydd. 2140 01:49:45,610 --> 01:49:53,936 2141 01:49:53,936 --> 01:49:56,060 Im 'jyst yn ceisio at chyfrif beth ddigwyddodd i chi. 2142 01:49:56,060 --> 01:49:58,130 Os gwelwch yn dda, gallai unrhyw beth o gymorth. 2143 01:49:58,130 --> 01:50:05,020 2144 01:50:05,020 --> 01:50:08,354 Yr oeddech yn ei goleg roommate, nid oeddech chi? 2145 01:50:08,354 --> 01:50:10,770 Yr oeddech yno gydag ef pan gorffennodd y prosiect CS50? 2146 01:50:10,770 --> 01:50:13,770 2147 01:50:13,770 --> 01:50:15,765 >> [CHWARAE CERDDORIAETH] 2148 01:50:15,765 --> 01:50:32,110 2149 01:50:32,110 --> 01:50:33,150 >> -bod Oedd CS50. 2150 01:50:33,150 --> 01:50:42,690 2151 01:50:42,690 --> 01:50:44,770 >> Rwyf wrth fy modd y lle hwn. 2152 01:50:44,770 --> 01:50:45,854 >> -Eat Fyny. 2153 01:50:45,854 --> 01:50:47,020 Rydym yn mynd allan o fusnes. 2154 01:50:47,020 --> 01:50:52,120 2155 01:50:52,120 --> 01:50:53,970 >> [DIWEDD Playback]