1 00:00:00,000 --> 00:00:11,200 2 00:00:11,200 --> 00:00:12,580 >> DAVID Malan: pob hawl, croeso yn ôl. 3 00:00:12,580 --> 00:00:13,290 Mae hyn yn CS50. 4 00:00:13,290 --> 00:00:15,130 Mae hyn yn dechrau'r wythnos saith. 5 00:00:15,130 --> 00:00:18,890 Felly, mae wedi bod yn dipyn, felly yr wyf yn meddwl y byddem fynd ar daith corwynt o ble yr ydym 6 00:00:18,890 --> 00:00:20,760 gadael i ffwrdd a lle rydym yn awr yn mynd. 7 00:00:20,760 --> 00:00:23,310 >> Felly, y peth yma allai fod achosi rhywfaint o ing ar y dechrau. 8 00:00:23,310 --> 00:00:27,680 Ond gobeithio, eich bod yn dechrau acclimate i beth mae hyn yn dynodi yma - 9 00:00:27,680 --> 00:00:32,670 seren cynrychioli pwyntydd, sy'n dim ond yr hyn, mewn termau mwy lleygwr? 10 00:00:32,670 --> 00:00:33,400 Felly, ei fod yn gyfeiriad. 11 00:00:33,400 --> 00:00:35,490 >> Felly, ei fod yn y cyfeiriad rhywbeth yn y cof. 12 00:00:35,490 --> 00:00:38,260 Ac rydym yn dechrau croen yn ôl yr haenau ychydig o wythnosau yn ôl, pethau fel 13 00:00:38,260 --> 00:00:41,800 GetString ac eraill swyddogaethau o'r fath holl amser hwn wedi cael eu dychwelyd 14 00:00:41,800 --> 00:00:46,010 cyfeiriadau o bethau mewn cof, fel y cyfeiriad y cymeriad cyntaf yn 15 00:00:46,010 --> 00:00:46,990 rhywfaint o ddilyniant. 16 00:00:46,990 --> 00:00:50,360 >> Felly, rydym hefyd yn cyflwyno valgrind, sy'n byddwch yn dechrau ei ddefnyddio am y broblem hon 17 00:00:50,360 --> 00:00:53,380 gosod, yn enwedig ar gyfer y nesaf problem a osodwyd yn ogystal. 18 00:00:53,380 --> 00:00:54,980 A valgrind gwneud beth i ni? 19 00:00:54,980 --> 00:00:57,520 20 00:00:57,520 --> 00:01:01,020 Mae'n gwirio am ddiferiadau cof, ac mae'n hefyd yn gwirio gyfer cam-drin o gof. 21 00:01:01,020 --> 00:01:05,890 >> Gall, gyda rhai tebygolrwydd, neu ganfod os eich cod yn mynd i gyffwrdd cof 22 00:01:05,890 --> 00:01:07,100 ei fod nid yn unig ddylai. 23 00:01:07,100 --> 00:01:10,410 Felly, nid o reidrwydd yn gollwng, ond os ydych yn mynd y tu hwnt i'r ffiniau rhai o'r 24 00:01:10,410 --> 00:01:14,730 amrywiaeth, ac yr ydych mewn gwirionedd yn rhedeg valgrind a chymell bod ymddygiad tra 25 00:01:14,730 --> 00:01:17,870 valgrind yn rhedeg yn eich rhaglen yn redeg tu mewn iddo, byddwch yn cael 26 00:01:17,870 --> 00:01:21,460 negeseuon fel hyn - "annilys ysgrifennu o maint 4, "sydd, yn cofio un neu ddau o 27 00:01:21,460 --> 00:01:25,880 wythnosau yn ôl yn golygu fy mod wedi ddamweiniol fel ar un int yn rhy bell 28 00:01:25,880 --> 00:01:27,250 tu hwnt i ffiniau'r arae. 29 00:01:27,250 --> 00:01:30,790 Ac felly faint 4 yn golygu yma y maint o'r int penodol. 30 00:01:30,790 --> 00:01:35,260 >> Felly, cymerwch gysur yn y ffaith bod allbwn valgrind, mae'r fformat ohono, 31 00:01:35,260 --> 00:01:36,170 yn unig erchyll. 32 00:01:36,170 --> 00:01:40,180 Mae'n anodd iawn gweld drwy'r llanast am y wybodaeth ddiddorol. 33 00:01:40,180 --> 00:01:42,910 Felly, yr hyn yr ydym wedi ei wneud yma yn unig yw dyfyniad rhai o'r cwpl o fwy 34 00:01:42,910 --> 00:01:43,850 llinellau diddorol. 35 00:01:43,850 --> 00:01:46,760 Ond yn sylweddoli bod 80% o valgrind yn allbwn yn mynd i fod yn dipyn o 36 00:01:46,760 --> 00:01:47,650 tynnu sylw. 37 00:01:47,650 --> 00:01:52,820 >> Edrychwch am batrymau fel y rhain - annilys gywir, yn annilys darllen, 40 bytes 38 00:01:52,820 --> 00:01:56,690 ac mae rhai nifer o flociau yn bendant colli, keywords fel 'na. 39 00:01:56,690 --> 00:02:01,920 A beth fydd, gobeithio, yn gweld rhywfaint o fath o olion o'r hyn a swyddogaeth y 40 00:02:01,920 --> 00:02:03,340 camgymeriad mewn gwirionedd i mewn 41 00:02:03,340 --> 00:02:07,195 Yn yr achos yma, ym mha llinell o fy cod y gwall oedd yn ôl pob golwg? 42 00:02:07,195 --> 00:02:09,729 43 00:02:09,729 --> 00:02:14,130 >> 26 mewn ffeil o'r enw memory.c, a oedd yn yr enghraifft yr oeddem yn chwarae gyda 44 00:02:14,130 --> 00:02:14,890 ar y pryd. 45 00:02:14,890 --> 00:02:16,460 Felly, yn ôl pob tebyg nid yw'n mewn malloc. 46 00:02:16,460 --> 00:02:18,630 Yr oedd yn ôl pob tebyg yn fy cod lle hynny. 47 00:02:18,630 --> 00:02:20,910 Felly, byddwn yn gweld hyn eto ac unwaith eto cyn bo hir. 48 00:02:20,910 --> 00:02:24,080 >> Felly scanf, mae hyn yn dod i fyny mewn cwpl o ffurflenni hyd yn hyn. 49 00:02:24,080 --> 00:02:26,410 Gwelsom sscanf yn fyr. 50 00:02:26,410 --> 00:02:28,330 Roedd yn rhywbeth mae nifer o chi blymio i mewn yn eich 51 00:02:28,330 --> 00:02:29,535 paratoadau ar gyfer y cwis. 52 00:02:29,535 --> 00:02:33,130 Ac scanf mewn gwirionedd yr hyn y mae'r CS50 llyfrgell wedi bod yn ei ddefnyddio o dan y 53 00:02:33,130 --> 00:02:36,560 cwfl ers peth amser er mwyn i gael mewnbwn gan y defnyddiwr. 54 00:02:36,560 --> 00:02:40,420 >> Er enghraifft, os byddaf yn symud drosodd i'r CS50 offer yma, gadewch i mi agor yn 55 00:02:40,420 --> 00:02:45,315 enghraifft, heddiw fod ei alw scanf-0.c Ac mae'n syml super. 56 00:02:45,315 --> 00:02:46,590 Dim ond ychydig linellau o god. 57 00:02:46,590 --> 00:02:50,880 Ond mae'n dangos pa mor wir getInt wedi bod yn gweithio i gyd y tro hwn. 58 00:02:50,880 --> 00:02:54,710 >> Yn y rhaglen yma, yn unol 16 , Hysbysu fy mod datgan int. 59 00:02:54,710 --> 00:02:57,270 Felly dim awgrymiadau, dim byd hudol yno, dim ond int. 60 00:02:57,270 --> 00:03:00,330 Yna, yn unol 17, yr wyf yn annog y defnyddiwr ar gyfer nifer, os gwelwch yn dda. 61 00:03:00,330 --> 00:03:02,930 Yna, yn hwyr yn 18, yr wyf yn defnyddio scanf yma. 62 00:03:02,930 --> 00:03:06,910 Ac yr wyf yn benodol, math o fel printf, fy mod yn disgwyl dyfyniad 63 00:03:06,910 --> 00:03:08,110 unquote y cant i. 64 00:03:08,110 --> 00:03:10,920 >> Felly y cant i, wrth gwrs, yn dynodi int. 65 00:03:10,920 --> 00:03:14,580 Ond sylwi ar yr hyn yr ail ddadl i scanf yn. 66 00:03:14,580 --> 00:03:17,350 Sut fyddech chi'n disgrifio'r ail ddadl ar ôl y coma? 67 00:03:17,350 --> 00:03:19,450 Beth yw hynny? 68 00:03:19,450 --> 00:03:20,670 >> Mae'n y cyfeiriad x. 69 00:03:20,670 --> 00:03:25,490 Felly, mae hyn yn ddefnyddiol oherwydd trwy ddarparu scanf gyda chyfeiriad x, beth 70 00:03:25,490 --> 00:03:29,560 sy'n grymuso swyddogaeth honno ei wneud? 71 00:03:29,560 --> 00:03:33,010 Nid dim ond yn mynd yno, ond mae hefyd yn gwneud beth? 72 00:03:33,010 --> 00:03:34,060 >> Wneud newid iddo. 73 00:03:34,060 --> 00:03:38,080 Oherwydd y gallwch fynd yno, mae'n fath o fel map i leoliad yn y cof. 74 00:03:38,080 --> 00:03:41,900 A chyn belled ag y byddwch yn darparu scanf, neu unrhyw swyddogaeth gyda map o'r fath, 75 00:03:41,900 --> 00:03:45,840 Gall swyddogaeth fynd yno, ac nid yn unig edrych ar y gwerth, ond gall hefyd 76 00:03:45,840 --> 00:03:49,670 newid y gwerth, sy'n ddefnyddiol os pwrpas mewn bywyd o scanf yw 77 00:03:49,670 --> 00:03:53,060 sganio mewnbwn gan y defnyddiwr, yn benodol o'r bysellfwrdd. 78 00:03:53,060 --> 00:03:57,830 A'r f yn dynodi fformatio, yn union fel printf, mae'r f yn dynodi fformatio 79 00:03:57,830 --> 00:03:58,930 llinyn yr ydych am ei argraffu. 80 00:03:58,930 --> 00:04:04,430 >> Felly, yn fyr, mae hyn yn 18 llinell yn syml yn dweud, ceisio i ddarllen int gan y defnyddiwr 81 00:04:04,430 --> 00:04:10,420 bysellfwrdd ac yn ei storio y tu mewn o x, yn beth bynnag gyfeiriad x yn digwydd i fyw. 82 00:04:10,420 --> 00:04:14,860 Ac yna yn olaf, llinell 19 dim ond dweud, diolch am y int, yn yr achos hwn. 83 00:04:14,860 --> 00:04:15,940 >> Felly, gadewch i mi fynd yn ei flaen ac yn gwneud hyn. 84 00:04:15,940 --> 00:04:18,570 Felly gwnewch yn scanf 0. 85 00:04:18,570 --> 00:04:20,130 Gadewch i mi fynd yn ei flaen ac yn chwyddo i mewn 86 00:04:20,130 --> 00:04:22,960 'N annhymerus' yn mynd a rhedeg hyn gyda dotiau slaes scanf 0. 87 00:04:22,960 --> 00:04:24,020 Rhif, os gwelwch yn dda? 88 00:04:24,020 --> 00:04:24,720 50. 89 00:04:24,720 --> 00:04:25,730 Diolch am y 50. 90 00:04:25,730 --> 00:04:27,270 Felly, mae'n eithaf syml. 91 00:04:27,270 --> 00:04:28,160 >> Nawr beth nad yw'n ei wneud? 92 00:04:28,160 --> 00:04:29,940 Nid yw'n gwneud criw cyfan o gwirio camgymeriadau. 93 00:04:29,940 --> 00:04:33,000 Er enghraifft, os nad wyf yn cydweithredu, ac nid wyf yn teipio mewn nifer, ond 94 00:04:33,000 --> 00:04:37,860 yn lle hynny i mi ysgrifennu rhywbeth fel "helo," dyna'r unig fath o rhyfedd. 95 00:04:37,860 --> 00:04:41,130 Ac felly yn un o'r pethau y mae'r CS50 llyfrgell wedi bod yn ei wneud i ni ar gyfer rhai 96 00:04:41,130 --> 00:04:43,440 amser yw bod reprompting a reprompting. 97 00:04:43,440 --> 00:04:49,320 >> Mae'r ailgeisio ymadrodd cofio oedd yn cs50.c, a dyna'r rheswm y getInt yn 98 00:04:49,320 --> 00:04:51,670 y llyfrgell CS50 mewn gwirionedd yn ei chyfanrwydd criw o linellau hir, oherwydd ein bod yn 99 00:04:51,670 --> 00:04:53,190 gwirio am bethau gwirion fel hyn. 100 00:04:53,190 --> 00:04:55,730 A oedd y defnyddiwr beidio â rhoi ni, mewn gwirionedd, yn int? 101 00:04:55,730 --> 00:04:57,910 A wnaeth ef neu hi yn rhoi rhywbeth i ni fel llythyr yr wyddor? 102 00:04:57,910 --> 00:05:01,410 Os felly, rydym yn awyddus i ganfod hynny ac yn gweiddi arnynt. 103 00:05:01,410 --> 00:05:03,915 >> Ond mae pethau'n mynd yn fwy diddorol yn yr enghraifft nesaf. 104 00:05:03,915 --> 00:05:09,840 Os byddaf yn mynd i scanf-1.c, beth yw'r un beth sy'n cael ei newid yn sylfaenol yn 105 00:05:09,840 --> 00:05:11,135 yr enghraifft nesaf? 106 00:05:11,135 --> 00:05:13,690 107 00:05:13,690 --> 00:05:16,010 Im 'yn arfer torgoch *, wrth gwrs, yn hytrach na int. 108 00:05:16,010 --> 00:05:19,210 >> Felly, mae hyn yn ddiddorol, oherwydd golosg *, galw i gof, mewn gwirionedd dim ond y 109 00:05:19,210 --> 00:05:20,190 un peth â llinyn. 110 00:05:20,190 --> 00:05:23,840 Felly, mae'n teimlo fel efallai fod hyn yn super gweithredu syml o GetString. 111 00:05:23,840 --> 00:05:26,010 Ond rwyf wedi plicio yn ôl yr haen y llyfrgell CS50, felly rwy'n 112 00:05:26,010 --> 00:05:27,550 galw hyn torgoch * awr. 113 00:05:27,550 --> 00:05:30,070 Felly, gadewch i ni weld lle, os unrhyw le, rydym yn mynd o'i le. 114 00:05:30,070 --> 00:05:30,840 >> Llinell 17 - 115 00:05:30,840 --> 00:05:33,950 Unwaith eto yn dweud, os gwelwch yn dda roi rhywbeth i mi, yn yr achos hwn, mae llinyn. 116 00:05:33,950 --> 00:05:37,940 Ac yna yn y llinell nesaf, galwaf scanf, unwaith eto, gan roi cod fformat, 117 00:05:37,940 --> 00:05:39,310 ond y tro hwn y cant s. 118 00:05:39,310 --> 00:05:41,900 Ac yna y tro hwn, rwy'n gan roi byffer. 119 00:05:41,900 --> 00:05:43,550 >> Nawr sylwi, dydw i ddim yn defnyddio y ampersand. 120 00:05:43,550 --> 00:05:47,120 Ond pam yw bod yn ôl pob tebyg iawn yma? 121 00:05:47,120 --> 00:05:49,760 Oherwydd mae'r hyn sy'n byffer yn barod? 122 00:05:49,760 --> 00:05:50,770 Mae eisoes yn pwyntydd. 123 00:05:50,770 --> 00:05:51,650 Mae'n eisoes yn gyfeiriad. 124 00:05:51,650 --> 00:05:54,510 >> A gadewch i ni yn y gair hwn "drysu," gadewch i mi dim ond ei alw s, er enghraifft, ar gyfer 125 00:05:54,510 --> 00:05:55,050 symlrwydd. 126 00:05:55,050 --> 00:05:58,250 Ond yr wyf wedi galw ei glustogi oherwydd yn gyffredinol, mewn rhaglennu, os oes gennych 127 00:05:58,250 --> 00:06:02,130 darn o gof, y mae mewn gwirionedd llinyn yn unig yw, efallai y byddwch yn galw ei fod yn byffer. 128 00:06:02,130 --> 00:06:04,460 Mae'n lle i storio gwybodaeth. 129 00:06:04,460 --> 00:06:07,400 >> Yn debyg i bethau fel YouTube, pan maent yn clustogi, fel petai, y 130 00:06:07,400 --> 00:06:10,270 yn unig yn golygu ei fod yn lawrlwytho darnau o y rhyngrwyd ac yn eu storio mewn 131 00:06:10,270 --> 00:06:14,160 amrywiaeth leol, darn lleol o gof er mwyn y gallwch chi ei wylio yn nes ymlaen heb 132 00:06:14,160 --> 00:06:16,830 mae'n sgipio neu yn hongian ar chi tra'n chwarae yn ôl. 133 00:06:16,830 --> 00:06:20,930 >> Felly mae yna broblem yma, fodd bynnag, gan fy mod yn dweud scanf, yn disgwyl 134 00:06:20,930 --> 00:06:22,320 llinyn gan y defnyddiwr. 135 00:06:22,320 --> 00:06:24,410 Dyma y cyfeiriad darn o gof. 136 00:06:24,410 --> 00:06:26,180 Rhowch y llinyn yno. 137 00:06:26,180 --> 00:06:31,230 Pam hynny rhwymo rhoi ni drafferth, er bod? 138 00:06:31,230 --> 00:06:33,490 >> Beth sy'n bod? 139 00:06:33,490 --> 00:06:35,510 Ydw i'n cael mynediad y rhan honno o cof? 140 00:06:35,510 --> 00:06:36,250 Rydych yn gwybod, nid wyf yn gwybod. 141 00:06:36,250 --> 00:06:39,210 Oherwydd wedi byffer wedi'i ymgychwyn i unrhyw beth? 142 00:06:39,210 --> 00:06:39,820 Ddim mewn gwirionedd. 143 00:06:39,820 --> 00:06:43,090 Ac felly mae'n hyn yr ydym wedi bod yn galw gwerth garbage, a 144 00:06:43,090 --> 00:06:44,040 Nid yn air ffurfiol. 145 00:06:44,040 --> 00:06:49,200 Mae'n jyst yn golygu nid oes gennym unrhyw syniad beth ddarnau y tu mewn i'r pedwar bytes sy'n 146 00:06:49,200 --> 00:06:51,240 Yr wyf wedi dyrannu fel byffer. 147 00:06:51,240 --> 00:06:52,450 >> Nid wyf wedi galw malloc. 148 00:06:52,450 --> 00:06:53,940 Yn sicr nid wyf wedi galw GetString. 149 00:06:53,940 --> 00:06:56,380 Felly, pwy a ŵyr beth yn union tu mewn byffer? 150 00:06:56,380 --> 00:07:00,550 Ac eto yn dweud scanf ddall, fynd yno a rhowch beth bynnag y defnyddiwr deipio. 151 00:07:00,550 --> 00:07:04,460 >> Felly, yr hyn sy'n debygol o achosi yn ein cod, os ydym yn rhedeg? 152 00:07:04,460 --> 00:07:05,700 Mae'n debyg segfault. 153 00:07:05,700 --> 00:07:07,970 Efallai na, ond mae'n debyg yn segfault. 154 00:07:07,970 --> 00:07:10,620 Ac yr wyf yn dweud efallai nad oherwydd weithiau chi ei wneud, weithiau 155 00:07:10,620 --> 00:07:11,380 nad ydych yn cael segfault. 156 00:07:11,380 --> 00:07:14,280 Weithiau, 'ch jyst yn cael lwcus, ond mae'n serch hynny yn mynd i fod yn 157 00:07:14,280 --> 00:07:15,340 a bug yn ein rhaglen. 158 00:07:15,340 --> 00:07:17,060 >> Felly, gadewch i mi fynd yn ei flaen ac yn llunio hyn. 159 00:07:17,060 --> 00:07:18,280 Rydw i'n mynd i wneud hynny yn yr hen ffordd ysgol. 160 00:07:18,280 --> 00:07:23,825 Felly dash clang 0, scanf-1, scanf-1.c, Enter. 161 00:07:23,825 --> 00:07:24,720 Wps, yr ysgol yn rhy hen. 162 00:07:24,720 --> 00:07:26,550 Gadewch i ni weld. 163 00:07:26,550 --> 00:07:28,440 Ble wnes i fynd? 164 00:07:28,440 --> 00:07:29,700 O, torgoch * byffer. 165 00:07:29,700 --> 00:07:33,595 166 00:07:33,595 --> 00:07:35,130 O, diolch i chi - 167 00:07:35,130 --> 00:07:36,930 Cadw, OK - 168 00:07:36,930 --> 00:07:37,690 ysgol yn hen iawn. 169 00:07:37,690 --> 00:07:38,900 Iawn, mae wedi bod yn dipyn. 170 00:07:38,900 --> 00:07:41,720 >> Felly, yr wyf wedi arbed y ffeil ar ôl dim ond wneud y dros dro 171 00:07:41,720 --> 00:07:42,700 newid funud yn ôl. 172 00:07:42,700 --> 00:07:46,090 Ac yn awr yr wyf wedi llunio ei llaw gyda clang. 173 00:07:46,090 --> 00:07:49,500 Ac yn awr yr wyf i'n mynd i fynd yn ei flaen ac yn rhedeg scanf-1, Enter. 174 00:07:49,500 --> 00:07:50,290 String gwelwch yn dda. 175 00:07:50,290 --> 00:07:51,600 'N annhymerus' deipio i mewn "helo." 176 00:07:51,600 --> 00:07:54,070 >> Ac yn awr, dyma lle, dweud y gwir, printf Gall ychydig yn blino. 177 00:07:54,070 --> 00:07:56,020 Dyw hi ddim yn wir yn mynd i segfault yn yr achos hwn. 178 00:07:56,020 --> 00:07:59,860 Printf ychydig yn arbennig oherwydd mae mor super a ddefnyddir yn gyffredin sy'n 179 00:07:59,860 --> 00:08:03,570 hanfod printf yn ei wneud i ni o blaid ac yn gwireddu, 180 00:08:03,570 --> 00:08:04,830 dyw hynny ddim yn pwyntydd dilys. 181 00:08:04,830 --> 00:08:09,080 Gadewch i mi gymryd ef ar fy hun i ychydig argraffu mewn cromfachau null, hyd yn oed 182 00:08:09,080 --> 00:08:13,340 er nad yw'n reidrwydd yn beth ydym ni ein hunain disgwyl. 183 00:08:13,340 --> 00:08:16,940 >> Felly, ni allwn mewn gwirionedd yn hawdd cymell segfault â hyn, ond yn amlwg mae hyn 184 00:08:16,940 --> 00:08:18,600 Nid yw ymddygiad oeddwn i eisiau. 185 00:08:18,600 --> 00:08:19,800 Felly beth yw'r ateb syml? 186 00:08:19,800 --> 00:08:25,650 Wel, yn scanf-2, gadewch i mi yn cynnig y yn hytrach na mewn gwirionedd dim ond ddyrannu 187 00:08:25,650 --> 00:08:30,100 torgoch *, gadewch i mi fod ychydig yn fwy craff am hyn, a gadewch i mi dyrannu byffer 188 00:08:30,100 --> 00:08:32,940 fel cyfres o 16 chars. 189 00:08:32,940 --> 00:08:34,200 >> Felly, yr wyf yn gallu gwneud hyn mewn dwy ffordd. 190 00:08:34,200 --> 00:08:35,610 Gallwn hollol ddefnyddio malloc. 191 00:08:35,610 --> 00:08:38,980 Ond gallaf fynd yn ôl i wythnos dau pan Fi jyst angen criw cyfan o 192 00:08:38,980 --> 00:08:39,620 cymeriadau. 193 00:08:39,620 --> 00:08:40,860 Dyna dim ond arae. 194 00:08:40,860 --> 00:08:44,870 Felly, gadewch i mi yn lle hynny ailddiffinio byffer i fod yn amrywiaeth o 16 nod. 195 00:08:44,870 --> 00:08:47,340 >> Ac yn awr, pan fyddaf yn pasio byffer i mewn - 196 00:08:47,340 --> 00:08:49,940 ac mae hyn yn rhywbeth nad ydym yn gwneud siarad am yn ail wythnos - 197 00:08:49,940 --> 00:08:53,730 ond gallwch drin amrywiaeth fel er ei fod yn gyfeiriad. 198 00:08:53,730 --> 00:08:56,390 Yn dechnegol, fel yr ydym wedi gweld, maen nhw'n ychydig yn wahanol. 199 00:08:56,390 --> 00:09:01,290 Ond ni fydd ots scanf os byddwch yn ei throsglwyddo enw arae, oherwydd yr hyn 200 00:09:01,290 --> 00:09:05,030 Bydd clang wneud i ni yn ei hanfod trin enw'r amrywiaeth gan fod y 201 00:09:05,030 --> 00:09:08,280 cyfeiriad y darn o 16 bytes. 202 00:09:08,280 --> 00:09:09,550 >> Felly, mae hyn yn well. 203 00:09:09,550 --> 00:09:12,110 Mae hyn yn golygu yn awr y gallaf, gobeithio, wneud y canlynol. 204 00:09:12,110 --> 00:09:16,800 Gadewch i mi chwyddo allan am hyn o bryd ac yn gwneud scanf-2, a luniwyd OK. 205 00:09:16,800 --> 00:09:19,390 Nawr, gadewch i mi yn cael slaes scanf-2. 206 00:09:19,390 --> 00:09:22,430 String gwelwch yn dda. "Helo." Ac mae'n yn ymddangos i weithio y tro hwn. 207 00:09:22,430 --> 00:09:26,020 >> Ond gall rhywun gynnig senario lle na allai fod yn dal i weithio? 208 00:09:26,020 --> 00:09:28,550 Yeah? 209 00:09:28,550 --> 00:09:30,640 Rhywbeth yn hwy na 16 nod. 210 00:09:30,640 --> 00:09:32,020 Ac mewn gwirionedd, gallwn fod yn ychydig yn fwy manwl gywir. 211 00:09:32,020 --> 00:09:36,540 Rhywbeth hirach yna 15 cymeriadau, oherwydd gwir angen i ni gadw mewn cof 212 00:09:36,540 --> 00:09:39,920 bod angen y slaes sero ymhlyg ar ddiwedd y llinyn, 213 00:09:39,920 --> 00:09:42,950 sy'n bydd yn scanf o'r neilltu fel arfer yn gofalu am i ni. 214 00:09:42,950 --> 00:09:46,210 >> Felly, gadewch i mi wneud rhywbeth fel - 215 00:09:46,210 --> 00:09:48,040 weithiau gallwn yn unig ei adael fel 'na. 216 00:09:48,040 --> 00:09:50,630 Iawn, felly rydym wedi awr a ysgogwyd ein wall. 217 00:09:50,630 --> 00:09:51,000 Pam? 218 00:09:51,000 --> 00:09:54,940 Gan fy mod yn teipio i fwy na 15 cymeriadau, ac felly rydym wedi gwirionedd 219 00:09:54,940 --> 00:09:58,280 cof cyffwrdd fy mod mewn gwirionedd yn Ni ddylai fod. 220 00:09:58,280 --> 00:10:00,180 >> Felly, yr hyn sy'n wirioneddol yr ateb yma? 221 00:10:00,180 --> 00:10:02,210 Wel, beth os bydd angen llinyn hirach? 222 00:10:02,210 --> 00:10:03,960 Wel, yr ydym efallai yn ei gwneud yn 32 bytes. 223 00:10:03,960 --> 00:10:05,160 Wel, beth os nad yw hynny'n ddigon hir? 224 00:10:05,160 --> 00:10:06,040 Beth am 64 bytes? 225 00:10:06,040 --> 00:10:07,080 Beth os nad yw hynny'n ddigon hir? 226 00:10:07,080 --> 00:10:09,640 Beth am 128 neu 200 bytes? 227 00:10:09,640 --> 00:10:12,660 Beth mewn gwirionedd yw'r ateb yma yn y achos cyffredinol, os nad ydym yn gwybod yn 228 00:10:12,660 --> 00:10:14,460 ymlaen llaw yr hyn y mae'r defnyddiwr yn mynd i deipio? 229 00:10:14,460 --> 00:10:20,000 230 00:10:20,000 --> 00:10:23,050 >> 'I' jyst fath o boen mawr yn y ass, i fod yn onest, a dyna pam mae'r 231 00:10:23,050 --> 00:10:29,050 Llyfrgell CS50 Mae gan ychydig o linellau dwsin o cod sy'n chydweithio i sicrhau 232 00:10:29,050 --> 00:10:32,390 GetString llinyn mewn ffordd nad ydym yn ei wneud rhaid i chi wybod ymlaen llaw beth y 233 00:10:32,390 --> 00:10:33,430 defnyddiwr yn mynd i deipio. 234 00:10:33,430 --> 00:10:37,370 Yn benodol, os ydych yn edrych yn ôl ar cs50.c o ddwy wythnos yn ôl, byddwch yn gweld 235 00:10:37,370 --> 00:10:40,480 bod GetString ei wneud mewn gwirionedd â defnyddio'r scanf yn y modd hwn. 236 00:10:40,480 --> 00:10:43,720 Yn hytrach, mae'n darllen un cymeriad ar y tro. 237 00:10:43,720 --> 00:10:46,010 >> Oherwydd yr un peth braf am darllen un cymeriad yw ein gallu 238 00:10:46,010 --> 00:10:48,490 gwarantu ein hunain i bob amser yn fod ag o leiaf un torgoch. 239 00:10:48,490 --> 00:10:51,740 Gallaf ddatgan golosg, ac yna cymryd y camau gwirioneddol babi i ddim ond 240 00:10:51,740 --> 00:10:54,380 darllen un gymeriad i mewn ar amser o'r bysellfwrdd. 241 00:10:54,380 --> 00:10:58,240 Ac yna, beth byddwch yn gweld GetString ei wneud yw bob tro yn rhedeg allan o, 242 00:10:58,240 --> 00:11:02,280 dweud, 16 bytes o gof, mae'n defnyddio malloc, neu gefnder ohono, i 243 00:11:02,280 --> 00:11:06,810 dyrannu mwy o gof, copïo hen cof yn y newydd, ac yna cropian 244 00:11:06,810 --> 00:11:09,900 ynghyd, cael un cymeriad ar y tro, a phan fydd yn rhedeg allan o'r 245 00:11:09,900 --> 00:11:13,370 darn o gof, yn taflu i ffwrdd, hennill fwy darn o gof, copïau hen 246 00:11:13,370 --> 00:11:14,750 i mewn i newydd, ac ailddarllediadau. 247 00:11:14,750 --> 00:11:18,480 Ac mae'n wir yn boen i mewn gwirionedd gweithredu rhywbeth mor syml â 248 00:11:18,480 --> 00:11:19,710 cael mewnbwn gan ddefnyddiwr. 249 00:11:19,710 --> 00:11:21,090 >> Felly, gallwch ddefnyddio scanf. 250 00:11:21,090 --> 00:11:22,430 Gallwch ddefnyddio swyddogaethau tebyg eraill. 251 00:11:22,430 --> 00:11:25,420 Ac mae llawer o werslyfrau ac ar-lein enghreifftiau yn ei wneud, ond maen nhw i gyd 252 00:11:25,420 --> 00:11:27,210 agored i broblemau fel hyn. 253 00:11:27,210 --> 00:11:29,550 Ac yn y pen draw, cael a segfault yn fath o blino. 254 00:11:29,550 --> 00:11:30,680 Dyw e ddim yn dda ar gyfer y defnyddiwr. 255 00:11:30,680 --> 00:11:33,560 >> Ond yn yr achos gwaethaf, beth mae ei fod yn sylfaenol yn rhoi eich 256 00:11:33,560 --> 00:11:37,160 cod sydd mewn perygl o? 257 00:11:37,160 --> 00:11:39,250 Rhyw fath o ymosodiad, o bosibl. 258 00:11:39,250 --> 00:11:41,680 Buom yn siarad am un ymosodiad o'r fath - gorlifo y pentwr. 259 00:11:41,680 --> 00:11:44,660 Ond yn gyffredinol, os ydych yn cael gorlif byffer, fel y gwnaethom 260 00:11:44,660 --> 00:11:48,070 cwpl o wythnosau yn ôl, gyda dim ond ysgrifennu mwy na "helo" ar y pentwr, eich 261 00:11:48,070 --> 00:11:52,330 Gall yn wir yn cymryd drosodd, o bosibl, a cyfrifiadur, neu o leiaf yn cael ar ddata sy'n 262 00:11:52,330 --> 00:11:53,510 nad yw'n perthyn i chi. 263 00:11:53,510 --> 00:11:55,970 >> Felly, yn fyr, dyma pam yr ydym wedi olwynion hyfforddi hynny. 264 00:11:55,970 --> 00:11:59,090 Ond nawr, rydym yn dechrau i fynd â nhw i ffwrdd, gan nad oes mwyach angen ein rhaglenni, 265 00:11:59,090 --> 00:12:00,610 reidrwydd, mewnbwn gan y defnyddiwr. 266 00:12:00,610 --> 00:12:03,960 Ond yn achos y broblem a chwech, Bydd eich cyfraniad yn dod o enfawr 267 00:12:03,960 --> 00:12:07,520 ffeil geiriadur gyda 150 rhai od mil o eiriau. 268 00:12:07,520 --> 00:12:10,330 >> Felly, ni fydd yn rhaid i chi boeni am mewnbwn mympwyol y defnyddiwr. 269 00:12:10,330 --> 00:12:13,720 Byddwn yn rhoi i chi rai tybiaethau am hynny ffeil. 270 00:12:13,720 --> 00:12:20,340 Unrhyw gwestiynau am awgrymiadau neu scanf neu fewnbwn defnyddwyr yn gyffredinol? 271 00:12:20,340 --> 00:12:24,450 >> Mae pob hawl, felly edrych yn sydyn ac yna ar un trailing pwnc o ddwy wythnos yn ôl. 272 00:12:24,450 --> 00:12:28,590 A dyna oedd y syniad hwn o strwythur. 273 00:12:28,590 --> 00:12:34,180 Nid bod - syniad hwn o strwythur, a oedd yn beth? 274 00:12:34,180 --> 00:12:35,430 Beth oedd strwythur yn ei wneud i ni? 275 00:12:35,430 --> 00:12:39,280 276 00:12:39,280 --> 00:12:39,860 >> Diffinio - 277 00:12:39,860 --> 00:12:41,710 Mae'n ddrwg? 278 00:12:41,710 --> 00:12:42,820 Diffinio math amrywiol. 279 00:12:42,820 --> 00:12:44,410 Felly datrys o. 280 00:12:44,410 --> 00:12:46,180 Rydym yn mewn gwirionedd yn cyfuno dau bwnc. 281 00:12:46,180 --> 00:12:49,510 Felly, gyda typedef, dwyn i gof y gallwn datgan math o ein hunain, fel 282 00:12:49,510 --> 00:12:51,500 cyfystyr, fel llinyn ar gyfer torgoch *. 283 00:12:51,500 --> 00:12:56,200 Ond gan ddefnyddio typedef a strwythur, gallwn creu wirioneddol ein strwythurau data hunain. 284 00:12:56,200 --> 00:12:59,600 >> Er enghraifft, os byddaf yn mynd yn ôl i gedit yma am ddim ond hyn o bryd, ac yr wyf yn mynd yn ei flaen 285 00:12:59,600 --> 00:13:08,230 ac yn gwneud rhywbeth fel, gadewch i mi arbed hyn fel, gadewch i ni ddweud, structs.c 286 00:13:08,230 --> 00:13:10,840 dros dro, Im 'jyst yn mynd i fynd yn ei flaen ac yn cynnwys 287 00:13:10,840 --> 00:13:14,360 standardio.h, int prif ddi-rym. 288 00:13:14,360 --> 00:13:18,960 Ac yna yma, mae'n debyg fy mod am i ysgrifennu rhaglen sy'n storio 289 00:13:18,960 --> 00:13:21,840 fyfyrwyr lluosog o lluosog tai, er enghraifft. 290 00:13:21,840 --> 00:13:24,430 Felly, mae fel registrarial cronfa ddata o ryw fath. 291 00:13:24,430 --> 00:13:29,550 >> Felly, os oes angen yr enw un myfyriwr, yr wyf yn gallai wneud rhywbeth fel enw torgoch *, 292 00:13:29,550 --> 00:13:31,570 a byddaf yn gwneud rhywbeth fel - 293 00:13:31,570 --> 00:13:34,410 mewn gwirionedd, gadewch i ni ddefnyddio'r llyfrgell CS50 am ddim ond ennyd i wneud hyn yn 294 00:13:34,410 --> 00:13:38,380 ychydig yn symlach, fel y gallwn fenthyg hynny dwsinau o linellau o god. 295 00:13:38,380 --> 00:13:39,340 A gadewch i 'jyst cadw pethau'n syml. 296 00:13:39,340 --> 00:13:42,610 Byddwn yn cadw llinyn, ac yn awr GetString. 297 00:13:42,610 --> 00:13:47,420 >> Felly yr wyf yn honni yn awr fy mod i wedi ei storio enw o rai myfyriwr, a thŷ 298 00:13:47,420 --> 00:13:50,240 rhai myfyrwyr, yn syml gan ddefnyddio newidynnau fel y gwnaethom ac mewn un wythnos. 299 00:13:50,240 --> 00:13:52,370 Ond mae'n debyg wyf yn awr am gefnogi myfyrwyr lluosog. 300 00:13:52,370 --> 00:13:58,460 Mae pob hawl, felly mae fy greddfau yn ymwneud llinyn name2, yn cael GetString, llinyn 301 00:13:58,460 --> 00:14:01,370 house2 cael GetString. 302 00:14:01,370 --> 00:14:05,850 Ac yna ein trydydd myfyrwyr, gadewch i ni wneud name3 GetString. 303 00:14:05,850 --> 00:14:09,170 >> Mae pob hawl, felly mae hyn yn gobeithio drawiadol chi fel math o dwp, 304 00:14:09,170 --> 00:14:11,580 oherwydd bod y broses hon yn wirioneddol byth yn mynd i ben, ac mae'n dim ond yn mynd i 305 00:14:11,580 --> 00:14:13,130 gwneud fy cod yn edrych yn waeth ac yn waeth ac yn waeth. 306 00:14:13,130 --> 00:14:14,810 Ond rydym yn datrys hyn hefyd yn yr wythnos dau. 307 00:14:14,810 --> 00:14:19,450 Beth oedd ein ateb yn gymharol lân pan oedd gennym newidynnau lluosog o'r 308 00:14:19,450 --> 00:14:23,580 math data un bod i gyd yn gysylltiedig, ond nid oeddem am y llanast erchyll 309 00:14:23,580 --> 00:14:26,870 o newidynnau a enwir yn yr un modd? 310 00:14:26,870 --> 00:14:30,060 Beth wnaethon ni ei wneud yn lle hynny? 311 00:14:30,060 --> 00:14:31,260 >> Felly, yr wyf yn meddwl fy mod wedi clywed ambell le. 312 00:14:31,260 --> 00:14:32,590 Cawsom arae. 313 00:14:32,590 --> 00:14:37,110 Os ydych chi am achosion lluosog o rhywbeth, pam nad ydym yn glanhau hyn i gyd 314 00:14:37,110 --> 00:14:39,540 i fyny ac yn dweud, yn rhoi i mi amrywiaeth galw enwau? 315 00:14:39,540 --> 00:14:41,640 >> Ac am y tro, gadewch i ni cod caled 3. 316 00:14:41,640 --> 00:14:44,450 Ac yna rhoi amrywiaeth arall i mi a elwir yn dai, a gadewch i mi am 317 00:14:44,450 --> 00:14:45,800 nawr cod caled 3. 318 00:14:45,800 --> 00:14:49,220 Ac yr wyf wedi glanhau aruthrol i fyny'r llanast yr wyf newydd ei greu. 319 00:14:49,220 --> 00:14:52,400 Yn awr, yr wyf wedi dal codio galed 3, ond hyd yn oed gallai'r 3 yn dod yn ddeinamig gan y 320 00:14:52,400 --> 00:14:54,350 defnyddiwr, neu argv, neu debyg. 321 00:14:54,350 --> 00:14:55,720 Felly, mae hyn eisoes yn lanach. 322 00:14:55,720 --> 00:15:00,100 >> Ond yr hyn sy'n blino am hyn yw bod erbyn hyn, er bod enw rywsut 323 00:15:00,100 --> 00:15:02,280 gysylltiedig yn sylfaenol i tŷ myfyriwr - 324 00:15:02,280 --> 00:15:04,720 ei fod yn fyfyriwr fy mod i wir am gynrychioli - 325 00:15:04,720 --> 00:15:08,080 Yr wyf yn awr wedi dau araeau sy'n gyfochrog yn yr ystyr eu bod yn y 326 00:15:08,080 --> 00:15:13,930 un maint, ac enwau braced 0 mapiau yn ôl pob tebyg i dai braced 0, 327 00:15:13,930 --> 00:15:16,600 ac enwau braced 1 fapiau i dai braced 1. 328 00:15:16,600 --> 00:15:19,280 Mewn geiriau eraill, y myfyriwr hwnnw yn byw yn tŷ hwnnw, a bod y myfyriwr arall 329 00:15:19,280 --> 00:15:20,530 byw yn y tŷ arall. 330 00:15:20,530 --> 00:15:23,720 Ond yn sicr gallai hyn fod yn wneud hyd yn oed yn fwy lân. 331 00:15:23,720 --> 00:15:24,990 >> Wel, gall, mewn gwirionedd. 332 00:15:24,990 --> 00:15:28,730 A gadewch i mi fynd yn ei flaen ac yn agor structs.h i fyny, ac yr ydych chi helpu 333 00:15:28,730 --> 00:15:31,130 gweld y syniad yma. 334 00:15:31,130 --> 00:15:34,905 Hysbysu fy mod wedi defnyddio typedef, fel y cyfeirio at funud yn ôl i ddatgan ein 335 00:15:34,905 --> 00:15:35,570 math data eu hunain. 336 00:15:35,570 --> 00:15:39,660 Ond rwyf hefyd yn defnyddio'r gair allweddol eraill a elwir yn strwythur sy'n rhoi newydd i mi 337 00:15:39,660 --> 00:15:40,790 strwythur data. 338 00:15:40,790 --> 00:15:43,980 >> Ac mae hyn yn strwythur data gallaf wneud cais yn mynd i gael dau beth tu mewn 339 00:15:43,980 --> 00:15:47,060 iddo - llinyn alwodd ei enw, a llinyn o'r enw tŷ. 340 00:15:47,060 --> 00:15:49,820 Ac enw yr wyf i'n mynd i roi i y strwythur data yn mynd 341 00:15:49,820 --> 00:15:51,005 i gael ei alw myfyrwyr. 342 00:15:51,005 --> 00:15:54,030 Y gallwn ei alw'n unrhyw beth rwyf eisiau, ond mae hyn yn semantig yn gwneud 343 00:15:54,030 --> 00:15:55,810 synnwyr i mi yn fy meddwl. 344 00:15:55,810 --> 00:15:59,160 >> Felly nawr, os wyf yn agor fersiwn gwell y rhaglen i mi ddechrau ysgrifennu 345 00:15:59,160 --> 00:16:00,390 yno, gadewch i mi sgrolio i'r brig. 346 00:16:00,390 --> 00:16:03,190 Ac mae mwy o linellau cod yma, ond gadewch i mi ganolbwyntio ar 347 00:16:03,190 --> 00:16:04,160 hyn o bryd ar un. 348 00:16:04,160 --> 00:16:07,790 Rwyf wedi datgan yn gyson fyfyrwyr elwir yn a'i godio caled 3 am y tro. 349 00:16:07,790 --> 00:16:11,110 Ond yn awr, yn sylwi pa mor lân fy cod yn dechrau ei gael. 350 00:16:11,110 --> 00:16:15,030 >> Yn unol 22, yr wyf yn datgan amrywiaeth o fyfyrwyr. 351 00:16:15,030 --> 00:16:18,760 Ac yn sylwi y myfyriwr hwnnw yn ôl pob golwg bellach yn fath data. 352 00:16:18,760 --> 00:16:23,360 Gan fod ar frig y ffeil, sylwch Rwyf wedi cynnwys y ffeil flaen 353 00:16:23,360 --> 00:16:24,820 fy mod yn tynnu i fyny ychydig funudau'n ôl. 354 00:16:24,820 --> 00:16:28,820 A bod ffeil flaen yn syml wedi diffiniad hwn o fyfyriwr. 355 00:16:28,820 --> 00:16:32,470 >> Felly nawr, rwyf wedi creu fy data addef arfer fath bod yr awduron o flynyddoedd C 356 00:16:32,470 --> 00:16:33,890 Nid yn ôl, yn meddwl am o flaen llaw. 357 00:16:33,890 --> 00:16:34,570 Ond dim problem. 358 00:16:34,570 --> 00:16:35,870 Gallaf wneud fy hun. 359 00:16:35,870 --> 00:16:39,050 Felly mae hwn yn amrywiaeth o'r enw myfyrwyr, pob un o'i aelodau 360 00:16:39,050 --> 00:16:41,100 yn strwythur myfyrwyr. 361 00:16:41,100 --> 00:16:44,270 Ac yr wyf am dair o'r rhai a yn y rhesi. 362 00:16:44,270 --> 00:16:46,030 >> Ac yn awr, yr hyn yn gwneud y gweddill y rhaglen hon yn ei wneud? 363 00:16:46,030 --> 00:16:47,550 Yr wyf angen rhywbeth ychydig yn fympwyol. 364 00:16:47,550 --> 00:16:51,450 Felly, o ar-lein 24 ymlaen, I ailadrodd 0-3. 365 00:16:51,450 --> 00:16:54,000 Byddaf wedyn yn gofyn i'r defnyddiwr ar gyfer enw'r myfyriwr. 366 00:16:54,000 --> 00:16:56,110 Ac yna yr wyf yn defnyddio GetString fel o'r blaen. 367 00:16:56,110 --> 00:16:59,410 Yna mi ofyn am dŷ y myfyriwr, ac yr wyf yn defnyddio GetString fel o'r blaen. 368 00:16:59,410 --> 00:17:01,780 >> Ond rybudd - ychydig yn newydd darn o gystrawen - 369 00:17:01,780 --> 00:17:07,010 Gallaf dal i mynegai i'r myfyriwr i-fed, ond sut ydw i'n cael yn y data penodol 370 00:17:07,010 --> 00:17:08,354 y tu mewn i faes y strwythur? 371 00:17:08,354 --> 00:17:11,770 Wel, beth mae'n debyg y darn newydd o gystrawen? 372 00:17:11,770 --> 00:17:13,339 Dim ond y gweithredwr dot. 373 00:17:13,339 --> 00:17:14,510 >> Nid ydym wedi gweld mewn gwirionedd hyn o'r blaen. 374 00:17:14,510 --> 00:17:17,819 Rydych chi wedi gweld hynny yn pset pump os ydych wedi deifio yn barod gyda ffeiliau didfap. 375 00:17:17,819 --> 00:17:22,372 Ond mae'r dot yn unig yn golygu y tu mewn o hyn strwythur neu feysydd lluosog, yn rhoi dot 376 00:17:22,372 --> 00:17:24,510 enw, neu roi dy dot mi. 377 00:17:24,510 --> 00:17:28,690 Mae hynny'n golygu mynd y tu mewn i'r strwythur a chael meysydd penodol hynny. 378 00:17:28,690 --> 00:17:30,200 >> Beth mae gweddill y rhaglen yn ei wneud? 379 00:17:30,200 --> 00:17:31,190 Nid yw popeth a sexy. 380 00:17:31,190 --> 00:17:34,640 Hysbysiad fy mod yn ailadrodd 0-3 eto, ac yr wyf yn syml yn creu Saesneg 381 00:17:34,640 --> 00:17:40,500 ymadrodd fel hyn ac felly mae yn y fath a tŷ o'r fath, gan fynd heibio yn enw'r dot o 382 00:17:40,500 --> 00:17:43,320 y myfyriwr i-fed ac mae eu tŷ hefyd. 383 00:17:43,320 --> 00:17:47,560 >> Ac yna yn olaf, yn awr rydym yn bydd yn dechrau cael rhefrol am hyn, yn awr ein bod yn 384 00:17:47,560 --> 00:17:49,580 gyfarwydd â'r hyn malloc a swyddogaethau eraill wedi bod yn 385 00:17:49,580 --> 00:17:50,570 gwneud yr holl amser hwn. 386 00:17:50,570 --> 00:17:54,220 Pam fod rhaid i mi ryddhau yn enw a thŷ, er fy mod yn 387 00:17:54,220 --> 00:17:56,960 Nid oedd galw malloc? 388 00:17:56,960 --> 00:17:58,020 >> Wnaeth GetString. 389 00:17:58,020 --> 00:18:00,930 A dyna oedd y gyfrinach budr bach ar gyfer nifer o wythnosau, ond mae GetString wedi 390 00:18:00,930 --> 00:18:03,530 bod yn gollwng cof ar draws y rhoi'r holl semester hyd yn hyn. 391 00:18:03,530 --> 00:18:05,990 A bydd yn valgrand yn olaf datgelu hyn i ni. 392 00:18:05,990 --> 00:18:10,730 >> Ond nid yw'n beth mawr, oherwydd yr wyf yn gwybod y gallaf yn syml rhad ac am ddim yr enw 393 00:18:10,730 --> 00:18:15,750 a'r tŷ, er yn dechnegol, i fod yn super, super ddiogel, ddylwn i fod yn 394 00:18:15,750 --> 00:18:17,890 gwneud rhyw wall gwirio yma. 395 00:18:17,890 --> 00:18:19,040 Beth yw eich greddf yn dweud wrthych? 396 00:18:19,040 --> 00:18:22,480 Beth ddylwn i fod yn chwilio am cyn i mi ryddhau beth yw 397 00:18:22,480 --> 00:18:25,470 llinyn, aka y torgoch yn *? 398 00:18:25,470 --> 00:18:33,460 >> Dylid Fi 'n sylweddol yn gwirio os bydd myfyrwyr Nid yw braced i enw dot yn 399 00:18:33,460 --> 00:18:34,840 null cyfartal. 400 00:18:34,840 --> 00:18:40,400 Yna, bydd yn cael ei iawn i fynd yn ei flaen ac yn rhad ac am ddim y pwyntydd, ac yn yr un neu'r llall 401 00:18:40,400 --> 00:18:41,160 un hefyd. 402 00:18:41,160 --> 00:18:46,860 Os nad yw myfyrwyr braced i dŷ dot yn cyfartal i null, mae hyn yn awr yn gwarchod 403 00:18:46,860 --> 00:18:52,520 yn erbyn yr achos gornel lle GetString dychwelyd rhywbeth fel null. 404 00:18:52,520 --> 00:18:57,310 A gwelsom eiliad yn ôl, printf bydd gwarchod ni i fyny yma gan dim ond dweud 405 00:18:57,310 --> 00:18:58,990 null, sydd yn mynd i edrych yn rhyfedd. 406 00:18:58,990 --> 00:19:02,340 Ond o leiaf ni fydd yn segfault, fel yr ydym wedi ei weld. 407 00:19:02,340 --> 00:19:05,990 >> Wel, gadewch i mi wneud un peth arall yma. structs-0 yn fath o raglen dwp 408 00:19:05,990 --> 00:19:09,700 oherwydd fy mod yn mynd i mewn yr holl ddata hwn, ac yna ei fod yn colli unwaith y bydd y rhaglen yn dod i ben. 409 00:19:09,700 --> 00:19:10,940 Ond gadewch i mi fynd ymlaen a gwneud hyn. 410 00:19:10,940 --> 00:19:12,830 Gadewch imi wneud y derfynell ffenestr ychydig yn fwy. 411 00:19:12,830 --> 00:19:17,000 Gadewch imi wneud structs-1, sy'n yn fersiwn newydd o hyn. 412 00:19:17,000 --> 00:19:18,520 >> 'N annhymerus' chwyddo i mewn ychydig. 413 00:19:18,520 --> 00:19:21,620 Ac yn awr gadewch i mi redeg dot slaes structs-1. 414 00:19:21,620 --> 00:19:22,590 Enw'r Myfyriwr - 415 00:19:22,590 --> 00:19:31,500 David Mather, gadewch i ni wneud Rob Kirkland, gadewch i ni wneud Lauren Leverett. 416 00:19:31,500 --> 00:19:33,650 Beth sy'n ddiddorol yn awr yw hysbysiad - 417 00:19:33,650 --> 00:19:35,540 a dim ond yn gwybod hyn oherwydd Ysgrifennais y rhaglen - 418 00:19:35,540 --> 00:19:38,930 mae 'na ffeil nawr ar fy cyfredol cyfeiriadur o'r enw students.csv. 419 00:19:38,930 --> 00:19:40,420 Efallai y bydd rhai ohonoch wedi gweld hyn yn y byd go iawn. 420 00:19:40,420 --> 00:19:42,980 >> Beth yw ffeil CSV? 421 00:19:42,980 --> 00:19:44,170 Gwerthoedd atalnod-gwahanu. 422 00:19:44,170 --> 00:19:46,670 Mae'n fath o fel dyn gwael yn fersiwn o'r ffeil Excel. 423 00:19:46,670 --> 00:19:50,580 Mae'n tabl o resi a cholofnau sy'n gallwch agor mewn rhaglen fel Excel, 424 00:19:50,580 --> 00:19:51,800 neu Niferoedd ar Mac. 425 00:19:51,800 --> 00:19:55,180 >> Ac os ydw i'n agor y ffeil yma ar gedit, rybudd - ac nid y niferoedd yno. 426 00:19:55,180 --> 00:19:57,360 Dyna dim ond gedit dweud mi rhifau llinell. 427 00:19:57,360 --> 00:19:59,740 Sylwch ar y llinell gyntaf y ffeil yn David a Mather. 428 00:19:59,740 --> 00:20:01,450 Mae'r llinell nesaf yw Rob coma Kirkland. 429 00:20:01,450 --> 00:20:04,170 A'r drydedd linell yn Lauren coma Leverett. 430 00:20:04,170 --> 00:20:05,480 >> Felly, yr hyn yr wyf wedi creu? 431 00:20:05,480 --> 00:20:09,580 Rwyf bellach wedi ysgrifennu rhaglen C a effeithiol yn gallu cynhyrchu taenlenni 432 00:20:09,580 --> 00:20:11,840 y gellir eu hagor mewn rhaglen fel Excel. 433 00:20:11,840 --> 00:20:15,520 Nid yw pob bod cymhellol set ddata, ond os oes gennych darnau llawer mwy o 434 00:20:15,520 --> 00:20:18,440 data yr ydych yn ei eisiau trin a gwneud graffiau a 435 00:20:18,440 --> 00:20:21,260 fel, efallai bod hyn yn un ffordd i greu'r data. 436 00:20:21,260 --> 00:20:25,370 Ar ben hynny, CSVs mewn gwirionedd super gyffredin yn unig ar gyfer storio data syml - 437 00:20:25,370 --> 00:20:28,940 Yahoo Cyllid, er enghraifft, os ydych yn cael dyfyniadau stoc trwy eu hyn a elwir yn 438 00:20:28,940 --> 00:20:33,180 API, mae'r gwasanaeth yn rhad ac am ddim sy'n eich galluogi i cael stoc i fyny-i-y-dyddiad cyfredol 439 00:20:33,180 --> 00:20:35,650 dyfynbrisiau ar gyfer cwmnïau, maent yn rhoi data yn ôl yn y 440 00:20:35,650 --> 00:20:37,800 super fformat CSV syml. 441 00:20:37,800 --> 00:20:39,380 >> Felly sut wnaethom ni wneud hynny? 442 00:20:39,380 --> 00:20:42,530 Wel sylwi, mae'r rhan fwyaf o'r rhaglen hon yn bron yr un fath. 443 00:20:42,530 --> 00:20:46,870 Ond rhybudd i lawr yma, yn hytrach na phrint y myfyrwyr allan, ar-lein 35 444 00:20:46,870 --> 00:20:51,040 ymlaen, yr wyf yn honni fy mod yn arbed y myfyrwyr i ddisg, felly arbed ffeil. 445 00:20:51,040 --> 00:20:53,630 >> Felly sylwi Rwy'n datgan FILE * - 446 00:20:53,630 --> 00:20:57,260 nawr, mae hyn yn fath o anghysondeb yn C. Am ba bynnag reswm, FFEIL i gyd capiau, 447 00:20:57,260 --> 00:21:00,690 nad yw fel y rhan fwyaf o fathau data arall yn C. Ond mae hyn yn adeiledig yn 448 00:21:00,690 --> 00:21:02,320 math data, FILE *. 449 00:21:02,320 --> 00:21:05,900 A dwi'n datgan pwyntydd i ffeil, yw sut y gallwch chi feddwl am hynny. 450 00:21:05,900 --> 00:21:08,070 >> fopen golygu ffeil agored. 451 00:21:08,070 --> 00:21:09,470 Pa ffeil ydych chi eisiau eu hagor? 452 00:21:09,470 --> 00:21:12,620 Yr wyf am i agor ffeil y byddaf yn fympwyol ffoniwch students.csv. 453 00:21:12,620 --> 00:21:14,480 Y gallwn ei alw'n bod unrhyw beth yr wyf eisiau. 454 00:21:14,480 --> 00:21:15,200 >> Ac yna yn cymryd dyfalu. 455 00:21:15,200 --> 00:21:18,960 Beth mae'r ail ddadl i fopen yn ôl pob tebyg yn ei olygu? 456 00:21:18,960 --> 00:21:21,480 Iawn, w ar gyfer ysgrifennu, gallai yn r ar gyfer darllen. 457 00:21:21,480 --> 00:21:24,120 Mae yna i atodi os ydych yn am ychwanegu rhesi, ac nid 458 00:21:24,120 --> 00:21:25,200 ysgrifennu dros y holl beth. 459 00:21:25,200 --> 00:21:28,005 >> Ond yr wyf am i greu'r ffeil unwaith, felly byddaf yn defnyddio dyfyniad unquote w. 460 00:21:28,005 --> 00:21:31,880 Ac yr wyf yn gwybod mai dim ond o ôl darllen y dogfennau, neu'r dudalen dyn. 461 00:21:31,880 --> 00:21:35,100 Os nad yw ffeil yn null - mewn geiriau eraill, os bydd unrhyw beth yn mynd o'i le yno - 462 00:21:35,100 --> 00:21:37,820 gadewch i mi ailadrodd dros y fyfyrwyr 0-3. 463 00:21:37,820 --> 00:21:40,410 >> Ac yn awr sylwi mae yna rywbeth erioed felly ychydig yn wahanol 464 00:21:40,410 --> 00:21:42,110 am llinell 41 yma. 465 00:21:42,110 --> 00:21:42,960 Dyw hi ddim yn printf. 466 00:21:42,960 --> 00:21:46,530 Mae'n fprintf ar gyfer ffeil printf. 467 00:21:46,530 --> 00:21:47,790 Felly, mae'n mynd i ysgrifennu i ffeil. 468 00:21:47,790 --> 00:21:48,860 Pa ffeil? 469 00:21:48,860 --> 00:21:53,630 Mae'r un y mae ei pwyntydd eich bod yn nodi gan fod y ddadl gyntaf. 470 00:21:53,630 --> 00:21:55,940 >> Yna, rydym yn pennu llinyn fformat. 471 00:21:55,940 --> 00:21:59,660 Yna, rydym yn nodi pa llinyn yr ydym am ei plwg i mewn ar gyfer y cant yn gyntaf, a 472 00:21:59,660 --> 00:22:04,320 yna newidyn arall neu yr ail cant s. 473 00:22:04,320 --> 00:22:06,760 Yna rydym yn cau'r ffeil gyda mmap. 474 00:22:06,760 --> 00:22:09,380 Nag yr oeddwn yn rhad ac am ddim y cof fel o'r blaen, er bod Dylwn i fynd yn ôl i mewn ac ychwanegu 475 00:22:09,380 --> 00:22:10,540 rhai gwiriadau ar gyfer null. 476 00:22:10,540 --> 00:22:12,090 >> A dyna ni. 477 00:22:12,090 --> 00:22:16,960 fopen, fprintf, mmap rhoi i mi y gallu i greu ffeiliau testun. 478 00:22:16,960 --> 00:22:19,640 Yn awr, byddwch yn gweld mewn datrys set pump, sy'n cynnwys delweddau, byddwch yn defnyddio 479 00:22:19,640 --> 00:22:20,990 ffeiliau deuaidd yn lle hynny. 480 00:22:20,990 --> 00:22:24,200 Ond yn y bôn, y syniad yw yr un fath, er bod y swyddogaethau a wnewch chi helpu 481 00:22:24,200 --> 00:22:28,710 gweld yn ychydig yn wahanol. 482 00:22:28,710 --> 00:22:32,580 >> Felly taith corwynt, ond byddwch yn cael yn llawer rhy gyfarwydd â ffeil I/O-- 483 00:22:32,580 --> 00:22:34,960 mewnbwn ac allbwn - gyda pset pump. 484 00:22:34,960 --> 00:22:38,607 Ac unrhyw gwestiynau am y sylfaenol cychwynnol yma? 485 00:22:38,607 --> 00:22:39,857 Yeah? 486 00:22:39,857 --> 00:22:41,880 487 00:22:41,880 --> 00:22:43,710 >> Beth os ydych yn ceisio i ryddhau gwerth nwl? 488 00:22:43,710 --> 00:22:48,880 Yr wyf yn credu, oni bai am ddim wedi gotten hawdd ei ddefnyddio ychydig yn fwy, gallwch 489 00:22:48,880 --> 00:22:49,890 o bosibl segfault. 490 00:22:49,890 --> 00:22:54,160 Basio null yn ddrwg oherwydd nid wyf yn yn credu ddim trafferthu i wirio ar eich rhan, 491 00:22:54,160 --> 00:22:57,330 oherwydd byddai o bosibl fod yn wastraff o amser iddo wneud ei hun am 492 00:22:57,330 --> 00:22:59,022 pawb yn y byd. 493 00:22:59,022 --> 00:23:00,590 Gwestiwn da, er. 494 00:23:00,590 --> 00:23:04,300 >> Mae pob hawl, felly y math hwn o yn cael ni i bwnc diddorol. 495 00:23:04,300 --> 00:23:07,010 Thema'r broblem set bump oed yn fforensig. 496 00:23:07,010 --> 00:23:08,420 O leiaf dyna cyfran y broblem a osodwyd. 497 00:23:08,420 --> 00:23:12,030 Fforensig yn gyffredinol yn cyfeirio at y adennill gwybodaeth ofyn hwnnw neu 498 00:23:12,030 --> 00:23:14,110 Efallai na fydd wedi eu dileu yn fwriadol. 499 00:23:14,110 --> 00:23:18,680 Ac felly yr wyf yn meddwl y byddwn i'n rhoi i chi cyflym blas o'r hyn sy'n digwydd mewn gwirionedd ar yr holl 500 00:23:18,680 --> 00:23:21,230 y tro hwn o dan y cwfl ar eich cyfrifiadur. 501 00:23:21,230 --> 00:23:23,960 >> Er enghraifft, os oes gennych tu mewn i'ch gliniadur neu eich bwrdd gwaith cyfrifiadur 502 00:23:23,960 --> 00:23:28,040 'n anawdd cathrena, mae'n naill ai fecanyddol ddyfais sydd mewn gwirionedd yn troelli - 503 00:23:28,040 --> 00:23:31,650 mae pethau crwn o'r enw platiau sy'n edrych yn eithaf hoffi hyn yr wyf 504 00:23:31,650 --> 00:23:34,540 newydd gael i fyny ar y sgrîn yma, er mae hyn yn dod yn fwyfwy hen ysgol. 505 00:23:34,540 --> 00:23:37,370 Mae hwn yn dair-a-a-hanner-modfedd 'n anawdd cathrena. 506 00:23:37,370 --> 00:23:40,070 A thair a hanner modfedd yn cyfeirio o gyda y peth pan fyddwch yn gosod ei 507 00:23:40,070 --> 00:23:40,890 mewn cyfrifiadur. 508 00:23:40,890 --> 00:23:44,890 >> Llawer ohonoch guys yn eich gliniaduron yn awr rhaid i gyriannau solet-wladwriaeth, neu AGCau, 509 00:23:44,890 --> 00:23:46,260 sydd wedi dim rhannau symudol. 510 00:23:46,260 --> 00:23:49,170 Maent yn fwy fel RAM ac yn llai fel dyfeisiau mecanyddol hyn. 511 00:23:49,170 --> 00:23:51,450 Ond mae'r syniadau yn dal i fod yr un fath, yn sicr y maent yn ymwneud 512 00:23:51,450 --> 00:23:52,790 i broblem a osodwyd pump. 513 00:23:52,790 --> 00:23:57,400 >> Ac os ydych yn meddwl am nawr 'n anawdd cathrena cynrychioli fod yn gylch, sy'n 514 00:23:57,400 --> 00:23:58,930 'N annhymerus' yn tynnu fel hyn yma. 515 00:23:58,930 --> 00:24:02,290 Pan fyddwch yn creu ffeil ar eich cyfrifiadur, a yw'n 'an SSD, neu mewn 516 00:24:02,290 --> 00:24:06,610 yr achos hwn, mae 'n anawdd cathrena ysgol hŷn, y ffeil yn cynnwys darnau lluosog. 517 00:24:06,610 --> 00:24:10,510 Gadewch i ni ddweud ei fod yn hyn 0 ac 1, criw cyfan o 0s a 1s. 518 00:24:10,510 --> 00:24:11,660 Felly, mae hyn yn fy disg caled cyfan. 519 00:24:11,660 --> 00:24:13,225 Mae hyn yn debyg ffeil eithaf mawr. 520 00:24:13,225 --> 00:24:18,080 Ac mae'n defnyddio hyd yr 0au ac 1 ar y cyfran o'r ddysgl corfforol. 521 00:24:18,080 --> 00:24:19,750 >> Wel, beth yw y rhan corfforol? 522 00:24:19,750 --> 00:24:25,310 Wel, mae'n ymddangos fod ar yriant caled, o leiaf o'r math hwn, mae 523 00:24:25,310 --> 00:24:27,340 gronynnau magnetig bach bach hyn. 524 00:24:27,340 --> 00:24:32,630 Ac maent yn y bôn wedi gogledd a polion de iddynt, felly os ydych yn 525 00:24:32,630 --> 00:24:35,710 troi un o ronynnau magnetig hynny y modd hwn, efallai y byddwch yn dweud ei fod yn 526 00:24:35,710 --> 00:24:36,720 cynrychioli 1. 527 00:24:36,720 --> 00:24:39,340 Ac os yw'n wyneb i waered i'r de i gogledd, efallai y byddwch yn dweud ei fod yn 528 00:24:39,340 --> 00:24:40,390 cynrychioli 0. 529 00:24:40,390 --> 00:24:43,660 >> Felly, yn y byd corfforol go iawn, mae hynny'n sut y gallech gynrychioli rhywbeth yn 530 00:24:43,660 --> 00:24:45,670 cyflwr deuaidd o 0 a 1. 531 00:24:45,670 --> 00:24:46,720 Felly dyna i gyd bydd ffeil yn. 532 00:24:46,720 --> 00:24:49,300 Mae criw cyfan o magnetig gronynnau sy'n eu ffordd hon neu 533 00:24:49,300 --> 00:24:51,920 y ffordd hon, patrymau creu o 0s a 1s. 534 00:24:51,920 --> 00:24:56,760 >> Ond mae'n troi allan pan fyddwch yn arbed ffeil, rhywfaint o wybodaeth yn cael ei arbed ar wahân. 535 00:24:56,760 --> 00:25:00,000 Felly, mae hyn ychydig yn dabl, cyfeiriadur, fel petai. 536 00:25:00,000 --> 00:25:05,810 A byddaf yn galw hyn yn enw golofn, a 'N annhymerus' galw lleoliad y golofn hon. 537 00:25:05,810 --> 00:25:08,850 >> Ac yr wyf i'n mynd i ddweud, mae'n debyg hwn yw fy ailddechrau. 538 00:25:08,850 --> 00:25:14,050 Fy resume.doc yn cael ei storio ar lleoliad, gadewch i ni ddweud 123. 539 00:25:14,050 --> 00:25:15,390 Rwyf bob amser yn mynd am y nifer hwnnw. 540 00:25:15,390 --> 00:25:18,810 Ond digon yw dweud mai dim ond fel yn RAM, gallwch gymryd gyriant caled 541 00:25:18,810 --> 00:25:22,350 mae hynny'n gigabeit neu 200 gigabeit neu terabeit, a gallwch 542 00:25:22,350 --> 00:25:23,750 nifer yr holl bytes. 543 00:25:23,750 --> 00:25:26,480 Gallwch rifedi ar yr holl ddarnau o 8 did. 544 00:25:26,480 --> 00:25:29,030 >> Felly, byddwn yn dweud bod hyn yn yn 123 lleoliad. 545 00:25:29,030 --> 00:25:32,070 Felly, y cyfeiriadur hwn tu mewn fy gweithredu system cofio bod fy 546 00:25:32,070 --> 00:25:34,250 ailddechrau ar leoliad 123. 547 00:25:34,250 --> 00:25:36,850 Ond mae'n mynd yn ddiddorol pan fyddwch yn dileu ffeil. 548 00:25:36,850 --> 00:25:37,820 >> Felly, er enghraifft - 549 00:25:37,820 --> 00:25:40,790 , a diolch byth, mae'r rhan fwyaf o'r byd dal ar hyn - beth sy'n digwydd pan 550 00:25:40,790 --> 00:25:45,040 rydych yn llusgo ffeil ar eich Mac OS Trash neu 'ch Ffenestri Recycle Bin? 551 00:25:45,040 --> 00:25:48,290 552 00:25:48,290 --> 00:25:50,510 Beth yw pwrpas o wneud hynny? 553 00:25:50,510 --> 00:25:53,860 Mae'n amlwg i gael gwared ar y ffeil, ond beth mae'r weithred o lusgo a 554 00:25:53,860 --> 00:25:57,550 gollwng i mewn i'ch Trash neu eich Recycle Bin gwneud ar gyfrifiadur? 555 00:25:57,550 --> 00:25:59,230 >> Dim byd o gwbl, mewn gwirionedd. 556 00:25:59,230 --> 00:26:00,320 Mae'n union fel ffolder. 557 00:26:00,320 --> 00:26:01,800 Mae'n ffolder arbennig, i fod yn sicr. 558 00:26:01,800 --> 00:26:04,460 Ond a yw'n mewn gwirionedd yn dileu'r ffeil? 559 00:26:04,460 --> 00:26:06,780 >> Wel, na, oherwydd bod rhai ohonoch yn ôl pob tebyg wedi bod yn debyg, oh damn, na wnaethoch chi 560 00:26:06,780 --> 00:26:07,420 yn ei olygu i wneud hynny. 561 00:26:07,420 --> 00:26:09,130 Felly, byddwch yn blygu chlecia 'r Sbwriel neu Recycle Bin. 562 00:26:09,130 --> 00:26:11,630 Rydych chi wedi poked o gwmpas ac rydych chi wedi adennill y ffeil yn unig gan ei lusgo 563 00:26:11,630 --> 00:26:12,110 allan o yno. 564 00:26:12,110 --> 00:26:14,420 Felly, yn amlwg, nid yw o reidrwydd ei ddileu. 565 00:26:14,420 --> 00:26:15,990 >> OK, rydych yn gallach na hynny. 566 00:26:15,990 --> 00:26:18,860 Rydych yn gwybod mai dim ond llusgo i mewn i'r Nid yw sbwriel neu Recycle Bin yn golygu 567 00:26:18,860 --> 00:26:19,930 eich bod yn gwagio'r sbwriel. 568 00:26:19,930 --> 00:26:24,110 Felly, byddwch yn mynd i fyny at y fwydlen, ac yr ydych yn dweud Trash wag neu Gwag Recycle Chist. 569 00:26:24,110 --> 00:26:25,360 Yna, beth sy'n digwydd? 570 00:26:25,360 --> 00:26:29,070 571 00:26:29,070 --> 00:26:32,530 >> Yeah, felly mae'n cael ei ddileu yn fwy felly. 572 00:26:32,530 --> 00:26:37,660 Ond y cyfan sy'n digwydd yw hyn. 573 00:26:37,660 --> 00:26:45,350 Mae'r cyfrifiadur yn anghofio ble Roedd resume.doc. 574 00:26:45,350 --> 00:26:47,400 >> Ond nid yw hyn wedi newid yn ôl pob golwg yn y llun? 575 00:26:47,400 --> 00:26:51,390 576 00:26:51,390 --> 00:26:55,570 Y darnau, y 0s a 1s y gallaf wneud cais yn ar y safle o ryw agwedd gorfforol 577 00:26:55,570 --> 00:26:56,280 y caledwedd. 578 00:26:56,280 --> 00:26:57,110 Maen nhw'n dal i fod yno. 579 00:26:57,110 --> 00:26:58,930 Dim ond y cyfrifiadur anghofio beth ydynt. 580 00:26:58,930 --> 00:27:03,160 >> Felly, mae'n cael ei rhyddhau yn y bôn y ffeil yn darnau fel y gellir eu hailddefnyddio. 581 00:27:03,160 --> 00:27:06,940 Ond nid hyd nes y byddwch yn creu fwy o ffeiliau, a ffeiliau mwy, a mwy o ffeiliau yn 582 00:27:06,940 --> 00:27:12,150 probabilistically, y rhai 0s a 1s, gronynnau magnetig hynny, yn cael ei ailddefnyddio, 583 00:27:12,150 --> 00:27:16,220 ochr upside neu i'r dde i fyny, ar gyfer ffeiliau eraill, 0s a 1s. 584 00:27:16,220 --> 00:27:17,980 >> Felly, mae gennych ffenestr hon o amser. 585 00:27:17,980 --> 00:27:19,860 Ac nid yw'n o rhagweladwy hyd, mewn gwirionedd. 586 00:27:19,860 --> 00:27:22,240 Mae'n dibynnu ar faint eich caled gyrru a faint o ffeiliau sydd gennych a 587 00:27:22,240 --> 00:27:23,490 pa mor gyflym y byddwch yn gwneud rhai newydd. 588 00:27:23,490 --> 00:27:27,050 Ond mae ffenestr hon o amser yn ystod y mae'r ffeil yn dal i fod yn berffaith 589 00:27:27,050 --> 00:27:27,770 adferadwy. 590 00:27:27,770 --> 00:27:31,050 >> Felly, os ydych chi erioed wedi defnyddio rhaglenni fel McAfee neu Norton i geisio adennill 591 00:27:31,050 --> 00:27:35,680 data, i gyd maent yn ei wneud yw ceisio adennill y cyfeiriadur hyn a elwir i 592 00:27:35,680 --> 00:27:37,340 chyfrif i maes ble mae eich ffeil yn. 593 00:27:37,340 --> 00:27:40,605 Ac weithiau bydd Norton a dweud, ffeil yn 93% adferadwy. 594 00:27:40,605 --> 00:27:42,020 Wel, beth mae hynny'n ei olygu? 595 00:27:42,020 --> 00:27:45,690 Mai dim ond yn golygu bod rhai ffeil eraill a ddaeth i ben i fyny gan ddefnyddio gyd-ddigwyddiad, yn dweud, 596 00:27:45,690 --> 00:27:48,920 darnau hynny allan o'ch ffeil wreiddiol. 597 00:27:48,920 --> 00:27:51,950 >> Felly, beth mae'n ei olygu mewn gwirionedd wrth adennill data? 598 00:27:51,950 --> 00:27:55,720 Wel, os nad oes gennych rhywbeth fel Norton cyn-osod ar eich cyfrifiadur, 599 00:27:55,720 --> 00:27:59,510 y gorau y gallwch weithiau wneud yw edrych ar y disg caled cyfan yn chwilio am 600 00:27:59,510 --> 00:28:00,510 batrymau o ddarnau. 601 00:28:00,510 --> 00:28:05,350 Ac un o themâu broblem set bump oed yn y byddwch yn chwilio'r 602 00:28:05,350 --> 00:28:09,570 cyfateb i 'n anawdd cathrena, a fforensig delwedd o gerdyn fflach cryno o 603 00:28:09,570 --> 00:28:13,660 camera digidol, chwilio am y 0s a 1s sydd fel arfer, gyda chyfraddau uchel o 604 00:28:13,660 --> 00:28:16,720 tebygolrwydd, yn cynrychioli dechrau o ddelwedd JPEG. 605 00:28:16,720 --> 00:28:21,120 >> A allwch chi guys adennill delweddau hynny gan dybio, os ydw i'n gweld y patrwm hwn o 606 00:28:21,120 --> 00:28:24,380 darnau ar y ddelwedd fforensig, gyda tebygolrwydd uchel, sy'n nodi 607 00:28:24,380 --> 00:28:25,650 ddechrau JPEG. 608 00:28:25,650 --> 00:28:29,520 Ac os ydw i'n gweld yr un patrwm eto, yn ôl pob tebyg yn nodi dechrau 609 00:28:29,520 --> 00:28:32,440 JPEG arall, ac un arall JPEG, a JPEG arall. 610 00:28:32,440 --> 00:28:34,970 Ac mae hyn yn nodweddiadol sut Bydd data adferiad yn gweithio. 611 00:28:34,970 --> 00:28:37,870 Beth sy'n neis am JPEG hyd yn oed er y fformat ffeil ei hun braidd yn 612 00:28:37,870 --> 00:28:44,400 gymhleth, ddechrau pob fath ffeil mewn gwirionedd yn eithaf adnabyddadwy 613 00:28:44,400 --> 00:28:47,370 ac yn syml, fel y gwelwch, os nad ydych wedi eisoes. 614 00:28:47,370 --> 00:28:50,270 >> Felly, gadewch i ni edrych yn agosach o dan y cwfl yn union yr hyn wedi bod yn 615 00:28:50,270 --> 00:28:53,360 mynd ymlaen, a beth yw'r rhain 0s a 1s nhw, er mwyn rhoi ychydig yn fwy o rydych 616 00:28:53,360 --> 00:28:55,330 cyd-destun ar gyfer yr her arbennig. 617 00:28:55,330 --> 00:28:55,510 >> [VIDEO Playback] 618 00:28:55,510 --> 00:28:58,700 >> -Lle mae eich PC storio'r rhan fwyaf o ei data parhaol. 619 00:28:58,700 --> 00:29:03,390 I wneud hynny, mae'r data yn teithio o RAM ynghyd â signalau meddalwedd sy'n dweud 620 00:29:03,390 --> 00:29:06,110 y disg caled sut i storio'r data hwnnw. 621 00:29:06,110 --> 00:29:09,410 Mae'r cylchedau gyriant caled cyfieithu signalau hynny yn foltedd 622 00:29:09,410 --> 00:29:10,870 amrywiadau. 623 00:29:10,870 --> 00:29:14,970 Mae'r rhain, yn eu tro, rheoli y gyriant caled rannau symudol, mae rhai o'r ychydig 624 00:29:14,970 --> 00:29:17,910 rhannau symudol ar ôl yn y cyfrifiadurol modern. 625 00:29:17,910 --> 00:29:22,130 >> Mae rhai o'r signalau rheoli modur sy'n troelli platiau metel-gorchuddio. 626 00:29:22,130 --> 00:29:25,470 Mae eich data yn cael ei storio mewn gwirionedd ar y platiau hyn. 627 00:29:25,470 --> 00:29:28,610 Signalau eraill yn symud y darllen / ysgrifennu penaethiaid i ddarllen neu 628 00:29:28,610 --> 00:29:30,710 ysgrifennu data ar y platiau. 629 00:29:30,710 --> 00:29:35,450 Mae'r peiriannau mor fanwl bod dynol Ni allai hyd yn oed gwallt pasio rhwng y 630 00:29:35,450 --> 00:29:37,280 penaethiaid a platiau nyddu. 631 00:29:37,280 --> 00:29:40,316 Eto i gyd, mae'r cyfan yn gweithio ar gyflymder gwych. 632 00:29:40,316 --> 00:29:40,660 >> [VIDEO END Playback] 633 00:29:40,660 --> 00:29:42,190 >> DAVID Malan: Zoom mewn ychydig ddyfnach awr ar yr hyn sydd 634 00:29:42,190 --> 00:29:44,360 mewn gwirionedd ar y platiau hynny. 635 00:29:44,360 --> 00:29:44,720 >> [VIDEO Playback] 636 00:29:44,720 --> 00:29:47,660 >> -Gadewch i ni edrych ar yr hyn rydym yn unig Gwelodd yn araf. 637 00:29:47,660 --> 00:29:51,710 Pan fydd pwls byr o'r trydan yn anfon at y pennaeth darllen / ysgrifennu, os fflipio 638 00:29:51,710 --> 00:29:54,650 ar electromagnetig bach ar gyfer ffracsiwn o eiliad. 639 00:29:54,650 --> 00:29:58,970 Mae'r magnet yn creu maes, sy'n yn newid y polaredd a tiny, bach 640 00:29:58,970 --> 00:30:02,850 cyfran o'r gronynnau metel a cot pob wyneb plât. 641 00:30:02,850 --> 00:30:05,940 >> Mae cyfres patrwm o hyn bach, ardaloedd a godir i fyny ar y ddisg 642 00:30:05,940 --> 00:30:08,470 yn cynrychioli ychydig yn un o data yn y rhif deuaidd 643 00:30:08,470 --> 00:30:10,530 system a ddefnyddir gan gyfrifiaduron. 644 00:30:10,530 --> 00:30:13,775 Yn awr, os yw'r cerrynt yn cael ei anfon un ffordd trwy'r darllen / ysgrifennu pen, yr ardal 645 00:30:13,775 --> 00:30:15,970 yn polarized mewn un cyfeiriad. 646 00:30:15,970 --> 00:30:17,950 Os yw'r cerrynt yn cael ei anfon yn y cyfeiriad arall, yr 647 00:30:17,950 --> 00:30:19,930 polareiddio ei wyrdroi. 648 00:30:19,930 --> 00:30:22,370 >> Sut y byddwch yn cael data oddi ar y disg galed? 649 00:30:22,370 --> 00:30:24,090 Dim ond gwrthdroi'r broses. 650 00:30:24,090 --> 00:30:26,550 Felly, mae'n y gronynnau ar y ddisg bod yn cael y cerrynt yn y 651 00:30:26,550 --> 00:30:27,960 darllen / ysgrifennu pen symud. 652 00:30:27,960 --> 00:30:30,700 Rhoi at ei gilydd miliynau o hyn segmentau magnetized, a 653 00:30:30,700 --> 00:30:32,160 gennych ffeil. 654 00:30:32,160 --> 00:30:36,060 >> Yn awr, y darnau o ffeil unigol gall cael eu gwasgaru ar draws ymgyrch yn ei 655 00:30:36,060 --> 00:30:39,970 platiau, math o fel y llanast o bapurau ar eich desg. 656 00:30:39,970 --> 00:30:43,500 Felly ffeil ychwanegol arbennig yn cadw golwg o lle mae popeth yn. 657 00:30:43,500 --> 00:30:45,985 Peidiwch â ydych yn dymuno oedd gennych rhywbeth fel 'na? 658 00:30:45,985 --> 00:30:46,470 >> [VIDEO END Playback] 659 00:30:46,470 --> 00:30:47,820 >> DAVID Malan: OK, yn ôl pob tebyg peidio. 660 00:30:47,820 --> 00:30:52,070 Felly, faint ohonoch guys Tyfodd i fyny gyda hyn? 661 00:30:52,070 --> 00:30:53,970 Iawn, felly mae'n llai a llai o dwylo bob blwyddyn. 662 00:30:53,970 --> 00:30:56,550 Ond dw i'n falch eich bod yn o leiaf cyfarwydd gyda nhw, gan fod hwn a'n hunain 663 00:30:56,550 --> 00:31:00,520 llyfr demo, yn anffodus, yn marw yn iawn araf marwolaeth yma yn gyfarwydd. 664 00:31:00,520 --> 00:31:04,010 >> Ond mae hyn yn hyn yr wyf, o leiaf, yn ôl yn ysgol yn uchel, defnydd a ddefnyddir ar gyfer copïau wrth gefn. 665 00:31:04,010 --> 00:31:08,110 Ac roedd yn anhygoel, oherwydd eich bod Gallai storio 1.4 megabeit ar 666 00:31:08,110 --> 00:31:08,930 y ddisg penodol. 667 00:31:08,930 --> 00:31:12,260 Ac roedd hyn yn y fersiwn dwysedd uchel, fel y nodir gan y HD, sydd wedi 668 00:31:12,260 --> 00:31:14,240 sy'n golygu cyn fideos HD heddiw. 669 00:31:14,240 --> 00:31:16,400 >> Dwysedd safonol yn 800 cilobeit. 670 00:31:16,400 --> 00:31:18,640 A chyn hynny, roedd Disgiau 400-cilobeit. 671 00:31:18,640 --> 00:31:23,120 A chyn hynny, roedd 5 a 1/4 disgiau modfedd, a oedd yn wirioneddol hyblyg, 672 00:31:23,120 --> 00:31:25,680 ac ychydig yn ehangach ac yn dalach nag y pethau hyn yma. 673 00:31:25,680 --> 00:31:29,150 Ond gallwch chi mewn gwirionedd yn gweld yr hyn a elwir agwedd hyblyg o ddisgiau hyn. 674 00:31:29,150 --> 00:31:32,630 >> Ac yn swyddogaethol, eu bod mewn gwirionedd yn eithaf tebyg i drives caled yn 675 00:31:32,630 --> 00:31:33,570 lleiaf math hwn. 676 00:31:33,570 --> 00:31:37,270 Unwaith eto, AGCau mewn cyfrifiaduron newydd gweithio ychydig yn wahanol. 677 00:31:37,270 --> 00:31:41,530 Ond os byddwch yn symud y tab metel bach, gallwch chi mewn gwirionedd yn gweld llawer o cwci, 678 00:31:41,530 --> 00:31:42,560 neu platiad. 679 00:31:42,560 --> 00:31:43,830 >> Dyw hi ddim yn metel fel yr un yma. 680 00:31:43,830 --> 00:31:46,000 Mae hyn yn un mewn gwirionedd rhai rhatach deunydd plastig. 681 00:31:46,000 --> 00:31:46,750 A ydych yn gallu gwneud rhyw fath o wiggle hynny. 682 00:31:46,750 --> 00:31:50,310 A ydych chi wedi trully newydd dileu oddi ar rhai nifer o ddarnau neu ronynnau magnetig 683 00:31:50,310 --> 00:31:51,220 o'r disg hwn. 684 00:31:51,220 --> 00:31:52,710 >> Felly, diolch byth, does dim byd yn ei gylch. 685 00:31:52,710 --> 00:31:55,790 Os y peth sydd yn y ffordd - ac maent yn cwmpasu eich llygaid a rhai eich cymydog - 686 00:31:55,790 --> 00:31:58,865 gallwch jyst fath o dynnu hyn cyfan oddi ar y wain fel 'na. 687 00:31:58,865 --> 00:32:01,900 Ond mae ychydig o gwanwyn, felly byddwch yn ymwybodol o hynny gyda'ch llygaid. 688 00:32:01,900 --> 00:32:03,620 Felly, rydych bellach wirioneddol ddisg hyblyg. 689 00:32:03,620 --> 00:32:07,090 >> A beth sy'n hynod am hyn yw bod cymaint â hyn yn 690 00:32:07,090 --> 00:32:10,830 cynrychiolaeth ar raddfa fach o mwy o faint 'n anawdd cathrena, y pethau hyn yn super, 691 00:32:10,830 --> 00:32:11,590 syml super. 692 00:32:11,590 --> 00:32:15,170 Os ydych yn pinsied gwaelod ohono, nawr bod y peth metel wedi cychwyn, a croen 693 00:32:15,170 --> 00:32:20,990 yn agored, popeth sydd yn ddau ddarn o yn teimlo a'r hyn a elwir yn ddisg hyblyg 694 00:32:20,990 --> 00:32:22,930 gyda darn o fetel ar y tu mewn. 695 00:32:22,930 --> 00:32:25,990 >> Ac mae mynd hanner y gynnwys fy disg ar. 696 00:32:25,990 --> 00:32:27,540 Mae mynd hanner arall ohonynt. 697 00:32:27,540 --> 00:32:31,375 Ond dyna i gyd oedd yn nyddu y tu mewn ar eich cyfrifiadur yn y dyddiau a fu. 698 00:32:31,375 --> 00:32:35,220 699 00:32:35,220 --> 00:32:38,310 >> Ac eto, i roi hyn mewn persbectif, pa mor fawr yn y rhan fwyaf o'ch 700 00:32:38,310 --> 00:32:39,560 galed yn gyrru y dyddiau hyn? 701 00:32:39,560 --> 00:32:41,960 702 00:32:41,960 --> 00:32:46,230 500 gigabeit, a terabeit, efallai mewn cyfrifiadur n ben-desg, 2 terabeit, 3 703 00:32:46,230 --> 00:32:47,630 terabeit, 4 terabeit, dde? 704 00:32:47,630 --> 00:32:52,480 Mae hwn yn un megabeit, rhoi neu gymryd, Ni all hyd yn oed yn gosod MP3 nodweddiadol 705 00:32:52,480 --> 00:32:55,310 anymore y dyddiau hyn, neu ryw ffeil cerddoriaeth tebyg. 706 00:32:55,310 --> 00:32:59,500 >> Felly, ychydig o cofrodd i chi heddiw, ac hefyd i helpu contextualize beth 707 00:32:59,500 --> 00:33:03,570 byddwn yn cymryd yn ganiataol bellach yn broblem yn gosod pump. 708 00:33:03,570 --> 00:33:04,820 Felly, y rhai yw dy fêts di i gadw. 709 00:33:04,820 --> 00:33:07,340 710 00:33:07,340 --> 00:33:13,370 Felly, gadewch i mi newid i ble bydd treulio'r pset nesaf hefyd. 711 00:33:13,370 --> 00:33:18,470 Felly, rydym yn awr wedi gosod dudalen hon am - oh, un neu ddau o gyhoeddiadau yn gyflym. 712 00:33:18,470 --> 00:33:21,730 >> Mae hyn Dydd Gwener, os hoffech ymuno CS50 am ginio, ewch i'r lle arferol, 713 00:33:21,730 --> 00:33:23,610 cs50.net/rsvp. 714 00:33:23,610 --> 00:33:25,100 Ac prosiect terfynol - 715 00:33:25,100 --> 00:33:28,520 felly unol â'r maes llafur, rydym wedi postio y manyleb y prosiect terfynol yn barod. 716 00:33:28,520 --> 00:33:31,410 Sylweddoli nad yw hynny'n golygu mae'n arbennig o ddyledus cyn bo hir. 717 00:33:31,410 --> 00:33:33,990 Mae wedi postio, mewn gwirionedd, dim ond i gael rydych guys meddwl am y peth. 718 00:33:33,990 --> 00:33:37,620 Ac yn wir, ceir lleiafrif sylweddol super Bydd canran y byddwch yn mynd i'r afael â 719 00:33:37,620 --> 00:33:40,780 prosiectau terfynol ar ddeunydd yr ydym yn nad ydynt wedi gotten hyd yn oed yn y dosbarth, 720 00:33:40,780 --> 00:33:42,730 ond byddant mor gynnar â'r wythnos nesaf. 721 00:33:42,730 --> 00:33:45,530 >> Rhybudd, fodd bynnag, bod y fanyleb yn galw am ychydig o elfennau gwahanol o'r 722 00:33:45,530 --> 00:33:46,190 prosiect terfynol. 723 00:33:46,190 --> 00:33:49,590 Roedd y cyntaf, mewn ychydig wythnosau, yn cyn-gynnig, e-bost 'n bert achlysurol i 724 00:33:49,590 --> 00:33:52,760 eich TF i ddweud wrtho neu beth yr ydych chi'n meddwl am ar gyfer eich prosiect, gyda 725 00:33:52,760 --> 00:33:53,650 Dim Ymrwymiad. 726 00:33:53,650 --> 00:33:56,710 Bydd cynnig yn eich benodol ymrwymiad, gan ddywedyd, yma, mae hyn yn beth 727 00:33:56,710 --> 00:33:57,770 Hoffwn i wneud ar gyfer fy mhrosiect. 728 00:33:57,770 --> 00:33:58,250 Beth yn eich barn chi? 729 00:33:58,250 --> 00:33:58,650 Rhy fawr? 730 00:33:58,650 --> 00:33:59,145 Rhy fach? 731 00:33:59,145 --> 00:34:00,330 Yw'n hawdd ei reoli? 732 00:34:00,330 --> 00:34:02,230 A ydych yn gweld y spec am fwy o fanylion. 733 00:34:02,230 --> 00:34:05,060 >> Cwpl o wythnosau ar ôl hynny yw statws yr adroddiad, sydd yn yr un modd 734 00:34:05,060 --> 00:34:08,260 e-bost achlysurol i'ch TF i ddweud yn union pa mor ymhell tu ôl i chi yn eich derfynol 735 00:34:08,260 --> 00:34:12,360 gweithredu prosiect, wedi'i ddilyn gan y CS50 Hackathon y mae pawb 736 00:34:12,360 --> 00:34:17,520 yn gwahodd, a fydd yn ddigwyddiad o 20:00 ar un noson hyd 7:00 737 00:34:17,520 --> 00:34:19,150 AC y bore nesaf. 738 00:34:19,150 --> 00:34:22,560 Pizza, ac efallai fy mod wedi crybwyll yn yr wythnos sero, wil yn cael ei weini am 09:00, 739 00:34:22,560 --> 00:34:24,120 Bwyd Tsieineaidd yn 01:00. 740 00:34:24,120 --> 00:34:27,929 Ac os ydych chi'n dal i fod ar ddihun yn y 5:00, byddwn yn mynd â chi i IHOP i frecwast. 741 00:34:27,929 --> 00:34:31,310 >> Felly mae'r Hackathon yn un o'r rhai mwyaf profiadau cofiadwy yn y dosbarth. 742 00:34:31,310 --> 00:34:35,290 Yna y gweithredu yn ddyledus, a yna bydd y hinsoddol CS50 Deg. 743 00:34:35,290 --> 00:34:38,070 Mwy o fanylion am bob un o'r rhain yn ystod yr wythnosau i ddod. 744 00:34:38,070 --> 00:34:40,739 >> Ond gadewch i ni fynd yn ôl at rywbeth hen ysgol - 745 00:34:40,739 --> 00:34:41,920 unwaith eto, arae. 746 00:34:41,920 --> 00:34:45,040 Felly amrywiaeth yn braf, oherwydd mae'n eu datrys problemau fel y gwelsom yn unig 747 00:34:45,040 --> 00:34:49,290 hyn o bryd yn ôl gyda strwythurau fyfyrwyr cael ychydig allan o reolaeth os ydym 748 00:34:49,290 --> 00:34:52,405 am gael un myfyriwr, myfyriwr dau, myfyriwr tri, dot dot myfyriwr dot, 749 00:34:52,405 --> 00:34:54,400 ryw nifer mympwyol o fyfyrwyr. 750 00:34:54,400 --> 00:34:58,850 >> Felly araeau, ychydig wythnosau yn ôl, Plymiodd yn ac yn datrys ein holl broblemau o beidio 751 00:34:58,850 --> 00:35:03,340 wybod ymlaen llaw faint o bethau o ryw fath y gallem ei eisiau. 752 00:35:03,340 --> 00:35:07,390 Ac rydym wedi gweld y gall structs ein helpu trefnu ein cod ymhellach ac yn cadw 753 00:35:07,390 --> 00:35:11,660 newidynnau gysyniadol debyg, fel enw a thŷ, gyda'i gilydd, er mwyn i ni 754 00:35:11,660 --> 00:35:15,570 gall eu trin fel un endid, y tu mewn y mae yn ddarnau llai. 755 00:35:15,570 --> 00:35:17,810 >> Ond mae araeau rai anfanteision. 756 00:35:17,810 --> 00:35:19,780 Beth yw rhai o'r anfanteision rydym wedi dod ar eu traws 757 00:35:19,780 --> 00:35:22,320 gyda rhesi hyd yn hyn? 758 00:35:22,320 --> 00:35:23,450 Beth sy'n bod? 759 00:35:23,450 --> 00:35:28,130 Maint sefydlog - felly hyd yn oed er eich bod efallai yn gallu dyrannu cof ar gyfer 760 00:35:28,130 --> 00:35:32,310 amrywiaeth, unwaith y byddwch yn gwybod faint o fyfyrwyr gennych, faint o gymeriadau sydd gennych 761 00:35:32,310 --> 00:35:35,460 gan y defnyddiwr, unwaith y byddwch wedi dyrannu y casgliad, ydych chi wedi math o baentio 762 00:35:35,460 --> 00:35:36,740 eich hun i mewn i gornel. 763 00:35:36,740 --> 00:35:40,600 >> Oherwydd nad ydych yn gallu mewnosod elfennau newydd i ganol arae. 764 00:35:40,600 --> 00:35:43,660 Ni allwch osod mwy o elfennau ar ddiwedd arae. 765 00:35:43,660 --> 00:35:47,750 Really, mae'n rhaid i chi droi at greu casgliad newydd gyfan, fel yr ydym wedi trafod, 766 00:35:47,750 --> 00:35:49,320 copïo hen i'r newydd. 767 00:35:49,320 --> 00:35:52,610 Ac eto, dyna yw'r cur pen y GetString delio â i chi. 768 00:35:52,610 --> 00:35:56,170 >> Ond unwaith eto, ni allwch hyd yn oed yn mewnosod rhywbeth i mewn i ganol y rhesi 769 00:35:56,170 --> 00:35:58,200 os nad yw'r gyfradd yn cael ei llenwi yn gyfan gwbl. 770 00:35:58,200 --> 00:36:03,010 Er enghraifft, os yw casgliad hwn yma o faint chwech dim ond pum peth ynddo, 771 00:36:03,010 --> 00:36:06,080 yn dda, gallech jyst tack rhywbeth ar y diwedd. 772 00:36:06,080 --> 00:36:08,200 Ond beth os ydych eisiau rhoi rhywbeth i mewn i ganol y 773 00:36:08,200 --> 00:36:11,280 amrywiaeth, er y gallai ei gael pump allan o chwech o bethau ynddo? 774 00:36:11,280 --> 00:36:14,250 >> Wel, beth wnaethon ni ei wneud pan oedd gennym i gyd o'n gwirfoddolwyr dynol ar y llwyfan yn 775 00:36:14,250 --> 00:36:15,110 wythnos diwethaf? 776 00:36:15,110 --> 00:36:18,710 Os ydym eisiau rhoi rhywun yma, naill ai bobl hyn sut i symud hyn 777 00:36:18,710 --> 00:36:22,540 ffordd, neu'r bobl hyn sut i symud hyn ffordd, ac a ddaeth yn ddrud. 778 00:36:22,540 --> 00:36:26,950 Mae symud o bobl y tu mewn o amrywiaeth a ddaeth i ben i fyny adio a chostio 779 00:36:26,950 --> 00:36:31,240 ni amser, felly llawer o'n n sgwâr amseroedd rhedeg fel math mewnosod, ar gyfer 780 00:36:31,240 --> 00:36:32,550 enghraifft, yn yr achos gwaethaf. 781 00:36:32,550 --> 00:36:36,520 Felly, araeau yn wych, ond mae'n rhaid i chi gwybod o flaen llaw pa mor fawr yr ydych am iddynt. 782 00:36:36,520 --> 00:36:38,030 >> Felly OK, dyma ateb. 783 00:36:38,030 --> 00:36:43,860 Os nad wyf yn gwybod ymlaen llaw faint o fyfyrwyr a fyddai gen i, ac yr wyf yn gwybod unwaith 784 00:36:43,860 --> 00:36:47,870 Byddaf yn penderfynu, fodd bynnag, yr wyf i'n sownd â hynny llawer o fyfyrwyr, pam na wnewch Fi jyst bob amser yn 785 00:36:47,870 --> 00:36:51,740 dyrannu dwywaith cymaint o le fel y gallwn feddwl ei angen arnaf? 786 00:36:51,740 --> 00:36:54,450 Onid yw hynny'n ateb rhesymol? 787 00:36:54,450 --> 00:36:58,240 >> Yn realistig, nid wyf yn credu ein bod yn mynd i angen mwy na 50 o slotiau 788 00:36:58,240 --> 00:37:02,190 mewn amrywiaeth gyfer dosbarth cyfrwng-maint, felly gadewch i ni dim ond talgrynnu i fyny. 789 00:37:02,190 --> 00:37:07,040 'N annhymerus' gwneud 100 slotiau yn fy array, dim ond fel y gallwn bendant yn cael y 790 00:37:07,040 --> 00:37:10,330 nifer y myfyrwyr wyf yn disgwyl i yn rhai dosbarth cyfrwng-maint. 791 00:37:10,330 --> 00:37:14,320 Felly pam na dim ond talgrynnu i fyny a dyrannu mwy o gof, fel arfer, ar gyfer amrywiaeth 792 00:37:14,320 --> 00:37:16,290 nag ydych yn meddwl efallai y byddwch hyd yn oed angen? 793 00:37:16,290 --> 00:37:20,190 Beth ydyn nhw pushback syml at y syniad hwnnw? 794 00:37:20,190 --> 00:37:21,440 >> Ydych ond yn gwastraffu cof. 795 00:37:21,440 --> 00:37:25,350 Llythrennol bob rhaglen byddwch yn ysgrifennu, yna efallai yn defnyddio ddwywaith cymaint o cof yn 796 00:37:25,350 --> 00:37:26,680 ydych ei angen mewn gwirionedd. 797 00:37:26,680 --> 00:37:28,990 A bod nid yn unig yn teimlo fel yn enwedig ateb cain. 798 00:37:28,990 --> 00:37:31,990 Ar ben hynny, 'i jyst yn lleihau'r tebygolrwydd o broblem. 799 00:37:31,990 --> 00:37:35,300 Os ydych yn digwydd i gael cwrs poblogaidd un semester a bod gennych 101 800 00:37:35,300 --> 00:37:39,610 fyfyrwyr, eich rhaglen yn dal i fod sylfaenol sy'n wynebu'r un mater. 801 00:37:39,610 --> 00:37:44,280 >> Felly, diolch byth, mae yna ateb i ad hwn yn ein holl broblemau yn y ffurflen 802 00:37:44,280 --> 00:37:46,790 o strwythurau data sy'n yn fwy cymhleth na'r rhai 803 00:37:46,790 --> 00:37:47,970 rydym wedi gweld hyd yn hyn. 804 00:37:47,970 --> 00:37:50,530 Mae hyn, yr wyf yn honni, yn rhestr cysylltiedig. 805 00:37:50,530 --> 00:37:51,920 Mae hon yn rhestr o rifau - 806 00:37:51,920 --> 00:37:54,970 9, 17, 22, 26, a 34 - 807 00:37:54,970 --> 00:38:00,120 sydd wedi cael eu cysylltu â'i gilydd drwy gyfrwng o'r hyn yr wyf wedi tynnu fel saethau. 808 00:38:00,120 --> 00:38:03,580 >> Mewn geiriau eraill, os oeddwn i eisiau i gynrychioli amrywiaeth, gallwn wneud 809 00:38:03,580 --> 00:38:04,910 rhywbeth fel hyn. 810 00:38:04,910 --> 00:38:07,310 A 'n annhymerus' roi hyn ar y uwchben mewn dim ond hyn o bryd. 811 00:38:07,310 --> 00:38:09,970 Gallwn ei wneud - 812 00:38:09,970 --> 00:38:12,520 helo, popeth yn iawn. 813 00:38:12,520 --> 00:38:14,470 Sefyll yn ôl. 814 00:38:14,470 --> 00:38:17,360 Gyfrifiadurol newydd yma, yn glir - 815 00:38:17,360 --> 00:38:18,090 iawn. 816 00:38:18,090 --> 00:38:21,730 >> Felly, os oes gennyf y rhifau hyn mewn amrywiaeth - 817 00:38:21,730 --> 00:38:28,880 9, 17, 22, 26, 24 - 818 00:38:28,880 --> 00:38:30,530 nid o reidrwydd i raddfa. 819 00:38:30,530 --> 00:38:33,730 Mae pob hawl, felly dyma yw fy array - 820 00:38:33,730 --> 00:38:34,980 oh fy dduw. 821 00:38:34,980 --> 00:38:38,700 822 00:38:38,700 --> 00:38:40,395 Mae pob hawl, felly dyma yw fy arae. 823 00:38:40,395 --> 00:38:44,110 824 00:38:44,110 --> 00:38:45,050 O fy dduw. 825 00:38:45,050 --> 00:38:48,820 >> [Chwerthin] 826 00:38:48,820 --> 00:38:49,440 >> DAVID Malan: esgus. 827 00:38:49,440 --> 00:38:52,330 Mae'n ormod o ymdrech i fynd yn ôl a atgyweiria bod, felly mae - 828 00:38:52,330 --> 00:38:54,290 26. 829 00:38:54,290 --> 00:38:57,650 Felly, mae gennym amrywiaeth hwn o 9, 17, 22, 26, a 34. 830 00:38:57,650 --> 00:39:00,260 Ar gyfer y rhai ohonoch yn gweld y camgymeriad embaras Fi jyst gwneud, 831 00:39:00,260 --> 00:39:00,830 yno y mae. 832 00:39:00,830 --> 00:39:04,490 >> Felly, yr wyf yn honni bod hyn yn ateb effeithlon iawn. 833 00:39:04,490 --> 00:39:07,310 Rwyf wedi neilltuo cymaint o ints ag Angen i mi - un, dau, tri, 834 00:39:07,310 --> 00:39:09,100 pedwar, pump, neu chwe - 835 00:39:09,100 --> 00:39:11,660 ac yr wyf wedyn wedi cael eu storio y niferoedd tu mewn amrywiaeth hwn. 836 00:39:11,660 --> 00:39:15,220 Ond mae'n debyg, felly, yr wyf i am osod gwerth fel rhif 8? 837 00:39:15,220 --> 00:39:16,100 Wel, ble mae'n mynd? 838 00:39:16,100 --> 00:39:18,530 Gadewch i ni dybio wyf i am osod nifer fel 20. 839 00:39:18,530 --> 00:39:19,790 Wel, ble mae'n mynd? 840 00:39:19,790 --> 00:39:23,160 Yno yn rhywle yn y canol, neu nifer 35 yn gorfod mynd 841 00:39:23,160 --> 00:39:24,010 rhywle ar y diwedd. 842 00:39:24,010 --> 00:39:25,320 Ond dw i'n gyd allan o le. 843 00:39:25,320 --> 00:39:29,120 >> Ac felly mae hyn yn her sylfaenol o araeau yw'n yw'r ateb. 844 00:39:29,120 --> 00:39:32,280 Yr wyf wedi gwneud cais am funud yn ôl, GetString datrys y broblem hon. 845 00:39:32,280 --> 00:39:37,380 Os ydych am osod nifer chweched i'r amrywiaeth hwn, beth yw o leiaf un 846 00:39:37,380 --> 00:39:40,090 ateb y gallwch chi syrthio yn ôl ar yn sicr, yn union fel rydym yn ei wneud gyda GetString? 847 00:39:40,090 --> 00:39:44,340 848 00:39:44,340 --> 00:39:46,030 Beth sy'n bod? 849 00:39:46,030 --> 00:39:48,190 >> Wel, ei wneud yn fwy yn Dywedodd haws na gwneud. 850 00:39:48,190 --> 00:39:52,810 Ni allwn o reidrwydd yn gwneud y casgliad fwy, ond beth allwn ni ei wneud? 851 00:39:52,810 --> 00:39:56,570 Gwnewch casgliad newydd sy'n fwy, o faint 6, neu efallai faint 10, os ydym am 852 00:39:56,570 --> 00:40:00,490 i gael y blaen o bethau, ac yna copïo yr hen amrywiaeth yn y newydd, ac yna 853 00:40:00,490 --> 00:40:01,680 rhad ac am ddim yr hen arae. 854 00:40:01,680 --> 00:40:05,770 >> Ond beth yw'r amser yn rhedeg bellach o'r broses honno? 855 00:40:05,770 --> 00:40:09,870 Mae'n fawr O n, gan fod y copïo yn mynd i gostio i chi rai unedau 856 00:40:09,870 --> 00:40:13,480 amser, felly nid mor ddelfrydol os oes rhaid inni dyrannu casgliad newydd, sydd yn mynd 857 00:40:13,480 --> 00:40:15,610 i yfed dwywaith cymaint cof dros dro. 858 00:40:15,610 --> 00:40:16,660 Copi hen i newydd - 859 00:40:16,660 --> 00:40:18,800 Yr wyf yn golygu, 'i' jyst cur pen, sy'n yw, unwaith eto, pam yr ydym yn ysgrifennu 860 00:40:18,800 --> 00:40:19,920 GetString i chi. 861 00:40:19,920 --> 00:40:21,380 >> Felly, beth y gallem ei wneud yn lle hynny? 862 00:40:21,380 --> 00:40:25,000 Wel, beth os yw ein strwythur data mewn gwirionedd wedi bylchau ynddo? 863 00:40:25,000 --> 00:40:30,790 Gadewch i ni dybio fy mod yn ymlacio fy nod o gael darnau cyfagos o gof, lle mae 9 864 00:40:30,790 --> 00:40:34,500 yn iawn nesaf i 17, sef dde nesaf i 22, ac yn y blaen. 865 00:40:34,500 --> 00:40:39,570 >> Ac mae'n debyg y gall fod dros 9 yma yn Gall RAM, a 17 yn cael ei gor yma yn RAM, 866 00:40:39,570 --> 00:40:40,990 a gall 22 gael eu gor yma yn RAM. 867 00:40:40,990 --> 00:40:43,610 Mewn geiriau eraill, nid oes eu hangen i hyd yn oed yn ôl i gefnogi anymore. 868 00:40:43,610 --> 00:40:47,850 Fi jyst yn rhaid i rhywsut edafu nodwydd drwy bob un o'r rhifau hyn, neu bob un 869 00:40:47,850 --> 00:40:51,010 y nodau hyn, fel y byddwn yn galw'r petryalau fel yr wyf wedi tynnu nhw, i 870 00:40:51,010 --> 00:40:55,670 cofio sut i gyrraedd yr olaf nod o'r fath gan y cyntaf. 871 00:40:55,670 --> 00:40:59,940 >> Felly beth yw'r rhaglenni adeiladu rydym wedi gweld yn ddiweddar yr oeddwn yn 872 00:40:59,940 --> 00:41:03,030 Gall gweithredu'r edau, neu tynnu yma, yr oeddwn yn gallu 873 00:41:03,030 --> 00:41:05,430 gweithredu saethau hynny? 874 00:41:05,430 --> 00:41:06,500 Awgrymiadau Felly, dde? 875 00:41:06,500 --> 00:41:09,560 Os nad wyf dyrannu unig int, ond yn nod - a thrwy 876 00:41:09,560 --> 00:41:10,810 nod, Fi jyst yn golygu cynhwysydd. 877 00:41:10,810 --> 00:41:12,900 Ac yn weledol, yr wyf yn golygu petryal. 878 00:41:12,900 --> 00:41:16,420 Felly, mae'n debyg angen nod i gynnwys dau werth - 879 00:41:16,420 --> 00:41:21,490 y int ei hun, ac yna, fel yr awgrymir gan yr hanner gwaelod y petryal, 880 00:41:21,490 --> 00:41:23,010 digon o le ar gyfer int. 881 00:41:23,010 --> 00:41:26,130 >> Felly, dim ond meddwl ymlaen yma, pa mor fawr yw nod hwn, mae hyn yn 882 00:41:26,130 --> 00:41:27,170 cynhwysydd dan sylw? 883 00:41:27,170 --> 00:41:29,250 Faint o bytes ar gyfer y int? 884 00:41:29,250 --> 00:41:31,310 Yn ôl pob tebyg 4, os yw'n yr un fath ag arfer. 885 00:41:31,310 --> 00:41:33,270 Ac yna faint o bytes ar gyfer y pwyntydd? 886 00:41:33,270 --> 00:41:33,650 4. 887 00:41:33,650 --> 00:41:37,940 Felly cynhwysydd hwn, neu nod hwn, yn mynd i fod yn strwythur 8-beit. 888 00:41:37,940 --> 00:41:41,760 O, ac mae hynny'n cyd-ddigwyddiad hapus rydym yn unig gyflwyno syniad hwn o 889 00:41:41,760 --> 00:41:44,400 a strwythur neu adeiladwaith C. 890 00:41:44,400 --> 00:41:48,890 >> Felly, yr wyf yn honni fy mod am gymryd cam tuag at hyn yn fwy soffistigedig 891 00:41:48,890 --> 00:41:52,560 gweithredu rhestr o rifau, a rhestr gysylltiedig o rifau, mae angen i mi ei wneud 892 00:41:52,560 --> 00:41:56,920 ychydig mwy o feddwl ymlaen llaw a ddatgan nid yn unig yn int, ond mae strwythur 893 00:41:56,920 --> 00:41:58,620 y byddaf yn galw, yn gonfensiynol yma, nod. 894 00:41:58,620 --> 00:42:01,630 Gallem ei alw'n unrhyw beth rydym eisiau, ond nod yn mynd i fod thematig mewn llawer 895 00:42:01,630 --> 00:42:03,560 o'r pethau rydym yn dechrau edrych ar hyn o bryd. 896 00:42:03,560 --> 00:42:06,480 >> Y tu mewn y nod yw n int. 897 00:42:06,480 --> 00:42:09,350 Ac yna cystrawen hwn, ychydig yn rhyfedd ar yr olwg gyntaf - 898 00:42:09,350 --> 00:42:12,960 strwythur nod * nesaf. 899 00:42:12,960 --> 00:42:16,900 Wel ddarluniadol, beth yw hynny? 900 00:42:16,900 --> 00:42:21,000 Dyna'r hanner gwaelod y petryal a welsom 901 00:42:21,000 --> 00:42:22,730 ychydig funudau'n ôl. 902 00:42:22,730 --> 00:42:27,600 >> Ond pam ydw i'n dweud strwythur nod * yn hytrach na dim ond nod *? 903 00:42:27,600 --> 00:42:31,370 Oherwydd os y pwyntydd yn pwyntio yn nod arall, dim ond y 904 00:42:31,370 --> 00:42:32,760 cyfeiriad o nod. 905 00:42:32,760 --> 00:42:35,630 Dyna gyson â'r hyn rydym wedi trafod am awgrymiadau hyd yn hyn. 906 00:42:35,630 --> 00:42:39,690 Ond pam, os gallaf wneud cais am y strwythur hwn yn a elwir yn nod, a oes rhaid i mi ddweud strwythur 907 00:42:39,690 --> 00:42:42,660 nod y tu mewn yma? 908 00:42:42,660 --> 00:42:43,190 >> Yn union. 909 00:42:43,190 --> 00:42:46,490 Mae'n fath o realiti dwp o C. Mae'r typedef, fel petai, nid yw wedi 910 00:42:46,490 --> 00:42:47,220 digwydd eto. 911 00:42:47,220 --> 00:42:48,510 C yn hynod llythrennol. 912 00:42:48,510 --> 00:42:51,050 Mae'n darllen eich prif cod i gwaelod, o'r chwith i'r dde. 913 00:42:51,050 --> 00:42:54,930 A hyd nes y cyrhaeddir y colon ar y llinell waelod, dyfalu beth nad yw'n gweithio 914 00:42:54,930 --> 00:42:57,590 bodoli fel math data? 915 00:42:57,590 --> 00:42:59,060 Node, nod unquote dyfynnu. 916 00:42:59,060 --> 00:43:03,050 >> Ond oherwydd y mwy verbose datganiad a wneuthum ar y llinell gyntaf - 917 00:43:03,050 --> 00:43:05,340 strwythur nod typedef - 918 00:43:05,340 --> 00:43:08,790 oherwydd dyna ddaeth yn gyntaf, cyn y braces cyrliog, sy'n fath o fel 919 00:43:08,790 --> 00:43:11,800 cyn-addysgu clang hynny, yr ydych yn gwybod beth, yn rhoi strwythur i mi 920 00:43:11,800 --> 00:43:13,570 a elwir yn strwythur nod. 921 00:43:13,570 --> 00:43:16,270 A dweud y gwir, nid wyf yn hoffi galw pethau strwythur nod, strwythur nod pob 922 00:43:16,270 --> 00:43:17,090 drwy gydol fy cod. 923 00:43:17,090 --> 00:43:20,660 Ond byddaf ond yn ei ddefnyddio unwaith, dim ond y tu mewn, fel y gallaf effeithiol 924 00:43:20,660 --> 00:43:25,010 creu rhyw fath o gyfeiriad cylchlythyr, nid pwyntydd i mi fy hun fel y cyfryw, ond mae 925 00:43:25,010 --> 00:43:29,400 pwyntydd i un arall o fath yn union. 926 00:43:29,400 --> 00:43:32,330 >> Felly, mae'n ymddangos bod ar strwythur data fel hyn, mae 'na ychydig o 927 00:43:32,330 --> 00:43:34,470 gweithrediadau a allai fod yn o ddiddordeb i ni. 928 00:43:34,470 --> 00:43:37,460 Efallai y byddwn i am osod mewn rhestr fel hyn. 929 00:43:37,460 --> 00:43:39,850 Efallai y byddwn am ddileu o restr fel hyn. 930 00:43:39,850 --> 00:43:43,490 Efallai y byddwn am chwilio ar y rhestr ar gyfer werth, neu yn fwy cyffredinol, croesi. 931 00:43:43,490 --> 00:43:46,410 Ac croesi yn unig yw ffordd ffansi o dweud yn dechrau ar y chwith a symud yr holl 932 00:43:46,410 --> 00:43:47,650 y ffordd ar y dde. 933 00:43:47,650 --> 00:43:52,640 >> Ac yn sylwi, hyd yn oed gyda hyn ychydig yn fwy strwythur data soffistigedig, gadewch 934 00:43:52,640 --> 00:43:56,510 fi yn cynnig y gallwn fenthyg rhai o'r y syniadau y pythefnos diwethaf ac 935 00:43:56,510 --> 00:43:58,410 gweithredu swyddogaeth o'r enw chwilio fel hyn. 936 00:43:58,410 --> 00:44:01,360 Mae'n mynd i ddychwelyd yn wir neu ffug, sy'n dangos, ie neu 937 00:44:01,360 --> 00:44:03,390 na, n yn y rhestr. 938 00:44:03,390 --> 00:44:05,960 Ei ail ddadl yn pwyntydd at y rhestr ei hun, felly mae 939 00:44:05,960 --> 00:44:07,920 pwyntydd i nod. 940 00:44:07,920 --> 00:44:10,350 >> Y cyfan yr wyf i'n mynd i ei wneud wedyn yw datgan newidyn dros dro. 941 00:44:10,350 --> 00:44:12,730 Byddwn yn ei alw'n ptr ôl confensiwn, ar gyfer pwyntydd. 942 00:44:12,730 --> 00:44:15,220 Ac yr wyf yn neilltuo yn hafal i'r ddechrau'r rhestr. 943 00:44:15,220 --> 00:44:16,680 >> Ac yn awr yn sylwi ar y ddolen tra. 944 00:44:16,680 --> 00:44:20,640 Ar yr amod nad pwyntydd yn gyfartal i null, dw i'n mynd i wirio. 945 00:44:20,640 --> 00:44:24,520 A yw arrow pwyntydd n gyfartal i y n a basiwyd mewn? 946 00:44:24,520 --> 00:44:26,410 Ac aros funud - newydd darn o gystrawen. 947 00:44:26,410 --> 00:44:29,324 Beth yw arrow yn sydyn? 948 00:44:29,324 --> 00:44:30,574 Yeah? 949 00:44:30,574 --> 00:44:34,200 950 00:44:34,200 --> 00:44:34,810 >> Yn union. 951 00:44:34,810 --> 00:44:38,860 Felly, tra bod ychydig funudau yn ôl, rydym yn defnyddio y nodiant dot i gael mynediad i rywbeth 952 00:44:38,860 --> 00:44:43,080 tu mewn i'r strwythur, os y newidyn nad ydych wedi yw'r strwythur 953 00:44:43,080 --> 00:44:47,420 ei hun, ond mae pwyntydd i strwythur, diolch i'r drefn, darn o gystrawen y 954 00:44:47,420 --> 00:44:48,620 yn olaf yn gwneud synnwyr 'n athrylithgar. 955 00:44:48,620 --> 00:44:52,360 Mae'r saeth yn ei olygu i ddilyn y pwyntydd, fel ein saethau fel arfer yn golygu 956 00:44:52,360 --> 00:44:56,570 ffurf lluniau, ac yn mynd yn data y tu mewn cae. 957 00:44:56,570 --> 00:44:59,700 Felly saeth yr un peth â dot, ond rydych yn ei ddefnyddio pan fydd gennych pwyntydd. 958 00:44:59,700 --> 00:45:05,270 >> Felly, dim ond i ailadrodd, yna, os yw'r maes n tu mewn i'r strwythur a elwir yn pwyntydd 959 00:45:05,270 --> 00:45:07,760 hafal hafal n, yn dychwelyd yn wir. 960 00:45:07,760 --> 00:45:11,970 Fel arall, mae hyn yn llinell yma - pwyntydd yn dychwelyd pwyntydd nesaf. 961 00:45:11,970 --> 00:45:17,540 Felly, beth mae hyn yn ei wneud, hysbysiad, yw os wyf yn wyf yn hyn o bryd yn pwyntio at y strwythur 962 00:45:17,540 --> 00:45:21,430 nad ydynt yn cynnwys 9, a 9 yw nifer Dwi'n chwilio am - debyg Rwy'n edrych 963 00:45:21,430 --> 00:45:22,830 ar gyfer n dychwelyd 50 - 964 00:45:22,830 --> 00:45:25,930 Rydw i'n mynd i ddiweddaru fy pwyntydd dros dro i beidio pwyntio at nod hwn 965 00:45:25,930 --> 00:45:31,190 anymore, ond mae pwyntydd saeth nesaf, sy'n yn mynd i roi i mi i fyny yma. 966 00:45:31,190 --> 00:45:34,270 >> Yn awr, yr wyf yn sylweddoli yn corwynt cyflwyniad. 967 00:45:34,270 --> 00:45:37,380 Ar ddydd Mercher, byddwn yn ei wneud mewn gwirionedd hyn yn gyda rhai pobl a rhai yn fwy 968 00:45:37,380 --> 00:45:38,900 Cod ar gyflymder arafach. 969 00:45:38,900 --> 00:45:42,990 Ond yn sylweddoli, yr ydym yn awr yn gwneud ein data strwythurau mwy cymhleth fel bod ein 970 00:45:42,990 --> 00:45:45,780 Gall algorithmau gael mwy effeithlon, a yn mynd i fod yn hanfodol ar gyfer 971 00:45:45,780 --> 00:45:50,500 pset chwech, pan fyddwn yn llwytho i mewn, unwaith eto, y rhai 150,000 o eiriau, ond mae angen gwneud hynny 972 00:45:50,500 --> 00:45:55,650 effeithlon, ac yn ddelfrydol, yn creu rhaglen sy'n rhedeg ar gyfer ein defnyddwyr nad ydynt mewn 973 00:45:55,650 --> 00:46:00,460 llinol, nid mewn n sgwâr, ond yn cysonyn amser, yn y delfrydol. 974 00:46:00,460 --> 00:46:02,300 >> Byddwn yn eich gweld ar ddydd Mercher. 975 00:46:02,300 --> 00:46:07,240 >> SIARADWR: Yn y CS50 nesaf, David anghofio ei achos sylfaenol. 976 00:46:07,240 --> 00:46:12,770 >> DAVID Malan: A dyna sut yr ydych yn anfon negeseuon testun gyda C. Beth mae'r - 977 00:46:12,770 --> 00:46:14,020 >> [NEGES TEXT AMRYWIOL HYSBYSU SWNIO'N] 978 00:46:14,020 --> 00:46:19,734