1 00:00:00,000 --> 00:00:03,395 >> [CHWARAE CERDDORIAETH] 2 00:00:03,395 --> 00:00:11,031 3 00:00:11,031 --> 00:00:13,280 DAVID J. Malan: Mae hwn yn debyg seminar freshman heddiw. 4 00:00:13,280 --> 00:00:14,060 IAWN. 5 00:00:14,060 --> 00:00:15,024 Felly glawog allan iawn. 6 00:00:15,024 --> 00:00:17,690 Mae hyn yn tueddu i ddigwydd ar ddydd Mercher, ond mae'r holl cyfle mwy 7 00:00:17,690 --> 00:00:18,700 ar gyfer cwestiynau heddiw. 8 00:00:18,700 --> 00:00:22,210 Felly gadewch i ni ddechrau i ffwrdd mewn gwirionedd gyda'r ffilm mewn dim ond hyn o bryd. 9 00:00:22,210 --> 00:00:24,560 Ond byddwn yn dechrau yn fawreddog fel bob amser. 10 00:00:24,560 --> 00:00:28,000 >> Mae hyn yn CS50, ac mae hyn yn yw diwedd wythnos 4. 11 00:00:28,000 --> 00:00:30,820 Felly, os ydych wedi gwylio erioed Teledu neu ffilm yr hwn 12 00:00:30,820 --> 00:00:34,690 mae rhai arbenigwyr cyfrifiadurol a yr heddlu, neu FBI, neu ryw asiantaeth 13 00:00:34,690 --> 00:00:36,930 yn ceisio dal rhai gwrthwynebwr, yn dda, eich bod wedi 14 00:00:36,930 --> 00:00:40,850 yn ôl pob tebyg wedi clywed yr ymadrodd "yn gwella," lle y technegydd rywsut 15 00:00:40,850 --> 00:00:44,750 hud a lledrith zooms mewn ganmil bell i weld y troseddwyr 16 00:00:44,750 --> 00:00:48,640 hunaniaeth neu rhif plât trwydded yn hyd yn oed yn y sglein drych 17 00:00:48,640 --> 00:00:50,390 neu y glint o lygad rhywun. 18 00:00:50,390 --> 00:00:55,196 Felly yn wir, gadewch i ni edrych ar mae ffurf wahanol fath o Hollywood. 19 00:00:55,196 --> 00:00:55,862 [VIDEO Playback] 20 00:00:55,862 --> 00:00:59,243 -OK, Yn awr gadewch i ni gael edrych yn dda ar eich cyfer. 21 00:00:59,243 --> 00:01:06,488 22 00:01:06,488 --> 00:01:07,415 >> -Hold Ef. 23 00:01:07,415 --> 00:01:08,267 Rhedwch y cefn. 24 00:01:08,267 --> 00:01:09,121 >> -Wait Funud. 25 00:01:09,121 --> 00:01:11,300 Ewch i'r dde. 26 00:01:11,300 --> 00:01:12,209 >> -Mae, Rhewi hynny. 27 00:01:12,209 --> 00:01:12,750 -Sgrîn Llawn. 28 00:01:12,750 --> 00:01:13,558 -OK, Rhewi hynny. 29 00:01:13,558 --> 00:01:14,820 -Tighten Fyny ar hynny, byddwch? 30 00:01:14,820 --> 00:01:16,530 -Vector Mewn ar hynny guy gan yr olwyn gefn. 31 00:01:16,530 --> 00:01:19,400 -Zoom Yn iawn yma ar y fan a'r lle hwn. 32 00:01:19,400 --> 00:01:22,846 -With Yr offer cywir, y ddelwedd gellid ei chwyddo a hogi. 33 00:01:22,846 --> 00:01:24,065 -Beth yw hwnna? 34 00:01:24,065 --> 00:01:25,600 -Mae'n 'An rhaglen wella. 35 00:01:25,600 --> 00:01:26,860 -Can Ydych yn glir bod unrhyw? 36 00:01:26,860 --> 00:01:27,890 Nid -I ddim yn gwybod. 37 00:01:27,890 --> 00:01:29,050 Gadewch i ni wella. 38 00:01:29,050 --> 00:01:31,575 >> Adran A6 -Enhance. 39 00:01:31,575 --> 00:01:33,642 >> Gwell -I y manylion, ac-- Rwy'n credu bod yna 40 00:01:33,642 --> 00:01:35,433 digon i wella, rhyddhau i fy sgrin. 41 00:01:35,433 --> 00:01:37,080 Gwell -I yr adlewyrchiad yn ei llygad. 42 00:01:37,080 --> 00:01:38,830 >> -Let Cael ei redeg hyn trwy gwella fideo. 43 00:01:38,830 --> 00:01:40,100 -Edgar, Gallwch wella hyn? 44 00:01:40,100 --> 00:01:41,875 >> -Hang Ar. 45 00:01:41,875 --> 00:01:44,010 >> -I've Bod yn gweithio ar myfyrio hwn. 46 00:01:44,010 --> 00:01:44,995 >> Myfyrio -Someone yn. 47 00:01:44,995 --> 00:01:45,495 Reflectiar. 48 00:01:45,495 --> 00:01:47,399 -Mae 'Na adlewyrchiad o wyneb y dyn. 49 00:01:47,399 --> 00:01:48,065 Myfyrio -Y. 50 00:01:48,065 --> 00:01:48,981 -Mae 'Na adlewyrchiad. 51 00:01:48,981 --> 00:01:50,600 -Zoom I mewn ar y drych. 52 00:01:50,600 --> 00:01:52,712 -Gallwch Weld adlewyrchiad. 53 00:01:52,712 --> 00:01:54,350 -Can Chi gwella delwedd o fan hyn? 54 00:01:54,350 --> 00:01:55,370 -Can Byddwch yn gwella arno iawn yma? 55 00:01:55,370 --> 00:01:56,210 -Can Chi wella hyn? 56 00:01:56,210 --> 00:01:56,900 Allwch chi ei wella? 57 00:01:56,900 --> 00:01:57,870 >> -Can Ni'n gwella hyn? 58 00:01:57,870 --> 00:01:58,717 >> -Can Chi wella hyn? 59 00:01:58,717 --> 00:02:00,050 -Hold Ar ail, 'n annhymerus' yn gwella. 60 00:02:00,050 --> 00:02:00,924 -Zoom I mewn ar y drws. 61 00:02:00,924 --> 00:02:01,700 -Times 10. 62 00:02:01,700 --> 00:02:02,586 -Zoom. 63 00:02:02,586 --> 00:02:03,490 -Move Mewn. 64 00:02:03,490 --> 00:02:03,990 -Mwy. 65 00:02:03,990 --> 00:02:04,690 -Wait, Rhoi'r gorau. 66 00:02:04,690 --> 00:02:05,190 -Stop. 67 00:02:05,190 --> 00:02:05,970 -Pause Ef. 68 00:02:05,970 --> 00:02:09,460 -Rotate 75 gradd ni o amgylch y fertigol, os gwelwch yn dda. 69 00:02:09,460 --> 00:02:10,962 -Stop. 70 00:02:10,962 --> 00:02:14,040 Ewch yn ôl at y rhan am y drws, eto. 71 00:02:14,040 --> 00:02:15,860 >> -Got Enhancer ddelwedd a all bitmap? 72 00:02:15,860 --> 00:02:18,776 >> -Hey, Efallai y gallwn ddefnyddio'r Pradeep Dull sen i weld i mewn i'r ffenestri. 73 00:02:18,776 --> 00:02:20,372 Meddalwedd -Mae yw cyflwr y celf. 74 00:02:20,372 --> 00:02:21,845 >> -Y Gwerth eigen i ffwrdd. 75 00:02:21,845 --> 00:02:24,300 >> -With Y dde cyfuniad o algorithm-- 76 00:02:24,300 --> 00:02:26,755 >> -He Yn cymryd dileu algorithmau i'r lefel nesaf, 77 00:02:26,755 --> 00:02:28,730 a gallaf eu defnyddio i gwella'r llun hwn. 78 00:02:28,730 --> 00:02:31,286 >> -Lock Ar ac ehangu'r z-echelin. 79 00:02:31,286 --> 00:02:32,560 >> -Enhance. 80 00:02:32,560 --> 00:02:33,100 >> -Enhance. 81 00:02:33,100 --> 00:02:33,600 >> -Enhance. 82 00:02:33,600 --> 00:02:34,960 -Freeze A gwella. 83 00:02:34,960 --> 00:02:37,180 >> [DIWEDD Playback] 84 00:02:37,180 --> 00:02:41,160 >> DAVID J. Malan: pob hawl, felly pob un o'r rheini yn eiriau gwirionedd. 85 00:02:41,160 --> 00:02:44,450 Maent yn unig strung gyda'i gilydd mewn ffordd nad synhwyrol mewn gwirionedd. 86 00:02:44,450 --> 00:02:48,400 Ac, yn wir, cyrsiau CS50 ac yn ei hoffi yn tueddu i ddifetha llawer o teledu a ffilmiau 87 00:02:48,400 --> 00:02:48,900 ar eich cyfer chi. 88 00:02:48,900 --> 00:02:52,330 Oherwydd pan y rhai arbenigwyr cyfrifiadurol yn ysgwyd oddi ar delerau a dweud 89 00:02:52,330 --> 00:02:56,860 pethau ffansi fel fectorau eigen, ac mae'r z-echelin, 90 00:02:56,860 --> 00:02:59,572 ac unrhyw nifer o eraill mewn gwirionedd termau mwy technegol, 91 00:02:59,572 --> 00:03:02,030 maent yn wir yn unig stringing geiriau at ei gilydd yn rhy aml. 92 00:03:02,030 --> 00:03:05,020 A yw hynny'n un o'n gobeithion yw, fel sgîl-effaith o gyrsiau cymryd 93 00:03:05,020 --> 00:03:08,245 fel hyn, bydd mwy o bobl yn y byd mewn gwirionedd yn gallu pwyso a mesur yn 94 00:03:08,245 --> 00:03:12,040 a dim ond erioed mor ychydig yn dylanwadu ar y ansawdd a chywirdeb y ffilmiau hynny? 95 00:03:12,040 --> 00:03:14,350 >> Yn wir, gadewch i ni edrych ar realiti. 96 00:03:14,350 --> 00:03:18,070 Felly dyma yw staff llun o Mary, un o'n cymrodyr addysgu. 97 00:03:18,070 --> 00:03:20,050 Ac mae'n debyg ei bod yn dan amheuaeth o rywbeth. 98 00:03:20,050 --> 00:03:23,730 Ac eto, mae 'na lygedyn o rhyw darn o dystiolaeth yn ei lygad, 99 00:03:23,730 --> 00:03:25,480 neu yn adlewyrchiad o'i eyeglasses. 100 00:03:25,480 --> 00:03:30,760 Wel, os byddwn yn gwneud yn union fel y ffilmiau cynnig, yn yr hwn yr ydym yn chwyddo ac yn "gwella", 101 00:03:30,760 --> 00:03:34,080 dyma faint o wybodaeth yn wyneb Mary 102 00:03:34,080 --> 00:03:36,795 pan fyddwch yn cipio delwedd â'r penderfyniad gwreiddiol. 103 00:03:36,795 --> 00:03:39,120 >> Ac, mewn gwirionedd, gallwch weld dotiau hyn. 104 00:03:39,120 --> 00:03:41,900 Ac mae'r rhain yn beth yw'r Gelwir picsel, P-I-X-E-L-S, 105 00:03:41,900 --> 00:03:45,740 sydd ychydig sgwâr nodweddiadol hynny yw dot sy'n cyfansoddi delwedd. 106 00:03:45,740 --> 00:03:49,200 Ac yn ôl yn y dydd, ac mewn gwirionedd hyd yn oed heddiw gyda rhai o heddiw LED setiau teledu 107 00:03:49,200 --> 00:03:51,950 neu LCD setiau teledu, os oes gennych un yn eich ystafell neu yn y cartref, 108 00:03:51,950 --> 00:03:55,100 os byddwch yn mynd i fyny super yn agos ato, a yn enwedig os yw'n teledu braidd yn hŷn, 109 00:03:55,100 --> 00:03:58,760 mae'n debyg y gallwch hyd yn oed weld dotiau hyn a dyna beth cyfansoddi delwedd. 110 00:03:58,760 --> 00:04:00,980 >> Ac nid dim mwy yw gwybodaeth na hyn. 111 00:04:00,980 --> 00:04:05,400 Rydym Gallai "gwella", yn yr ystyr o llyfnhau pethau drosodd a math o 112 00:04:05,400 --> 00:04:09,040 casglu bod math o, math o beth Dylai fod yn lliw nesaf at llygad Fair 113 00:04:09,040 --> 00:04:10,910 fel nad yw'n mewn gwirionedd mor pixelated. 114 00:04:10,910 --> 00:04:14,510 Ond os Rwy'n cadw chwyddo i mewn, mae yna yw y dyn drwg yn ei llygad. 115 00:04:14,510 --> 00:04:16,600 Fel 'na yn oed yn wybodaeth sydd gennym. 116 00:04:16,600 --> 00:04:18,920 Ni allwch greu gwybodaeth allan o ddim byd. 117 00:04:18,920 --> 00:04:20,790 Dim ond yn gyfyngedig nifer o ddarnau yno. 118 00:04:20,790 --> 00:04:22,873 >> Felly, yn Problem Set 4, lle cewch gyfle 119 00:04:22,873 --> 00:04:24,580 i chwarae gyda'r math hwn o byd. 120 00:04:24,580 --> 00:04:27,610 Yn Problem Set 4, byddwch yn edrych ar y byd graffeg, a fforensig, 121 00:04:27,610 --> 00:04:30,870 ac mewn gwirionedd yn ysgrifennu cod sy'n adennill delweddau a gollwyd. 122 00:04:30,870 --> 00:04:33,510 Byddwch yn ysgrifennu cod sy'n yn trin delweddau sydd eisoes yn bodoli 123 00:04:33,510 --> 00:04:36,120 ac yn y pen draw yn deall yr hyn sydd mynd ymlaen o dan y cwfl. 124 00:04:36,120 --> 00:04:38,540 >> Ac, mae'n troi allan, mae'n mewn gwirionedd Nid yw bob un sy'n gymhleth. 125 00:04:38,540 --> 00:04:41,320 Er enghraifft, os ydym eisiau yn cynrychioli wyneb hapus lle 126 00:04:41,320 --> 00:04:44,160 gyda picsel du hyn, neu ddotiau duon hyn, 127 00:04:44,160 --> 00:04:47,230 yn dda, gallem yn syml gynrychioli iddynt fel wirioneddol yn didfap. 128 00:04:47,230 --> 00:04:50,040 Ac os ydych wedi clywed erioed fod didfap mynegiant, efallai 129 00:04:50,040 --> 00:04:52,330 mae bellach yn dechrau gwneud ychydig mwy o synnwyr heddiw. 130 00:04:52,330 --> 00:04:53,580 >> Rydym eisoes yn gwybod beth ychydig yn. 131 00:04:53,580 --> 00:04:54,160 Mae'n 0 neu 1. 132 00:04:54,160 --> 00:04:56,201 A map yn unig yw rhywbeth fel darn o bapur 133 00:04:56,201 --> 00:04:59,180 sy'n rhoi cyfarwyddiadau i chi ac mae ganddo efallai grid o x a y-cyfesurynnau. 134 00:04:59,180 --> 00:05:00,540 Felly dyma didfap. 135 00:05:00,540 --> 00:05:03,680 Mae'n map o ddarnau lle mae 1 yn ôl pob golwg 136 00:05:03,680 --> 00:05:07,857 mynd i gynrychioli picsel gwyn, ac mae 0 yn mynd i gynrychioli picsel du. 137 00:05:07,857 --> 00:05:09,440 Ond gallem yn sicr yn troi o gwmpas. 138 00:05:09,440 --> 00:05:11,648 Mae'n Nid yw'n bwysig felly cyhyd ag y byddwn ni'n gyson. 139 00:05:11,648 --> 00:05:15,570 A dyma yw sut, yn binary-- y tu mewn o gof cyfrifiadur, neu hyd yn oed y tu mewn 140 00:05:15,570 --> 00:05:18,160 o ffeil ar eich galed drive-- allech chi storio 141 00:05:18,160 --> 00:05:20,240 y symlaf o ddelweddau wyneb hapus. 142 00:05:20,240 --> 00:05:23,990 Ond beth ydym ni, wrth gwrs, ddiffygiol yn y ddelwedd hon? 143 00:05:23,990 --> 00:05:24,610 Lliw, dde? 144 00:05:24,610 --> 00:05:28,220 Mae'n gam nesaf amlwg neu gwella i wella hyn gyda lliw. 145 00:05:28,220 --> 00:05:32,230 Felly, yn anffodus gyda dim ond un bit, 0 neu 1, gallem cynrychioli lliw. 146 00:05:32,230 --> 00:05:36,100 Gallai hynny fod yn goch, neu las, neu du, neu wyn, neu wyrdd, neu binc, 147 00:05:36,100 --> 00:05:37,420 neu unrhyw barau o liwiau. 148 00:05:37,420 --> 00:05:40,860 Ond er mwyn symlrwydd, rydym chi helpu chymryd yn ganiataol du a gwyn. 149 00:05:40,860 --> 00:05:45,930 >> Felly beth mae rhesymegol angen arnom os ydym eisiau i weithredu lliw mewn delwedd? 150 00:05:45,930 --> 00:05:49,080 Beth sy'n rhaid i ni ei wneud? 151 00:05:49,080 --> 00:05:51,900 Fel pe y ffactor sy'n cyfyngu yma yw bod ag un bit gallwch dim ond 152 00:05:51,900 --> 00:05:55,977 yn cynrychioli dwy wladwriaeth, 0 neu 1, wyn neu ddu, beth ydych chi eisiau ei wneud? 153 00:05:55,977 --> 00:05:56,810 GYNULLEIDFA: Mwy o ddata. 154 00:05:56,810 --> 00:05:58,813 DAVID J. Malan: Mwy darnau, yeah mwy o ddata, mwy o ddarnau. 155 00:05:58,813 --> 00:06:01,440 Ac, yn wir, dyna yn union sut lluniau lliw yn cael eu cynrychioli. 156 00:06:01,440 --> 00:06:05,120 Yn hytrach na defnyddio ychydig yn sengl, a 0 neu 1 ar gyfer pob picsel, bob dot, 157 00:06:05,120 --> 00:06:06,170 'ch jyst yn defnyddio lluosog. 158 00:06:06,170 --> 00:06:09,660 Efallai defnyddiwch 8, efallai, yn fwy cyffredin defnyddio 24, ac yn wir, yn Problem Set 159 00:06:09,660 --> 00:06:13,300 4, byddwch yn chwarae gyda ffeil fformat sy'n defnyddio 24 o ddarnau fel arfer. 160 00:06:13,300 --> 00:06:15,430 >> Ond mae'r rhan fwyaf ohonoch yn ôl pob tebyg gyfarwydd â JPEG. 161 00:06:15,430 --> 00:06:17,460 Os ydych chi wedi cymryd erioed llun ar eich ffôn, 162 00:06:17,460 --> 00:06:20,360 neu llwytho i fyny neu wedi gweld rhywbeth ar Facebook, neu Flickr, unrhyw rif 163 00:06:20,360 --> 00:06:24,882 o wefannau sy'n seiliedig ffoto-, eich bod wedi yn ôl pob tebyg wedi gweld delwedd JPEG o'r blaen. 164 00:06:24,882 --> 00:06:27,840 Ac mae'n troi allan, mae hyn yn y ffeil fformat rydyn ni'n mynd i'w defnyddio yn PSet 4, 165 00:06:27,840 --> 00:06:30,340 lle rydych chi'n mynd i rhaid i adennill delweddau 166 00:06:30,340 --> 00:06:35,160 fy mod i wedi dileu ddamweiniol o cerdyn cof llygru yn y camera, 167 00:06:35,160 --> 00:06:35,800 os mynnwch. 168 00:06:35,800 --> 00:06:38,490 >> Ac mae'n ymddangos bod hyd yn oed er JPEG yw sophisticated-- 'n bert 169 00:06:38,490 --> 00:06:40,906 mae'n llawer mwy soffistigedig na'r dotiau du a gwyn 170 00:06:40,906 --> 00:06:44,480 gwelsom eiliad yn ôl, oherwydd mae algorithmau ffansi mewn gwirionedd bod 171 00:06:44,480 --> 00:06:47,410 yn cael eu defnyddio i gywasgu JPEG, felly y gallwch gael neis iawn, 172 00:06:47,410 --> 00:06:49,832 llun o ansawdd ond gan ddefnyddio cymharol ychydig ddarnau. 173 00:06:49,832 --> 00:06:51,790 A byddwn yn dod yn ôl at cywasgu cyn bo hir. 174 00:06:51,790 --> 00:06:56,280 Mae'n ymddangos bod y cyntaf tri bytes mewn image-- JPEG 175 00:06:56,280 --> 00:07:02,750 ni waeth beth yr ydych wedi cymryd llun o- yw gwerthoedd 255, 216, 255. 176 00:07:02,750 --> 00:07:05,990 >> Mewn geiriau eraill, os ydych yn unig gweld bod patrwm o ddarnau, 177 00:07:05,990 --> 00:07:09,180 cynrychioli yma â thair bytes, neu 24 ddarnau cyfanswm, 178 00:07:09,180 --> 00:07:13,810 gyda tebygolrwydd uchel y gallwch gasglu hynny ydych yn edrych ar 'i hon tri cyntaf 179 00:07:13,810 --> 00:07:15,230 bytes o JPEG. 180 00:07:15,230 --> 00:07:18,040 Ac mae hyn yn beth sy'n hysbys fel llofnod JPEG. 181 00:07:18,040 --> 00:07:20,540 Mae llawer o fformatau ffeil allan yno yn tueddu i ddechrau 182 00:07:20,540 --> 00:07:23,735 gyda phatrymau penodol o 0au ac 1s, fel bod Windows, a Mac OS, a iOS, 183 00:07:23,735 --> 00:07:28,272 a Android gwybod pa fath o ffeil y maent yn, yn ychwanegol at y ffeil hyn a elwir yn 184 00:07:28,272 --> 00:07:29,730 estyniad fod llawer o ffeiliau wedi. 185 00:07:29,730 --> 00:07:32,590 Os ydych wedi .jpg, dyna Cliw arall i'r cyfrifiadur. 186 00:07:32,590 --> 00:07:35,310 >> Felly, gadewch i ni yn awr edrych ar hyn ychydig yn fwy technegol. 187 00:07:35,310 --> 00:07:37,390 Rydym yn gwybod y degol yn system yn 0 drwy 9. 188 00:07:37,390 --> 00:07:38,740 Rydym yn gwybod deuaidd yw 0 ac 1. 189 00:07:38,740 --> 00:07:41,842 Ac os ydych yn meddwl yn ôl i PSet 0, yr oedd gennym i chi ymgodymu â, 190 00:07:41,842 --> 00:07:43,800 am ychydig bach, rhywbeth a elwir yn hecsadegol, 191 00:07:43,800 --> 00:07:47,320 lle mae gennych 16 digid, yn hytrach na 10 neu yn lle 2. 192 00:07:47,320 --> 00:07:50,405 Ac digidau hynny, yn ôl confensiwn, yn 0 thrwy 9 ac yna 193 00:07:50,405 --> 00:07:55,040 trwy f, lle mae f cynrychioli'r hyn rhif degol, yn union fel bwyll cyflym 194 00:07:55,040 --> 00:07:56,640 gwirio? 195 00:07:56,640 --> 00:07:57,610 Felly, 15. 196 00:07:57,610 --> 00:08:01,390 Ac mae'n rhaid i gynrychioli 10, dim ond drwy natur y archebu fy mod i wedi ei roi. 197 00:08:01,390 --> 00:08:04,350 Mae'n dim ond gonfensiwn mympwyol, ond mae'n eithaf safonol. 198 00:08:04,350 --> 00:08:06,870 >> Felly, os edrychwn ar y patrwm hwn o dri bytes-- gadewch i ni 199 00:08:06,870 --> 00:08:09,620 dim ond dechrau i edrych arno mewn modd sy'n gyson â sut 200 00:08:09,620 --> 00:08:12,450 gwyddonwyr cyfrifiadurol yn gyffredinol yn edrych ar ac yn meddwl am ffeiliau. 201 00:08:12,450 --> 00:08:15,580 Gallwch sicr yn meddwl am ffeil mewn 0au, a 1s, ac degol, 202 00:08:15,580 --> 00:08:19,340 ond mewn gwirionedd, rydym yn tueddu i ddefnyddio deuaidd neu yn fwy nodweddiadol hexadecimal-- 203 00:08:19,340 --> 00:08:20,760 yn ôl o PSet 0. 204 00:08:20,760 --> 00:08:25,857 Felly gadewch i mi yn cynnig y 255, 216, a 255 yn unig y patrymau hyn o 0au ac 1s. 205 00:08:25,857 --> 00:08:28,440 A gallwch wirio hyn os ydych yn am wneud y math o Wythnos 0. 206 00:08:28,440 --> 00:08:30,810 Ond, ar hyn o bryd, dim ond yn cymryd yn ganiataol bod hyn yn wir yn gywir. 207 00:08:30,810 --> 00:08:33,850 Rwyf newydd hailysgrifennu tri degol rhifau fel tri gwerth deuaidd. 208 00:08:33,850 --> 00:08:36,100 Nawr yr hyn yr wyf i'n mynd i wneud yw dim ond ychwanegu ychydig o le gwyn, 209 00:08:36,100 --> 00:08:37,266 dim ond er mwyn darllenadwyedd ar. 210 00:08:37,266 --> 00:08:39,940 A rhybudd, Im 'jyst yn mynd i symud pethau ar wahân. 211 00:08:39,940 --> 00:08:43,090 Felly, cyn, ar ôl, cyn, ar ôl. 212 00:08:43,090 --> 00:08:46,180 Dwi'n gwneud dim byd diddorol eraill na dim ond lledaenu pethau allan fel 213 00:08:46,180 --> 00:08:50,380 hysbysiad hwnnw pob set o wyth darnau yn awr dwy set o bedwar ddarnau. 214 00:08:50,380 --> 00:08:54,920 Mae hyn yn ddefnyddiol oherwydd hecsadegol yn arbennig o ffasiynol 215 00:08:54,920 --> 00:09:00,930 oherwydd bod gan bob digid hecsadegol 0 drwy f, neu'n fwy penodol drwy 15 0, 216 00:09:00,930 --> 00:09:03,430 Gellir cael eu cynrychioli gyda phedwar union ddarnau. 217 00:09:03,430 --> 00:09:07,960 Mewn geiriau eraill, yn hecsadegol os ydych yn eisiau cynrychioli 0, 'i' jyst 0000, 218 00:09:07,960 --> 00:09:08,780 pedwar sero. 219 00:09:08,780 --> 00:09:13,997 Ac os ydych chi am i gynrychioli 15, 'i' 1111, sef pedair ddarnau. 220 00:09:13,997 --> 00:09:16,080 Ac os ydych yn gwneud y cwestiwn, os mai dyma'r lle rhai, 221 00:09:16,080 --> 00:09:18,210 dyma'r lle 16 oed, hynny'n mynd i roi you-- 222 00:09:18,210 --> 00:09:19,960 yn hytrach sy'n mynd canlynol-- ddrwg gennym, mewn deuaidd, 223 00:09:19,960 --> 00:09:23,660 mae hynny'n mynd i roi i chi 15, rhai lle, deuoedd lle, pedwar a wyth lle. 224 00:09:23,660 --> 00:09:26,821 Felly gadewch i mi yn cynnig bod y set o bedwar darnau ar y chwith 225 00:09:26,821 --> 00:09:28,070 beth ydym yn mynd i alw f. 226 00:09:28,070 --> 00:09:30,110 Mae'n y rhif mwyaf i chi Gall gynrychioli gyda phedwar darnau. 227 00:09:30,110 --> 00:09:33,300 Ac rydym eisoes yn gwybod o hecsadegol, f yw'r digid mwyaf yn hecsadegol. 228 00:09:33,300 --> 00:09:36,020 Mae gennym f arall yno, dau yn fwy dros yno. 229 00:09:36,020 --> 00:09:38,980 Ac am y tro, dim ond yn cymryd ar ffydd fy mod wedi gwneud y math cywir 230 00:09:38,980 --> 00:09:41,890 a bod yr hanner chwith o ddarnau hynny, 1101, 231 00:09:41,890 --> 00:09:43,980 yr un peth â d yn hecsadegol. 232 00:09:43,980 --> 00:09:46,490 A'r llaw dde, 1000, dim ond 8. 233 00:09:46,490 --> 00:09:48,140 >> A bod un yn hawdd gweld, dde? 234 00:09:48,140 --> 00:09:51,670 Mae'r 8 represents-- yn iawn o dan y lle wyth. 235 00:09:51,670 --> 00:09:56,040 Felly, mae gennym un yn y golofn wyth ac nid oes dim yn y pedwar, deuoedd neu rai. 236 00:09:56,040 --> 00:09:59,830 Felly nawr yn fwy confensiynol, bodau dynol yn tueddu i ysgrifennu digid hecsadegol fel hyn, 237 00:09:59,830 --> 00:10:03,000 'ch jyst yn eu squish gyda'i gilydd, ac yna rydych yn eu rhagddodiad â 0x. 238 00:10:03,000 --> 00:10:05,920 Mae'n golygu dim byd heblaw gliw gweledol i human-- 239 00:10:05,920 --> 00:10:10,350 yma hon yn value-- hecsadegol oherwydd efallai na fel arall yn amlwg. 240 00:10:10,350 --> 00:10:13,629 >> Pa un yw dweud, yn y pen draw, bod patrwm zeros a rhai, 241 00:10:13,629 --> 00:10:16,170 neu batrwm y hecsadegol digidau cyfwerth ei eich bod yn 242 00:10:16,170 --> 00:10:18,990 mynd i ddechrau chwilio am yn Problem Set 4 yn this-- 243 00:10:18,990 --> 00:10:22,120 a bydd y Broblem Set 4 spec cerdded chi drwy hyn yn fwy detail-- 244 00:10:22,120 --> 00:10:25,344 ond yn sylweddoli fel math o ddirgel fel gallai hyn edrych ar yr olwg gyntaf, 245 00:10:25,344 --> 00:10:27,010 ydych yn mynd i ddechrau gweld hyn yn llawer. 246 00:10:27,010 --> 00:10:30,320 Ac yn wir, hyd yn oed yn GDB, mae'r debugger fe wnaethom gyflwyno ar ddydd Llun 247 00:10:30,320 --> 00:10:35,440 a Dan cyflwyno mewn PSet 3, yn mynd i yn aml yn dangos i chi gwerthoedd hecsadegol 248 00:10:35,440 --> 00:10:39,910 dim ond oherwydd eu bod yn tueddu i fod yn fwy confensiynol na'r degol neu'n deuaidd 249 00:10:39,910 --> 00:10:41,157 ym myd cyfrifiaduron. 250 00:10:41,157 --> 00:10:42,490 Nawr, gadewch i ni roi hyn mewn cyd-destun. 251 00:10:42,490 --> 00:10:48,040 Mae llawer o'r efallai y byddwch yn cofio hyn llun yma, a ddaeth o beth? 252 00:10:48,040 --> 00:10:51,240 Vista, felly hyd yn oed yn gynharach na hynny, gwnaeth Windows XP cyntaf hwn. 253 00:10:51,240 --> 00:10:52,620 Felly, mae hyn yn dirwedd hardd. 254 00:10:52,620 --> 00:10:55,940 Ac yn wir, os ydych yn brocio o gwmpas online-- Rwy'n credu ei fod yn erthygl Wicipedia, 255 00:10:55,940 --> 00:11:00,110 wherein rhywun yn rhyfeddol iawn yn mynd allan dod o hyd yn y lleoliad hwn yn y byd a sefydlwyd 256 00:11:00,110 --> 00:11:02,240 ei gamera mewn union y place-- cywir 257 00:11:02,240 --> 00:11:06,510 ac mae hyn yn edrych yn like-- heddiw, ond 'i' yn union yr un lleoliad. 258 00:11:06,510 --> 00:11:10,060 Mae'r ddelwedd hon, fodd bynnag, yw mewn ffeil fformat a elwir didfap, b-m-t. 259 00:11:10,060 --> 00:11:12,910 Ac rydym yn mynd i gymryd super cipolwg cyflym ar yr hyn mae hynny'n ei olygu. 260 00:11:12,910 --> 00:11:17,770 >> Ond didfap yn unig yw ffordd wahanol o delweddau sy'n cynrychioli dal i ddefnyddio picsel 261 00:11:17,770 --> 00:11:19,580 mewn 0au ac 1s, yn y pen draw. 262 00:11:19,580 --> 00:11:23,282 Ond ar yr olwg cyflym, mae wedi llofnod yn fwy diddorol 263 00:11:23,282 --> 00:11:24,490 ar ddechrau'r ffeil. 264 00:11:24,490 --> 00:11:26,670 Nid dim ond tri bytes, yn hytrach mae 265 00:11:26,670 --> 00:11:30,770 criw cyfan o batrymau bytes sydd wedi bennwyd ymlaen llaw ystyr. 266 00:11:30,770 --> 00:11:34,490 Er enghraifft, rhywle yn y ychydig bytes cyntaf o ddelwedd bitmap 267 00:11:34,490 --> 00:11:37,440 yn mynd i fod maint y delwedd, lled y ddelwedd, 268 00:11:37,440 --> 00:11:40,390 uchder y ddelwedd, felly metadata defnyddiol, os mynnwch. 269 00:11:40,390 --> 00:11:43,940 Gwybodaeth ddefnyddiol bod Photoshop neu unrhyw graffeg rhaglen rydych yn ei ddefnyddio 270 00:11:43,940 --> 00:11:45,180 Efallai mewn gwirionedd yn poeni am. 271 00:11:45,180 --> 00:11:47,170 >> Felly mwy am hyn yn Problem Set 4, ond mae hyn 272 00:11:47,170 --> 00:11:49,220 Dim ond i ddweud bod ar ddiwedd y dydd 273 00:11:49,220 --> 00:11:52,390 yr holl fformatau ffeil yr ydych wedi bod yn defnyddio am years-- ffeiliau Microsoft Word, 274 00:11:52,390 --> 00:11:55,820 Ffeiliau Rhifau, ffeiliau Excel, unrhyw nifer o fformatau ffeil 275 00:11:55,820 --> 00:11:57,770 a allai gael rhywfaint o estyniad ffeil hysbys 276 00:11:57,770 --> 00:12:00,130 yn unig 0au ac 1s o dan y cwfl. 277 00:12:00,130 --> 00:12:02,970 A bodau dynol wedi penderfynu beth confensiynau yw, 278 00:12:02,970 --> 00:12:08,340 pa batrymau 0au ac 1s cynrychioli ffeilio erbyn Word ffeil Excel, 279 00:12:08,340 --> 00:12:10,322 yn erbyn unrhyw nifer o fformatau ffeil eraill. 280 00:12:10,322 --> 00:12:12,780 Felly, yn PSet 4, bydd gennych cyfle i chwarae â hynny. 281 00:12:12,780 --> 00:12:14,405 >> Ond beth mae'n ei olygu i fod â struct. 282 00:12:14,405 --> 00:12:18,012 Mae hyn mewn gwirionedd yn segue n glws yn awr i mewn i C, sydd â dim ond cwpl 283 00:12:18,012 --> 00:12:20,220 nodweddion ychwanegol y nid ydym wedi edrych ar eto. 284 00:12:20,220 --> 00:12:24,230 Mae'n iaith 'n bert bach ac un o nodweddion neis am C yn struct. 285 00:12:24,230 --> 00:12:27,300 Er enghraifft, os ydych yn yn awyddus i represent-- gadewch i ni 286 00:12:27,300 --> 00:12:33,690 dweud eich eisiau cael newidyn sy'n yn cynrychioli fyfyriwr mewn rhyw rhaglen. 287 00:12:33,690 --> 00:12:37,330 Efallai eich bod yn ysgrifennu cwrs rhaglen gofrestru, neu siopa graidd 288 00:12:37,330 --> 00:12:38,870 offeryn, neu rywbeth fel 'na. 289 00:12:38,870 --> 00:12:42,922 Beth Darnau o ddata cysylltiedig i fyfyriwr sy'n dod i'r meddwl? 290 00:12:42,922 --> 00:12:44,880 Fel myfyriwr yn gynrychioli â'r hyn gwerthfawrogi? 291 00:12:44,880 --> 00:12:45,732 Yeah? 292 00:12:45,732 --> 00:12:46,940 Mae gennych enw fel myfyriwr. 293 00:12:46,940 --> 00:12:48,900 Beth arall mae myfyriwr nodweddiadol gael? 294 00:12:48,900 --> 00:12:49,320 >> GYNULLEIDFA: [Anghlywadwy] 295 00:12:49,320 --> 00:12:50,200 >> DAVID J. Malan: Felly, mae'n ddrwg gennyf. 296 00:12:50,200 --> 00:12:50,660 >> GYNULLEIDFA: Oed. 297 00:12:50,660 --> 00:12:52,980 >> DAVID J. Malan: Mae oedran neu pen-blwydd cyfwerth ei, yep. 298 00:12:52,980 --> 00:12:53,557 Beth arall? 299 00:12:53,557 --> 00:12:54,390 GYNULLEIDFA: rhif adnabod? 300 00:12:54,390 --> 00:12:57,460 DAVID J. Malan: Felly rif adnabod, efallai rhif ffôn, efallai dorm, neu dŷ, 301 00:12:57,460 --> 00:12:58,670 neu goleg, neu rywbeth fel 'na. 302 00:12:58,670 --> 00:13:01,820 Unrhyw nifer o ddarnau o ddata sy'n allai fod gennych yn eich rhestr cysylltiadau 303 00:13:01,820 --> 00:13:03,890 yn yr hyn a allai diffinio yn fyfyriwr. 304 00:13:03,890 --> 00:13:08,490 Felly, os oeddem am wneud hyn, mewn cod, efallai y byddwn yn gwneud rhywbeth syml fel hyn. 305 00:13:08,490 --> 00:13:15,670 Efallai gennym raglen fel bod Mae gadewch i ni ddweud, int prif (ddi-rym). 306 00:13:15,670 --> 00:13:18,920 Ac os wyf am i gynrychioli fyfyriwr efallai y byddwn yn cael, er enghraifft, 307 00:13:18,920 --> 00:13:24,330 llinyn a elwir yn enw ar gyfer y myfyriwr hwnnw, llinyn o'r enw dorm gyfer y myfyriwr hwnnw, 308 00:13:24,330 --> 00:13:26,900 efallai mae int a elwir yn ID gyfer y myfyriwr hwnnw. 309 00:13:26,900 --> 00:13:30,840 Ac oherwydd Im 'yn arfer llinyn, yr wyf yn Mae angen i fynd yn ôl a rhoi i fyny CS50.h. 310 00:13:30,840 --> 00:13:33,300 Efallai fy mod yn mynd i angen stdio.h. 311 00:13:33,300 --> 00:13:38,190 Felly gadewch i mi preemptively wneud hynny ac rwy'n mynd i alw student.c hwn am nawr 312 00:13:38,190 --> 00:13:40,080 ac arbed hyn. 313 00:13:40,080 --> 00:13:44,206 >> Ac yn awr y gallaf wneud rhywbeth gyda newidynnau hyn. 314 00:13:44,206 --> 00:13:46,830 Ac rydym yn jyst yn mynd i ysgrifennu bod fel sylw yn y cod ffug, 315 00:13:46,830 --> 00:13:48,829 gan nad yw'n ddiddorol yr hyn rydym yn ei wneud am y tro. 316 00:13:48,829 --> 00:13:51,242 Iawn, felly mae hyn yn rhaglen sy'n rhywsut siopau yn fyfyriwr. 317 00:13:51,242 --> 00:13:53,450 Beth ydw i am ei wneud os byddaf eisiau i storio dau fyfyriwr? 318 00:13:53,450 --> 00:13:55,991 Felly, fy ngreddf gyntaf yn mynd i yn iawn, arhoswch funud, 319 00:13:55,991 --> 00:14:01,920 os oes gen i fyfyriwr arall pam nad ydw i'n dim ond gwneud enw llinyn 2, dorm llinyn 2, 320 00:14:01,920 --> 00:14:04,190 ID2 int. 321 00:14:04,190 --> 00:14:06,540 Ac rydym wedi gwneud wedi mynd i lawr y ffordd hon o'r blaen 322 00:14:06,540 --> 00:14:10,890 a beth oedd ein ateb i hyn sy'n ymddangos i fod yn fath o gopi past hackish 323 00:14:10,890 --> 00:14:11,555 swydd yma? 324 00:14:11,555 --> 00:14:12,346 GYNULLEIDFA: Mae rhesi. 325 00:14:12,346 --> 00:14:13,830 DAVID J. Malan: Yeah, gallem ddefnyddio amrywiaeth. 326 00:14:13,830 --> 00:14:15,620 Yr hawl hwn yn gyflym iawn yn dod yn anhylaw. 327 00:14:15,620 --> 00:14:18,453 Mae'n rhaid i chi drefnu o fympwyol dechrau enwi pob un o'r newidynnau hyn. 328 00:14:18,453 --> 00:14:22,190 Ac, y dynol, rhaid i chi gadw olrhain bod yn cyfateb name2 OK 329 00:14:22,190 --> 00:14:25,060 gyda dorm2 cyfateb ID2. 330 00:14:25,060 --> 00:14:26,200 'I jyst yn dod yn llanast. 331 00:14:26,200 --> 00:14:29,350 Felly mae'n llawer haws, galw i gof o ychydig wythnosau yn ôl, 332 00:14:29,350 --> 00:14:34,300 i ddim ond yn gorfod galw enwau llinyn ac efallai rhoi i ni dair o'r rheiny. 333 00:14:34,300 --> 00:14:36,940 Ac yna efallai rydym wedi llinyn dorms a chael 334 00:14:36,940 --> 00:14:41,900 tri o'r rheini, neu gyda cyson, int IDS ac mae ganddynt dri o hynny. 335 00:14:41,900 --> 00:14:45,250 Ond hyd yn oed yn awr mae hyn yn teimlo ychydig yn flêr, ar y dde. 336 00:14:45,250 --> 00:14:49,440 Rydym yn sôn am fyfyrwyr ac eto Dwi wir yn annedd ar y lefel isel 337 00:14:49,440 --> 00:14:50,470 Manylion gweithredu. 338 00:14:50,470 --> 00:14:52,790 Mae'r myfyriwr yn enw ac dorm ac Adnabod. 339 00:14:52,790 --> 00:14:59,814 >> Pam na all Fi jyst yn datgan newidyn Gelwir myfyrwyr a galw mae'n s. 340 00:14:59,814 --> 00:15:02,230 Ac os wyf am myfyriwr arall, pam nad ydw i'n jyst alw t. 341 00:15:02,230 --> 00:15:05,260 Neu os ydw i am criw cyfan o fyfyrwyr, beth am wneud Fi jyst 342 00:15:05,260 --> 00:15:09,740 dweud gen i ddosbarth cyfan o myfyrwyr, ac mae'n tri ohonynt. 343 00:15:09,740 --> 00:15:12,470 Mewn geiriau eraill, pam na all yr wyf yn dod i fyny gyda fy math data eu hunain, a elwir yn 344 00:15:12,470 --> 00:15:15,641 Mae myfyrwyr, tu mewn sydd yn enw, yn adnabod, yn dorm, 345 00:15:15,641 --> 00:15:16,890 yw unrhyw nifer o feysydd eraill. 346 00:15:16,890 --> 00:15:19,030 Ac mae'n troi allan chi yn gallu ei wneud yn union hynny. 347 00:15:19,030 --> 00:15:21,850 >> Felly C Mae gan nodwedd hon a elwir struct. 348 00:15:21,850 --> 00:15:24,700 Dyna nodwedd iaith sy'n yn ein galluogi i wneud yn union hynny. 349 00:15:24,700 --> 00:15:28,370 Rydw i'n mynd i fynd yn ei flaen ac agor structs.h 350 00:15:28,370 --> 00:15:32,299 ble rydyn ni'n mynd i weld y ar ôl y diffiniad o fyfyriwr. 351 00:15:32,299 --> 00:15:35,215 Mae'n troi allan - ac mae hyn yn un hyd yn oed symlach na'r un sy'n cynnwys adnabod 352 00:15:35,215 --> 00:15:36,080 funud yn ôl. 353 00:15:36,080 --> 00:15:39,120 Os ydych eisiau dod o hyd i eich math data cartref, 354 00:15:39,120 --> 00:15:42,750 ac yn ychwanegol at int, a torgoch a arnofio a phawb arall yma sy'n bodoli, 355 00:15:42,750 --> 00:15:45,810 gallwch wneud hynny trwy llythrennol ysgrifennu struct typedef, 356 00:15:45,810 --> 00:15:47,880 Yna, mae rhai braces cyrliog, tu mewn yr ydych yn 357 00:15:47,880 --> 00:15:51,460 rhestru'r newidynnau rydych am ei cysylltu â hon data arferiad newydd 358 00:15:51,460 --> 00:15:55,670 teipiwch fel enw a dorm, ac yna ar ôl y braces cyrliog 359 00:15:55,670 --> 00:15:57,860 eich bod yn rhoi enw i'r math data newydd. 360 00:15:57,860 --> 00:15:59,220 Felly, er enghraifft, i fyfyrwyr. 361 00:15:59,220 --> 00:16:03,247 >> A beth braf am hyn yn awr yw bod os edrychwn ar y cod cyfatebol, 362 00:16:03,247 --> 00:16:05,080 y confensiwn, yn gyntaf oll, yw rhoi hyn 363 00:16:05,080 --> 00:16:08,230 mewn ffeil o'r enw rhywbeth dot h, ffeil header, nad ydym wedi 364 00:16:08,230 --> 00:16:09,780 dechrau defnyddio ein hunain yn ormod. 365 00:16:09,780 --> 00:16:12,120 Ond rydym yn mynd i ddechrau gan ddefnyddio cryn dipyn erbyn hyn. 366 00:16:12,120 --> 00:16:18,650 A beth y gallwn ei wneud gyda hyn, yn y pen draw, yn yr ychydig linellau o god 367 00:16:18,650 --> 00:16:22,130 yn datgan yn union hynny Math o ddata, yn fyfyriwr. 368 00:16:22,130 --> 00:16:23,230 Ac yn awr gadewch i ni ei ddefnyddio. 369 00:16:23,230 --> 00:16:27,274 >> Rydw i'n mynd i nawr yn mynd i mewn i ffeil o'r enw structs1.c. 370 00:16:27,274 --> 00:16:29,440 A gadewch i ni edrych ar ychydig o nodweddion yma. 371 00:16:29,440 --> 00:16:32,250 Felly mae'r pethau i fyny yma yw yn bennaf cyfarwydd, ac yr ydym chi helpu 372 00:16:32,250 --> 00:16:35,040 dod yn ôl at yr hyn nad yw cyfarwydd mewn dim ond hyn o bryd. 373 00:16:35,040 --> 00:16:39,880 Mae hyn wrth gwrs yn cynnwys fy hun ffeil flaen, sydd yn newydd yn ogystal, 374 00:16:39,880 --> 00:16:42,580 ac eithrio ar gyfer PSet 3 os, galw i gof, rydym wedi helpers.h. 375 00:16:42,580 --> 00:16:45,150 Felly, efallai y byddwch yn cofio helpers.h #include. 376 00:16:45,150 --> 00:16:49,381 >> Pam er ydw i'n defnyddio dyfyniadau yn hytrach na cromfachau onglog? 377 00:16:49,381 --> 00:16:50,630 Pryd ydw i'n dewis rhyngddynt? 378 00:16:50,630 --> 00:16:52,310 Bron bob amser Yr wyf yn ymddangos i ddefnyddio cromfachau onglog. 379 00:16:52,310 --> 00:16:55,040 Ac yna, yn sydyn ar llinell chwe Im 'yn arfer dyfynodau dwbl. 380 00:16:55,040 --> 00:16:55,860 Pam y gallai hynny fod? 381 00:16:55,860 --> 00:16:56,700 Yeah? 382 00:16:56,700 --> 00:16:57,725 >> GYNULLEIDFA: [Anghlywadwy] 383 00:16:57,725 --> 00:16:59,350 DAVID J. Malan: Dyna gwirioneddol, beth? 384 00:16:59,350 --> 00:17:00,559 GYNULLEIDFA: Dyna yn eich IDE. 385 00:17:00,559 --> 00:17:02,475 DAVID J. Malan: Yeah, dyna yn fy IDE go iawn. 386 00:17:02,475 --> 00:17:05,690 A gadewch i ni fynd ar ôl y DRhA, oherwydd bod yn unig yn offeryn sy'n Im 'yn arfer. 387 00:17:05,690 --> 00:17:08,119 Dyna yn fy bresennol cyfeiriadur, yn benodol. 388 00:17:08,119 --> 00:17:11,647 Felly structs.h yw fy ffeil hun heb ei osod yn y DRhA, 389 00:17:11,647 --> 00:17:14,480 yn y system weithredu ei hun, yn hytrach mae yn fy cyfeiriadur cyfredol. 390 00:17:14,480 --> 00:17:16,910 Felly y confensiwn yw os ydych am i gynnwys eich ffeil pennawd hun, 391 00:17:16,910 --> 00:17:18,200 'ch jyst yn defnyddio dyfynodau dwbl. 392 00:17:18,200 --> 00:17:23,290 >> Beth ydym yn galw y peth hyn yn llinell 8, yn gyffredinol? 393 00:17:23,290 --> 00:17:25,200 Dyma beth? 394 00:17:25,200 --> 00:17:28,220 rhywbeth #define. 395 00:17:28,220 --> 00:17:31,040 Mae hyn yn cynrychioli cysonion, dde? 396 00:17:31,040 --> 00:17:33,140 Os ydych chi am gael Gwerth yn eich rhaglen 397 00:17:33,140 --> 00:17:35,110 eich bod yn defnyddio yn ei gyfanrwydd criw o weithiau, 'i' 398 00:17:35,110 --> 00:17:39,330 confensiwn da i ffactor allan, yn datgan ei fod, gyda'r symbol hash 399 00:17:39,330 --> 00:17:43,340 diffinio, yna, yn ôl confensiwn, ym mhob priflythrennau word-- er nad yw'n 400 00:17:43,340 --> 00:17:45,320 gwbl angenrheidiol, ond 'i' confensiwn dynol 401 00:17:45,320 --> 00:17:47,210 i fanteisio cysonion fel eu bod yn neidio allan 402 00:17:47,210 --> 00:17:50,380 ar chi visually-- gofod ac yna bydd y gwerth ydych am fod yn 403 00:17:50,380 --> 00:17:52,250 sy'n cyfateb i enw'r y cyson yn. 404 00:17:52,250 --> 00:17:56,110 Dim hanner colon, ond rydych yn syml yn dilyn y patrwm yno. 405 00:17:56,110 --> 00:17:57,770 >> Felly, beth ydw i'n ei wneud yn y cod gwirioneddol. 406 00:17:57,770 --> 00:18:00,660 Felly, gadewch i ni edrych ar y brif raglen yma. 407 00:18:00,660 --> 00:18:04,080 Yn llinell 12 oherwydd fy mod yn wedi cynnwys structs.h, 408 00:18:04,080 --> 00:18:06,492 Yr wyf yn awr wedi magically ar fy gwaredu math data newydd. 409 00:18:06,492 --> 00:18:09,200 Dydw i ddim yn unig yn cael mynediad at int, a torgoch, ac arnofio, a llinyn, 410 00:18:09,200 --> 00:18:10,060 a glas ac eraill. 411 00:18:10,060 --> 00:18:12,470 Yr wyf yn awr yn cael mynediad at math data myfyrwyr. 412 00:18:12,470 --> 00:18:17,740 Felly, yn unol 12, Im 'yn cyfuno dau ideas-- un fath data arfer a dau, 413 00:18:17,740 --> 00:18:18,940 gan ddefnyddio amrywiaeth. 414 00:18:18,940 --> 00:18:21,700 Ac felly yn y rhaglen hon os Rwyf am gefnogi mewn gwirionedd 415 00:18:21,700 --> 00:18:24,320 tri myfyriwr gwahanol yn fy rhaglen, yr wyf yn 416 00:18:24,320 --> 00:18:30,480 Gall ddweud yn syml roi newidyn mi Gelwir myfyrwyr, pob un ohonynt 417 00:18:30,480 --> 00:18:32,970 yw o fyfyrwyr fath, a oedd yn yw fy math data arferiad. 418 00:18:32,970 --> 00:18:35,890 Ac, yn benodol, yn rhoi i mi tri o'r rheini yn fy array. 419 00:18:35,890 --> 00:18:37,750 >> Felly nawr beth ydym yn ei wneud yn y rhaglen hon? 420 00:18:37,750 --> 00:18:40,670 Dyma dim ond ar gyfer ailadrodd dolen 0-3, oherwydd dyna 421 00:18:40,670 --> 00:18:42,110 beth yw gwerth y myfyrwyr yn. 422 00:18:42,110 --> 00:18:44,420 Im 'jyst yn annog y defnyddiwr rhoi enw'r myfyriwr mi. 423 00:18:44,420 --> 00:18:48,090 Ac yna yn unol 17, rydym yn ganddynt linell cyfarwydd yn bennaf. 424 00:18:48,090 --> 00:18:50,370 Rydym wedi ein hen gyfaill GetString ar y dde. 425 00:18:50,370 --> 00:18:52,345 A pha ddarn o gystrawen yn ôl pob golwg newydd, 426 00:18:52,345 --> 00:18:55,130 os nad ydych erioed wedi ei raglennu yn C o'r blaen, ac erioed wedi defnyddio'r structs? 427 00:18:55,130 --> 00:18:55,510 Yeah? 428 00:18:55,510 --> 00:18:56,417 >> GYNULLEIDFA: Y .name. 429 00:18:56,417 --> 00:18:57,500 DAVID J. Malan: Y .name. 430 00:18:57,500 --> 00:19:01,220 Ond nid yw hyn yn ormod o naid, oherwydd erbyn hyn y myfyrwyr braced i 431 00:19:01,220 --> 00:19:02,590 yn rhoi i'r myfyriwr i-ed i chi. 432 00:19:02,590 --> 00:19:04,730 Ac os ydych chi am ddeifio tu mewn strwythur hwnnw, 433 00:19:04,730 --> 00:19:09,490 'ch jyst yn defnyddio cyfnod sengl a Yna, enw'r newidyn tu mewn, 434 00:19:09,490 --> 00:19:11,900 neu fod yr eiddo y tu mewn i'r ydych am gael mynediad at. 435 00:19:11,900 --> 00:19:14,816 Yn yr un modd, yna, os byddaf wedyn annog y defnyddiwr, rhowch dorm y myfyriwr i mi, 436 00:19:14,816 --> 00:19:18,390 gallwch un modd storio'r llinyn yn yr newidyn dorm tu mewn 437 00:19:18,390 --> 00:19:19,940 o'r strwythur myfyrwyr. 438 00:19:19,940 --> 00:19:21,410 >> Ac yn awr pethau'n mynd ychydig o ffansi. 439 00:19:21,410 --> 00:19:24,420 Ac mae hyn yn mynd i edrych yn efallai lawer yn fuan. 440 00:19:24,420 --> 00:19:27,970 Ond byddwch yn gweld hyn yn llawer mwy yn PSet 4, felly gadewch i ni dim ond cipolwg ar yn awr. 441 00:19:27,970 --> 00:19:33,364 Mae'n ymddangos bod yn unol 23 drwy 38, beth yn eich barn chi, efallai fy mod yn ei wneud? 442 00:19:33,364 --> 00:19:35,530 Rydw i wedi cael gwared ar y sylwadau ar gyfer heddiw, ond mae'r fersiwn 443 00:19:35,530 --> 00:19:38,660 o'r cod-lein ar gyfer Mae cyfeirio pob sylw. 444 00:19:38,660 --> 00:19:40,171 Beth ddylwn i ei ymddangos i fod yn ei wneud? 445 00:19:40,171 --> 00:19:42,530 >> GYNULLEIDFA: Arbed y ffeil gyda'r holl y wybodaeth y mae'r defnyddiwr yn mynd i mewn. 446 00:19:42,530 --> 00:19:44,530 >> DAVID J. Malan: Yeah, yn union, mae hyn yn ffordd newydd 447 00:19:44,530 --> 00:19:46,370 ein bod yn gweld dau, Nodwedd arall o C, 448 00:19:46,370 --> 00:19:48,700 lle y gallaf greu fy ffeiliau eu hunain. 449 00:19:48,700 --> 00:19:51,580 Hyd yma, mae pob rhaglen bron rydych wedi ysgrifennu yn heb ddinasyddiaeth. 450 00:19:51,580 --> 00:19:53,334 Cyn gynted ag y mae'n ei wneud yn rhedeg, dyna ni. 451 00:19:53,334 --> 00:19:55,000 Does dim cof neu atgof ohoni. 452 00:19:55,000 --> 00:19:56,110 Does dim arbed ffeil. 453 00:19:56,110 --> 00:19:58,120 Ond os ydych chi eisiau arbed mewnbwn sydd wedi 454 00:19:58,120 --> 00:20:02,100 digwydd, fel mewn gêm neu raglen fel hyn, mae'n troi allan y gallwn wneud hynny. 455 00:20:02,100 --> 00:20:04,360 A byddwch yn gweld hyn yn fwy yn PSet 4 ac yn Adran. 456 00:20:04,360 --> 00:20:08,661 Ond mae hyn llinell 23 yn y bôn creu ffeil o'r enw students.csv. 457 00:20:08,661 --> 00:20:10,160 Ac efallai y byddwch wedi gweld hyn o'r blaen. 458 00:20:10,160 --> 00:20:14,250 Hyd yn oed os nad ydych erioed wedi ei astudio CS o'r blaen, CSV yw newidynnau wedi'u gwahanu gan goma. 459 00:20:14,250 --> 00:20:19,000 Mae fel dyn tlawd iawn yn ei fersiwn o'r ffeil Excel, 460 00:20:19,000 --> 00:20:22,270 sy'n golygu y gallai gael ei hagor yn Excel ac yn Nifer Apple, 461 00:20:22,270 --> 00:20:23,830 ac mae ganddo rhesi a cholofnau. 462 00:20:23,830 --> 00:20:26,485 Ond dyw e ddim yn perchnogol fformat fel Microsoft neu Apple. 463 00:20:26,485 --> 00:20:29,840 Dim ond atalnodau yn gwahanu'r gwerthoedd y byddwn yn gweld mewn munud. 464 00:20:29,840 --> 00:20:31,010 >> A dim ond yn cymryd dyfalu. 465 00:20:31,010 --> 00:20:33,480 Yn unol 23, ar yr union diwedd, fy ail ddadl 466 00:20:33,480 --> 00:20:37,700 at y swyddogaeth newydd o'r enw f agored ar gyfer agor ffeil w. 467 00:20:37,700 --> 00:20:39,430 Beth allai w dynodi? 468 00:20:39,430 --> 00:20:40,022 Yeah? 469 00:20:40,022 --> 00:20:41,260 >> GYNULLEIDFA: Mae'n gadael i chi ysgrifennu at y ffeil? 470 00:20:41,260 --> 00:20:42,630 >> DAVID J. Malan: Mae'n gadael chi ysgrifennu at y ffeil. 471 00:20:42,630 --> 00:20:44,810 Felly mae 'na un neu ddau o amrywiadau ein bod yn gallu plygio i mewn yma. 472 00:20:44,810 --> 00:20:47,184 Ond os ydych am ddarllen y ffeil, hynny yw edrych arno 473 00:20:47,184 --> 00:20:50,010 a'i ddarllen i mewn i gof, yr ydych dim ond yn defnyddio dyfyniad unquote "r". 474 00:20:50,010 --> 00:20:53,110 Os ydych am ysgrifennu at y ffeiliau, byddwch yn defnyddio dyfyniad unquote "w". 475 00:20:53,110 --> 00:20:55,190 Mae hefyd wedi atodi a un neu ddau o bethau eraill 476 00:20:55,190 --> 00:20:57,356 os ydych am i addasu ffeiliau sy'n bodoli eisoes. 477 00:20:57,356 --> 00:21:00,480 Nawr rydym yn mynd i cadw gweld hyn beth, yna byddwn yn dod yn ôl i linell 24. 478 00:21:00,480 --> 00:21:02,640 NULL, mae'n troi allan, yn gwerth arbennig sy'n 479 00:21:02,640 --> 00:21:06,070 gellir ei ddychwelyd gan swyddogaethau penodol os bydd rhywbeth wedi mynd wrong-- 480 00:21:06,070 --> 00:21:08,490 os nad yw'r ffeil yn bodoli, os ydych wedi rhedeg allan o gof, 481 00:21:08,490 --> 00:21:09,620 neu griw o gamgymeriadau eraill. 482 00:21:09,620 --> 00:21:13,470 Ond am nawr, gadewch i ni gymryd yn ganiataol bod hyn yn yw gwirio gwall yn unig confensiynol. 483 00:21:13,470 --> 00:21:17,090 Yma yn llinell 26, rwy'n ailadrodd 0-3 dros fy holl fyfyrwyr. 484 00:21:17,090 --> 00:21:20,470 Ac mae hyn yn fath o fath swyddogaeth newydd, fprintf, 485 00:21:20,470 --> 00:21:21,460 ond dim ond yn cymryd dyfalu. 486 00:21:21,460 --> 00:21:24,370 Os printf yn unig print llinyn fformatio, 487 00:21:24,370 --> 00:21:26,507 beth mae fprintf yn ôl pob tebyg yn ei olygu? 488 00:21:26,507 --> 00:21:27,590 GYNULLEIDFA: Argraffu i ffeil. 489 00:21:27,590 --> 00:21:29,290 DAVID J. Malan: Argraffu a llinyn fformatio i ffeil. 490 00:21:29,290 --> 00:21:31,180 Dyna beth i'r ZIP ychwanegol f modd yn ffeil. 491 00:21:31,180 --> 00:21:36,420 Ac mae'r ddadl gyntaf newydd wedi i fod y newidyn sy'n cynrychioli eich ffeil. 492 00:21:36,420 --> 00:21:38,866 Yna, rydym yn unig yn cael fformat llinyn yn union fel printf. 493 00:21:38,866 --> 00:21:40,740 A hyd yn oed er bod hyn cystrawen yn newydd, mae hyn yn unig 494 00:21:40,740 --> 00:21:44,610 golygu plwg yn enw'r myfyriwr, plug-in y dorm myfyrwyr, ac yna 495 00:21:44,610 --> 00:21:47,160 gyda fclose, caewch y ffeil. 496 00:21:47,160 --> 00:21:49,730 Ac yna lastly-- hyn yn newydd a byddwn yn dod yn ôl at hyn 497 00:21:49,730 --> 00:21:53,240 cyn long-- Im 'yn rhyddhau y myfyriwr am resymau 498 00:21:53,240 --> 00:21:54,860 a ddigwyddodd i fyny uwchben yno. 499 00:21:54,860 --> 00:21:56,820 Ond byddwn yn dod yn ôl at hynny cyn long-- 500 00:21:56,820 --> 00:21:59,820 dyna oherwydd y ffordd GetString yn mewn gwirionedd yn gweithio o dan y cwfl. 501 00:21:59,820 --> 00:22:01,280 >> Felly, gadewch i ni edrych hwylus yma. 502 00:22:01,280 --> 00:22:04,380 Os byddaf yn teipio ls yn fy cyfeiriadur, sylwi nad wyf yn ei wneud 503 00:22:04,380 --> 00:22:09,360 cael ffeil o'r enw students.csv, dim ond nid oes, nid yw'n bodoli. 504 00:22:09,360 --> 00:22:14,965 Felly os wyf yn awr yn llunio rhaglen hon, gwneud structs-1,. / Structs-1, 505 00:22:14,965 --> 00:22:20,570 ac yr wyf i'n mynd i fynd yn ei flaen a theipiwch Andi, sy'n byw yn Berkeley yn Iâl. 506 00:22:20,570 --> 00:22:26,350 Rydym yn mynd i gael Rob pwy byw yn Thayer y dyddiau hyn. 507 00:22:26,350 --> 00:22:33,760 A gadewch i ni ddod o hyd i ble yw, yr wyf yn meddwl, Maria yn Mather, 508 00:22:33,760 --> 00:22:35,100 os wyf wedi cofio yn gywir. 509 00:22:35,100 --> 00:22:36,460 >> Felly nid oes dim yn digwydd wedyn. 510 00:22:36,460 --> 00:22:40,680 Ond os wyf yn teipio ls yn awr, mae students.csv. 511 00:22:40,680 --> 00:22:43,080 Gadewch i ni fynd yn ei flaen a students.csv agored. 512 00:22:43,080 --> 00:22:46,050 Mae hyn eto yn iawn fformat ffeil ysgafn. 513 00:22:46,050 --> 00:22:49,570 Ond yr wyf yn syml i wedi mabwysiadu confensiwn bod gen i ddau rhesi a cholofnau yma. 514 00:22:49,570 --> 00:22:52,020 Mae'r golofn gyntaf yn Enwau cyntaf pobl. 515 00:22:52,020 --> 00:22:55,740 Mae'r ail golofn yn y myfyriwr dorm, neu goleg, neu dŷ, neu whatnot. 516 00:22:55,740 --> 00:22:57,900 Ac yn awr yr wyf wedi achub hwn yn barhaol mewn ffeil. 517 00:22:57,900 --> 00:22:59,280 >> Felly nid yw'n bob un sy'n ddiddorol. 518 00:22:59,280 --> 00:23:02,980 Ond mae hyn yn unig yw garreg sarn nawr i allu parhau gwybodaeth 519 00:23:02,980 --> 00:23:04,040 yn barhaol. 520 00:23:04,040 --> 00:23:08,340 Felly, gadewch i ni weld nawr beth arall y gallwn wneud â'r hyn ac eraill nodweddion. 521 00:23:08,340 --> 00:23:10,729 Ond yn gyntaf, unrhyw gwestiynau? 522 00:23:10,729 --> 00:23:12,145 Dyna oedd llawer, ac roedd hynny'n gyflym. 523 00:23:12,145 --> 00:23:16,131 Ond byddwch yn gweld llawer mwy mewn PSet 4, yn ogystal. 524 00:23:16,131 --> 00:23:16,630 Yeah? 525 00:23:16,630 --> 00:23:19,360 >> GYNULLEIDFA: A oes ffordd i barhau i ychwanegu enwau at y ffeil? 526 00:23:19,360 --> 00:23:19,880 >> DAVID J. Malan: Cwestiwn da. 527 00:23:19,880 --> 00:23:21,800 A oes ffordd o barhau ychwanegu enwau at y ffeil? 528 00:23:21,800 --> 00:23:22,340 Ydw. 529 00:23:22,340 --> 00:23:24,630 Ac, yn wir, os ydych yn darfod i fyny ail-agor y ffeil, 530 00:23:24,630 --> 00:23:26,780 byddech yn eu defnyddio dyfyniad unquote "a" ar gyfer atodi, 531 00:23:26,780 --> 00:23:31,090 a fyddai dim ond ychwanegu llinell newydd, a llinell newydd dro ar ôl tro, yn union. 532 00:23:31,090 --> 00:23:32,010 Cwestiwn da. 533 00:23:32,010 --> 00:23:32,950 Cwestiynau eraill? 534 00:23:32,950 --> 00:23:33,450 Yeah? 535 00:23:33,450 --> 00:23:35,580 GYNULLEIDFA: Os ydych yn rhedeg y rhaglen eto ar hyn o bryd, 536 00:23:35,580 --> 00:23:38,000 byddai'n cadw ychwanegu enwau i'r ffeil neu byddai'n agor ffeil newydd? 537 00:23:38,000 --> 00:23:38,740 >> DAVID J. Malan: Ah, cwestiwn da. 538 00:23:38,740 --> 00:23:41,448 Os ydych yn rhedeg y rhaglen eto cywir yn awr, teipio efallai mewn enwau newydd, 539 00:23:41,448 --> 00:23:44,820 byddai'n ychwanegu at y ffeil neu ysgrifennu dros y ffeil? 540 00:23:44,820 --> 00:23:47,420 Mae'r olaf, oherwydd fy mod i'n peidio â defnyddio dull atodi. 541 00:23:47,420 --> 00:23:49,930 Ac oherwydd Im 'jyst yn ddall agor y ffeil ar gyfer ysgrifennu, 542 00:23:49,930 --> 00:23:51,310 dim ond ei fod yn mynd i ysgrifennu dros y ffeil. 543 00:23:51,310 --> 00:23:54,570 Felly byddai yn wir angen i mi ei wneud yw atodi, os ydw i eisiau mewn gwirionedd yn cael tymor hir 544 00:23:54,570 --> 00:23:55,350 cronfa ddata. 545 00:23:55,350 --> 00:23:58,220 >> Nawr CSV yn ddefnyddiol, dweud y gwir, hyd yn oed am debyg os ydych yn writing-- 546 00:23:58,220 --> 00:24:00,100 a byddwn yn y pen draw yn gweld hyn yn ddiweddarach yn y semester pan 547 00:24:00,100 --> 00:24:01,455 rydym yn defnyddio CSVs at ddibenion eraill. 548 00:24:01,455 --> 00:24:04,920 Os ydych am i storio'r holl bobl sydd wedi cofrestru ar gyfer rhai digwyddiadau, 549 00:24:04,920 --> 00:24:07,420 neu cofrestru ar gyfer eich myfyrwyr grŵp, neu rywbeth fel 'na, 550 00:24:07,420 --> 00:24:10,330 storio'r data yn y math hwn o fformat yn super gyfleus. 551 00:24:10,330 --> 00:24:12,580 Oherwydd llythrennol, os wyf Roedd i lawrlwytho'r ffeil hon. 552 00:24:12,580 --> 00:24:14,540 Gallwn i double-- a gadewch i ni mewn gwirionedd yn rhowch gynnig ar hyn 553 00:24:14,540 --> 00:24:16,720 os oes gen i Excel neu Niferoedd ar fan hyn. 554 00:24:16,720 --> 00:24:19,130 >> Rydw i'n mynd i dde-glicio neu reolaeth-glicio fy ffeil. 555 00:24:19,130 --> 00:24:20,020 Wps. 556 00:24:20,020 --> 00:24:21,830 Cliciwch y botwm dde neu reolaeth-glicio fy ffeil. 557 00:24:21,830 --> 00:24:24,960 Dewch ymlaen, nid yw fy llygoden yn cydweithredu. 558 00:24:24,960 --> 00:24:32,694 Download-- Rydw i'n mynd i lawrlwytho'r holl ffeiliau yma fel 559 00:24:32,694 --> 00:24:33,860 dim ond er mwyn i mi chrafangia yr un yma. 560 00:24:33,860 --> 00:24:37,850 A gadewch i ni weld os yw hyn yn gweithio students.csv-- tro cyntaf 561 00:24:37,850 --> 00:24:39,310 Rwyf wedi actifadu. 562 00:24:39,310 --> 00:24:41,360 Erbyn hyn maent eisiau gweld fy cysylltiadau. 563 00:24:41,360 --> 00:24:44,310 Yn awr, mae angen i mi gofrestru. 564 00:24:44,310 --> 00:24:47,620 Gweler pa mor hawdd yw hi i ddefnyddio CSVs? 565 00:24:47,620 --> 00:24:50,840 Ie, ei gadw'n gyfoes. 566 00:24:50,840 --> 00:24:52,375 OK, yn awr rydym yn barod ar gyfer y dosbarth. 567 00:24:52,375 --> 00:24:58,750 568 00:24:58,750 --> 00:25:00,370 OK, oh, beth sy'n newydd? 569 00:25:00,370 --> 00:25:02,920 OK, yn agos. 570 00:25:02,920 --> 00:25:04,750 Dyna oedd hudol. 571 00:25:04,750 --> 00:25:07,280 OK, yn awr mae'n rhaid i ni roi'r wybodaeth ddiweddaraf. 572 00:25:07,280 --> 00:25:10,890 Ac yn awr, mae wedi anghofio beth ffeil agorais yn wreiddiol, 573 00:25:10,890 --> 00:25:13,090 ond yr hyn a-- dyna ni. 574 00:25:13,090 --> 00:25:16,341 Iawn, felly erbyn hyn mae gennym ffeil Excel. 575 00:25:16,341 --> 00:25:18,290 Diolch. 576 00:25:18,290 --> 00:25:20,764 >> Iawn, felly beth wnes i oedd y rhan hawdd. 577 00:25:20,764 --> 00:25:23,930 Wrth gwrs y gallwn i wedi rhag-osod Excel, neu Rhifau, neu beth bynnag raglen. 578 00:25:23,930 --> 00:25:25,846 Ond mae hyn yn 'n glws, oherwydd yn awr yr wyf yn gallu trin 579 00:25:25,846 --> 00:25:28,090 mae'r data mewn fformat safonol. 580 00:25:28,090 --> 00:25:30,294 >> Felly nawr gadewch i ni gyd-destun newid i lle rydym yn gadael i ffwrdd 581 00:25:30,294 --> 00:25:32,710 tro diwethaf, a oedd i gychwyn i gymryd oddi ar olwynion hyfforddiant. 582 00:25:32,710 --> 00:25:34,543 Ond yn gyntaf, na wnaethoch chi gweld cinio yn gynharach y 583 00:25:34,543 --> 00:25:38,150 yn digwydd eto yma yn Tân ac Ice yng Nghaergrawnt, Sitar yn New Haven. 584 00:25:38,150 --> 00:25:43,150 Cofrestrwch ar wefan CS50s ASAP i ymuno â myfyrwyr CS50 a staff. 585 00:25:43,150 --> 00:25:46,090 >> Felly, rydym yn cymryd olwynion hyfforddiant i ffwrdd ar ddydd Llun fel follows-- 586 00:25:46,090 --> 00:25:49,120 llinyn wedi cael ei ddatgan yn Llyfrgell CS50s ers peth amser. 587 00:25:49,120 --> 00:25:52,650 Ac mae'n braf, oherwydd mae'n caniatáu ni i siarad am newidynnau fel rhai 588 00:25:52,650 --> 00:25:54,660 geiriau a brawddegau ac yn fwy cyflawn. 589 00:25:54,660 --> 00:25:56,710 Ond mae'n troi allan llinyn yn bodoli. 590 00:25:56,710 --> 00:26:00,200 Mae hynny yn unig yw gyfystyr, neu alias, ein bod wedi creu ar gyfer rhywbeth sydd 591 00:26:00,200 --> 00:26:03,780 mewn gwirionedd ychydig yn fwy o'r enw technegol yn torgoch *. 592 00:26:03,780 --> 00:26:07,900 >> Ac yn wir, gwelsom enghraifft o raglen ar ddydd Llun 593 00:26:07,900 --> 00:26:11,200 nad oedd yn ymddwyn yn eithaf wrth i ni ddisgwyl. 594 00:26:11,200 --> 00:26:13,630 Hwn oedd y ffeil, cymharu-0. 595 00:26:13,630 --> 00:26:17,910 Ac yn dwyn i gof bod yn cymharu-0, os Yr wyf yn ail-grynhoi rhaglen dydd Llun 596 00:26:17,910 --> 00:26:22,670 ac yn rhedeg chymharu-0 a deipio i mewn mom yn llythrennau bach, a mom mewn llythrennau bach eto. 597 00:26:22,670 --> 00:26:25,320 Roedd y rhaglen yn mynnu fy mod deipio pethau gwahanol, 598 00:26:25,320 --> 00:26:29,210 er bod mom, i gyd yn llythrennau bach, yn union yr un fath yn weledol. 599 00:26:29,210 --> 00:26:31,990 Felly beth oedd yr ateb byr am pam y cyfrifiadur yn meddwl 600 00:26:31,990 --> 00:26:34,500 y ddau linyn yn wahanol? 601 00:26:34,500 --> 00:26:35,250 Yeah? 602 00:26:35,250 --> 00:26:36,534 >> GYNULLEIDFA: [Anghlywadwy] 603 00:26:36,534 --> 00:26:37,450 DAVID J. Malan: Iawn. 604 00:26:37,450 --> 00:26:39,600 Felly, mom, y tro cyntaf Yr wyf yn ei deipio i mewn, yn cael ei 605 00:26:39,600 --> 00:26:42,710 storio yn rhywle yn fy cyfrifiadur cof ond mewn lleoliad gwahanol 606 00:26:42,710 --> 00:26:44,690 na'r ail dro i mi deipio i mewn mom. 607 00:26:44,690 --> 00:26:46,580 Nawr mae'n sicr y gellid ei optimized. 608 00:26:46,580 --> 00:26:49,205 Gallai'r cyfrifiadur fod yn smart ac sylweddoli y ddau llinynnau, hey, 609 00:26:49,205 --> 00:26:49,954 eu bod yn union yr un fath. 610 00:26:49,954 --> 00:26:51,520 Gadewch nid fi redundantly storio. 611 00:26:51,520 --> 00:26:54,229 Ond nid yw cyfrifiaduron yn gwneud hynny Optimization oni bai eich bod yn dweud wrthynt i. 612 00:26:54,229 --> 00:26:56,061 Felly, yn ddiofyn, maen nhw'n jyst yn mynd i roi diwedd ar i fyny 613 00:26:56,061 --> 00:26:57,670 mewn dau le gwahanol yn y cof. 614 00:26:57,670 --> 00:27:01,570 Ac felly i fod yn fwy clir, pan rydym yn cymharu y ddau llinynnau, 615 00:27:01,570 --> 00:27:03,950 y galwyd gyntaf s, yr ail galwyd 616 00:27:03,950 --> 00:27:08,530 t, beth oedd yn benodol yr wyf yn cymharu yma ar y llinell 13? 617 00:27:08,530 --> 00:27:09,494 Yeah. 618 00:27:09,494 --> 00:27:12,390 >> GYNULLEIDFA: Mae'n y lle er cof y bydd y newidyn yn pwyntio at. 619 00:27:12,390 --> 00:27:14,900 >> DAVID J. Malan: Yn union, roeddwn yn cymharu y lle er cof 620 00:27:14,900 --> 00:27:16,300 bod newidynnau y rhai Cyfeiriodd at. 621 00:27:16,300 --> 00:27:20,560 Felly yn benodol, os mom oedd wrth beit rhif 1, a 2, a 3, 622 00:27:20,560 --> 00:27:24,020 a 4-- oherwydd cofio'r slaes Mae angen 0 fod yr holl ffordd ar y diwedd. 623 00:27:24,020 --> 00:27:29,420 Ac y lle arall o mom, m-o-m, Roedd yn y cyfeiriad 10, 11, 12, a 13. 624 00:27:29,420 --> 00:27:33,100 Roeddwn yn cymharu 1, y cyfeiriad hwnnw, y lleoliad hwnnw yn y cof, 625 00:27:33,100 --> 00:27:35,160 erbyn 10, sef mae'n amlwg nad yr un fath. 626 00:27:35,160 --> 00:27:36,260 1 Nid yw 10. 627 00:27:36,260 --> 00:27:39,620 >> Felly, mae hyn yn neis yn y mae'n eithaf syml. 628 00:27:39,620 --> 00:27:42,870 Ond mae'n achosi problemau i'r graddau y Ni allwn ymddangos i gymharu llinynnau. 629 00:27:42,870 --> 00:27:44,930 Felly fundamentally-- ac ar y lefel hon isel, 630 00:27:44,930 --> 00:27:47,300 os ydych chi eisiau gweithredu rhaglen i gymharu 631 00:27:47,300 --> 00:27:50,270 dau air ar wahân bod y defnyddiwr wedi teipio i mewn ar gyfer ansawdd, 632 00:27:50,270 --> 00:27:53,944 a ydynt yn llinell i fyny torgoch am torgoch, dim ond mewn termau cyffredinol, 633 00:27:53,944 --> 00:27:55,360 beth sydd angen i ni ei wneud, mae'n debyg? 634 00:27:55,360 --> 00:27:57,940 Nid yw'n ddigon dim ond i edrych ar y rheini dau gyfeiriad. 635 00:27:57,940 --> 00:27:58,860 Yr hyn sydd angen i ni ei wneud? 636 00:27:58,860 --> 00:27:59,360 Yeah? 637 00:27:59,360 --> 00:28:01,120 >> GYNULLEIDFA: ailadrodd drwy mae'r string [Anghlywadwy]. 638 00:28:01,120 --> 00:28:02,600 >> DAVID J. Malan: Yeah, gadewch i ni ailadrodd trwy'r llinyn. 639 00:28:02,600 --> 00:28:05,808 Gadewch i ni yn defnyddio ar gyfer dolen, dolen tra, neu beth bynnag yr ydych yn fwyaf cyfforddus ag ef. 640 00:28:05,808 --> 00:28:08,840 Ac os ydym wedi cael dau linyn yn rhywle mewn cof, gadewch i ni edrych ar bob yn 641 00:28:08,840 --> 00:28:11,770 cymeriad yn gyntaf, yna pob un yn ail cymeriad, yna drydydd, ac yn bedwerydd, 642 00:28:11,770 --> 00:28:15,206 ac yn bumed, nes i ni daro pa werth sentinel arbennig? 643 00:28:15,206 --> 00:28:16,080 GYNULLEIDFA: [Anghlywadwy] 644 00:28:16,080 --> 00:28:18,800 DAVID J. Malan: Yeah, mae'r slaes sero, a phryd hynny naill ai llinyn 645 00:28:18,800 --> 00:28:20,100 gallwn benderfynu dyna ni. 646 00:28:20,100 --> 00:28:21,970 Ydyn ni wedi cyfateb bob gymeriad? 647 00:28:21,970 --> 00:28:22,990 Os nad yw, yn dychwelyd ffug. 648 00:28:22,990 --> 00:28:24,770 Os felly, yn dychwelyd yn wir. 649 00:28:24,770 --> 00:28:28,800 Ac felly dyna'n union beth y fersiwn y rhaglen yn cymharu-1.c ei wneud. 650 00:28:28,800 --> 00:28:31,677 Mae'n union yr un fath â'r hyn yr ydym edrych ar Dydd Llun ac eithrio fy mod i wedi 651 00:28:31,677 --> 00:28:34,760 gotten gwared ar y gair string-- er nad oes ganddo unrhyw impact-- swyddogaethol i gyd 652 00:28:34,760 --> 00:28:37,450 Rwy'n gwneud yn awr yn cael gwared rhai olwynion hyfforddiant gweledol, 653 00:28:37,450 --> 00:28:40,880 ond i weld yn glir bod s a t yn gyfeiriadau. 654 00:28:40,880 --> 00:28:43,020 A dyna beth y seren, y seren, yn cynrychioli 655 00:28:43,020 --> 00:28:46,690 yn gyfeiriad, a elwir fel arall yn fwy technegol fel pwyntydd. 656 00:28:46,690 --> 00:28:49,880 >> Felly, pan wyf yn datgan mlaen llinell 9 a dweud torgoch * s, 657 00:28:49,880 --> 00:28:52,160 nid yw hynny'n golygu rhoi llinyn mi. 658 00:28:52,160 --> 00:28:56,360 Mae hynny'n golygu rhoi newidyn y mae ei fi bwrpas mewn bywyd yw i storio cyfeiriad. 659 00:28:56,360 --> 00:29:00,400 Oherwydd yr wyf am i roi'r cyfeiriad o gyfres i mewn iddo. 660 00:29:00,400 --> 00:29:03,500 Ac yn wir, GetString, i fod yn glir, nid yn dychwelyd llinyn. 661 00:29:03,500 --> 00:29:06,110 Nid yw'n dychwelyd mom slaes sero, fel y cyfryw. 662 00:29:06,110 --> 00:29:10,005 Beth mae GetString yn benodol ac yn fanwl gywir yn dychwelyd? 663 00:29:10,005 --> 00:29:10,880 GYNULLEIDFA: [Anghlywadwy] 664 00:29:10,880 --> 00:29:14,080 DAVID J. Malan: Mae gyfeiriad, mae'r cyfeiriad y cymeriad cyntaf 665 00:29:14,080 --> 00:29:16,070 mewn rhai llinyn y mae wedi gotten. 666 00:29:16,070 --> 00:29:19,250 Ac felly yn awr rydym yn gweld allweddair arbennig eto. 667 00:29:19,250 --> 00:29:20,640 Ac, yr wyf yn cyfeirio at hyn yn gynharach. 668 00:29:20,640 --> 00:29:23,620 Mae hyn yn mynd i fod confensiwn da y byddwn yn gweld eto ac eto yn awr. 669 00:29:23,620 --> 00:29:27,540 Im 'yn gwirio i wneud yn siŵr bod Nid yw null ac nid t yn null. 670 00:29:27,540 --> 00:29:30,100 Gan fod yn seiliedig ar fy 'n sylweddol sôn cyflym yn gynharach, 671 00:29:30,100 --> 00:29:35,510 beth allai olygu os nad GetString yn dychwelyd cyfeiriad ond N-U-L-L, sef unwaith eto, 672 00:29:35,510 --> 00:29:36,990 rhywfaint o werth arbennig? 673 00:29:36,990 --> 00:29:37,890 >> GYNULLEIDFA: Gwall. 674 00:29:37,890 --> 00:29:38,600 >> DAVID J. Malan: Mae'n camgymeriad. 675 00:29:38,600 --> 00:29:39,550 Aeth rhywbeth o'i le. 676 00:29:39,550 --> 00:29:41,341 A beth yn nodweddiadol allai ddigwydd, yn enwedig 677 00:29:41,341 --> 00:29:45,162 gyda strings-- a allai fod o hyd anhysbys yn advance-- 678 00:29:45,162 --> 00:29:46,870 efallai y cyfrifiaduron ' allan o gof, efallai 679 00:29:46,870 --> 00:29:49,280 chi deipio yn y fath gair hir neu ddedfryd 680 00:29:49,280 --> 00:29:51,880 neu ludo traethawd mor fawr does nid dim ond digon o gof. 681 00:29:51,880 --> 00:29:55,340 Ac felly ni all GetString ddychwelyd cyfeiriad y holl beth, 682 00:29:55,340 --> 00:29:56,620 felly dim ond yn dychwelyd dim. 683 00:29:56,620 --> 00:30:00,580 Ac mae'n dweud gwall wedi digwydd trwy ddychwelyd y gwerth NULL arbennig. 684 00:30:00,580 --> 00:30:02,890 Mae'n y cyfeiriad sero, fel petai. 685 00:30:02,890 --> 00:30:06,157 >> Nawr mae'n troi allan C comes ag a swyddogaeth sy'n gwneud hynny ailadrodd. 686 00:30:06,157 --> 00:30:09,240 Nid oes rhaid i ni weithredu hyn gyda mae i dolen neu ddolen tra ein hunain. 687 00:30:09,240 --> 00:30:11,150 Gallwn ddefnyddio swyddogaeth, Gelwir gryno, 688 00:30:11,150 --> 00:30:15,400 droi comp, neu linyn cymharu, y mae eu bwrpas mewn bywyd yw i wneud yn union hynny. 689 00:30:15,400 --> 00:30:19,990 Rydych yn rhoi dau awgrymiadau, dau gyfeiriad, a bydd yn mynd i'r cyfeiriadau hynny 690 00:30:19,990 --> 00:30:23,130 ac yna cymharu llythyren ar gyfer Llythyr am lythyr ar gyfer ansawdd, 691 00:30:23,130 --> 00:30:26,610 stopio dim ond pan fydd yr hyn sy'n wir? 692 00:30:26,610 --> 00:30:31,540 Pan reddfol dylai droi comp yn rhoi'r gorau i ailadrodd, dim ond i fod yn glir? 693 00:30:31,540 --> 00:30:35,400 Pan fydd yn taro slaes 0 yn y naill llinyn, a phryd y gall ei benderfynu 694 00:30:35,400 --> 00:30:38,910 wedi popeth cyfatebol, neu wedi bod yno anghysondeb? 695 00:30:38,910 --> 00:30:42,740 >> Felly, os ydym yn rhedeg hyn nawr a rhoi cynnig ein gêm cyfalafu bach, 696 00:30:42,740 --> 00:30:49,260 felly gwnewch yn cymharu-1, ./compare-1, a deipio mom yn llythrennau bach y ddau achlysur. 697 00:30:49,260 --> 00:30:50,560 Nawr mae'n yr un peth. 698 00:30:50,560 --> 00:30:54,080 Ac os wyf yn ei wneud eto gyda llythrennau bach ac yna efallai priflythyren. 699 00:30:54,080 --> 00:30:56,720 Nawr mae'n wir yn gwahaniaethu rhwng llythrennau bach a mawr. 700 00:30:56,720 --> 00:31:00,440 Felly nid bob un sy'n caled neu hudol, ond mae'n awr yn egluro 701 00:31:00,440 --> 00:31:03,140 beth sy'n mynd ymlaen o dan y cwfl. 702 00:31:03,140 --> 00:31:07,640 >> Felly, beth arall y gallwn ei echdynnu o y math hwn o wers? 703 00:31:07,640 --> 00:31:08,980 Felly, gadewch i ni edrych ar hyn. 704 00:31:08,980 --> 00:31:15,380 Rydw i'n mynd i fynd yn ei flaen ac ysgrifennu rhaglen cyflym a elwir yma copi-0. 705 00:31:15,380 --> 00:31:21,594 Ac yn awr gadewch i ni fynd yn ei flaen ac mewn gwirionedd gadewch i ni wneud this-- gyda chopi-0, 706 00:31:21,594 --> 00:31:23,010 yn edrych ar yr hyn yr wyf wedi cael yma. 707 00:31:23,010 --> 00:31:24,712 Cyntaf i mi ddweud wrth y defnyddiwr, yn dweud rhywbeth. 708 00:31:24,712 --> 00:31:26,420 Yna mi gael llinyn ac yr wyf yn ei storio mewn s. 709 00:31:26,420 --> 00:31:29,810 Yna mi gadarnhau a oes s hafal hafal NULL, dim ond dychwelyd 1. 710 00:31:29,810 --> 00:31:31,590 Felly, mae hyn yn unig yw gwirio gwall safonol. 711 00:31:31,590 --> 00:31:33,112 Nid oes unrhyw beth diddorol sydd wedi digwydd. 712 00:31:33,112 --> 00:31:36,320 Ac yn wir, os ydym yn cael gwared ar y gwall gwirio, mae hyn yn edrych fel wythnos 1 Cod 713 00:31:36,320 --> 00:31:36,985 ar hyn o bryd. 714 00:31:36,985 --> 00:31:39,110 Ond yr wyf wedi dechrau i gael ychydig yn well am hynny. 715 00:31:39,110 --> 00:31:43,340 >> Nawr yn llinell 16, wythnos yn ôl, efallai diwrnodau neu funudau hyd yn oed cwpl yn ôl, 716 00:31:43,340 --> 00:31:46,720 gallech ddweud llinell 16 yw gan greu newidyn a elwir yn t 717 00:31:46,720 --> 00:31:48,219 a chopïo s i mewn iddo. 718 00:31:48,219 --> 00:31:50,010 A dyna yn berffaith cludfwyd rhesymol. 719 00:31:50,010 --> 00:31:51,560 Ond fod yn fwy manwl yn awr. 720 00:31:51,560 --> 00:31:54,190 Beth sy'n digwydd yn llinell 16? 721 00:31:54,190 --> 00:31:56,170 Yr hyn sy'n cael ei gopïo o'r dde i'r chwith? 722 00:31:56,170 --> 00:31:56,669 Yeah? 723 00:31:56,669 --> 00:31:58,490 GYNULLEIDFA: A yw t cael cyfeiriad s? 724 00:31:58,490 --> 00:32:01,220 >> DAVID J. Malan: Yn union, t yn cael y cyfeiriad s. 725 00:32:01,220 --> 00:32:05,170 Felly, er mwyn bod yn glir yn awr, os byddaf yn mynd yn ôl at yr enghraifft honno cynharach 726 00:32:05,170 --> 00:32:08,520 ac yr wyf yn tynnu allan y peth dwi wedi teipio i mewn. 727 00:32:08,520 --> 00:32:11,640 A hyn yr wyf wedi ei deipio in-- dyma s, ac yma 728 00:32:11,640 --> 00:32:15,830 yn hyn yr wyf wedi teipio mewn rhywle yn cof, mom ac yna slaes 729 00:32:15,830 --> 00:32:17,840 0 sydd wedi ei ychwanegu i mi. 730 00:32:17,840 --> 00:32:23,060 Yr hyn yr wyf yn ei storio mewn yma, yn galw i gof, mae hyn ar leoliad 1, 2, 3, 4, 731 00:32:23,060 --> 00:32:24,655 dyma beth sydd ar hyn o bryd yn s. 732 00:32:24,655 --> 00:32:29,220 Felly, os ar linell 16, yr wyf yn dweud ei roi i mi newidyn a elwir t a siop arall 733 00:32:29,220 --> 00:32:33,590 mewn o ngwerth s, beth Nid yn cael ei storio yma bydd mom 734 00:32:33,590 --> 00:32:35,480 ond yn hytrach dim ond y rhif 1. 735 00:32:35,480 --> 00:32:38,520 >> Felly, os ydym yn edrych ar y blaen yn y rhaglen hon Erbyn hyn, yr hyn sy'n mynd i ddigwydd? 736 00:32:38,520 --> 00:32:40,690 Felly sylwi fod yna swyddogaeth hon i chi efallai 737 00:32:40,690 --> 00:32:44,410 wedi defnyddio hyn beth amser yn ôl i Cesar, neu Vigenere, neu efallai ddim o gwbl. 738 00:32:44,410 --> 00:32:48,170 I'n hawlio gyda fy printf, rwy'n mynd i fanteisio copi i'r t. 739 00:32:48,170 --> 00:32:51,616 Yn gyntaf, yn unol 19, bwyll cyflym gwirio, gwiriadau strlen hyd t. 740 00:32:51,616 --> 00:32:53,740 Oherwydd nad wyf am ceisio manteisio rywbeth 741 00:32:53,740 --> 00:32:55,104 os nad oes llinyn yno. 742 00:32:55,104 --> 00:32:57,520 Os yw'r defnyddiwr jyst daro Enter, does dim byd i fanteisio. 743 00:32:57,520 --> 00:33:01,100 Felly, nid wyf am wneud llinell 21. 744 00:33:01,100 --> 00:33:05,758 Felly llinell 21 yn manteisio pa lythyren, mae'n debyg, mewn t? 745 00:33:05,758 --> 00:33:06,514 >> GYNULLEIDFA: m? 746 00:33:06,514 --> 00:33:08,722 DAVID J. Malan: Mae'n edrych fel ei fod yn copïo pa un? 747 00:33:08,722 --> 00:33:09,486 GYNULLEIDFA: m. 748 00:33:09,486 --> 00:33:10,450 DAVID J. Malan: Uh, m. 749 00:33:10,450 --> 00:33:12,685 OK, felly y m cyntaf, oherwydd hysbysu fy mod i'n 750 00:33:12,685 --> 00:33:14,935 gan fynd heibio i toupper, a oedd yn os nad ydych erioed wedi ei weld ei fod yn 751 00:33:14,935 --> 00:33:16,980 dim ond swyddogaeth i manteisio fel ei fewnbwn. 752 00:33:16,980 --> 00:33:20,240 t braced sero yn golygu rhoi 'm' r sero cymeriad t. 753 00:33:20,240 --> 00:33:22,550 Ac felly sut mae hyn yn Newid llun, bod yn glir? 754 00:33:22,550 --> 00:33:25,490 755 00:33:25,490 --> 00:33:29,160 Beth sydd angen i gael ailysgrifennu neu ei newid mewn perthynas â s a t a mom 756 00:33:29,160 --> 00:33:30,097 sero slaes. 757 00:33:30,097 --> 00:33:31,470 >> GYNULLEIDFA: [Anghlywadwy] 758 00:33:31,470 --> 00:33:34,030 >> DAVID J. Malan: Yeah, felly mae hyn yn un yma yn syml 759 00:33:34,030 --> 00:33:40,860 angen i gael newid canlynol-- atgyweiria this-- Mae angen i gael newid i m cyfalaf. 760 00:33:40,860 --> 00:33:44,330 Ond yn awr, edrychwch yn ddiweddarach yn y rhaglen, os wyf argraffu 761 00:33:44,330 --> 00:33:49,800 s a t wrth i mi lanhau yma, gwyliwch beth sy'n mynd i ddigwydd argraffu s a t. 762 00:33:49,800 --> 00:33:54,310 Felly gwnewch gopi-0, ./copy-0. 763 00:33:54,310 --> 00:33:57,140 Gadewch i mi fynd yn ei flaen a theipiwch yn mom ym mhob llythrennau bach. 764 00:33:57,140 --> 00:34:00,140 Sylwch y gwreiddiol ac y copi wedi cael eu cyfalafu. 765 00:34:00,140 --> 00:34:00,850 Pam? 766 00:34:00,850 --> 00:34:04,431 Wel, s a t yn y ddwy pwyntio at, os mynnwch, yr un darn o gof. 767 00:34:04,431 --> 00:34:06,930 Ac yn dweud y gwir, mae hyn yn mynd yn 'n sylweddol uninteresting-- ffaith 768 00:34:06,930 --> 00:34:09,150 ein bod yn defnyddio cyfeiriad sero yma. 769 00:34:09,150 --> 00:34:11,719 Yr wyf yn golygu, nid wyf yn wir gofal lle mae pethau mewn cof. 770 00:34:11,719 --> 00:34:13,550 Mae'n ddrwg gennym i ddim yn dileu ychydig yn rhy fawr. 771 00:34:13,550 --> 00:34:15,674 Ond dwi ddim yn wir gofal ble mae pethau yn y cof. 772 00:34:15,674 --> 00:34:18,510 Ac felly, yn wir beth rhaglenwyr yn tueddu i feddwl am 773 00:34:18,510 --> 00:34:21,080 yw bod pan fyddwch yn siarad am cyfeiriad, neu pwyntydd, 774 00:34:21,080 --> 00:34:22,679 sy'n gofalu lle y mae yn gof. 775 00:34:22,679 --> 00:34:24,989 Nid wyf yn poeni os yw'n ar beit un neu un biliwn. 776 00:34:24,989 --> 00:34:27,920 Fi jyst poeni bod hyn newidyn yn effeithiol 777 00:34:27,920 --> 00:34:29,620 bwyntio ar y darn o gof. 778 00:34:29,620 --> 00:34:33,350 Ac felly, o hyn ymlaen, yn hytrach na quibble dros gyfeiriadau cof mympwyol, gadewch i ni 779 00:34:33,350 --> 00:34:36,710 dim ond dechrau i dynnu awgrymiadau fel awgrymiadau, fel saethau. 780 00:34:36,710 --> 00:34:39,340 Felly beth s a t gwirionedd, yn ôl y rhaglen hon, 781 00:34:39,340 --> 00:34:42,130 oherwydd y ffordd yr wyf yn creu t, 'i' jyst ddau newidyn ar wahân 782 00:34:42,130 --> 00:34:43,840 pwyntio at yr un darn o gof. 783 00:34:43,840 --> 00:34:45,215 Ac nid ydym yn poeni ble maen nhw. 784 00:34:45,215 --> 00:34:47,130 Felly allwn haniaethol i ffwrdd y manylion. 785 00:34:47,130 --> 00:34:48,780 >> Felly sut ydw i'n atgyweiria hon? 786 00:34:48,780 --> 00:34:54,120 Os ydw i eisiau i ysgrifennu fersiwn o'r copi rhaglen sydd mewn gwirionedd copïau y llinyn 787 00:34:54,120 --> 00:34:56,840 ac yn manteisio dim ond y copi, dim ond reddfol, 788 00:34:56,840 --> 00:34:59,766 beth sy'n rhaid i fod yn gynhwysyn at ein ateb? 789 00:34:59,766 --> 00:35:00,640 GYNULLEIDFA: [Anghlywadwy] 790 00:35:00,640 --> 00:35:01,420 DAVID J. Malan: Mae arnom angen yr hyn? 791 00:35:01,420 --> 00:35:01,820 GYNULLEIDFA: Chunk o gof. 792 00:35:01,820 --> 00:35:03,280 DAVID J. Malan: Mae angen darn arall o gof, dde? 793 00:35:03,280 --> 00:35:05,360 Nid ydym yn gwybod sut i ei wneud eto, o reidrwydd. 794 00:35:05,360 --> 00:35:11,330 Ond yr wyf yn fath o angen i hyn ddigwydd hynny bod y mom gwreiddiol mewn llythrennau bach 795 00:35:11,330 --> 00:35:14,170 yn dod i ben i fyny yn y darn ychwanegol o gof. 796 00:35:14,170 --> 00:35:19,770 Ac yna pan fyddaf yn newid y copi, yr wyf yn nad ydych am i newid y copi hwn yma. 797 00:35:19,770 --> 00:35:26,020 Rwyf yn lle hynny am newid dim ond hyn copi fel bod y gwreiddiol yn newid. 798 00:35:26,020 --> 00:35:27,980 >> Felly, gadewch i ni weld sut y gallwn wneud hyn. 799 00:35:27,980 --> 00:35:31,800 Yn copi-1, sydd eisoes â wedi'i dynnu sylw, 800 00:35:31,800 --> 00:35:33,250 ond ei sylwadau ar-lein. 801 00:35:33,250 --> 00:35:36,710 Rydym yn lle hynny wneud o'r canlynol-- hyn llinellau yn union yr un, mynd i mi llinyn 802 00:35:36,710 --> 00:35:38,340 a galw mae'n s. 803 00:35:38,340 --> 00:35:43,500 Ond yn awr gadewch i ni edrych ar un o'n mwyaf cymhleth ond yr olaf o'r cymhlethdod 804 00:35:43,500 --> 00:35:47,340 am dro, llinell 16 yn gwneud yn union hynny. 805 00:35:47,340 --> 00:35:49,400 Felly, os yw eich gyfforddus gyda'r llun rydym yn unig drew-- 806 00:35:49,400 --> 00:35:51,790 rhoi darn newydd o gof i mi, gopïo popeth i mewn iddo, 807 00:35:51,790 --> 00:35:53,730 gadewch i ni weld sut yr ydym yn cyfieithu y cod i. 808 00:35:53,730 --> 00:35:59,400 >> Felly llinell 16, ar yr ochr chwith, torgoch * t yn rhoi y blwch hwn i mi dros yma. 809 00:35:59,400 --> 00:36:00,230 Dyna i gyd mae'n ei wneud. 810 00:36:00,230 --> 00:36:03,240 Ar yr ochr dde, m alloc, neu malloc, 811 00:36:03,240 --> 00:36:06,480 yn dyrannu cof, super ffansi, ffordd cryptig o ddim ond dweud 812 00:36:06,480 --> 00:36:07,640 rhoi darn o gof i mi. 813 00:36:07,640 --> 00:36:09,290 Faint o gof sydd ei angen arnom? 814 00:36:09,290 --> 00:36:10,910 Wel, yn fath o fynegiant mawr. 815 00:36:10,910 --> 00:36:12,570 Ond gadewch i ni weld beth mae'n ei ddweud yma. 816 00:36:12,570 --> 00:36:15,940 Felly, mae hyn, wrth gwrs, yw rhoi mi hyd llinyn o s. 817 00:36:15,940 --> 00:36:19,094 Felly, mom dylai fod yn beth? 818 00:36:19,094 --> 00:36:21,010 Felly dim ond tri, dde? mom yn tri chymeriad. 819 00:36:21,010 --> 00:36:22,830 Nid ydych yn cyfrif y slaes sero pan fyddwch yn 820 00:36:22,830 --> 00:36:25,960 siarad am y hyd llinyn mae'n mewn gwirionedd y llythrennau gweladwy dynol. 821 00:36:25,960 --> 00:36:28,020 Felly mom, felly mae hyn yn rhoi i mi 3. 822 00:36:28,020 --> 00:36:31,170 Ond arhoswch funud, rydw i'n awr yn adio 1. 823 00:36:31,170 --> 00:36:34,861 Pam ydw i'n gwirionedd eisiau dyrannu 4 bytes ac nid dim ond 3? 824 00:36:34,861 --> 00:36:35,360 Yeah? 825 00:36:35,360 --> 00:36:36,910 >> GYNULLEIDFA: Ar gyfer y gwerth sentinel? 826 00:36:36,910 --> 00:36:38,951 >> DAVID J. Malan: Yn union, ar gyfer y gwerth sentinel. 827 00:36:38,951 --> 00:36:40,840 Ar gyfer y slaes sero, Mae angen cyfanswm o 4 bytes wyf. 828 00:36:40,840 --> 00:36:42,870 Felly, yr wyf angen hyd y llinyn ac 1. 829 00:36:42,870 --> 00:36:45,400 Ac yna yn unig ar gyfer measure-- da er bod ar y system hon, 830 00:36:45,400 --> 00:36:49,390 mae bob amser yn mynd i fod 1-- i ddim yn dweud lluoswch hyn drwy yr un maint â torgoch. 831 00:36:49,390 --> 00:36:51,552 Troi allan sizeof yn gweithredydd yn C sy'n 832 00:36:51,552 --> 00:36:53,260 jyst yn dweud wrthych y nifer y bytes dyna 833 00:36:53,260 --> 00:36:54,700 ofynnol ar gyfer math o ddata penodol. 834 00:36:54,700 --> 00:36:57,740 Nid yw'n gweithio am araeau, fel arfer, weithiau mae'n ei wneud. 835 00:36:57,740 --> 00:36:59,210 Ond yn yr achos gyffredinol, dim. 836 00:36:59,210 --> 00:37:02,330 Ond bydd yn ddweud wrthyf faint o bytes o char yw, sy'n troi allan bob amser 1. 837 00:37:02,330 --> 00:37:04,080 Felly, mae hyn yn debyg lluosi 1. 838 00:37:04,080 --> 00:37:05,900 >> Llinell edrych mor super cryptig o god. 839 00:37:05,900 --> 00:37:09,320 Ond yr holl mae'n ei wneud yw rhoi mi darn o gof. 840 00:37:09,320 --> 00:37:13,590 Ond a yw'n ymddangos i fod yn copïo unrhyw beth i mewn i'r cof? 841 00:37:13,590 --> 00:37:14,560 Dim eto. 842 00:37:14,560 --> 00:37:22,040 Ac felly beth ydw i'n ar linell 22, a 23, 24, 25, yn dda, yr wyf yn syml yn gwneud hyn. 843 00:37:22,040 --> 00:37:23,760 Ac mae hyn yn fath o hen bethau ysgol nawr. 844 00:37:23,760 --> 00:37:26,010 Mae hyn yn debyg PSet 2, lle ydych ond yn symud pethau 845 00:37:26,010 --> 00:37:28,620 o gwmpas yn y cof, neu yn hytrach yn y llinynnau. 846 00:37:28,620 --> 00:37:31,920 >> Felly rwy'n ailadrodd o 0 i hyd y llinyn s. 847 00:37:31,920 --> 00:37:37,820 A dwi'n copïo cymeriad i-fed yn s i mewn cymeriad i-ed mewn t. 848 00:37:37,820 --> 00:37:41,820 Ac am fy mod, y rhaglennydd, a wnaed siwr i ddyrannu yn union fel llawer o bytes 849 00:37:41,820 --> 00:37:44,600 gan fod angen i mi, mae'n berffaith un-i-un perthynas. 850 00:37:44,600 --> 00:37:47,060 Ac yr wyf yn copïo mom mewn llythrennau bach i'r un newydd. 851 00:37:47,060 --> 00:37:50,170 Ac yna yn olaf, yr wyf yn gwneud y llinell hon. 852 00:37:50,170 --> 00:37:54,637 Ac felly mae'r effaith yn unig i gyfalafu t hwn yma. 853 00:37:54,637 --> 00:37:56,470 Felly, mae llawer i amsugno, ond os ydych yn unig yn ystyried 854 00:37:56,470 --> 00:37:58,220 beth sy'n digwydd mewn gwirionedd ar dan y cwfl 855 00:37:58,220 --> 00:38:00,880 yn unig yw symud y rhain bytes o gwmpas, y cyfan sydd 856 00:38:00,880 --> 00:38:06,617 sydd ei angen i ddatrys y broblem hon yw dim ond i roi darn hwn o gof i ni. 857 00:38:06,617 --> 00:38:08,450 Nawr ar y risg o llethol, gadewch i mi ddangos 858 00:38:08,450 --> 00:38:13,200 un enghraifft arall sef bron union yr un fath, ac eithrio ar gyfer yr un yma 859 00:38:13,200 --> 00:38:14,350 llinell o god. 860 00:38:14,350 --> 00:38:18,870 Felly, mae hyn yn y fersiwn haciwr o'r rhaglen hon, os mynnwch. 861 00:38:18,870 --> 00:38:21,050 Ond gadewch i ni jyst distill i mewn yr hyn sy'n digwydd. 862 00:38:21,050 --> 00:38:28,920 Llinell 24 yn arfer bod yn t hwn braced ff yn cael s braced i. 863 00:38:28,920 --> 00:38:33,370 Yn awr, rydw i'n newid hyn i y t seren yn llawer mwy cryptig 864 00:38:33,370 --> 00:38:36,280 ynghyd ag 1 yn dychwelyd seren s plws 1. 865 00:38:36,280 --> 00:38:38,702 >> Felly, beth sy'n digwydd a pham oes gennym gymeriad seren? 866 00:38:38,702 --> 00:38:41,410 Rydym wedi gweld y seren o'r blaen, ac mae'n cael ei ddefnyddio mewn ffordd wahanol yma. 867 00:38:41,410 --> 00:38:45,490 Rydym eisoes yn gweld torgoch *, nawr rwy'n gweld a seren ar y dechrau, ac mae hynny'n iawn. 868 00:38:45,490 --> 00:38:48,190 Oherwydd ei fod yn troi allan ein bod Gall fath o gasglu unig 869 00:38:48,190 --> 00:38:50,280 gan y rhai cyntaf egwyddorion yr hyn sy'n digwydd. 870 00:38:50,280 --> 00:38:53,860 Felly, dim ond i fod yn glir, beth yw s? 871 00:38:53,860 --> 00:38:55,052 Yr wythnos diwethaf, roedd yn llinyn. 872 00:38:55,052 --> 00:38:56,260 Nid yw hynny'n ddigon anymore. 873 00:38:56,260 --> 00:38:57,690 Beth yw s, yn benodol? 874 00:38:57,690 --> 00:38:58,590 >> GYNULLEIDFA: [Anghlywadwy] 875 00:38:58,590 --> 00:38:59,881 >> DAVID J. Malan: Mae'n pwyntydd. 876 00:38:59,881 --> 00:39:02,610 Mae'n y cyfeiriad y cymeriad cyntaf i ni teipio i mewn. 877 00:39:02,610 --> 00:39:04,780 OK, beth yw t? 878 00:39:04,780 --> 00:39:05,660 >> GYNULLEIDFA: [Anghlywadwy] 879 00:39:05,660 --> 00:39:07,950 >> DAVID J. Malan: Y cyfeiriad y beit cyntaf 880 00:39:07,950 --> 00:39:10,490 mewn t, y darn o gof ailddyrannu. 881 00:39:10,490 --> 00:39:14,720 Felly, mae'n troi allan bod pan fyddwn yn ailadrodd o 0 ar hyd at y llinyn 882 00:39:14,720 --> 00:39:17,424 length-- yn gyntaf oll, fi yn cychwyn ar 0, oherwydd 883 00:39:17,424 --> 00:39:18,840 o hyn hen ysgol am beth ddolen. 884 00:39:18,840 --> 00:39:22,400 Felly yn unig ar gyfer symlrwydd, gadewch i ni cymryd yn ganiataol bod y llinell gyntaf o god 885 00:39:22,400 --> 00:39:23,760 yn wir yn unig hyn, dde. 886 00:39:23,760 --> 00:39:26,080 Ai fi yn sero, gan ychwanegu sero i rywbeth yn ôl pob tebyg 887 00:39:26,080 --> 00:39:27,540 Nid yn mynd i gael effaith. 888 00:39:27,540 --> 00:39:28,560 >> Felly beth yw yr ymadrodd hwn? 889 00:39:28,560 --> 00:39:31,600 Mae'n ymddangos bod y seren gweithredwr yn y cyd-destun hwn 890 00:39:31,600 --> 00:39:33,700 yw'r dereference gweithredydd, sydd ychydig 891 00:39:33,700 --> 00:39:37,530 yn ffordd ffansi o ddweud fynd i'r cyfeiriad canlynol. 892 00:39:37,530 --> 00:39:42,080 Felly, os yw cyfeiriad y cyntaf cymeriad yn y darn hwn o gof, 893 00:39:42,080 --> 00:39:43,630 * S yn golygu mynd yno. 894 00:39:43,630 --> 00:39:45,630 Ac oherwydd ein bod wedi tynnu y llun yn y modd hwn, 895 00:39:45,630 --> 00:39:47,430 gallwch fabwysiadu'r yn dilyn model meddyliol. 896 00:39:47,430 --> 00:39:51,030 Os yw hyn yn s, ac yr ydych yn dweud * s, * s math o fel llithrennau ac ysgolion, 897 00:39:51,030 --> 00:39:54,540 os ydych yn cofio y gêm o blentyndod, yn debyg ddilyn y saeth a mynd 898 00:39:54,540 --> 00:39:55,570 i'r cyfeiriad. 899 00:39:55,570 --> 00:39:57,080 >> * T yr un peth. 900 00:39:57,080 --> 00:39:59,855 Felly dechreuwch yma, ewch at ei darn. 901 00:39:59,855 --> 00:40:03,350 Ni all Fi jyst dynnu ar sgrin hon y ffordd honno. 902 00:40:03,350 --> 00:40:05,560 * T olygu i fynd yma. 903 00:40:05,560 --> 00:40:08,830 Ac yna, mae'r gyfer ddolen yn unig gan ddweud symud y cymeriad hwn yma, 904 00:40:08,830 --> 00:40:11,330 symud y cymeriad hwn yma, symud y cymeriad hwn yma. 905 00:40:11,330 --> 00:40:12,890 Ond sut mae gwneud hynny incrementation? 906 00:40:12,890 --> 00:40:15,430 Mae angen i mi dadwneud hyn yr wyf newydd ei ddileu. 907 00:40:15,430 --> 00:40:18,140 Mae hyn yn yr hyn a elwir yn gyffredinol rhifyddeg pwyntydd, a oedd yn 908 00:40:18,140 --> 00:40:20,040 yn golygu mathemateg gyda chyfeiriadau. 909 00:40:20,040 --> 00:40:22,460 >> Os, yn yr am dolen, Rwy'n cadw incrementing i, 910 00:40:22,460 --> 00:40:26,880 ac s yn gyfeiriad ac t yn cyfeiriad, os wyf yn jyst cadw adio 1, 911 00:40:26,880 --> 00:40:31,406 mai dim ond yn golygu cadw symud ymlaen, ac ymlaen, ac ymlaen yn y cof. 912 00:40:31,406 --> 00:40:34,030 Mae fel Oxford Street, y stryd bod yr adeilad CS ar. 913 00:40:34,030 --> 00:40:36,490 Mae'r adeiladau CS ar 33 Oxford Street. 914 00:40:36,490 --> 00:40:39,870 Felly, os ydych yn ei wneud 33 Stryd Rhydychen ac 1, 915 00:40:39,870 --> 00:40:42,870 sy'n dod â chi i 34 Oxford Street, yna 35 Oxford Street, 916 00:40:42,870 --> 00:40:46,380 Yna, 36 Oxford Street, beth bynnag y rheini adeiladau mewn gwirionedd - os ydynt yn bodoli. 917 00:40:46,380 --> 00:40:50,540 Ac felly, dyna i gyd rydym yn ei wneud yma gyda rhifyddeg pwyntydd. 918 00:40:50,540 --> 00:40:53,820 >> Felly mae'n ffordd super ddirgel o fynegi ein hunain. 919 00:40:53,820 --> 00:40:56,160 Ond yr holl sy'n digwydd o dan y cwfl 920 00:40:56,160 --> 00:40:59,330 yn unig yn dilyn y cyfeiriadau hyn, fel dilyn map, os mynnwch, 921 00:40:59,330 --> 00:41:02,692 neu yn dilyn saethau fel rydym wedi tynnu ar y sgrin. 922 00:41:02,692 --> 00:41:04,910 OK, mae llawer i'w dreulio. 923 00:41:04,910 --> 00:41:10,410 Unrhyw gwestiwn ar gystrawen, cysyniadau, awgrymiadau, malloc, neu debyg. 924 00:41:10,410 --> 00:41:11,480 Yeah, dros yma yn gyntaf. 925 00:41:11,480 --> 00:41:13,755 >> GYNULLEIDFA: Felly, lle y Dywed * t hafal toupper * t, 926 00:41:13,755 --> 00:41:15,575 yw bod mynd i fanteisio holl lythyrau neu just-- 927 00:41:15,575 --> 00:41:17,283 >> DAVID J. Malan: Ah, Cwestiwn da iawn. 928 00:41:17,283 --> 00:41:19,805 Felly, yn y llinell hon yma, 31, mae hyn yn mynd i wneud yn fawr 929 00:41:19,805 --> 00:41:21,430 y llythyr cyntaf neu bob un o'r llythyrau. 930 00:41:21,430 --> 00:41:23,460 Felly gadewch i ni ateb hynny drwy fynd yn ôl i'r egwyddorion cyntaf. 931 00:41:23,460 --> 00:41:26,168 Ac egwyddorion cyntaf yma yr wyf yn golygu dim ond yn mynd at y diffiniadau sylfaenol 932 00:41:26,168 --> 00:41:27,000 o'r hyn sydd ynghlwm. 933 00:41:27,000 --> 00:41:29,770 Felly toupper 'na swyddogaeth sy'n manteisio ar torgoch. 934 00:41:29,770 --> 00:41:30,530 Dyna i gyd. 935 00:41:30,530 --> 00:41:36,740 * T yn golygu mynd i'r first-- mynd i'r cyfeiriad mewn t. 936 00:41:36,740 --> 00:41:40,350 Felly, yn y llun, os mai dyma'r dalp o gof dyrannwyd â malloc, 937 00:41:40,350 --> 00:41:43,310 ac mae hyn yn t, * t yn golygu ewch yma. 938 00:41:43,310 --> 00:41:46,710 >> Yn y cyfamser, rydych yn pasio gwerth hwnnw, llythrennau bach m 939 00:41:46,710 --> 00:41:50,040 i toupper, eich bod yn cael yn ôl cyfalaf M, ble yr ydych yn ei roi? 940 00:41:50,040 --> 00:41:52,410 Rydych yn ei roi yn yr un lleoliad. 941 00:41:52,410 --> 00:41:55,540 Ac felly gan y rhesymeg y rhai diffiniadau sylfaenol 'i' yn unig 942 00:41:55,540 --> 00:41:58,792 cyfalafu llythyren gyntaf oni bai eich bod ailadrodd gyda fi neu 943 00:41:58,792 --> 00:42:02,000 ar gyfer dolen neu ddolen tra, nid yw'n mynd i wneud unrhyw beth mwy nag yr ydych yn gofyn amdano. 944 00:42:02,000 --> 00:42:02,583 Cwestiwn da. 945 00:42:02,583 --> 00:42:03,237 Yeah? 946 00:42:03,237 --> 00:42:05,369 >> GYNULLEIDFA: Pam wnaethoch chi ddefnyddio'r dereference dull yn hytrach na 947 00:42:05,369 --> 00:42:05,979 y casgliad? 948 00:42:05,979 --> 00:42:07,395 >> DAVID J. Malan: Ah, cwestiwn da. 949 00:42:07,395 --> 00:42:10,672 Pam y byddech yn defnyddio'r dereference dull yn hytrach na'r dull arae? 950 00:42:10,672 --> 00:42:12,130 Dim rheswm arbennig, i fod yn onest. 951 00:42:12,130 --> 00:42:15,290 Ac, mewn gwirionedd, ar gyfer hyn math o enghraifft, ar y dde, 952 00:42:15,290 --> 00:42:17,556 Im 'jyst yn dadlau gwneud y rhaglen fwy cymhleth, 953 00:42:17,556 --> 00:42:19,680 mwy llygaid yn cael eu gwydro drosodd, mae pobl yn edrych ar 954 00:42:19,680 --> 00:42:22,830 gan fod hyn yn edrych super ddirgel, ond hyd yn oed er 'i' gwneud yr un peth. 955 00:42:22,830 --> 00:42:26,695 Ac felly, dweud y gwir, mae hwn yn ateb yn ddiangen yn weledol gymhleth 956 00:42:26,695 --> 00:42:27,320 at y broblem. 957 00:42:27,320 --> 00:42:29,580 >> Mae'n dal i fod dyluniad da, pump allan o bump ar gyfer dylunio, 958 00:42:29,580 --> 00:42:33,140 boed hynny yn y braced nodiant neu nodiant pwyntydd. 959 00:42:33,140 --> 00:42:36,299 But-- yn enwedig pan gawn yn nes ymlaen yn y cwrs mewn PSet 5 960 00:42:36,299 --> 00:42:39,340 pan fyddwn yn gweithredu y geiriadur sydd Rydw i wedi crybwyll un neu ddau o times-- 961 00:42:39,340 --> 00:42:42,300 byddwn mewn gwirionedd yn gofalu am y cyfeiriadau cof lefel isel 962 00:42:42,300 --> 00:42:44,140 ein bod yn wir yn deall beth sy'n Digwydd. 963 00:42:44,140 --> 00:42:48,300 >> Ond, am y tro, mae'n troi allan bod hyn llinell o god cromfachau sgwâr yma 964 00:42:48,300 --> 00:42:49,900 yn bodoli mewn gwirionedd. 965 00:42:49,900 --> 00:42:52,230 Maent yn yr hyn a elwir siwgr cystrawennol, a oedd yn 966 00:42:52,230 --> 00:42:58,390 yn unig yw ffordd weirdly oera o ddweud y compiler yn trosi cromfachau sgwâr i fod yn 967 00:42:58,390 --> 00:43:00,420 hynny mynegiant mathemategol. 968 00:43:00,420 --> 00:43:02,660 Felly mae'n gonfensiwn dynol i allu dim ond ysgrifennu 969 00:43:02,660 --> 00:43:04,220 cromfachau iawn hawdd ei ddefnyddio yma. 970 00:43:04,220 --> 00:43:06,850 Ond beth mae'r compiler, chlang, sydd mewn gwirionedd yn gwneud unrhyw adeg 971 00:43:06,850 --> 00:43:10,970 byddwch yn ysgrifennu beth sy'n tynnu sylw yn unol 24, o dan y cwfl 'i' 'n sylweddol 972 00:43:10,970 --> 00:43:12,330 trosi i'r hyn. 973 00:43:12,330 --> 00:43:16,200 'I' jyst yn fwy pleserus fel dynol i ddarllen ac ysgrifennu cod yn hoffi llinell 24. 974 00:43:16,200 --> 00:43:18,530 Ond yn y pen draw y rhai olwynion hyfforddiant yn dod i ffwrdd yn rhy 975 00:43:18,530 --> 00:43:21,780 pan fydd un ei gysur ei hun yn cael gryfach. 976 00:43:21,780 --> 00:43:27,240 >> Mae pob hawl, felly yn cofio felly fod hwn Roedd y math o broblem fwyaf 977 00:43:27,240 --> 00:43:27,807 rydym yn rhedeg i mewn. 978 00:43:27,807 --> 00:43:30,640 A dyna beth ysgogodd gyfan hon sgwrs poeni dim am awgrymiadau, 979 00:43:30,640 --> 00:43:32,340 a chyfeiriadau, a chopïo pethau. 980 00:43:32,340 --> 00:43:35,410 Yr oedd oherwydd ein bod baglu dros y mater dwp, dwp, lle 981 00:43:35,410 --> 00:43:38,830 Yr wyf yn rhoi ar waith logically-- gyda Lauren i fyny yma ar y demo a'r sudd oren 982 00:43:38,830 --> 00:43:43,770 yn y milk-- yn berffaith swyddogaeth algorithmically gywir 983 00:43:43,770 --> 00:43:47,010 ar gyfer cyfnewid ddau newidyn ' gwerthoedd, ond y peth damn 984 00:43:47,010 --> 00:43:50,550 Nid oedd gan unrhyw barhaus, neu parhaol, effaith ar fy cod. 985 00:43:50,550 --> 00:43:51,820 >> A pham oedd hynny? 986 00:43:51,820 --> 00:43:54,650 Yn gryno, pam mae hyn gweithredu cyfnewid 987 00:43:54,650 --> 00:43:58,740 rhesymegol gywir, ond yn cael unrhyw effaith ar y newidynnau sy'n cael eu trosglwyddo iddo, 988 00:43:58,740 --> 00:44:01,119 fel x ac y ar gyfer y prif? 989 00:44:01,119 --> 00:44:02,410 Beth oedd hanfod y mater hwn? 990 00:44:02,410 --> 00:44:02,909 Yeah? 991 00:44:02,909 --> 00:44:05,532 GYNULLEIDFA: Oherwydd ei wneud newidyn copïau o amrywiol o ran y tocyn 992 00:44:05,532 --> 00:44:06,240 drwy swyddogaeth. 993 00:44:06,240 --> 00:44:09,060 >> DAVID J. Malan: Yn union, pan fyddwch yn pasio newidynnau mewn i swyddogaeth, neu ddadleuon 994 00:44:09,060 --> 00:44:11,030 i mewn i swyddogaeth, maen nhw'n basio gan copi, a oedd yn 995 00:44:11,030 --> 00:44:14,770 yn golygu eich bod yn cael yn union chwilio patrwm o ddarnau ar gyfer y ddau x ac y, 996 00:44:14,770 --> 00:44:15,955 Gelwir yma a b. 997 00:44:15,955 --> 00:44:18,080 A allwch chi wneud unrhyw beth rydych am â copïau hynny, 998 00:44:18,080 --> 00:44:20,657 ond maent yn mynd i gael unrhyw effaith ar y swyddogaeth galw. 999 00:44:20,657 --> 00:44:22,990 Ac, yn wir, rydym yn tynnu bod llun ar y sgrin, galw i gof 1000 00:44:22,990 --> 00:44:25,520 tro diwethaf, lle os ydych yn wir yn meddwl am yr hyn sydd 1001 00:44:25,520 --> 00:44:28,570 mynd ymlaen o dan y hood-- os mae hyn yn cof eich cyfrifiadur, 1002 00:44:28,570 --> 00:44:31,650 ac i lawr yma yw'r dalp o cof yn cael ei ddefnyddio ar gyfer y prif, 1003 00:44:31,650 --> 00:44:34,020 mae hyn yn dalp o cof yn cael ei ddefnyddio ar gyfer cyfnewid, 1004 00:44:34,020 --> 00:44:37,090 ac felly hyd yn oed os oes prif ganddo dau newidyn, x ac y, 1005 00:44:37,090 --> 00:44:41,840 Efallai y cyfnewid yn cael edrych yn union yr un fath gwerthoedd, y ddau ohonynt yn 1 a 2, 1006 00:44:41,840 --> 00:44:44,520 ond maent yn llwyr gwahanol darnau o gof. 1007 00:44:44,520 --> 00:44:46,130 >> Felly mae angen o hyd i ateb i hyn. 1008 00:44:46,130 --> 00:44:51,580 Ac yn dweud y gwir, mae'n ymddangos ein bod yn awr gennym ateb i'r broblem hon, ar y dde. 1009 00:44:51,580 --> 00:44:55,760 Os ydym yn awr yn cael y gallu i trin pethau o ran cyfeiriadau 1010 00:44:55,760 --> 00:44:59,310 a, math o llithrenni gwaredu ac ysgolion arddull, dilynwch saethau hyn 1011 00:44:59,310 --> 00:45:02,820 ac yn mynd i unrhyw le rydym eisiau mewn cof, nid gallem 1012 00:45:02,820 --> 00:45:06,220 datrys y broblem hon drwy basio o brif i gyfnewid 1013 00:45:06,220 --> 00:45:09,650 Nid yw gwerthoedd yr ydym am ei cyfnewid, ond dim ond yn reddfol 1014 00:45:09,650 --> 00:45:11,630 beth y gallem ei drosglwyddo i gyfnewid yn lle hynny? 1015 00:45:11,630 --> 00:45:12,620 >> [LLEISIAU gosod eu hunain yn] 1016 00:45:12,620 --> 00:45:15,244 >> DAVID J. Malan: Pam na ydym yn unig ei throsglwyddo y cyfeiriadau, dde? 1017 00:45:15,244 --> 00:45:17,470 Pam nad ydym yn rhoi cyfnewid a map trysor, os gwnewch, 1018 00:45:17,470 --> 00:45:20,950 sy'n arwain at y gwirioneddol gwerthoedd x ac y. 1019 00:45:20,950 --> 00:45:24,340 Gadewch i ni cyfnewid, mewn gwirionedd yn newid darnau gwreiddiol hynny, yn hytrach na 1020 00:45:24,340 --> 00:45:26,797 dim ond pasio copïau o'r darnau. 1021 00:45:26,797 --> 00:45:29,130 Ac felly, mewn gwirionedd, dyna beth sydd mynd i fod yr ateb. 1022 00:45:29,130 --> 00:45:31,899 Mae'r fersiwn yma yw yn amlwg drwg ac ddiffygiol. 1023 00:45:31,899 --> 00:45:35,190 Ac yn awr, ar yr olwg gyntaf, 'i jyst yn edrych yn fel rydym yn ychwanegu criw o sêr ar hap 1024 00:45:35,190 --> 00:45:37,106 ac croesi ein bysedd y byddai'n llunio. 1025 00:45:37,106 --> 00:45:38,460 Ond, byddai nawr yn llunio. 1026 00:45:38,460 --> 00:45:40,090 >> Ond gadewch i ni weld beth y pethau hyn yn ei olygu. 1027 00:45:40,090 --> 00:45:43,990 Ac, yn anffodus, mae'r awduron Gallai C wedi dewis symbol arall 1028 00:45:43,990 --> 00:45:46,380 i wneud hyn yn ychydig yn , ond mae'r gweithredwr seren gliriach 1029 00:45:46,380 --> 00:45:48,610 Mae gan wahanol ystyr yn dau gyd-destun gwahanol. 1030 00:45:48,610 --> 00:45:50,890 Ac rydym wedi gweld y ddau, ond gadewch i wahaniaethu. 1031 00:45:50,890 --> 00:45:55,310 >> Felly, i fyny ar y brig yno, pan fyddaf wedi newid aab 1032 00:45:55,310 --> 00:46:00,470 o fod yn int yn y drwg Fersiwn i int sêr, a a b, 1033 00:46:00,470 --> 00:46:01,740 yn flaenorol, roedd cyfanrifau. 1034 00:46:01,740 --> 00:46:05,752 Beth yw aab bellach yn y fersiwn da, gwyrdd? 1035 00:46:05,752 --> 00:46:06,900 Maent yn gyfeiriadau. 1036 00:46:06,900 --> 00:46:09,610 Cyfeiriadau o'r hyn, bod yn glir? 1037 00:46:09,610 --> 00:46:10,770 Cyfeiriadau o gyfanrifau. 1038 00:46:10,770 --> 00:46:12,520 Felly y ffaith fy mod i'n gan ddweud yn golygu seren int 1039 00:46:12,520 --> 00:46:15,440 mae hyn yn y cyfeiriad o yn gyfanrif, yn benodol. 1040 00:46:15,440 --> 00:46:19,120 >> Felly, yn awr yn sylwi yn y llinellau o god, rhywbeth arall wedi newid hefyd. 1041 00:46:19,120 --> 00:46:22,770 TMP aros yr un fath, oherwydd bod dim ond y cyfanrif dros dro, 1042 00:46:22,770 --> 00:46:24,110 dim hud cof yno. 1043 00:46:24,110 --> 00:46:26,370 Ond bellach mae angen yn seren. 1044 00:46:26,370 --> 00:46:28,560 Ac, mewn gwirionedd, mae pob sôn arall a a b, 1045 00:46:28,560 --> 00:46:31,780 sylwi bod pob dyna newid o goch i wyrdd 1046 00:46:31,780 --> 00:46:34,209 yw fy mod i'n prefixing newidynnau rhai sydd â sêr. 1047 00:46:34,209 --> 00:46:35,750 Oherwydd nad wyf am i gopïo a a b. 1048 00:46:35,750 --> 00:46:40,350 Oherwydd os Fi jyst adysgrifia a a b a chyfnewid aab, beth ydw Fi 'n weithredol cyfnewid? 1049 00:46:40,350 --> 00:46:43,760 Dim ond cyfeiriadau, yr wyf am gyfnewid beth sydd yn y cyfeiriadau hynny. 1050 00:46:43,760 --> 00:46:44,860 Dw i eisiau mynd yno. 1051 00:46:44,860 --> 00:46:48,000 Ac felly y gweithredwr seren tu mewn fy swyddogaeth, 1052 00:46:48,000 --> 00:46:51,700 Nid yw tu mewn i'r rhestr paramedr, yn golygu i chi fynd i'r cyfeiriadau hynny 1053 00:46:51,700 --> 00:46:54,490 ac mewn gwirionedd yn newid y gwerthoedd hynny. 1054 00:46:54,490 --> 00:46:56,500 >> Felly beth mae'r llun bellach yn edrych fel yn lle hynny. 1055 00:46:56,500 --> 00:47:03,250 Wel, os yn lle hynny i ddim yn pasio mewn am a b Nid yw 1 a 2-- 1056 00:47:03,250 --> 00:47:05,790 Fi 'n weithredol angen ychwanegu un diffiniad eraill yma. 1057 00:47:05,790 --> 00:47:09,030 Felly mae'n debyg y darn hwn o gof yn y lleoliad 10. 1058 00:47:09,030 --> 00:47:12,960 >> Mae hyn yn y lleoliad 11, ond mae hyn yn dipyn o symleiddio, 1059 00:47:12,960 --> 00:47:18,900 Yr wyf yn awr wedi dau ddewis ydw i'n pasio x a y neu ydw i'n pasio eu cyfeiriadau? 1060 00:47:18,900 --> 00:47:22,500 Os byddaf yn pasio eu cyfeiriadau fel hyn, Fi jyst 1061 00:47:22,500 --> 00:47:25,390 Mae angen yn awr i weithredu cyfnewid fesul y cod gwyrdd 1062 00:47:25,390 --> 00:47:29,080 fel bod pan fydd yn gweld a phan fydd yn gweld b, nid yw'n jyst adysgrifia a a b 1063 00:47:29,080 --> 00:47:30,540 a symud y llaeth a sudd oren. 1064 00:47:30,540 --> 00:47:32,664 Mae'r llaeth a sudd oren trosiad yn awr yn torri i lawr, 1065 00:47:32,664 --> 00:47:35,060 gan fod hynny yn cwpanau o fapiau hylif ac nid. 1066 00:47:35,060 --> 00:47:37,750 Yn lle hynny mae angen i ni fynd i fynd i'r afael 10 ac rydym yn 1067 00:47:37,750 --> 00:47:42,420 Mae angen i fynd i'r afael â 11, a yna perfformio y rhesymeg gyfnewid. 1068 00:47:42,420 --> 00:47:45,580 >> Felly mae'r rhesymeg yr un fath, ond mae arnom angen ffordd ychydig yn wahanol 1069 00:47:45,580 --> 00:47:47,160 o gael gafael ar newidynnau hynny. 1070 00:47:47,160 --> 00:47:52,400 Ac felly yn y diwedd, yr hyn y mae'r rhaglen i edrych fel yn hyn. 1071 00:47:52,400 --> 00:47:56,610 Yn swap.c copïo llythrennol a gludo y fersiwn gwyrdd. 1072 00:47:56,610 --> 00:47:58,450 Ond mae angen i mi wneud un newid. 1073 00:47:58,450 --> 00:48:00,180 Nid yw'n ddigon dim ond i newid cyfnewid. 1074 00:48:00,180 --> 00:48:03,830 Pa llinell arall o god mae angen i mi newid? 1075 00:48:03,830 --> 00:48:04,330 Yeah? 1076 00:48:04,330 --> 00:48:05,770 >> GYNULLEIDFA: Ble mae'n ei gymryd y dadleuon. 1077 00:48:05,770 --> 00:48:07,603 >> DAVID J. Malan: Lle mae'n cymryd ei ddadl. 1078 00:48:07,603 --> 00:48:09,985 Felly, os wyf yn sgrolio i fyny i'r prif, yr wyf yn Ni all dim ond pasio yn x ac y, 1079 00:48:09,985 --> 00:48:12,820 ac, yr wyf yn addo, yr olaf darn o gystrawen newydd heddiw. 1080 00:48:12,820 --> 00:48:17,200 Mae angen i mi basio yn peidio x a y ond y cyfeiriad x ac y. 1081 00:48:17,200 --> 00:48:20,400 Ac mae'n troi allan, y symbol bod yr awduron o C Dewisodd 1082 00:48:20,400 --> 00:48:23,860 yw os ydych yn defnyddio ampersand yma, i beidio â ei gymysgu â'r ampersand bitwise, 1083 00:48:23,860 --> 00:48:27,130 os ydych chi'n defnyddio ampersand yma ac yn ampersand yma, 1084 00:48:27,130 --> 00:48:29,570 mae hyn ffigurau allan i chi, beth yw'r cyfeiriad x, 1085 00:48:29,570 --> 00:48:31,740 efallai ei bod yn 10, beth yw'r cyfeiriad y, efallai ei bod yn 1086 00:48:31,740 --> 00:48:35,400 11, ac yn pasio rhai yn lle hynny. 1087 00:48:35,400 --> 00:48:37,210 >> Felly, mae llawer i amsugno i gyd ar unwaith. 1088 00:48:37,210 --> 00:48:40,190 Ond gadewch i ni weld nawr yn gyflym mewn ein pedair munud yn weddill 1089 00:48:40,190 --> 00:48:42,150 lle y gall pethau fynd o chwith. 1090 00:48:42,150 --> 00:48:45,120 Ac wrth fynd heibio, mewn gwirionedd Cymerais y llun yma, 1091 00:48:45,120 --> 00:48:46,920 Cymerodd TF y llun yma y flwyddyn neu ddwy yn ôl. 1092 00:48:46,920 --> 00:48:49,190 Felly, mae hyn yn y gornel cefn o Neuadd Fwyta Eliot. 1093 00:48:49,190 --> 00:48:52,310 Efallai Awgrymiadau yw'r anoddaf pwnc yr ydym yn ymdrin yn CS50. 1094 00:48:52,310 --> 00:48:54,810 Felly, os ydych yn poeni y math y llethr yn debyg efallai ei bod yn 1095 00:48:54,810 --> 00:48:56,770 mwy o ffon hoci fel hyn, yn sylweddoli 1096 00:48:56,770 --> 00:49:00,160 rydym yn fath o agosáu at uchafbwynt yn ran cymhlethdod cysyniadol. 1097 00:49:00,160 --> 00:49:02,300 >> Ac yr wyf yn dod i fyny yma llun, oherwydd yr wyf yn tyngu 1098 00:49:02,300 --> 00:49:05,920 i dduw, yn disgyn 1996, pan fyddaf yn cymryd CS50 gyda fy nghyd addysgu, 1099 00:49:05,920 --> 00:49:09,620 Nishat Mehta, efe yn eistedd fi i lawr yn y cornel o'r Eliot D. Hall dros ginio, 1100 00:49:09,620 --> 00:49:12,330 neu swper, neu rywbeth i roi cynnig i fy helpu i ddeall awgrymiadau. 1101 00:49:12,330 --> 00:49:16,520 A dyma lle yr oeddwn yn wythnos ar ôl ei gyflwyno yn y ddarlith pan 1102 00:49:16,520 --> 00:49:18,170 Yr wyf yn olaf yn deall awgrymiadau. 1103 00:49:18,170 --> 00:49:20,590 A dwi'n obeithiol y hwn Bydd clicio lawer yn gynt i chi. 1104 00:49:20,590 --> 00:49:23,540 Ond yn sylweddoli hyn yn hollol ymysg y pynciau mwy soffistigedig 1105 00:49:23,540 --> 00:49:24,420 rydym wedi edrych ar. 1106 00:49:24,420 --> 00:49:25,819 Ond mae'n ymhlith y rhai mwyaf pwerus. 1107 00:49:25,819 --> 00:49:28,860 A phan fyddwch yn ei gael, 'i' 'n sylweddol i gyd jyst yn mynd i ddod yn olaf at ei gilydd. 1108 00:49:28,860 --> 00:49:31,460 Felly gorffwys sicr nid yw'n gwneud Mae angen i'r holl sinc mewn heddiw. 1109 00:49:31,460 --> 00:49:32,980 >> Felly dyma y rhaglen ddiwethaf ydym yn mynd i edrych ar. 1110 00:49:32,980 --> 00:49:35,605 Ac rydym yn mynd i ben gyda cyflym tri munud o animeiddio clai 1111 00:49:35,605 --> 00:49:37,030 a wnaed gan ein cyfaill, Nick Parlante. 1112 00:49:37,030 --> 00:49:41,440 Dyma rhaglen, hynny ar y ddau uchaf llinellau datgan x amrywiol ac y. 1113 00:49:41,440 --> 00:49:44,780 Mae'r ddau ohonynt yn gyfeiriadau o gyfanrifau, awgrymiadau AKA. 1114 00:49:44,780 --> 00:49:48,125 Yna byddwn yn dyrannu digon cof i storio yn int 1115 00:49:48,125 --> 00:49:51,344 ac yn ei storio y cyfeiriad o'r cof yn x. 1116 00:49:51,344 --> 00:49:53,260 Felly, mae hyd yn oed yn symlach nag yr enghraifft o'r blaen. 1117 00:49:53,260 --> 00:49:56,100 Rhowch bedair bytes o gof i mi, dyna maint o int, 1118 00:49:56,100 --> 00:49:58,000 a rhowch y cyfeiriad hwnnw o x. 1119 00:49:58,000 --> 00:50:01,070 Mae'r llinell yma'n golygu mynd i'r cyfeiriad yn x 1120 00:50:01,070 --> 00:50:05,270 a rhowch ystyr bywyd, mae'r rhif 42 yno. 1121 00:50:05,270 --> 00:50:07,710 Ond mae y llinell hon yn fy mhoeni. 1122 00:50:07,710 --> 00:50:12,620 Seren y golygu mynd i'r cyfeiriad yn y, a rhowch y rhif anlwcus 13 yno. 1123 00:50:12,620 --> 00:50:15,780 Pam ei bod yn beryglus, ar hyn o bryd yn y story-- er dweud yn gyflym 1124 00:50:15,780 --> 00:50:17,980 yn ein cofnodion gwanhau Yma-- pam ei fod yn ddrwg 1125 00:50:17,980 --> 00:50:19,660 i mi ddweud, ewch i'r cyfeiriad yn y? 1126 00:50:19,660 --> 00:50:21,077 >> GYNULLEIDFA: Nid ydych wedi [Anghlywadwy]. 1127 00:50:21,077 --> 00:50:22,910 DAVID J. Malan: Nid wyf wedi rhoi unrhyw beth yn y. 1128 00:50:22,910 --> 00:50:25,520 Felly beth yw gwerth y, yn y fan hon yn y stori? 1129 00:50:25,520 --> 00:50:26,570 Nid oes gennym unrhyw syniad. 1130 00:50:26,570 --> 00:50:29,190 Mae'n rhywfaint o werth garbage ac nid yw ychwaith yn Binky gwybod. 1131 00:50:29,190 --> 00:50:32,532 Pe gallem ben ar nodyn hwn. 1132 00:50:32,532 --> 00:50:34,832 >> [VIDEO Playback] 1133 00:50:34,832 --> 00:50:36,500 >> -Hey, Binky, deffro. 1134 00:50:36,500 --> 00:50:39,140 Mae'n amser am hwyl pwyntydd. 1135 00:50:39,140 --> 00:50:40,210 >> -Beth yw hwnna? 1136 00:50:40,210 --> 00:50:41,690 Dysgu am awgrymiadau? 1137 00:50:41,690 --> 00:50:43,570 O, nwyddau. 1138 00:50:43,570 --> 00:50:46,600 >> -Well, I ddechrau arni, mae'n debyg ein bod mynd i angen cwpl awgrymiadau. 1139 00:50:46,600 --> 00:50:47,380 >> -IAWN. 1140 00:50:47,380 --> 00:50:51,120 Mae'r cod hwn yn clustnodi dau awgrymiadau sy'n gallu pwyntio at gyfanrifau. 1141 00:50:51,120 --> 00:50:53,557 >> -OK, Wel yr wyf yn gweld y dau awgrymiadau, ond maent yn 1142 00:50:53,557 --> 00:50:55,140 nid yw'n ymddangos i fod yn pwyntio at unrhyw beth. 1143 00:50:55,140 --> 00:50:55,970 >> -bod Iawn. 1144 00:50:55,970 --> 00:50:58,100 I ddechrau Awgrymiadau Nid oes pwynt i unrhyw beth. 1145 00:50:58,100 --> 00:51:00,950 Y pethau y maent yn cyfeirio atynt yw Gelwir pointees a gosod i fyny 1146 00:51:00,950 --> 00:51:02,330 yn gam ar wahân. 1147 00:51:02,330 --> 00:51:03,210 >> -OH, Ar y dde, ar y dde. 1148 00:51:03,210 --> 00:51:03,940 Roeddwn i'n gwybod hynny. 1149 00:51:03,940 --> 00:51:05,730 Mae'r pointees ar wahân. 1150 00:51:05,730 --> 00:51:08,310 Felly, sut ydych chi'n ddyrannu pointee? 1151 00:51:08,310 --> 00:51:11,960 >> -OK, Wel y cod yn dyrannu mae pointee cyfanrif newydd, 1152 00:51:11,960 --> 00:51:15,050 ac mae hyn yn rhan setiau x i bwyntio ato. 1153 00:51:15,050 --> 00:51:16,240 >> -Hey, Sy'n edrych yn well. 1154 00:51:16,240 --> 00:51:17,743 Felly, yn ei gwneud yn gwneud rhywbeth. 1155 00:51:17,743 --> 00:51:23,580 >> -OK, 'N annhymerus' dereference y pwyntydd x i storio'r rhif 42 yn ei pointee. 1156 00:51:23,580 --> 00:51:27,130 Ar gyfer tric hwn, bydd angen i mi fy ffon hud o dereferencing. 1157 00:51:27,130 --> 00:51:30,200 >> -Eich Ffon hud o dereferencing? 1158 00:51:30,200 --> 00:51:32,310 Uh, hynny, mae hynny'n wych. 1159 00:51:32,310 --> 00:51:34,270 >> -Mae Beth mae'r cod yn edrych fel. 1160 00:51:34,270 --> 00:51:35,970 'N annhymerus' jyst yn gosod i fyny 'r rhif ac-- 1161 00:51:35,970 --> 00:51:37,070 >> [POP SAIN] 1162 00:51:37,070 --> 00:51:39,140 >> -Hey, Edrychwch yno mae'n mynd. 1163 00:51:39,140 --> 00:51:43,980 Felly, yn gwneud dereference ar x dilyn y saeth i gael mynediad at ei pointee. 1164 00:51:43,980 --> 00:51:46,150 Yn yr achos hwn, i storio 42 i mewn 'na. 1165 00:51:46,150 --> 00:51:50,700 Hey, ceisiwch ddefnyddio i storio rhif 13 drwy'r pwyntydd arall, y. 1166 00:51:50,700 --> 00:51:51,840 >> -IAWN. 1167 00:51:51,840 --> 00:51:56,270 'N annhymerus' jyst yn mynd dros yma i y, a chael y rhif 13 set i fyny. 1168 00:51:56,270 --> 00:52:00,380 Ac yna yn cymryd y ffon o dereferencing a just-- 1169 00:52:00,380 --> 00:52:01,646 >> [Swnyn SAIN] 1170 00:52:01,646 --> 00:52:04,080 >> -OH, Hey nad oedd yn gweithio. 1171 00:52:04,080 --> 00:52:06,470 Dweud, UH, Binky, nid wyf yn ei wneud meddwl dereferencing 1172 00:52:06,470 --> 00:52:10,850 y yn syniad da, oherwydd osod fyny'r pointee yn gam ar wahân. 1173 00:52:10,850 --> 00:52:12,480 Ac nid wyf yn credu ein bod byth yn gwneud hynny. 1174 00:52:12,480 --> 00:52:14,620 >> -Hmm, Pwynt da. 1175 00:52:14,620 --> 00:52:19,810 >> -Yeah, Dyrannwyd y pwyntydd, y, ond ni fyddwn byth yn ei osod i dynnu sylw at pointee. 1176 00:52:19,810 --> 00:52:21,590 >> -Hmm, Sylwgar iawn. 1177 00:52:21,590 --> 00:52:23,215 -Hey, Rydych yn edrych yn dda yno, Binky. 1178 00:52:23,215 --> 00:52:26,390 Allwch chi drwsio fel bod y pwyntiau i'r un pointee ag x. 1179 00:52:26,390 --> 00:52:29,290 >> -Sure, Yr wyf yn defnyddio fy ffon hud o aseiniad pwyntydd. 1180 00:52:29,290 --> 00:52:31,970 >> -A Bod mynd i fod yn broblem, fel o'r blaen? 1181 00:52:31,970 --> 00:52:33,790 >> -Dim, Nid yw hyn yn cyffwrdd y pointees. 1182 00:52:33,790 --> 00:52:35,840 'I jyst yn newid un pwyntydd i dynnu sylw at yr un thing-- 1183 00:52:35,840 --> 00:52:36,465 >> [Neidio i SAIN] 1184 00:52:36,465 --> 00:52:37,450 --as un arall. 1185 00:52:37,450 --> 00:52:38,440 >> -OH, Rwy'n gweld. 1186 00:52:38,440 --> 00:52:41,200 Nawr y pwyntiau i'r un lle ag x. 1187 00:52:41,200 --> 00:52:42,950 Felly, aros, yn awr y yn sefydlog. 1188 00:52:42,950 --> 00:52:44,110 Mae ganddo pointee. 1189 00:52:44,110 --> 00:52:47,779 Felly, gallwch roi cynnig ar y ffon o dereferencing eto i anfon y 13 drosodd. 1190 00:52:47,779 --> 00:52:51,110 >> -OH, OK, dyma mynd. 1191 00:52:51,110 --> 00:52:52,330 >> -Hey, Edrych ar hynny. 1192 00:52:52,330 --> 00:52:53,570 Nawr dereferencing gwaith ar y. 1193 00:52:53,570 --> 00:52:57,900 Ac oherwydd bod y awgrymiadau yn cael eu rhannu bod un pointee, y ddau ohonynt yn gweld y 13. 1194 00:52:57,900 --> 00:52:59,952 >> -Yeah, Rhannu, uh, beth bynnag. 1195 00:52:59,952 --> 00:53:01,535 Felly, yr ydym yn mynd i newid lleoedd nawr? 1196 00:53:01,535 --> 00:53:03,730 >> -OH, Edrychwch ein bod allan o amser. 1197 00:53:03,730 --> 00:53:04,660 >> -But-- 1198 00:53:04,660 --> 00:53:06,520 >> -Just Cofio'r tair rheol pwyntydd. 1199 00:53:06,520 --> 00:53:09,550 Rhif 1, strwythur sylfaenol yw bod gennych pwyntydd, 1200 00:53:09,550 --> 00:53:11,630 ac mae'n tynnu sylw drosodd i pointee. 1201 00:53:11,630 --> 00:53:13,740 Ond mae'r pwyntydd a pointee ar wahân. 1202 00:53:13,740 --> 00:53:15,620 Ac y gwall cyffredin yw sefydlu pwyntydd 1203 00:53:15,620 --> 00:53:18,000 ond i anghofio i roi cynnig pointee. 1204 00:53:18,000 --> 00:53:21,170 >> Rhif 2, dereferencing pwyntydd yn dechrau ar y pwyntydd 1205 00:53:21,170 --> 00:53:24,020 ac yn dilyn ei saeth i gael mynediad at ei pointee. 1206 00:53:24,020 --> 00:53:27,815 Fel yr ydym i gyd yn gwybod, mae hyn ond yn gweithio os oes yn pointee, pa fath o mynd yn ôl 1207 00:53:27,815 --> 00:53:29,260 i reol rhif 1. 1208 00:53:29,260 --> 00:53:31,990 >> Rhif 3, pwyntydd aseiniad yn cymryd un pwyntydd 1209 00:53:31,990 --> 00:53:35,330 ac yn newid iddo i dynnu sylw at y un pointee ag pwyntydd arall. 1210 00:53:35,330 --> 00:53:37,150 Felly, ar ôl yr aseiniad, y ddau awgrymiadau 1211 00:53:37,150 --> 00:53:40,927 Bydd yn pwyntio at yr un pointee, weithiau sy'n cael ei alw rhannu. 1212 00:53:40,927 --> 00:53:42,510 A dyna i gyd yna iddo, mewn gwirionedd. 1213 00:53:42,510 --> 00:53:43,130 Ffarwelio nawr. 1214 00:53:43,130 --> 00:53:43,475 >> [DIWEDD Playback] 1215 00:53:43,475 --> 00:53:44,830 >> DAVID J. Malan: Dyna ni am CS50. 1216 00:53:44,830 --> 00:53:46,246 Diolch i Athro Nick Parlante. 1217 00:53:46,246 --> 00:53:47,730 Byddwn yn gweld chi yr wythnos nesaf. 1218 00:53:47,730 --> 00:53:51,706 1219 00:53:51,706 --> 00:53:56,435 >> [CHWARAE CERDDORIAETH ELECTRONIG] 1220 00:53:56,435 --> 00:57:22,775