1 00:00:00,000 --> 00:00:00,487 2 00:00:00,487 --> 00:00:11,210 >> [CHWARAE CERDDORIAETH] 3 00:00:11,210 --> 00:00:12,100 >> ROB Boden: Pob hawl. 4 00:00:12,100 --> 00:00:15,620 Felly, y peth cyntaf yn gyntaf, fideo o wyneb cyfarwydd. 5 00:00:15,620 --> 00:00:22,080 6 00:00:22,080 --> 00:00:22,560 >> [VIDEO Playback] 7 00:00:22,560 --> 00:00:23,370 >> -Mae pob hawl. 8 00:00:23,370 --> 00:00:27,150 Mae hyn yn CS50, ac mae hyn yn dechrau'r wythnos tri. 9 00:00:27,150 --> 00:00:29,980 Mae'n ddrwg gen i na allwn i fod yno gyda chi heddiw, ond yn caniatáu i mi gyflwyno 10 00:00:29,980 --> 00:00:32,880 Rob Boden CS50 ei hun. 11 00:00:32,880 --> 00:00:33,872 >> [DIWEDD VIDEO chwarae] 12 00:00:33,872 --> 00:00:39,340 >> [Gymeradwyaeth a CHEERS] 13 00:00:39,340 --> 00:00:41,277 >> ROB Boden: Y filmography yn y fideo yn wych. 14 00:00:41,277 --> 00:00:47,280 15 00:00:47,280 --> 00:00:47,770 Mae pob hawl. 16 00:00:47,770 --> 00:00:50,960 Felly yn gyntaf, mae cinio arall. 17 00:00:50,960 --> 00:00:52,330 Mae'n yfory am 1:15. 18 00:00:52,330 --> 00:00:54,480 Does dim cinio ddydd Gwener. 19 00:00:54,480 --> 00:00:55,810 Y mae gyda Quora. 20 00:00:55,810 --> 00:01:00,190 Ac nid Tommy sydd yma eto, ond un o y bobl yno yn gyn CF pen, 21 00:01:00,190 --> 00:01:01,530 Tommy McWilliam. 22 00:01:01,530 --> 00:01:02,730 Felly, ei fod yn ddyn hwyl. 23 00:01:02,730 --> 00:01:04,819 Dylech ddod. 24 00:01:04,819 --> 00:01:05,900 >> Mae pob hawl. 25 00:01:05,900 --> 00:01:11,360 Felly wythnos diwethaf, rydym yn dechrau torri ar wahân am yr hyn y llinyn mewn gwirionedd. 26 00:01:11,360 --> 00:01:14,830 Rydym wedi hysbys ers y dechrau mae'n dilyniant o gymeriadau. 27 00:01:14,830 --> 00:01:18,130 Ond yr wythnos diwethaf, rydym yn ymchwilio i'r ffaith bod yr hyn sydd mewn gwirionedd dilyniant o 28 00:01:18,130 --> 00:01:22,110 cymeriadau, yn dda, mae gennym bellach araeau o gymeriadau. 29 00:01:22,110 --> 00:01:26,450 Ac rydym yn gwybod bod llinyn, mae'n arae o gymeriadau, ar y diwedd un, 30 00:01:26,450 --> 00:01:30,920 gennym y beit null arbennig, mae hyn yn slaes 0, sy'n dangos y diwedd 31 00:01:30,920 --> 00:01:32,230 y llinyn. 32 00:01:32,230 --> 00:01:36,970 >> Ac felly mae llinyn yn amrywiaeth o cymeriadau, ond gallwn gael mwy na 33 00:01:36,970 --> 00:01:39,530 dim ond amrywiaeth o gymeriadau, gallwn gael amrywiaeth o unrhyw 34 00:01:39,530 --> 00:01:40,890 y math o beth yr ydym ei eisiau. 35 00:01:40,890 --> 00:01:51,570 Felly, os ydych yn cofio o wythnos diwethaf, Rhaglen Oed y mae David a gyflwynwyd 36 00:01:51,570 --> 00:01:53,560 yn gyflym iawn. 37 00:01:53,560 --> 00:01:57,010 Beth felly yn gyntaf rydym yn mynd i wneud yw gofyn i'r defnyddiwr am gyfanrif, y 38 00:01:57,010 --> 00:01:58,800 nifer y bobl yn yr ystafell. 39 00:01:58,800 --> 00:02:01,260 Unwaith y byddwn yn cael y cyfanrif, rydym yn datgan arae. 40 00:02:01,260 --> 00:02:02,890 Sylwi ar hyn cystrawen braced. 41 00:02:02,890 --> 00:02:04,540 Rydych yn mynd i ddod i arfer â hynny. 42 00:02:04,540 --> 00:02:09,430 >> Felly, rydym yn datgan amrywiaeth o gyfanrifau a elwir yn oed, ac mae n 43 00:02:09,430 --> 00:02:12,080 chyfanrifau yn amrywiaeth hwn. 44 00:02:12,080 --> 00:02:16,480 Felly, mae hyn batrwm iawn yma, mae hyn yn 4 int i yn hafal i 0, fi yn llai na n, fi yn ogystal â 45 00:02:16,480 --> 00:02:20,580 yn ogystal, sydd hefyd yn mynd i fod yn batrwm eich bod yn dod i arfer iawn. 46 00:02:20,580 --> 00:02:24,000 Oherwydd dyna 'n bert lawer sut yr ydych chi'n bob amser yn mynd i ailadrodd dros arrays. 47 00:02:24,000 --> 00:02:26,330 Felly cofiwch mai n yw hyd ein amrywiaeth. 48 00:02:26,330 --> 00:02:32,120 Ac felly dyma, rydym yn gofyn dro ar ôl tro ar gyfer oed o berson i yn yr ystafell. 49 00:02:32,120 --> 00:02:36,640 >> Ar ôl hyn, rydym yn mynd i lawr, ac am ba bynnag reswm mympwyol, byddwn wedyn yn 50 00:02:36,640 --> 00:02:40,220 argraffu pa mor hen y maent yn mynd i fod yn flwyddyn o hyn. 51 00:02:40,220 --> 00:02:49,980 A rhedeg y rhaglen honno, gadewch i ni gwneud oedran, dot oedrannau slaes. 52 00:02:49,980 --> 00:02:53,010 Felly, nifer y bobl yn yr ystafell, gadewch i ni ddweud mae tri. 53 00:02:53,010 --> 00:02:59,880 A dywed, y person cyntaf yn 13, nesaf yw 26, a'r olaf yw 30. 54 00:02:59,880 --> 00:03:05,080 Felly, yna bydd yn ailadrodd dros gyfnod o dair y rhai pobl, argraffu 14, 27, a 31. 55 00:03:05,080 --> 00:03:16,060 >> Felly cofiwch, pan fyddwn yn datgan amrywiaeth o faint n, mynegeion yn y 56 00:03:16,060 --> 00:03:19,950 amrywiaeth, mae gan yr amrywiaeth gwerthoedd ac mynegeion 0, 1, 2, yr holl ffordd 57 00:03:19,950 --> 00:03:21,680 hyd at n minws 1. 58 00:03:21,680 --> 00:03:26,255 Felly, pan rydym yn dweud bod tri o bobl yn yr ystafell, ac rydym yn rhoi i mewn yma 59 00:03:26,255 --> 00:03:29,850 iteriad cyntaf drwy'r dolen, fi yn mynd i fod yn 0. 60 00:03:29,850 --> 00:03:31,650 Felly, yn y mynegai 0. 61 00:03:31,650 --> 00:03:34,540 Rydym yn pennu y cyntaf oedran y defnyddiwr yn mynd i mewn. 62 00:03:34,540 --> 00:03:38,870 Yna, yn yr un nesaf, rydym yn mynd i mewn i'r ail n y defnyddiwr yn mynd i mewn, ac yn 63 00:03:38,870 --> 00:03:40,580 nesaf i ddau, y n diwethaf. 64 00:03:40,580 --> 00:03:44,200 >> Felly sylwi bod amrywiaeth o faint nid yw tri oes unrhyw beth 65 00:03:44,200 --> 00:03:46,040 yn y mynegai tri. 66 00:03:46,040 --> 00:03:49,036 Nid yw hyn yn ddilys. 67 00:03:49,036 --> 00:03:50,250 Mae pob hawl. 68 00:03:50,250 --> 00:03:55,136 Felly, yn mynd yn ôl yma. 69 00:03:55,136 --> 00:03:57,650 70 00:03:57,650 --> 00:04:01,590 Felly, yn awr ein bod wedi delio â arrays, mae gennym rai gyfarwydd. 71 00:04:01,590 --> 00:04:03,780 Nawr rydym yn mynd i symud ymlaen i orchymyn dadleuon llinell, sydd yn mynd i fod yn 72 00:04:03,780 --> 00:04:05,890 'n bert yn berthnasol i'r broblem hon a osodwyd. 73 00:04:05,890 --> 00:04:09,670 >> Felly, hyd yn hyn, pryd bynnag eich bod wedi datgan eich prif swyddogaeth, rydym wedi 74 00:04:09,670 --> 00:04:11,230 Dywedodd prif ddi-rym int. 75 00:04:11,230 --> 00:04:14,070 Felly, yn ddi-rym yn unig yn golygu bod nid ydym yn pasio unrhyw 76 00:04:14,070 --> 00:04:16,440 dadleuon i'r swyddogaeth hon. 77 00:04:16,440 --> 00:04:19,190 Nawr rydym yn mynd i weld y prif Gall gymryd rhai dadleuon. 78 00:04:19,190 --> 00:04:22,470 Yma rydym yn eu galw int argc a bracedi argv llinyn. 79 00:04:22,470 --> 00:04:26,930 Mae'r cromfachau, unwaith eto, gan ddangos ein bod yn delio â arrays. 80 00:04:26,930 --> 00:04:31,850 Felly dyma, cromfachau argv llinynnol, rydym yn delio gydag amrywiaeth o linynnau. 81 00:04:31,850 --> 00:04:35,360 Felly argc, mae hynny'n mynd i ddangos faint o ddadleuon rydym wedi 82 00:04:35,360 --> 00:04:37,580 drosglwyddo i'r rhaglen hon. 83 00:04:37,580 --> 00:04:46,050 Ac i weld beth mae hynny'n ei olygu, gadewch i ni gau'r hyn. 84 00:04:46,050 --> 00:04:46,490 >> OK. 85 00:04:46,490 --> 00:04:50,790 Felly, hyd yn hyn, rydym wedi rhedeg bob rhaglen fel oedrannau slaes dot. 86 00:04:50,790 --> 00:04:55,250 Gallwn hefyd, ar y llinell orchymyn, yn y gorffennol pasio dadleuon, felly mae'r term, gorchymyn 87 00:04:55,250 --> 00:04:56,550 dadleuon llinell. 88 00:04:56,550 --> 00:04:59,760 Felly, y ddadl gyntaf, helo byd. 89 00:04:59,760 --> 00:05:03,350 Felly yma, yn argc tri. 90 00:05:03,350 --> 00:05:07,720 Mae'n y cyfrif ar y dadleuon ar y llinell orchymyn. 91 00:05:07,720 --> 00:05:12,840 Argc bob amser o leiaf 1, gan fod dot slaes oedran, ei hun, yn cyfrif fel un o 92 00:05:12,840 --> 00:05:14,490 y dadleuon llinell orchymyn. 93 00:05:14,490 --> 00:05:17,010 >> Yna helo yw'r cyntaf. 94 00:05:17,010 --> 00:05:20,460 Os oedrannau slaes dot yw'r 0, yna helo yw'r cyntaf, a'r byd yn y 95 00:05:20,460 --> 00:05:22,830 ymresymiad llinell orchymyn ail. 96 00:05:22,830 --> 00:05:29,490 Felly, y argv llinyn, rydym yn mynd i weld, yn cynnwys y llinynnau, dot slaes 97 00:05:29,490 --> 00:05:33,830 oedran, helo, a byd. 98 00:05:33,830 --> 00:05:38,945 Ac, ar gais Dewi Sant, rydym yn mynd i chwarae fideo gyflwyno hynny. 99 00:05:38,945 --> 00:05:42,486 100 00:05:42,486 --> 00:05:43,890 >> [VIDEO Playback] 101 00:05:43,890 --> 00:05:46,240 >> -Hyd yn hyn mewn rhaglenni rydym wedi ysgrifenedig, rydym wedi datgan 102 00:05:46,240 --> 00:05:48,500 prif prif ddi-rym yn int. 103 00:05:48,500 --> 00:05:51,170 A'r holl amser hwn, y bwlch wedi yn syml bod yn nodi bod y 104 00:05:51,170 --> 00:05:54,430 Nid yw rhaglen yn cymryd unrhyw dadleuon llinell gorchymyn. 105 00:05:54,430 --> 00:05:57,750 Mewn geiriau eraill, pan fydd defnyddiwr yn rhedeg rhaglen, gall ef neu hi ddarparu gorchymyn 106 00:05:57,750 --> 00:06:01,710 dadleuon lein drwy ysgrifennu ychwanegol geiriau neu ymadroddion ar ôl y rhaglen 107 00:06:01,710 --> 00:06:03,000 enwi wrth yr anogwr. 108 00:06:03,000 --> 00:06:06,550 >> Wel, os ydych chi eisiau i'ch rhaglen i cymryd dadleuon llinell gorchymyn, un neu 109 00:06:06,550 --> 00:06:10,540 mwy o eiriau o'r fath, mae angen inni gymryd lle gwag gyda chwpl o ddadleuon. 110 00:06:10,540 --> 00:06:12,200 Felly, gadewch i ni wneud hynny. 111 00:06:12,200 --> 00:06:15,750 Cynnwys CS50.h. 112 00:06:15,750 --> 00:06:19,360 Cynnwys io.h. safonol 113 00:06:19,360 --> 00:06:20,760 Int brif. 114 00:06:20,760 --> 00:06:26,330 Ac yn awr, yn hytrach na ddi-rym, dw i'n mynd i pennu int enw argc, a 115 00:06:26,330 --> 00:06:28,780 amrywiaeth o linynnau a elwir yn argv. 116 00:06:28,780 --> 00:06:31,820 Yn awr, argc a argv yn confensiynau yn syml. 117 00:06:31,820 --> 00:06:34,000 >> Gallem fod wedi galw y dadleuon hyn y rhan fwyaf o unrhyw beth yr ydym ei eisiau. 118 00:06:34,000 --> 00:06:37,630 Ond yr hyn sy'n bwysig yw bod argc yn yn int oherwydd, trwy ddiffiniad, mae'n 119 00:06:37,630 --> 00:06:41,360 mynd i gynnwys y cyfrif ddadl, y nifer y geiriau yn gyfanswm bod y 120 00:06:41,360 --> 00:06:43,380 defnyddiwr wedi teipio yn ei neu hi brydlon. 121 00:06:43,380 --> 00:06:47,910 argv, yn y cyfamser, fector dadl, yn mynd i mewn gwirionedd fod yn arae storio 122 00:06:47,910 --> 00:06:52,020 pob un o'r geiriau y mae'r defnyddiwr yn teipio yn ei neu hi brydlon. 123 00:06:52,020 --> 00:06:54,500 >> Gadewch i ni fynd ymlaen i wneud rhywbeth yn awr gydag un neu fwy o'r rhain 124 00:06:54,500 --> 00:06:55,660 dadleuon llinell gorchymyn. 125 00:06:55,660 --> 00:07:00,070 Yn arbennig, gadewch i ni fynd yn ei flaen ac argraffu beth bynnag air y mathau o ddefnyddwyr 126 00:07:00,070 --> 00:07:03,960 ar ôl enw'r rhaglen wrth yr anogwr. 127 00:07:03,960 --> 00:07:04,730 Braced agored. 128 00:07:04,730 --> 00:07:06,240 Braced Close. 129 00:07:06,240 --> 00:07:10,510 Cant printf s slaes a choma. 130 00:07:10,510 --> 00:07:14,550 Ac yn awr mae angen i mi ddweud wrth printf pa werth i lenwi'r i mewn i'r dalfan. 131 00:07:14,550 --> 00:07:18,600 Yr wyf am i'r gair cyntaf bod y defnyddiwr wedi teipio ar ôl enw'r rhaglen, 132 00:07:18,600 --> 00:07:23,130 ac felly yr wyf i'n mynd i bennu argv braced 1, yn agos 133 00:07:23,130 --> 00:07:24,830 parenthesis, hanner colon. 134 00:07:24,830 --> 00:07:27,290 >> Nawr, pam braced 1 ac nid braced 0? 135 00:07:27,290 --> 00:07:30,990 Wel, mae'n troi allan, eu storio yn awtomatig yn argv 0 yn mynd i fod y 136 00:07:30,990 --> 00:07:32,620 enw gwirioneddol rhaglen. 137 00:07:32,620 --> 00:07:36,180 Felly, y gair cyntaf bod y mathau o ddefnyddwyr ar ôl enw'r rhaglen yw, gan 138 00:07:36,180 --> 00:07:38,990 confensiwn, yn mynd i fod yn storio mewn argv 1. 139 00:07:38,990 --> 00:07:42,380 Gadewch i ni yn awr yn llunio a redeg y rhaglen hon. 140 00:07:42,380 --> 00:07:47,780 >> Gwneud argv 0, argv slaes dot 0. 141 00:07:47,780 --> 00:07:50,520 Ac yn awr gair fel helo. 142 00:07:50,520 --> 00:07:51,670 Enter. 143 00:07:51,670 --> 00:07:53,520 Ac mae gennym, helo. 144 00:07:53,520 --> 00:07:55,750 >> [DIWEDD VIDEO chwarae] 145 00:07:55,750 --> 00:07:57,000 >> ROB Boden: Pob hawl. 146 00:07:57,000 --> 00:07:59,380 147 00:07:59,380 --> 00:08:01,230 Caewch hynny. 148 00:08:01,230 --> 00:08:16,730 Felly, yn edrych ar y rhaglen sy'n rydym yn unig cyflwyno i ni, wel, dim ond 149 00:08:16,730 --> 00:08:24,710 i ddangos, os ydym argraffu argv 0, yn gwneud, yn awr beth ydyw, argv 0, argv slaes dot 0. 150 00:08:24,710 --> 00:08:30,440 Felly, yn ôl y disgwyl, mae'n argraffu y enw'r rhaglen, gan argv 0 yn 151 00:08:30,440 --> 00:08:32,970 bob amser yn mynd i fod yn enw'r rhaglen. 152 00:08:32,970 --> 00:08:35,640 Ond gadewch i ni wneud rhywbeth ychydig yn fwy diddorol. 153 00:08:35,640 --> 00:08:42,080 >> Felly, yn y broblem set, byddwch yn cyflwyno i swyddogaeth hon, atoi. 154 00:08:42,080 --> 00:08:44,440 Felly, beth ydym yn defnyddio atoi amdano? 155 00:08:44,440 --> 00:08:48,550 Mae hynny'n mynd i drosi llinyn i cyfanrif. 156 00:08:48,550 --> 00:08:53,280 Felly os wyf yn llwyddo yn y llinyn, un dau tri, i atoi, bydd yn trosi bod 157 00:08:53,280 --> 00:08:56,910 i'r cyfanrif, un dau tri. 158 00:08:56,910 --> 00:09:01,480 Felly, rydym yn mynd i newid y cyntaf ymresymiad llinell orchymyn i cyfanrif, 159 00:09:01,480 --> 00:09:05,690 ac yna dim ond print that gyfanrif. 160 00:09:05,690 --> 00:09:09,680 >> Felly y bôn, rydym yn fath o reimplementing getint, dim ond y 161 00:09:09,680 --> 00:09:12,350 cyfanrif ei gofnodi yn y gorchymyn lein yn hytrach nag yn y rhaglen 162 00:09:12,350 --> 00:09:14,560 rhyngweithiol. 163 00:09:14,560 --> 00:09:23,170 Felly, yna, gan wneud argv 0, gadewch i ni wneud yn y fan hon, a chau'r hynny. 164 00:09:23,170 --> 00:09:27,670 Felly, yn rhedeg argv 0, a gadewch i ni fynd i mewn i'r cyfanrif, un dau tri pedwar un dau. 165 00:09:27,670 --> 00:09:30,840 Felly, bydd yn argraffu'r cyfanrif, un dau tri pedwar un dau. 166 00:09:30,840 --> 00:09:35,500 Mae rhai cynnil i atoi bod bydd yn rhoi'r gorau i ofalu am unrhyw beth 167 00:09:35,500 --> 00:09:39,040 y tu hwnt i gymeriad rhifol ddilys, ond nid yw hynny'n bwysig. 168 00:09:39,040 --> 00:09:42,870 >> Felly, beth yn eich barn chi fydd yn digwydd os wyf yn gwneud hyn? 169 00:09:42,870 --> 00:09:45,520 170 00:09:45,520 --> 00:09:47,050 Wall. 171 00:09:47,050 --> 00:09:50,410 Felly pam hynny? 172 00:09:50,410 --> 00:09:56,060 Os ydych yn edrych yn ôl ar ein rhaglen, rydym yn trosi argv 1, mae'r ddadl gyntaf 173 00:09:56,060 --> 00:09:59,610 ar ôl enw'r rhaglen, i cyfanrif. 174 00:09:59,610 --> 00:10:03,350 Ond nid oes unrhyw ddadl pasio ar ôl enw'r rhaglen. 175 00:10:03,350 --> 00:10:08,060 Felly dyma, rydym yn gweld bod hyn yn buggy rhaglen, ers hynny, os ydym yn ceisio ei redeg 176 00:10:08,060 --> 00:10:10,530 heb unrhyw ddadleuon, bydd yn dim ond damwain. 177 00:10:10,530 --> 00:10:16,950 >> Felly batrwm cyffredin arall byddwch yn gweld yn rhywbeth fel, os argc yn llai 178 00:10:16,950 --> 00:10:21,100 na dau, gan nodi nad oedd o leiaf enw a rhaglen 179 00:10:21,100 --> 00:10:29,100 ddadl yn gyntaf, yna byddwn yn gwneud rhywbeth fel printf, nid oes digon o 180 00:10:29,100 --> 00:10:31,190 dadleuon llinell gorchymyn. 181 00:10:31,190 --> 00:10:33,170 Nid yw hyn yn ôl pob tebyg yn un da i argraffu, mae'n debyg rhywbeth, fel 182 00:10:33,170 --> 00:10:35,440 dylech nodi'r yn gyfanrif ar y llinell orchymyn. 183 00:10:35,440 --> 00:10:37,450 'N annhymerus' jyst yn dod i ben yno. 184 00:10:37,450 --> 00:10:39,600 Ac yna yn dychwelyd 1. 185 00:10:39,600 --> 00:10:44,740 Felly cofiwch fod ar ddiwedd ein rhaglen, os byddwn yn dychwelyd 0, math yna o 186 00:10:44,740 --> 00:10:47,060 yn dangos llwyddiant. 187 00:10:47,060 --> 00:10:50,940 A phrif hefyd yn awtomatig yn dychwelyd 0 os nad ydych yn ei wneud. 188 00:10:50,940 --> 00:10:55,800 >> Felly dyma, rydym yn aildiwnio 1 i ddangos nad yw hynny'n llwyddiant. 189 00:10:55,800 --> 00:11:01,000 A gallwch ddychwelyd beth bynnag yr ydych ei eisiau, yn unig, 0 yn dangos llwyddiant, a 190 00:11:01,000 --> 00:11:03,390 unrhyw beth arall yn dangos methiant. 191 00:11:03,390 --> 00:11:04,855 Felly, gadewch i ni redeg y fersiwn hwn o bethau. 192 00:11:04,855 --> 00:11:12,880 193 00:11:12,880 --> 00:11:16,600 Felly yn awr, os nad ydym yn mynd i mewn i llinell orchymyn ddadl, bydd yn dweud yn gywir 194 00:11:16,600 --> 00:11:18,290 ni, nid oes digon llinell orchymyn. 195 00:11:18,290 --> 00:11:20,610 Ddim wedi gorffen y frawddeg. 196 00:11:20,610 --> 00:11:24,950 Else, os ydym mewn gwirionedd yn pasio yn un, gall gwblhau'r rhaglen. 197 00:11:24,950 --> 00:11:27,920 Felly, mae hyn yw sut y byddech yn defnyddio argc yn er mwyn dilysu nifer y 198 00:11:27,920 --> 00:11:30,630 dadleuon llinell gorchymyn sy'n yn cael eu trosglwyddo mewn gwirionedd. 199 00:11:30,630 --> 00:11:39,360 >> Felly, gadewch i ni wneud y rhaglen hon ychydig yn fwy gymhleth, ac edrych ar yr ail 200 00:11:39,360 --> 00:11:42,180 iteriad o bethau. 201 00:11:42,180 --> 00:11:46,310 Felly nawr, rydym yn nid dim ond argraffu'r ymresymiad llinell orchymyn cyntaf. 202 00:11:46,310 --> 00:11:51,210 Yma, rydym yn bwysleisio'r o gydradd i int 0, fi yn llai na argc, fi yn ogystal â 203 00:11:51,210 --> 00:11:55,280 yn ogystal, a argv argraffu, mynegai i. 204 00:11:55,280 --> 00:11:59,300 Felly patrwm hwn, eto, mae hyn yr un fath patrwm fel o'r blaen, ac eithrio yn lle hynny 205 00:11:59,300 --> 00:12:02,600 o alw newidyn n, ein bod yn defnyddio argc. 206 00:12:02,600 --> 00:12:09,520 >> Felly, mae hyn yn bwysleisio'r dros bob mynegai yn yr arae, a phrintio pob 207 00:12:09,520 --> 00:12:11,910 elfen yn y rhesi. 208 00:12:11,910 --> 00:12:20,300 Ac felly, pan fyddwn yn rhedeg y rhaglen hon, yn dda, Doeddwn i ddim yn mynd i mewn i unrhyw linell orchymyn 209 00:12:20,300 --> 00:12:22,540 dadleuon, felly mae'n dim ond printiau enw'r rhaglen. 210 00:12:22,540 --> 00:12:26,053 Os byddaf yn mynd i mewn i criw o bethau, mae'n annhymerus ' argraffu un, pob un ar ei linell ei hun. 211 00:12:26,053 --> 00:12:31,213 212 00:12:31,213 --> 00:12:32,210 >> OK. 213 00:12:32,210 --> 00:12:34,770 Felly, gadewch i ni fynd â hyn un cam ymhellach. 214 00:12:34,770 --> 00:12:38,890 Ac yn hytrach na argraffu pob ddadl ar ei linell ei hun, gadewch i argraffu pob 215 00:12:38,890 --> 00:12:42,590 cymeriad pob ddadl ar ei linell ei hun. 216 00:12:42,590 --> 00:12:46,700 Felly cofiwch bod argv yn amrywiaeth o linynnau. 217 00:12:46,700 --> 00:12:50,960 Felly beth yw llinyn, ond amrywiaeth o gymeriadau? 218 00:12:50,960 --> 00:12:57,140 Felly mae hynny'n golygu bod argv yn wir yn amrywiaeth o amrywiaeth o gymeriadau. 219 00:12:57,140 --> 00:13:04,920 Felly, yn cymryd mantais o hynny, gadewch i ni anwybyddu hyn am y tro. 220 00:13:04,920 --> 00:13:08,190 Gadewch i ni dim ond yn ystyried y argv llinyn 0. 221 00:13:08,190 --> 00:13:14,170 >> Felly, os ydym am ddod â phob cymeriad argv 0 ar ei linell ei hun, yna yr wyf am 222 00:13:14,170 --> 00:13:19,500 i wneud y patrwm rydym yn ei ddefnyddio i, fi yw llai na hyd y rhesi, 223 00:13:19,500 --> 00:13:23,990 sydd yma, yn cael ei strlen o, dyna Nid yr hyn yr wyf am ei wneud, llinyn 224 00:13:23,990 --> 00:13:26,450 s hafal argv 0. 225 00:13:26,450 --> 00:13:30,390 Felly, fi yn llai na hyd ein array, sydd yn yr achos hwn arae 226 00:13:30,390 --> 00:13:34,410 o gymeriadau, fi yn ogystal a mwy. 227 00:13:34,410 --> 00:13:41,040 Ac felly, fel y gwelsom yr wythnos diwethaf, mae'n ddelfrydol os byddwn yn symud y tu allan strlen 228 00:13:41,040 --> 00:13:45,210 y cyflwr, bydd gan n yn ychwanegu y strlen o s bob tro y byddwn yn mynd 229 00:13:45,210 --> 00:13:47,720 drwy'r ddolen, ac mae'n ddim yn mynd i gael eu newid. 230 00:13:47,720 --> 00:13:50,230 Felly, byddwn yn ei osod yn hafal i n dros yma. 231 00:13:50,230 --> 00:13:54,260 232 00:13:54,260 --> 00:13:55,170 >> OK. 233 00:13:55,170 --> 00:14:01,320 Felly nawr, rydym yn bwysleisio'r dros pob mynegai yn y rhesi. 234 00:14:01,320 --> 00:14:05,630 Ac felly, os ydym am i argraffu pob cymeriad yn y casgliad, y cant c yn 235 00:14:05,630 --> 00:14:06,880 y faner yr ydym am ei ddefnyddio ar gyfer cymeriadau. 236 00:14:06,880 --> 00:14:10,750 237 00:14:10,750 --> 00:14:19,770 Ac yn awr a i braced yn mynd i fod y llinyn, cymeriad mynegai i, felly os yw'r 238 00:14:19,770 --> 00:14:20,970 llinyn oedd helo. 239 00:14:20,970 --> 00:14:27,530 Yna s 0 yn mynd i fod yn h, s braced Bydd 1 fydd e, ac yn y blaen. 240 00:14:27,530 --> 00:14:30,800 >> Felly, nawr rydym am i gyfuno y ddau beth. 241 00:14:30,800 --> 00:14:35,440 Rydym am i argraffu pob cymeriad bob ymresymiad llinell orchymyn. 242 00:14:35,440 --> 00:14:38,950 Felly, rydym yn mynd i gael yn nythu ar gyfer dolen. 243 00:14:38,950 --> 00:14:47,480 Ac yn gonfensiynol, y cownter cyntaf yn i, mae'r nesaf yn mynd i fod j, n 244 00:14:47,480 --> 00:14:54,450 fydd y strlen oi argv, i yn llai na n, fi yn ogystal a mwy. 245 00:14:54,450 --> 00:14:59,150 246 00:14:59,150 --> 00:15:06,870 Ac yn awr yn hytrach na argraffu i argv, felly argv braced i yn mynd i mynegai - 247 00:15:06,870 --> 00:15:14,280 mae hynny'n mynd i fod yn y llinell orchymyn i-fed dadl, argv i, j yn mynd i 248 00:15:14,280 --> 00:15:16,925 fod cymeriad jth o y ddadl i-fed. 249 00:15:16,925 --> 00:15:20,580 250 00:15:20,580 --> 00:15:24,810 'N annhymerus' cael gwared ar hyn i fyny yma nawr ers i ni ei roi i mewn i'r ddolen. 251 00:15:24,810 --> 00:15:33,900 Felly, yn cyfateb i gydradd llinyn s argv i, ac yna s braced j. 252 00:15:33,900 --> 00:15:36,980 >> Wel, nid oes angen i ni ddatgan hwn s amrywiol. 253 00:15:36,980 --> 00:15:44,530 Yn hytrach, byddwn yn unig cyfuno'r rhain dau i mewn i hyn a oedd gennym, argv i, j. 254 00:15:44,530 --> 00:15:45,780 >> SIARADWR 1: [Anghlywadwy]. 255 00:15:45,780 --> 00:15:48,850 256 00:15:48,850 --> 00:15:49,680 >> ROB Boden: galwadau da. 257 00:15:49,680 --> 00:15:52,936 Felly, mae hyn yn cael ei dorri. 258 00:15:52,936 --> 00:15:55,510 Os wyf mewn gwirionedd yn rhedeg ei, byddem wedi sylweddoli hyn. 259 00:15:55,510 --> 00:16:01,210 Felly y cownter Rwy'n poeni am yn y arbennig i 260 00:16:01,210 --> 00:16:05,410 ddolen yn j, y iterator. 261 00:16:05,410 --> 00:16:08,560 Felly byddech wedi rhedeg i mewn i faterion, yn ôl pob tebyg dolen ddiddiwedd, os ydym 262 00:16:08,560 --> 00:16:09,540 nid oedd wedi sefydlog hynny. 263 00:16:09,540 --> 00:16:12,220 Dyna pam rydym hefyd yn siarad am debugging heddiw. 264 00:16:12,220 --> 00:16:13,120 >> OK. 265 00:16:13,120 --> 00:16:15,240 Felly, gadewch i ni redeg y rhaglen hon. 266 00:16:15,240 --> 00:16:21,200 A gadewch i ni mewn gwirionedd yn ychwanegu printf ar wahân i'r dde yma a fydd yn unig argraffu 267 00:16:21,200 --> 00:16:27,480 llinell arall, gan fod hyn yn golygu pan fyddwn yn rhedeg y rhaglen, bydd yna wag 268 00:16:27,480 --> 00:16:31,830 linell rhwng pob cymeriad pob ymresymiad llinell orchymyn. 269 00:16:31,830 --> 00:16:33,448 Wel, byddwn yn gweld beth mae hynny'n ei olygu. 270 00:16:33,448 --> 00:16:37,310 271 00:16:37,310 --> 00:16:37,790 OOP. 272 00:16:37,790 --> 00:16:39,870 Got rhai bug. 273 00:16:39,870 --> 00:16:42,860 Gwall ymhlyg datgan swyddogaeth llyfrgell strlen. 274 00:16:42,860 --> 00:16:51,630 >> Felly, mynd yn ôl i mewn i'n rhaglen, yr wyf yn anghofio hash cynnwys string.h. 275 00:16:51,630 --> 00:16:54,240 276 00:16:54,240 --> 00:16:57,730 Felly string.h yn mynd i fod y ffeil flaen sy'n datgan 277 00:16:57,730 --> 00:16:58,980 y swyddogaeth strlen. 278 00:16:58,980 --> 00:17:04,650 279 00:17:04,650 --> 00:17:06,060 OK, mae'n llunio. 280 00:17:06,060 --> 00:17:09,109 Yn awr, gadewch i ni redeg. 281 00:17:09,109 --> 00:17:10,930 Felly dim ond hynny. 282 00:17:10,930 --> 00:17:17,790 Mae'n mynd i argraffu ein enw'r rhaglen, helo byd. 283 00:17:17,790 --> 00:17:23,510 Mae'n mynd i argraffu pob peth, pob un cymeriad, ar ei linell ei hun. 284 00:17:23,510 --> 00:17:24,540 OK. 285 00:17:24,540 --> 00:17:30,625 >> Felly, gadewch i ni mewn gwirionedd yn cymryd hyn un cam ymhellach. 286 00:17:30,625 --> 00:17:34,050 287 00:17:34,050 --> 00:17:39,700 Ac yn hytrach na defnyddio string.h, gadewch i ni feddwl am sut y byddwn yn gweithredu ein hunain 288 00:17:39,700 --> 00:17:41,420 swyddogaeth strlen. 289 00:17:41,420 --> 00:17:45,600 Felly, byddaf yn rhoi ar unwaith llofnod swyddogaeth. 290 00:17:45,600 --> 00:17:52,900 Felly, gadewch i ni alw i mewn my_strlen, ac mae'n mynd i gymryd llinyn fel dadl, 291 00:17:52,900 --> 00:17:57,220 ac yr ydym yn disgwyl i ddychwelyd y hyd y llinyn. 292 00:17:57,220 --> 00:18:03,430 Felly, ble y boi? 293 00:18:03,430 --> 00:18:04,990 Ie. 294 00:18:04,990 --> 00:18:06,740 OK. 295 00:18:06,740 --> 00:18:12,900 Felly cofiwch oddi wrth y sleid yn gynharach y Roedd hefyd gan yr wythnos diwethaf, bod 296 00:18:12,900 --> 00:18:18,890 amrywiaeth o gymeriadau, yn dda, llinyn, felly gadewch i ni yn dweud hyn yw ein s llinyn. 297 00:18:18,890 --> 00:18:29,870 Felly, os yw ef yw'r llinyn, helo, yna, H-E-L-L-O, er cof, sy'n mynd i 298 00:18:29,870 --> 00:18:35,610 fod, ac yna slaes hwn 0 cymeriad. 299 00:18:35,610 --> 00:18:39,170 >> Felly, sut rydym yn cael hyd s? 300 00:18:39,170 --> 00:18:43,190 Wel, y gamp yn chwilio am hyn adlach 0 cymeriad, null hwn 301 00:18:43,190 --> 00:18:44,380 terminator. 302 00:18:44,380 --> 00:18:50,270 Felly mae'r algorithm yw mynd i fod yn rhywbeth fel ychydig o 303 00:18:50,270 --> 00:18:51,510 digon o gymeriadau hynny - 304 00:18:51,510 --> 00:18:56,180 gadewch i gael ei llaw hwn yn cynrychioli rhai cownter, gadewch i ni yn galw hyn hyd int. 305 00:18:56,180 --> 00:19:00,060 Felly, gan ddechrau o dros yma, rydym yn mynd i ailadrodd dros ein llinyn. 306 00:19:00,060 --> 00:19:04,100 >> Felly, y nod cyntaf, mae'n H, ac nid yw'n ôl slaes 0, felly 307 00:19:04,100 --> 00:19:05,170 hyd yn 1. 308 00:19:05,170 --> 00:19:08,050 Ailadrodd i gymeriad nesaf, E, ac nid yw'n slaes 0. 309 00:19:08,050 --> 00:19:09,630 Hyd yn 2. 310 00:19:09,630 --> 00:19:10,960 L, 3. 311 00:19:10,960 --> 00:19:11,850 L, 4. 312 00:19:11,850 --> 00:19:13,050 O, 5. 313 00:19:13,050 --> 00:19:16,690 Ac yn olaf, rydym yn cyrraedd slaes 0, ac felly mae hynny'n golygu, yn dda, 314 00:19:16,690 --> 00:19:17,780 llinyn hwn i ben. 315 00:19:17,780 --> 00:19:20,130 Felly, gadewch i ni yn dychwelyd 5. 316 00:19:20,130 --> 00:19:33,630 >> Felly, mewn gwirionedd yn gweithredu, yn gyntaf, fy hyd n hafal i 0, fy llaw dde. 317 00:19:33,630 --> 00:19:36,088 Ac rydym yn mynd i ailadrodd - 318 00:19:36,088 --> 00:19:38,000 >> SIARADWR 1: [Anghlywadwy] 319 00:19:38,000 --> 00:19:38,640 >> ROB Boden: O, saethu. 320 00:19:38,640 --> 00:19:39,870 Galwadau da. 321 00:19:39,870 --> 00:19:42,680 Boom. 322 00:19:42,680 --> 00:19:44,140 Felly, n hyd yn dychwelyd 0. 323 00:19:44,140 --> 00:19:46,910 324 00:19:46,910 --> 00:19:58,310 Felly nawr, nid tra s hyd yn gyfartal ac yna, slaes 0. 325 00:19:58,310 --> 00:20:04,660 Felly cofiwch, slaes hwn 0, mae'n chymeriad gwirioneddol, ac mae'n nodi 326 00:20:04,660 --> 00:20:05,820 diwedd y llinyn. 327 00:20:05,820 --> 00:20:09,850 Yn union fel, hefyd, slaes n yn gymeriad go iawn. 328 00:20:09,850 --> 00:20:14,040 Slaes 0 yn mynd i ddangos diwedd ein llinyn. 329 00:20:14,040 --> 00:20:15,414 Dydw i ddim eisiau rhoi hynny yno. 330 00:20:15,414 --> 00:20:19,190 331 00:20:19,190 --> 00:20:25,620 Ac er nad s mynegeio gan hyd yn hafal i'r terminator null, yna 332 00:20:25,620 --> 00:20:27,130 rydym yn jyst yn mynd i gynyddiad hyd. 333 00:20:27,130 --> 00:20:29,860 334 00:20:29,860 --> 00:20:34,880 Felly, yna, ar ddiwedd ein rhaglen, hyd yn y pen draw yn mynd i 335 00:20:34,880 --> 00:20:37,610 fod yn 5 yn yr achos hwn. 336 00:20:37,610 --> 00:20:39,210 A byddwn yn unig yn dychwelyd hyd. 337 00:20:39,210 --> 00:20:42,570 338 00:20:42,570 --> 00:20:43,530 >> OK. 339 00:20:43,530 --> 00:20:48,290 Felly nawr i lawr yma, nid wyf yn wneud my_strlen. 340 00:20:48,290 --> 00:20:50,700 Gadewch i ni llunio i wneud yn siŵr popeth yn rhedeg yn esmwyth. 341 00:20:50,700 --> 00:20:55,820 342 00:20:55,820 --> 00:20:58,210 A oedd yr wyf yn ei wneud mewn 2? 343 00:20:58,210 --> 00:21:00,565 Neu oedd bod 1? 344 00:21:00,565 --> 00:21:01,940 Dylai hynny wneud. 345 00:21:01,940 --> 00:21:02,690 Mae pob hawl. 346 00:21:02,690 --> 00:21:08,490 Felly, mae hyn yn argv 2. 347 00:21:08,490 --> 00:21:11,585 Gweithio fel y rhagwelwyd, er oedd bod y un yr wyf yn gwneud hynny i mewn? 348 00:21:11,585 --> 00:21:15,060 349 00:21:15,060 --> 00:21:15,550 Ie. 350 00:21:15,550 --> 00:21:16,760 OK. 351 00:21:16,760 --> 00:21:21,820 Nid yw'r fersiwn o bethau oedd gan y llinell newydd printf ar ôl, ond mae'n 352 00:21:21,820 --> 00:21:22,910 nid yw'n gwneud unrhyw wahaniaeth. 353 00:21:22,910 --> 00:21:23,300 OK. 354 00:21:23,300 --> 00:21:25,780 Felly, yn gweithio yn ôl y disgwyl. 355 00:21:25,780 --> 00:21:34,750 >> Nawr gallwn hyd yn oed gyfuno hyn un cam bellach, lle rhybudd yma, yn dda, 356 00:21:34,750 --> 00:21:38,920 yn gyntaf, rydym yn gydio yn y strlen o argv i, ac yna rydym yn bwysleisio'r dros 357 00:21:38,920 --> 00:21:41,450 pob cymeriad yn y llinyn. 358 00:21:41,450 --> 00:21:47,480 Felly, yn hytrach na gwneud hynny, beth os ydym yn dim ond cyfuno rhesymeg hwn o aros 359 00:21:47,480 --> 00:21:50,740 nes i ni gyrraedd slaes 0 hawl i mewn i hyn ar gyfer dolen? 360 00:21:50,740 --> 00:21:53,740 361 00:21:53,740 --> 00:22:07,490 Felly ailadrodd tra fi argv, j yn slaes yn hafal 0. 362 00:22:07,490 --> 00:22:10,680 Felly, gadewch i ni redeg gyntaf. 363 00:22:10,680 --> 00:22:19,838 364 00:22:19,838 --> 00:22:21,180 >> Mae pob hawl. 365 00:22:21,180 --> 00:22:27,655 Felly dyma, y ​​cyflwr hwn yn ei ddweud - 366 00:22:27,655 --> 00:22:38,090 367 00:22:38,090 --> 00:22:40,060 gadewch i ni glirio'r hynny. 368 00:22:40,060 --> 00:22:49,140 Felly nawr, gadael i hyn fydd ein argv. 369 00:22:49,140 --> 00:22:55,290 Felly, pan Fi jyst yn rhedeg y rhaglen honno o'r blaen, argv llu o linynnau. 370 00:22:55,290 --> 00:23:03,100 Ac felly, os wyf yn ei redeg gyda argv slaes dot 2, helo byd, yna bydd y argv 371 00:23:03,100 --> 00:23:07,650 ei hun yn hyd 3, ar gyfer argv sero, helo, a byd. 372 00:23:07,650 --> 00:23:11,700 373 00:23:11,700 --> 00:23:19,660 >> Ac y tu mewn o bob un o'r mynegeion hyn, ei hun amrywiaeth, lle byddwch hyn yn 374 00:23:19,660 --> 00:23:23,780 dot, bydd hyn yn slaes, nid wyf yn gwybod os mai dyna'r cyfeiriad cywir, yr wyf yn 375 00:23:23,780 --> 00:23:25,680 nid ydynt yn credu ei fod yn. 376 00:23:25,680 --> 00:23:30,110 A-R-V dash, mae angen mwy o le. 377 00:23:30,110 --> 00:23:32,570 Gadewch i dorri i mewn i amrywiaeth hwn. 378 00:23:32,570 --> 00:23:38,230 Dash 0, ac yna slaes 0 A-R-V. 379 00:23:38,230 --> 00:23:43,160 Ac yna mewn anhrefn yn helo. 380 00:23:43,160 --> 00:23:45,910 Gadewch i ni ddweud, H-E slaes 0. 381 00:23:45,910 --> 00:23:51,130 Ac yn olaf, W-O slaes 0. 382 00:23:51,130 --> 00:23:59,730 >> Felly mae'r algorithm yr ydym newydd ei ysgrifennu, y nythu ar gyfer dolenni, beth maen nhw'n 383 00:23:59,730 --> 00:24:07,321 ei wneud yw, yn gyntaf yn cael y cownter i ac yna j. 384 00:24:07,321 --> 00:24:15,206 Byddai hyn yn haws gyda cod ar y sgrin, Gadewch i ni fynd yn ôl at hyn. 385 00:24:15,206 --> 00:24:17,476 OK. 386 00:24:17,476 --> 00:24:24,600 Felly, yn sylwi bod fi yw'r iterator sy'n bwysleisio'r dros bob gorchymyn 387 00:24:24,600 --> 00:24:25,610 ymresymiad llinell. 388 00:24:25,610 --> 00:24:28,870 Ac j yw'r bwysleisio'r iterator dros bob cymeriad yn y 389 00:24:28,870 --> 00:24:30,410 ymresymiad llinell orchymyn. 390 00:24:30,410 --> 00:24:46,755 Felly, beth mae hyn yn printf dyfnaf yn ei wneud yw, yr ydym wedi printf argv 0 0, printf 391 00:24:46,755 --> 00:24:58,680 argv 0 1, argv printf 0 2, 0 3, 0 4, 0 5, 0 6, ond yn awr, argv 0 7 yn mynd i 392 00:24:58,680 --> 00:25:00,670 slaes cyfartal 0. 393 00:25:00,670 --> 00:25:05,730 >> Felly, yna rydym yn gadael hynny ar gyfer dolen, ac yn awr fi ailadrodd i 1. 394 00:25:05,730 --> 00:25:10,910 Ac yn awr rydym yn mynd i argraffu argv 1 0, argv 1 1 - 395 00:25:10,910 --> 00:25:17,040 yn dda, yn awr, ers i mi dorri helo byr, argv 1 2 unwaith eto yn mynd i fod 396 00:25:17,040 --> 00:25:18,170 slaes 0. 397 00:25:18,170 --> 00:25:25,050 Ac felly, ychwanegiad i ac yn parhau, a yn y blaen, nes i ni argraffu pob un 398 00:25:25,050 --> 00:25:28,580 byd, ac mae'r rheini'n dair llinell orchymyn dadleuon, a byddwn yn gadael y tu allan i 399 00:25:28,580 --> 00:25:31,670 y ddolen pellaf, a gorffen ein rhaglen. 400 00:25:31,670 --> 00:25:38,390 401 00:25:38,390 --> 00:25:39,640 OK. 402 00:25:39,640 --> 00:25:43,903 403 00:25:43,903 --> 00:25:46,795 >> Felly, gadewch i ni ddod yn ôl yma. 404 00:25:46,795 --> 00:25:49,670 405 00:25:49,670 --> 00:25:52,370 Felly, byddwch yn cael rhywfaint o gyfarwydd â dadleuon llinell gorchymyn ar y 406 00:25:52,370 --> 00:25:54,460 broblem benodol a osodwyd. 407 00:25:54,460 --> 00:25:56,630 >> Yn awr, debugging. 408 00:25:56,630 --> 00:26:01,680 Felly, mae'n debyg eich bod eisoes wedi gorfod gwneud rhywfaint o debugging gyda'ch blaenorol 409 00:26:01,680 --> 00:26:03,120 broblem a osodwyd. 410 00:26:03,120 --> 00:26:08,420 Ac un ffordd hawdd iawn o debugging, yn gyntaf, gadewch i ni edrych ar y rhaglen bygi. 411 00:26:08,420 --> 00:26:20,710 412 00:26:20,710 --> 00:26:23,830 Wel, cerdded drwy'r rhaglen hon, rydym yn mynd i ofyn i'r defnyddiwr am 413 00:26:23,830 --> 00:26:29,350 cyfanrif, chrafangia y cyfanrif, ac yna, fympwyol, mae gennym dolen tra bod 414 00:26:29,350 --> 00:26:32,280 yn unig yn mynd i lleihau a i hyd nes ei fod yn hafal i 10. 415 00:26:32,280 --> 00:26:35,820 Gadewch i ni gymryd yn ganiataol fy mod yn mynd i mewn cyfanrif fwy na 10. 416 00:26:35,820 --> 00:26:38,700 Felly, lleihau a fi nes ei fod yn hafal i 10. 417 00:26:38,700 --> 00:26:42,630 >> Ac yna mae gennym dolen tra bod un arall , er i nid yw'n gyfartal 0, rydym yn 418 00:26:42,630 --> 00:26:44,540 mynd i lleihau a ff erbyn 3. 419 00:26:44,540 --> 00:26:49,790 Felly, os ydych yn gweld y bwriad y byg yma, mae'n y bydd hyn yn lleihau a fi i 420 00:26:49,790 --> 00:26:57,010 fod yn 10, ac yna mae hyn dolen tra bydd lleihau a ff o 10, i 7, i 4, i 1, 421 00:26:57,010 --> 00:27:02,880 i negyddol 2, i negyddol 5, ac yn y blaen, i anfeidredd negyddol, ers i fi yn 422 00:27:02,880 --> 00:27:05,920 byth yn hafal 0. 423 00:27:05,920 --> 00:27:08,610 Ac yna ar ddiwedd y rhaglen hon, mae gennym y swyddogaeth foo sy'n 424 00:27:08,610 --> 00:27:12,130 mynd ar brint allan bod fi. 425 00:27:12,130 --> 00:27:16,520 >> Felly, mae hyn yn rhaglen fer a ddibwys, ac y byg yn amlwg, 426 00:27:16,520 --> 00:27:18,790 yn enwedig ar ôl i mi yn unig ddywedodd beth oedd y byg. 427 00:27:18,790 --> 00:27:24,840 Ond mae'r bwriad yma yn, wel, gallai hyn mewn gwirionedd yn edrych fel rhai o'ch 428 00:27:24,840 --> 00:27:30,040 atebion o barus o'r olaf broblem a osodwyd, ac efallai oes gennych 429 00:27:30,040 --> 00:27:32,800 rhywfaint o dolen ddiddiwedd yn eich rhaglen, ac nad oes gennych syniad 430 00:27:32,800 --> 00:27:34,100 beth sy'n ei achosi. 431 00:27:34,100 --> 00:27:38,690 Felly dechneg debugging ddefnyddiol iawn ydy at jyst ychwanegu printfs 432 00:27:38,690 --> 00:27:40,180 ar hyd a lled eich cod. 433 00:27:40,180 --> 00:27:49,200 >> Felly dyma fi eisiau printf y tu allan i dolen tra gyntaf. 434 00:27:49,200 --> 00:27:53,155 Ac yma rwyf eisiau printf, ac fe Fi jyst argraffu i. 435 00:27:53,155 --> 00:27:55,670 436 00:27:55,670 --> 00:27:58,330 'N annhymerus' hyd yn oed wneud gyntaf tra ddolen, i. 437 00:27:58,330 --> 00:28:05,130 438 00:28:05,130 --> 00:28:09,040 Y tu allan, yn ail tra ddolen. 439 00:28:09,040 --> 00:28:12,170 Unwaith eto, argraffwch y tu mewn o yma, mae'r gwerth i. 440 00:28:12,170 --> 00:28:16,270 441 00:28:16,270 --> 00:28:17,520 A gadewch i ni redeg y. 442 00:28:17,520 --> 00:28:22,620 443 00:28:22,620 --> 00:28:24,800 >> Dadfygio slaes Felly dot. 444 00:28:24,800 --> 00:28:25,610 Rhowch yn gyfanrif. 445 00:28:25,610 --> 00:28:28,150 Gadewch i ni wneud 13. 446 00:28:28,150 --> 00:28:28,760 A ffyniant. 447 00:28:28,760 --> 00:28:33,300 Rydym yn gweld ein bod yn dolennu ddiddiwedd tu mewn i'r ail ddolen tra. 448 00:28:33,300 --> 00:28:36,305 Felly, yn awr rydym yn gwybod beth yw'r nam yn. 449 00:28:36,305 --> 00:28:39,610 450 00:28:39,610 --> 00:28:45,610 Ond debugging printf yn gwbl wych, ond unwaith y bydd eich rhaglenni yn cael 451 00:28:45,610 --> 00:28:50,560 hirach a mwy cymhleth, mae yna atebion mwy soffistigedig i 452 00:28:50,560 --> 00:28:51,705 cael pethau'n gweithio. 453 00:28:51,705 --> 00:28:52,955 Felly, gadewch i ni gael gwared ar yr holl printfs hyn. 454 00:28:52,955 --> 00:29:06,242 455 00:29:06,242 --> 00:29:08,896 A gadewch i ni wneud yn siwr nad i ddim torri unrhyw beth. 456 00:29:08,896 --> 00:29:09,850 OK. 457 00:29:09,850 --> 00:29:14,180 >> Felly, y rhaglen rydym yn mynd yn cael ei alw i gyflwyno 458 00:29:14,180 --> 00:29:16,715 GDB, ar gyfer GNU dadfygiwr. 459 00:29:16,715 --> 00:29:21,892 460 00:29:21,892 --> 00:29:27,510 Wel, mewn gwirionedd, gadewch i ni gael gwared ar debug ar gyfer ail, ac yn gwneud debug eto. 461 00:29:27,510 --> 00:29:31,420 462 00:29:31,420 --> 00:29:34,440 Wel, mewn gwirionedd yn gyntaf, gwers dda mewn dadleuon llinell gorchymyn. 463 00:29:34,440 --> 00:29:37,780 Sylwch fod y gorchymyn chlang sy'n llunio popeth yn cael ei basio 464 00:29:37,780 --> 00:29:41,300 ar y llinell orchymyn, mae'r rhain yn dadleuon llinell gorchymyn. 465 00:29:41,300 --> 00:29:46,250 Felly, yn union sut yr ydych yn mynd i gael ei ddefnyddio dadleuon llinell gorchymyn, wrth i ni 466 00:29:46,250 --> 00:29:51,500 o'r blaen, ac wrth i chi bydd yn PSET 2, dyna sut chlang yn eu defnyddio. 467 00:29:51,500 --> 00:30:00,070 >> Felly, yn sylwi bod y faner yn gyntaf, llinell doriad ggdb3, beth mae hynny'n ei ddweud yw, chlang, 468 00:30:00,070 --> 00:30:03,790 dylech lunio y ffeil gyda'r bwriad y byddwn yn y pen draw 469 00:30:03,790 --> 00:30:05,380 Mae angen i debug iddo. 470 00:30:05,380 --> 00:30:13,840 Felly, cyn belled ag y byddwch yn cael y faner, Yna, gallwn GDB debug. 471 00:30:13,840 --> 00:30:17,380 A bydd yn agor y GNU dadfygiwr. 472 00:30:17,380 --> 00:30:22,920 >> Felly, mae llawer o orchmynion bod angen i chi ddod i arfer â. 473 00:30:22,920 --> 00:30:27,100 Chi'n un cyntaf y bydd yn ôl pob tebyg ar unwaith ei angen yw Run. 474 00:30:27,100 --> 00:30:28,200 Felly, yr hyn a Run mynd i'w wneud? 475 00:30:28,200 --> 00:30:30,910 Mae'n mynd i ddechrau ein rhaglen. 476 00:30:30,910 --> 00:30:36,180 Felly rhedeg, y rhaglen yn dechrau, y rhaglen gofyn i ni am cyfanrif, 13. 477 00:30:36,180 --> 00:30:39,170 Ac yna mae'n dolennu anfeidrol fel disgwyl, ac eithrio fy mod yn symud y 478 00:30:39,170 --> 00:30:40,500 printfs, felly nid ydym hyd yn oed yn gweld hynny. 479 00:30:40,500 --> 00:30:43,320 480 00:30:43,320 --> 00:30:44,600 Dod ohonynt fel arfer. 481 00:30:44,600 --> 00:30:45,850 Oh. 482 00:30:45,850 --> 00:30:48,570 483 00:30:48,570 --> 00:30:53,640 Mae'n bosibl ei fod wedi'i lapio yr holl ffordd o gwmpas, yn ôl i - ac anwybyddu hynny. 484 00:30:53,640 --> 00:30:55,170 Gymryd yn ganiataol na oedd yn gadael fel arfer. 485 00:30:55,170 --> 00:30:59,500 486 00:30:59,500 --> 00:31:03,370 Mae yna ateb cymhleth i hynny. 487 00:31:03,370 --> 00:31:07,890 >> Felly nawr, nid yw hynny'n ddefnyddiol iawn. 488 00:31:07,890 --> 00:31:11,480 Felly, dim ond rhedeg ein rhaglen tu mewn Nid yw debugger hwn yn ein helpu mewn unrhyw 489 00:31:11,480 --> 00:31:15,610 ffordd, gan y gallai yr ydym newydd ei wneud dot slaes debug o'r tu allan GDB. 490 00:31:15,610 --> 00:31:21,250 Felly mae'r un gorchymyn sy'n wnewch chi helpu yn ôl pob tebyg - 491 00:31:21,250 --> 00:31:22,970 a byddaf yn rhoi'r gorau iddi hwn. 492 00:31:22,970 --> 00:31:25,850 Control-d neu roi'r gorau iddi, gwaith. 493 00:31:25,850 --> 00:31:29,550 Felly, gadewch i ni agor i fyny eto. 494 00:31:29,550 --> 00:31:31,130 >> Gorchymyn arall y mae'n debyg y byddwch am unwaith i 495 00:31:31,130 --> 00:31:33,600 ddod i arfer â yw Egwyl. 496 00:31:33,600 --> 00:31:37,120 Felly, byddwn yn torri ar y prif am y tro, ac yna byddaf yn esbonio hynny. 497 00:31:37,120 --> 00:31:41,010 498 00:31:41,010 --> 00:31:46,370 Wel, dyma ni yn gweld ein gosod torbwynt yn y llinell hon yn debug.c. 499 00:31:46,370 --> 00:31:50,160 Felly, beth yw ystyr toriad yw bod pan fyddaf yn deipio rhedeg, mae'r rhaglen yn mynd i 500 00:31:50,160 --> 00:31:53,560 barhau i redeg hyd nes Yr wyf yn taro torbwynt. 501 00:31:53,560 --> 00:31:59,390 Felly, pan fyddaf yn taro rhedeg, y rhaglen yn dechrau, ac yna mae'n torri cyn gynted ag y 502 00:31:59,390 --> 00:32:01,940 mynd i mewn i'r brif swyddogaeth. 503 00:32:01,940 --> 00:32:06,930 Egwyl prif yn mynd i fod yn rhywbeth chi 'n bert yn gyffredin yn ei wneud. 504 00:32:06,930 --> 00:32:11,340 >> Ac yn awr, er mwyn eich cyflwyno i rywfaint yn fwy gorchmynion. 505 00:32:11,340 --> 00:32:14,330 Sylwch yma, ei fod yn dweud ein dorrodd yn llinell 11, sydd yn 506 00:32:14,330 --> 00:32:16,230 printf, nodwch yn gyfanrif. 507 00:32:16,230 --> 00:32:21,260 Felly, y gorchymyn nesaf yn mynd i fod sut rydym yn mynd i'r llinell nesaf o god. 508 00:32:21,260 --> 00:32:24,810 Mae hyn yn mynd i'n galluogi i gamu trwy ein llinell rhaglen drwy linell. 509 00:32:24,810 --> 00:32:26,260 Felly nesaf. 510 00:32:26,260 --> 00:32:29,820 >> Nawr llinell 12, rydym yn mynd i gael y cyfanrif. 511 00:32:29,820 --> 00:32:30,450 Nesaf. 512 00:32:30,450 --> 00:32:34,290 Ac os ydych yn unig daro Chofnoda eto, mae'n annhymerus ' ail-wneud y peth olaf a wnaeth i chi. 513 00:32:34,290 --> 00:32:36,480 Felly nid oes angen i mi deipio nesaf bob tro. 514 00:32:36,480 --> 00:32:40,100 Felly gofnodi cyfanrif, 13. 515 00:32:40,100 --> 00:32:46,940 Felly nawr, llinell 14, tra fi yn fwy na 10, a byddaf yn ei wneud nesaf. 516 00:32:46,940 --> 00:32:48,685 Ac rydym yn gweld ein bod yn mynd i lleihau a i. 517 00:32:48,685 --> 00:32:50,210 Felly, rydym yn mynd i lleihau a fi eto. 518 00:32:50,210 --> 00:32:53,620 >> Felly nawr, defnyddiol arall gorchymyn yn Argraffu. 519 00:32:53,620 --> 00:32:55,750 Felly Print yn mynd i argraffu gwerth y newidyn. 520 00:32:55,750 --> 00:32:57,825 Gadewch i ni ennyn y gwerth oi amrywiol. 521 00:32:57,825 --> 00:32:58,705 Gadewch i argraffu i. 522 00:32:58,705 --> 00:33:00,910 Mae'n mynd i ddweud i 11. 523 00:33:00,910 --> 00:33:03,330 Nawr rydym Nesaf eto tra i yn fwy na 10. 524 00:33:03,330 --> 00:33:05,590 Felly, fi yn dal i fod yn fwy na 10, gan ei fod yn 11. 525 00:33:05,590 --> 00:33:06,920 i minws minws. 526 00:33:06,920 --> 00:33:08,250 Gadewch i argraffu i eto. 527 00:33:08,250 --> 00:33:10,950 Yn ôl y disgwyl, mae'n 10. 528 00:33:10,950 --> 00:33:12,510 >> Felly yn awr, nesaf. 529 00:33:12,510 --> 00:33:16,250 Mae'n mynd yn ôl i'r cyflwr, i yn fwy na 10, ond fi yn awr yn 10, felly 530 00:33:16,250 --> 00:33:20,040 nid yw'n fwy na 10, felly rydym yn disgwyl iddo i syrthio allan o'r ddolen tra. 531 00:33:20,040 --> 00:33:22,220 Ac yn awr rydym yn is na llinell o god. 532 00:33:22,220 --> 00:33:28,750 Ac gorchymyn arall, Rhestr, yn unig yw mynd i arddangos blaenorol ac nesaf 533 00:33:28,750 --> 00:33:31,240 cwpl o linellau o god, yn rhag ofn i chi golli eich hun. 534 00:33:31,240 --> 00:33:35,420 Felly, rydym yn unig wedi gadael y dolen tra, ac yn awr rydym wedi mynd hon 535 00:33:35,420 --> 00:33:37,080 tra bod dolen, llinell 18. 536 00:33:37,080 --> 00:33:39,860 Felly, er i nid yw'n gyfartal 0. 537 00:33:39,860 --> 00:33:46,570 Ac, yn nesaf, fi hafal i minws 3, ac rydym yn annhymerus ' rhybudd, bydd hyn yn unig yn cadw i fynd. 538 00:33:46,570 --> 00:33:48,270 A gallwn argraffu i. 539 00:33:48,270 --> 00:33:49,990 >> Math o Mae gan bob gorchymyn llwybrau byr. 540 00:33:49,990 --> 00:33:51,720 Felly p yn fyr ar gyfer Print. 541 00:33:51,720 --> 00:33:53,400 Felly, gallwn p i. 542 00:33:53,400 --> 00:33:57,550 Dim ond yn cadw cynnal n, neu barhau i wneud Next. 543 00:33:57,550 --> 00:33:58,340 Argraffu i eto. 544 00:33:58,340 --> 00:34:00,380 Byddwch yn gweld nawr mae'n negyddol 167. 545 00:34:00,380 --> 00:34:06,030 Felly, bydd hyn yn mynd ymlaen am byth, ond nid wir am byth, ers i chi jyst yn gweld, mae'n 546 00:34:06,030 --> 00:34:09,330 mewn gwirionedd yn dod i ben ar ryw bwynt. 547 00:34:09,330 --> 00:34:15,699 >> Fel bod Dechrau GDB. 548 00:34:15,699 --> 00:34:19,504 Ond gadewch i ni wneud un peth arall yn GDB. 549 00:34:19,504 --> 00:34:20,754 Uh, dadfygio. 550 00:34:20,754 --> 00:34:23,540 551 00:34:23,540 --> 00:34:28,534 Felly, yn yr achos arbennig hwn, mae'r ddigwyddodd dolen ddiddiwedd i fod tu mewn 552 00:34:28,534 --> 00:34:30,050 y prif swyddogaeth. 553 00:34:30,050 --> 00:34:35,779 Ac ar hyn o bryd, dim ond yn derbyn bod fy mod yn mynd i symud y dolen ddiddiwedd i 554 00:34:35,779 --> 00:34:37,029 y swyddogaeth foo. 555 00:34:37,029 --> 00:34:40,679 556 00:34:40,679 --> 00:34:43,730 Dim ond cofiwch, ar ddiwedd y rhaglen, yn dda, roedd hyn yn wreiddiol 557 00:34:43,730 --> 00:34:46,210 galw foo, sef ychydig yn fynd i'r wasg i. 558 00:34:46,210 --> 00:34:51,880 Ond yn awr yr ydym yn galw foo, sy'n mynd i lleihau a fi nes ei fod yn 0, ac 559 00:34:51,880 --> 00:34:54,548 Yna, print that amrywiol. 560 00:34:54,548 --> 00:34:55,469 OK. 561 00:34:55,469 --> 00:34:57,970 Arbed hynny. 562 00:34:57,970 --> 00:35:00,175 Gwneud dadfygio. 563 00:35:00,175 --> 00:35:03,310 Ac yn awr, debug gdb. 564 00:35:03,310 --> 00:35:04,090 OK. 565 00:35:04,090 --> 00:35:10,580 >> Felly, os Fi jyst Rhedeg yna nid wyf ddim yn mynd i yn gallu camu mewn gwirionedd drwy fy 566 00:35:10,580 --> 00:35:11,730 linell wrth linell rhaglen. 567 00:35:11,730 --> 00:35:19,820 Felly, gadewch i ni dorri yn y prif, ac yna teipiwch rhedeg. 568 00:35:19,820 --> 00:35:28,160 Felly fynd drwy hyn, printf, rhowch cyfanrif, yn cael y cyfanrif, 13. 569 00:35:28,160 --> 00:35:34,180 570 00:35:34,180 --> 00:35:37,490 Felly, rydym yn mynd i gadw decrementing nes i yn fwy na 10. 571 00:35:37,490 --> 00:35:42,840 Yna, rydym yn mynd i ddisgyn drwy'r tra bod dolen, ac yn cyrraedd y llinell - 572 00:35:42,840 --> 00:35:44,364 gadewch i ni agor i fyny mewn ffenestr ar wahân. 573 00:35:44,364 --> 00:35:48,720 574 00:35:48,720 --> 00:35:53,300 Felly, rydym ostwng o hyd nes i mi oedd bellach yn fwy na 10, ac yna rydym yn 575 00:35:53,300 --> 00:35:55,700 a elwir yn swyddogaeth, foo. 576 00:35:55,700 --> 00:36:01,340 >> Felly, yr hyn a ddigwyddodd cyn gynted ag y taro foo swyddogaeth, yn dda, yr wyf yn galw foo, a 577 00:36:01,340 --> 00:36:04,030 yna nid oes bellach cefais rheolaeth dros GDB. 578 00:36:04,030 --> 00:36:10,230 Felly, cyn gynted ag y taro Nesaf yn y llinell hon, pethau barhaodd tan hyn yn digwydd, 579 00:36:10,230 --> 00:36:12,400 lle mae'r rhaglen wedi gadael pryd - 580 00:36:12,400 --> 00:36:14,450 cymryd yn ganiataol nad oedd yn bodoli yn y pen draw. 581 00:36:14,450 --> 00:36:16,390 Gwelsoch ei oedi am ychydig er. 582 00:36:16,390 --> 00:36:22,040 Felly pam wnes i yn colli rheolaeth dros y rhaglen ar y pwynt hwnnw? 583 00:36:22,040 --> 00:36:27,540 Wel, pan fyddaf yn teipio nesaf, sy'n mynd i llinell llythrennol nesaf o god sy'n 584 00:36:27,540 --> 00:36:28,850 , yn gweithredu. 585 00:36:28,850 --> 00:36:35,950 Felly, ar ôl llinell 21, y llinell nesaf o god a fydd yn gweithredu yn llinell 22, 586 00:36:35,950 --> 00:36:38,520 sydd, cyffrous o brif. 587 00:36:38,520 --> 00:36:43,810 Felly, nid wyf am i jyst yn mynd i'r llinell nesaf o god. 588 00:36:43,810 --> 00:36:48,170 Dw i eisiau mynd i mewn i'r swyddogaeth, foo, ac yna hefyd yn camu drwy 589 00:36:48,170 --> 00:36:49,830 y llinellau hynny o god. 590 00:36:49,830 --> 00:36:53,726 >> Felly, ar gyfer hynny, mae gennym ddewis arall. 591 00:36:53,726 --> 00:36:56,770 Gadewch i ni roi'r gorau iddi hynny eto. 592 00:36:56,770 --> 00:36:58,020 Egwyl prif. 593 00:36:58,020 --> 00:37:00,520 594 00:37:00,520 --> 00:37:06,370 Uh, 1, nesaf, nesaf, 13, nesaf, nesaf, nesaf, yn ofalus, 595 00:37:06,370 --> 00:37:09,820 cyn i ni gyrraedd foo llinell. 596 00:37:09,820 --> 00:37:10,520 OK. 597 00:37:10,520 --> 00:37:13,700 >> Felly nawr, rydym yn yn y llinell 21, lle rydym yn galw foo. 598 00:37:13,700 --> 00:37:17,100 Nid ydym am i deipio nesaf, ers hynny Bydd ffoniwch y foo swyddogaeth, a 599 00:37:17,100 --> 00:37:18,710 mynd i'r llinell nesaf o god. 600 00:37:18,710 --> 00:37:20,840 Yr hyn yr ydym am ei ddefnyddio yw Cam. 601 00:37:20,840 --> 00:37:25,690 Felly, mae gwahaniaeth rhwng y Cam a Next, lle mae Cam camau i mewn i'r 602 00:37:25,690 --> 00:37:28,190 weithredu, a Next mynd dros y swyddogaeth. 603 00:37:28,190 --> 00:37:32,830 'I jyst yn executes y cyfan o'r y swyddogaeth ac yn cadw i fynd. 604 00:37:32,830 --> 00:37:37,210 >> Felly Cam yn mynd i ddod â ni i mewn i'r swyddogaeth, foo. 605 00:37:37,210 --> 00:37:41,160 Ac rydym yn gweld yma, yn awr, rydym yn ôl yn hwn dolen er bod hynny yn, mewn theori, 606 00:37:41,160 --> 00:37:44,190 mynd i barhau am byth. 607 00:37:44,190 --> 00:37:50,420 Ac os byddwch yn taro Cam, pan nad yw hyd yn oed swyddogaeth i alw, yna mae'n 608 00:37:50,420 --> 00:37:51,720 union Nesaf. 609 00:37:51,720 --> 00:37:55,320 Felly, dim ond pan fyddwch chi yn y llinell sy'n yn galw swyddogaeth sy'n Cam 610 00:37:55,320 --> 00:37:56,970 yn mynd i wahanol Nesaf. 611 00:37:56,970 --> 00:37:57,930 Felly, bydd Cam dod â ni yma. 612 00:37:57,930 --> 00:38:02,100 Gam, cam, cam, cam, cam, cam, a byddwn ni dim ond dolen ddiddiwedd am byth. 613 00:38:02,100 --> 00:38:06,810 >> Felly efallai y byddwch yn dod i arfer â hynny fel eich ffordd o adnabod dolenni anfeidrol, yn 614 00:38:06,810 --> 00:38:08,960 dim ond cynnal y fysell Enter i gweld ble rydych yn mynd yn sownd. 615 00:38:08,960 --> 00:38:11,610 616 00:38:11,610 --> 00:38:14,780 Mae yna ffyrdd gwell i wneud hynny, ond ar hyn o bryd, mae hynny'n berffaith ddigonol. 617 00:38:14,780 --> 00:38:17,967 Ac yn arddull, i gydymffurfio â Style 50, dylwn fod wedi gwneud hyn. 618 00:38:17,967 --> 00:38:21,550 619 00:38:21,550 --> 00:38:24,030 OK. 620 00:38:24,030 --> 00:38:28,400 >> Felly, un gorchymyn ddiwethaf i gyflwyno. 621 00:38:28,400 --> 00:38:30,810 Wel, gadewch i ni gdb debug i mewn 622 00:38:30,810 --> 00:38:35,580 Felly, yn hytrach na thorri yn y prif, os wyf yn gwybod y swyddogaeth foo hefyd yn 623 00:38:35,580 --> 00:38:39,230 broblem, yna gallwn gael yn unig Dywedodd, yn torri ar foo, yn lle hynny. 624 00:38:39,230 --> 00:38:42,310 Lets 'ddeud torraf yn yn brif a foo. 625 00:38:42,310 --> 00:38:45,390 Felly, gallwch osod cymaint o torbwyntiau ag y dymunwch. 626 00:38:45,390 --> 00:38:49,230 Pan fyddaf yn teipio rhedeg, mae'n mynd i stopio yn y - 627 00:38:49,230 --> 00:38:52,180 www, gadewch i ni ail-grynhoi, gan Newidiais pethau. 628 00:38:52,180 --> 00:38:55,950 Byddwch yn gweld y llinell hon, Rhybudd, ffynhonnell ffeil yn fwy diweddar na gweithredadwy. 629 00:38:55,950 --> 00:38:59,680 Felly mae hynny'n golygu bod Fi jyst yn mynd i mewn yma ac wedi newid hyn i gydymffurfio â Style 630 00:38:59,680 --> 00:39:03,100 50, ond doeddwn i ddim yn ail-grynhoi y rhaglen. 631 00:39:03,100 --> 00:39:04,870 Felly GDB yn fy ngwneud yn ymwybodol o hynny. 632 00:39:04,870 --> 00:39:10,130 'N annhymerus' rhoi'r gorau iddi, yn gwneud debug eto, taro dadfygio gdb. 633 00:39:10,130 --> 00:39:10,700 OK. 634 00:39:10,700 --> 00:39:12,800 >> Felly nawr, yn ôl at yr hyn yr wyf yn ei wneud. 635 00:39:12,800 --> 00:39:15,720 Break prif, foo egwyl. 636 00:39:15,720 --> 00:39:20,680 Nawr, os wyf yn rhedeg y rhaglen, felly mae'n mynd i barhau hyd nes yn taro 637 00:39:20,680 --> 00:39:21,320 torbwynt. 638 00:39:21,320 --> 00:39:24,680 Mae hynny'n torbwynt yn digwydd i fydd yr un gyntaf yn brif. 639 00:39:24,680 --> 00:39:28,630 Yn awr, yn hytrach na gwneud nesaf, nesaf, nesaf, nesaf, nesaf, hyd nes i mi daro foo, yr wyf yn 640 00:39:28,630 --> 00:39:35,230 Gall deipio barhau, a fydd yn parhau hyd nes y byddwch yn cyrraedd y torbwynt nesaf. 641 00:39:35,230 --> 00:39:37,200 Rhaid i mi fynd i mewn i'r cyfanrif gyntaf. 642 00:39:37,200 --> 00:39:40,570 Parhau yn parhau hyd nes i mi gyrraedd y torbwynt nesaf, sef bod 643 00:39:40,570 --> 00:39:43,320 swyddogaeth foo. 644 00:39:43,320 --> 00:39:50,130 >> Felly bydd Run rhedeg tan byddwch yn taro torbwynt, ond dim ond deipio redeg pan 645 00:39:50,130 --> 00:39:54,060 eich bod yn dechrau ar y rhaglen, ac yna, o hynny ymlaen, mae'n parhau. 646 00:39:54,060 --> 00:40:01,950 Os byddaf yn unig oedd yn torri brif a Yna, yn rhedeg, bydd yn torri ar 647 00:40:01,950 --> 00:40:03,670 prif, ac yna parhau. 648 00:40:03,670 --> 00:40:10,050 Gan nad oes gennyf bwynt egwyl foo, mynd i mewn i'r cyfanrif, yna nawr rwy'n 649 00:40:10,050 --> 00:40:11,380 ddim yn mynd i dorri ar foo. 650 00:40:11,380 --> 00:40:16,318 Dim ond ei fod yn mynd i 'n Anfeidraidd dolen tan hynny. 651 00:40:16,318 --> 00:40:17,568 OK. 652 00:40:17,568 --> 00:40:19,500 653 00:40:19,500 --> 00:40:24,420 >> Felly dyna Cyflwyniad i GDB. 654 00:40:24,420 --> 00:40:27,790 Dylech ddechrau ei ddefnyddio yn eich setiau problem. 655 00:40:27,790 --> 00:40:30,550 Gall fod yn ddefnyddiol iawn i nodi bugs. 656 00:40:30,550 --> 00:40:35,280 Os ydych mewn gwirionedd dim ond, llinell wrth linell, ewch drwy eich cod, a chymharu hyn sy'n 657 00:40:35,280 --> 00:40:39,740 mewn gwirionedd yn digwydd gyda hyn yr ydych yn ei ddisgwyl i ddigwydd, yna mae'n eithaf 658 00:40:39,740 --> 00:40:41,060 anodd i'w golli eich chwilod. 659 00:40:41,060 --> 00:40:45,280 660 00:40:45,280 --> 00:40:46,530 OK. 661 00:40:46,530 --> 00:40:48,310 662 00:40:48,310 --> 00:40:54,040 >> Felly, yr wythnos diwethaf David magu hon pethau cryptograffeg gyfrinach-allweddol ar gyfer y 663 00:40:54,040 --> 00:40:59,350 tro cyntaf, lle nad ydym am cyfrineiriau yn unig yn cael ei storio ar ein 664 00:40:59,350 --> 00:41:03,210 cyfrifiadur mewn rhai ffeil testun plaen, lle gall rhywun ddod draw a dim ond 665 00:41:03,210 --> 00:41:04,660 agor i fyny ac yn eu darllen. 666 00:41:04,660 --> 00:41:07,530 Yn ddelfrydol, byddent yn cael eu hamgryptio mewn rhyw ffordd. 667 00:41:07,530 --> 00:41:13,340 Ac yn Problem Set 2, byddwch yn delio gydag un dull o amgryptio, 668 00:41:13,340 --> 00:41:16,520 neu, yn dda, ddau ddull, ond nid ydynt yn mor fawr. 669 00:41:16,520 --> 00:41:20,050 Os byddwch yn gwneud y rhifyn haciwr, rydych yn hefyd yn mynd i fod yn delio â 670 00:41:20,050 --> 00:41:22,150 decrypting rhai pethau. 671 00:41:22,150 --> 00:41:29,770 >> Felly, y mater yn awr yw, yn dda, hyd yn oed os mae gennym y amgryptio cryfaf 672 00:41:29,770 --> 00:41:34,830 algorithm yn y byd, os byddwch yn dewis cyfrinair arbennig o wael, yna mae'n 673 00:41:34,830 --> 00:41:37,720 Ni fydd yn eich helpu yn fawr iawn, gan fod pobl bydd yn dal yn gallu chyfrif 'ii maes. 674 00:41:37,720 --> 00:41:41,530 Hyd yn oed os gweld y llinyn amgryptio a mae'n edrych fel llanast o garbage 675 00:41:41,530 --> 00:41:44,760 sy'n golygu dim iddyn nhw, os ydynt yn dal i fod yn jyst angen i roi cynnig ar ychydig o cyfrineiriau 676 00:41:44,760 --> 00:41:50,560 at chyfrif 'ii maes, yna rydych nid ydynt yn ddiogel iawn. 677 00:41:50,560 --> 00:41:55,890 Felly, gwylio fideo sy'n yn gwneud y pwynt hwnnw. 678 00:41:55,890 --> 00:41:59,587 679 00:41:59,587 --> 00:42:00,970 >> [VIDEO Playback] 680 00:42:00,970 --> 00:42:02,100 >> -Helmed, rydych fiend. 681 00:42:02,100 --> 00:42:03,370 Beth sy'n digwydd? 682 00:42:03,370 --> 00:42:05,170 Beth ydych chi'n ei wneud i fy merch? 683 00:42:05,170 --> 00:42:09,910 >> -Caniatáu i mi gyflwyno'r gwych llawfeddyg plastig ifanc, Dr Phillip 684 00:42:09,910 --> 00:42:13,730 Schlotkin, y trwyn mwyaf dyn swydd yn y cyfan 685 00:42:13,730 --> 00:42:16,080 bydysawd, a Beverly Hills. 686 00:42:16,080 --> 00:42:17,210 >> -Eich Uchelder. 687 00:42:17,210 --> 00:42:18,070 >> -Trwyn swydd? 688 00:42:18,070 --> 00:42:18,670 Nid wyf yn deall. 689 00:42:18,670 --> 00:42:20,090 Mae hi eisoes wedi cael swydd trwyn. 690 00:42:20,090 --> 00:42:21,910 Roedd yn un ar bymtheg melys yn bresennol. 691 00:42:21,910 --> 00:42:22,140 >> -Dim. 692 00:42:22,140 --> 00:42:23,690 Dyw hi ddim yn beth yw eich barn. 693 00:42:23,690 --> 00:42:25,420 Mae'n llawer, llawer gwaeth. 694 00:42:25,420 --> 00:42:30,300 Os na fyddwch yn rhoi cyfuniad i mi y darian aer, Dr Schlotkin yn 695 00:42:30,300 --> 00:42:34,226 rhoi eich merch yn ôl ei hen trwyn. 696 00:42:34,226 --> 00:42:35,476 >> -Dim. 697 00:42:35,476 --> 00:42:38,712 698 00:42:38,712 --> 00:42:40,516 Ble wnaethoch chi gael y? 699 00:42:40,516 --> 00:42:41,440 >> -Mae pob hawl. 700 00:42:41,440 --> 00:42:42,180 Byddaf yn dweud. 701 00:42:42,180 --> 00:42:43,381 Byddaf yn dweud. 702 00:42:43,381 --> 00:42:44,263 Na, dad. 703 00:42:44,263 --> 00:42:45,590 Na, rhaid i chi beidio. 704 00:42:45,590 --> 00:42:46,860 >> -You're dde, fy annwyl. 705 00:42:46,860 --> 00:42:48,450 'N annhymerus' yn colli eich trwyn newydd. 706 00:42:48,450 --> 00:42:52,090 Ond ni fyddaf yn dweud wrth y cyfuniad wrtho, waeth beth. 707 00:42:52,090 --> 00:42:53,680 >> -Iawn yn dda. 708 00:42:53,680 --> 00:42:55,685 Dr Schlotkin, gwneud eich gwaethaf. 709 00:42:55,685 --> 00:42:56,914 >> -Fy pleser. 710 00:42:56,914 --> 00:43:00,690 >> [OFFER CAEL miniogi] 711 00:43:00,690 --> 00:43:01,910 >> -Dim. 712 00:43:01,910 --> 00:43:02,520 Aros. 713 00:43:02,520 --> 00:43:03,836 Aros. 714 00:43:03,836 --> 00:43:05,300 Byddaf yn dweud. 715 00:43:05,300 --> 00:43:06,880 Byddaf yn dweud. 716 00:43:06,880 --> 00:43:09,130 >> -I yn gwybod y byddai'n gweithio. 717 00:43:09,130 --> 00:43:09,900 Mae pob hawl. 718 00:43:09,900 --> 00:43:12,850 Yn ei roi i mi. 719 00:43:12,850 --> 00:43:16,918 >> -Mae'r cyfuniad yn un. 720 00:43:16,918 --> 00:43:17,406 >> -Un. 721 00:43:17,406 --> 00:43:18,382 >> -Un. 722 00:43:18,382 --> 00:43:19,358 >> -Dau. 723 00:43:19,358 --> 00:43:19,846 >> -Dau. 724 00:43:19,846 --> 00:43:20,822 >> -Dau. 725 00:43:20,822 --> 00:43:21,310 >> -Tri. 726 00:43:21,310 --> 00:43:21,798 >> -Tri. 727 00:43:21,798 --> 00:43:22,774 >> -Tri. 728 00:43:22,774 --> 00:43:23,262 >> -Four. 729 00:43:23,262 --> 00:43:23,750 >> -Four. 730 00:43:23,750 --> 00:43:26,150 >> -Four. 731 00:43:26,150 --> 00:43:27,010 >> -Five. 732 00:43:27,010 --> 00:43:27,670 >> -Five. 733 00:43:27,670 --> 00:43:29,010 >> -Five. 734 00:43:29,010 --> 00:43:34,770 >> -Felly mae'r cyfuniad yn un, dau, tri, pedwar, pump. 735 00:43:34,770 --> 00:43:37,460 Dyna y cyfuniad stupidest Yr wyf yn clywed erioed yn fy mywyd. 736 00:43:37,460 --> 00:43:39,710 Dyna'r math o beth idiot yn ei gael ar ei bagiau. 737 00:43:39,710 --> 00:43:42,000 >> -Diolch i chi, eich Uchelder. 738 00:43:42,000 --> 00:43:43,530 >> -Beth wnaethoch chi ei wneud? 739 00:43:43,530 --> 00:43:44,490 >> -I troi oddi ar y wal. 740 00:43:44,490 --> 00:43:45,420 >> -Na na wnaethoch. 741 00:43:45,420 --> 00:43:45,840 Rydych yn troi oddi ar y ffilm gyfan. 742 00:43:45,840 --> 00:43:46,930 >> -I fod wedi pwyso'r botwm anghywir. 743 00:43:46,930 --> 00:43:48,265 >> -Wel, roi yn ôl ar. 744 00:43:48,265 --> 00:43:49,110 Rhowch y ffilm yn ôl ar. 745 00:43:49,110 --> 00:43:49,510 >> -Oes, syr. 746 00:43:49,510 --> 00:43:49,917 Oes, syr. 747 00:43:49,917 --> 00:43:50,324 >> -Gadewch i ni fynd, Arnold. 748 00:43:50,324 --> 00:43:51,140 Dewch, Gretchen. 749 00:43:51,140 --> 00:43:53,060 Wrth gwrs, eich bod yn gwybod 'n annhymerus' yn dal i rhaid i bil i chi am hyn. 750 00:43:53,060 --> 00:43:53,440 >> [DIWEDD VIDEO chwarae] 751 00:43:53,440 --> 00:43:54,690 >> ROB Boden: Pob hawl. 752 00:43:54,690 --> 00:43:59,690 753 00:43:59,690 --> 00:44:08,430 Rydym Felly nawr bod eisoes yn siarad am diogelwch mewn rhai ffyrdd, 'n glws 754 00:44:08,430 --> 00:44:16,050 ychydig poster ffilm, felly yn ddiweddar diwrnod, mae'r materion hyn gyda'r NSA 755 00:44:16,050 --> 00:44:17,300 monitro popeth. 756 00:44:17,300 --> 00:44:21,840 757 00:44:21,840 --> 00:44:26,930 Gall fod yn anodd i deimlo fel chi gael rhyw fath o breifatrwydd yn y 758 00:44:26,930 --> 00:44:34,540 byd ar-lein, er na allwn ddweud chi y rhan fwyaf o'r manylion PRISM. 759 00:44:34,540 --> 00:44:42,130 Felly, symud y tu hwnt PRISM, nid ydym yn mynd i fod yn siarad am hynny, sydd bellach yn 760 00:44:42,130 --> 00:44:44,030 yn meddwl am eich gliniadur. 761 00:44:44,030 --> 00:44:48,360 Felly i fyny yma, yr wyf am newid at fy nghyfrif gwirioneddol, 762 00:44:48,360 --> 00:44:50,370 gyda fy pengwin bach. 763 00:44:50,370 --> 00:44:57,310 Felly mae gen i set cyfrinair, a bod cyfrinair yn beth bynnag rwyf am iddo fod. 764 00:44:57,310 --> 00:45:02,430 >> Ond cofiwch fod yr hyn yr wyf i'n logio gyda, felly mewngofnodiad hwn 765 00:45:02,430 --> 00:45:04,850 brydlon, rhywfaint rhaglen. 766 00:45:04,850 --> 00:45:07,910 Mae'n rhywfaint o raglen a oedd yn ysgrifennwyd gan ryw berson. 767 00:45:07,910 --> 00:45:13,250 Ac felly, y person hwnnw, os ydynt yn yn arbennig maleisus, gallent 768 00:45:13,250 --> 00:45:17,780 wedi dweud, iawn, felly os y cyfrinair fy mod yn mynd i mewn yn hafal i fy 769 00:45:17,780 --> 00:45:22,800 cyfrinair gwirioneddol, neu ei fod yn gyfartal i ryw cyfrinair arbennig - 770 00:45:22,800 --> 00:45:25,550 Mae David yn wych neu rywbeth - 771 00:45:25,550 --> 00:45:27,190 yna gadewch nhw i mewn 772 00:45:27,190 --> 00:45:33,760 Felly gallai rhaglennydd maleisus wedi mynediad i bob un o'ch Macs, neu 773 00:45:33,760 --> 00:45:36,150 Ffenestri, neu unrhyw beth. 774 00:45:36,150 --> 00:45:41,980 >> Felly nid yw bod llawer o bryder, ers hynny, Yr wyf yn golygu, y rhaglen mewngofnodi yn 775 00:45:41,980 --> 00:45:48,720 sy'n cael ei gludo gyda OS X, cannoedd neu filoedd o bobl 776 00:45:48,720 --> 00:45:50,020 adolygu cod hwn. 777 00:45:50,020 --> 00:45:55,330 Ac felly, os, yn eich cod yn rhywle, i chi ddweud os llinyn hwn yn hafal hafal 778 00:45:55,330 --> 00:45:58,860 Mae David yn anhygoel, mewngofnodi, yna rhywun yn mynd i fod, fel, aros. 779 00:45:58,860 --> 00:45:59,800 Nid yw hyn yn iawn. 780 00:45:59,800 --> 00:46:01,790 Ni ddylai hyn fod yma. 781 00:46:01,790 --> 00:46:06,650 Felly dyna un ffordd yr ydym yn cael pethau i fod yn fath o ddiogel. 782 00:46:06,650 --> 00:46:10,300 >> Ond meddyliwch am raglenni, hyd yn oed eich bod yn ysgrifennu. 783 00:46:10,300 --> 00:46:13,000 Dewch i ddweud eich ysgrifennodd y rhaglen mewngofnodi. 784 00:46:13,000 --> 00:46:20,440 Felly, y rhaglen mewngofnodi eich bod wedi ysgrifennu, felly mae'n amlwg, yr ydych yn dda 785 00:46:20,440 --> 00:46:21,210 rhaglennydd. 786 00:46:21,210 --> 00:46:25,610 Nad ydych yn mynd i roi unrhyw maleisus os x yn hafal hafal i David yn anhygoel 787 00:46:25,610 --> 00:46:27,860 i mewn i'ch cod. 788 00:46:27,860 --> 00:46:31,930 Ond rhaglen hon, yr hyn yr ydych yn ei wneud defnyddio i lunio'r rhaglen hon? 789 00:46:31,930 --> 00:46:34,180 Rhywbeth fel chlang. 790 00:46:34,180 --> 00:46:38,460 Felly beth os bydd y person a ddigwyddodd i ysgrifennu chlang arbennig Mewn Casys yn chlang 791 00:46:38,460 --> 00:46:44,310 rhywbeth fel, os wyf yn llunio'r rhaglen mewngofnodi, yna rhowch y cod hwn 792 00:46:44,310 --> 00:46:49,720 yn y rhaglen mewngofnodi, sy'n dweud, os x yn hafal hafal i David yn awesome? 793 00:46:49,720 --> 00:46:59,890 Felly, nid yn eithaf eto, ond mae gennym yr un gyhoeddi yma, lle mae chlang, yn dda, 794 00:46:59,890 --> 00:47:03,790 miloedd, os nad degau o filoedd o bobl, wedi edrych ar chlang, wedi 795 00:47:03,790 --> 00:47:07,160 edrych ar ei linellau o god, a dywedodd, iawn, does dim byd drwg yma. 796 00:47:07,160 --> 00:47:10,680 Yn amlwg, nid oes unrhyw un yn ei wneud unrhyw beth hwn maleisus. 797 00:47:10,680 --> 00:47:15,780 >> Ond yr hyn a chlang ei hun, fel, beth os byddaf yn llunio chlang? 798 00:47:15,780 --> 00:47:20,900 Beth os oes gennyf ryw compiler sy'n llunio chlang sy'n mewnosod i mewn i chlang 799 00:47:20,900 --> 00:47:25,610 hon darnia arbennig sy'n dweud, iawn, pan fyddaf yn llunio chlang, yna bydd y 800 00:47:25,610 --> 00:47:31,290 gweithredadwy dylwn gael edrych yn arbennig tu mewn i'r rhaglen mewngofnodi a mewnosoder 801 00:47:31,290 --> 00:47:34,230 cyfrinair hwn, yn hafal i gydradd Dave yn awesome? 802 00:47:34,230 --> 00:47:37,990 Felly, cofiwch fod eich casglwr ei hun Mae angen i gael eu llunio ar ryw bwynt. 803 00:47:37,990 --> 00:47:42,810 Felly, os yw'r hyn ydych yn dewis i lunio chlang gyda, ei hun yn faleisus, yna rydych 804 00:47:42,810 --> 00:47:45,580 gellid eu sgriwio y cyfan ffordd i lawr y lein. 805 00:47:45,580 --> 00:47:49,630 >> Felly dyma, rydym wedi Ken Thompson a Dennis Ritchie. 806 00:47:49,630 --> 00:47:53,780 Felly mae hwn yn llun eiconig. 807 00:47:53,780 --> 00:47:55,470 Dennis Ritchie ar y dde. 808 00:47:55,470 --> 00:47:58,740 Mae'n bwysig - 809 00:47:58,740 --> 00:48:03,640 'n bert lawer Ysgrifennodd C. Felly gallwch diolch iddo am y dosbarth hwn. 810 00:48:03,640 --> 00:48:04,840 Ken Thomson sydd ar y chwith. 811 00:48:04,840 --> 00:48:07,780 Mae'r ddau ohonynt yn y bôn ysgrifennodd UNIX. 812 00:48:07,780 --> 00:48:10,140 Wel, roedden nhw'n gyfranwyr pwysig yn UNIX. 813 00:48:10,140 --> 00:48:11,310 Roedd rhai eraill. 814 00:48:11,310 --> 00:48:16,240 Felly Ken Thompson, ar ryw adeg, yn ennill y Wobr Turing. 815 00:48:16,240 --> 00:48:20,860 A gwobr Turing, yr wyf wedi clywed bob amser yn mae'n cyfeirio at y modd hwn, 'i' y 816 00:48:20,860 --> 00:48:23,100 Gwobr Nobel gwyddoniaeth gyfrifiadurol. 817 00:48:23,100 --> 00:48:27,500 >> Felly, ar y Wobr Turing, mae'n rhaid iddo rhoi ei araith dderbyn. 818 00:48:27,500 --> 00:48:31,790 Ac mae'n rhoi hwn araith enwog iawn yn awr, a elwir yn Myfyrdodau ar Trusting 819 00:48:31,790 --> 00:48:35,620 Ymddiriedolaeth, yr ydym wedi cysylltu atynt ar y wefan y cwrs. 820 00:48:35,620 --> 00:48:41,670 Ac yn yr araith hon, meddai, yn iawn, felly ysgrifennais UNIX, ac yn awr yr holl 821 00:48:41,670 --> 00:48:43,320 chi bobl yn defnyddio UNIX. 822 00:48:43,320 --> 00:48:46,960 Nawr, cofiwch heddiw bod Linux yn yn ddisgynnydd uniongyrchol o UNIX. 823 00:48:46,960 --> 00:48:50,140 OS X yn uniongyrchol yn defnyddio UNIX. 824 00:48:50,140 --> 00:48:53,810 Nid yw Windows yn gwneud hynny llawer, ond mae llawer o syniadau eu cymryd o UNIX. 825 00:48:53,810 --> 00:48:59,220 >> Felly, mae'n mynd i fyny i'r llwyfan ac yn dweud, iawn, ysgrifennais UNIX. 826 00:48:59,220 --> 00:49:03,940 A dim ond er mwyn i chi guys yn gwybod, rwy'n gallu mewngofnodi i mewn i bob 827 00:49:03,940 --> 00:49:05,590 un unigol ar eich cyfrifiaduron. 828 00:49:05,590 --> 00:49:14,280 Ers i mi yn rhoi un o'r rhain yn arbennig os oes x hafal hafal i Ken Thomson yn anhygoel, 829 00:49:14,280 --> 00:49:16,350 yna rwyf i'n cael mewngofnodi. 830 00:49:16,350 --> 00:49:18,370 Felly mae pobl yn debyg, yn dda, how'd chi wneud hynny? 831 00:49:18,370 --> 00:49:21,090 Rydym yn edrych ar y rhaglen mewngofnodi a dim byd yno. 832 00:49:21,090 --> 00:49:24,700 Mae'n debyg, yn dda, yr wyf yn newid y casglwr i logio i mewn i'r rhaglen mewngofnodi 833 00:49:24,700 --> 00:49:30,490 fel bod y rhaglen mewngofnodi yn awr bydd yn rhaid i bod x yn hafal hafal i Ken Thompson 834 00:49:30,490 --> 00:49:31,700 yn awesome. 835 00:49:31,700 --> 00:49:33,120 >> Ac maent yn dweud, yn dda, nid yw hynny'n wir. 836 00:49:33,120 --> 00:49:35,740 Rydym yn edrych ar y casglwr, ac mae'r Nid oes gan compiler unrhyw linellau 837 00:49:35,740 --> 00:49:36,400 cod fel 'na. 838 00:49:36,400 --> 00:49:40,540 Mae'n debyg, iawn, ond beth yr ydych yn llunio'r compiler â nhw? 839 00:49:40,540 --> 00:49:44,810 Ac maent yn meddwl, ac mae'n, fel, yn dda, Fi yw'r un a roddodd y compiler chi 840 00:49:44,810 --> 00:49:50,580 rydych yn ei ddefnyddio i lunio'r compiler, felly eich bod yn llunio casglwr, bod 841 00:49:50,580 --> 00:49:56,390 ei hun yn faleisus, a bydd yn torri'r rhaglen mewngofnodi. 842 00:49:56,390 --> 00:49:59,360 Felly y bôn, ar y pwynt hwnnw, mae unrhyw ffordd y gallech edrych ar y ffynhonnell 843 00:49:59,360 --> 00:50:02,450 cod y rhaglen mewngofnodi i weld beth sydd o'i le. 844 00:50:02,450 --> 00:50:04,220 Nad oeddech yn gallu hyd yn oed yn edrych yn y ffynhonnell cod y casglwr 845 00:50:04,220 --> 00:50:06,790 i weld beth sydd o'i le. 846 00:50:06,790 --> 00:50:11,940 >> Byddai angen i chi edrych ar y peiriant cod, mae'r deuaidd gwirioneddol y 847 00:50:11,940 --> 00:50:16,760 compiler llunio i weld, aros, mae'r rhain yn Ni ddylai llinellau o god fod yma. 848 00:50:16,760 --> 00:50:22,130 Ond cymerodd Ken Thompson yn un cam ymhellach a dweud, yn dda, mae yna 849 00:50:22,130 --> 00:50:25,980 y rhaglenni arbennig sydd mewn gwirionedd yn helpu i ddarllen y binary o raglenni, 850 00:50:25,980 --> 00:50:29,340 ac felly os bydd rhywun yn defnyddio y rhaglen i darllen y binary, byddent yn gweld y rhain 851 00:50:29,340 --> 00:50:30,490 linellau o god. 852 00:50:30,490 --> 00:50:34,020 Roedd haddasu rhaglenni hynny i ddweud, pob iawn, os ydych yn edrych ar y 853 00:50:34,020 --> 00:50:38,460 compiler, nid ydynt yn dangos hyn yn arbennig set o deuaidd. 854 00:50:38,460 --> 00:50:42,830 >> Felly mae angen i chi gymryd y cam ymhellach ac yn y bôn, a allai gael 855 00:50:42,830 --> 00:50:46,210 lefelau lluosog a gymerwyd o indirection, ac ar ryw adeg, nid oes unrhyw un mewn gwirionedd 856 00:50:46,210 --> 00:50:47,990 mynd i gael eu gwirio. 857 00:50:47,990 --> 00:50:52,590 Felly, y moesol y stori yw, rydych yn ddim yn mynd i gael ei ysgrifennu 858 00:50:52,590 --> 00:50:54,340 Chlang yn y dosbarth hwn. 859 00:50:54,340 --> 00:50:57,020 Rydych yn mynd i gael ei ddefnyddio dringo Chlang llawer yn y dosbarth hwn. 860 00:50:57,020 --> 00:51:00,490 Ar gyfer pob eich bod yn gwybod, chlang yn maleisus rhaglen sy'n cael ei sabotaging pob 861 00:51:00,490 --> 00:51:03,520 un rhaglen yr ydych wedi llunio erioed. 862 00:51:03,520 --> 00:51:08,206 Ac i adael i chi ar y ominous iawn nodi, gweld chi ar ddydd Mercher. 863 00:51:08,206 --> 00:51:10,030 >> [Cymeradwyaeth] 864 00:51:10,030 --> 00:51:12,935 >> SIARADWR 2: Yn y CS50 nesaf. 865 00:51:12,935 --> 00:51:14,580 >> SIARADWR 3: Onid ydych yn meiddio dweud hynny. 866 00:51:14,580 --> 00:51:15,930 Gallwch chi wneud hyn. 867 00:51:15,930 --> 00:51:19,440 Rydych chi wedi gwneud hyn o'r blaen, gallwch wneud hyn heddiw, gallwch wneud hyn yfory. 868 00:51:19,440 --> 00:51:20,930 Rydych chi wedi bod yn gwneud hyn ers blynyddoedd. 869 00:51:20,930 --> 00:51:22,790 Dim ond yn mynd i fyny yno ac yn gwneud hyn. 870 00:51:22,790 --> 00:51:24,310 Gallwch chi wneud hyn. 871 00:51:24,310 --> 00:51:26,102 >> [CHWARAE CERDDORIAETH]