1 00:00:00,000 --> 00:00:09,572 2 00:00:09,572 --> 00:00:12,030 ROB BOWDEN: Hi, Im 'Rob Bowden, a gadewch i ni siarad am quiz0. 3 00:00:12,030 --> 00:00:13,280 4 00:00:13,280 --> 00:00:14,545 >> Felly, cwestiwn cyntaf. 5 00:00:14,545 --> 00:00:17,750 Mae hyn yn y cwestiwn lle eich bod angen i cod rhif 6 00:00:17,750 --> 00:00:21,270 127 yn y bylbiau deuaidd. 7 00:00:21,270 --> 00:00:23,550 Os ydych eisiau, gallech yn gwneud y trosiad yn rheolaidd 8 00:00:23,550 --> 00:00:25,950 o bi-- neu, o degol i'r deuaidd. 9 00:00:25,950 --> 00:00:28,300 Ond mae hynny'n fwy na thebyg yn mynd i gymryd llawer o amser. 10 00:00:28,300 --> 00:00:31,750 Yr wyf yn golygu, fe allech chi chyfrif i maes hwnnw, OK, mae 1 yn i mewn 'na, 2 yn i mewn' na, 11 00:00:31,750 --> 00:00:33,650 4 yn cyd-yno, 8 yn i mewn 'na. 12 00:00:33,650 --> 00:00:39,280 Ffordd haws, 127 yw 128 llai un. 13 00:00:39,280 --> 00:00:42,013 Bod bwlb golau leftmost yw'r 128-bit. 14 00:00:42,013 --> 00:00:43,490 15 00:00:43,490 --> 00:00:47,860 Felly 127 yn wirioneddol yn unig i gyd o'r bylbiau golau arall, 16 00:00:47,860 --> 00:00:51,420 ers hynny yw'r leftmost bwlb golau minws 1. 17 00:00:51,420 --> 00:00:52,800 Dyna ni am y cwestiwn hwnnw. 18 00:00:52,800 --> 00:00:54,060 >> Cwestiwn un. 19 00:00:54,060 --> 00:00:56,710 Felly, gyda 3 darnau gallwch cynrychioli 8 gwerthoedd gwahanol. 20 00:00:56,710 --> 00:01:01,000 Pam, felly, mae 7 y mwyaf heb fod yn negyddol cyfanrif degol gallwch gynrychioli? 21 00:01:01,000 --> 00:01:04,050 Wel, os gallwn unig cynrychioli 8 gwerthoedd pendant, 22 00:01:04,050 --> 00:01:07,430 Yna, yr hyn yr ydym yn mynd i fod cynrychioli yw 0 drwy 7. 23 00:01:07,430 --> 00:01:08,745 0 yn cymryd i fyny un o'r gwerthoedd. 24 00:01:08,745 --> 00:01:09,980 25 00:01:09,980 --> 00:01:11,190 >> Cwestiwn dau. 26 00:01:11,190 --> 00:01:14,610 Gyda darnau n, faint o wahanol Gall gwerthoedd rydych yn eu cynrychioli? 27 00:01:14,610 --> 00:01:19,080 Felly, gyda darnau n, mae gennych 2 gwerthoedd posibl ar gyfer pob darn. 28 00:01:19,080 --> 00:01:22,300 Felly mae gennym 2 werthoedd posibl ar gyfer y darn cyntaf, 2 werthoedd posibl 29 00:01:22,300 --> 00:01:24,450 ar gyfer yr ail, 2 posibl ar gyfer y drydedd. 30 00:01:24,450 --> 00:01:28,730 Ac felly dyna 2 waith 2 waith 2, ac yn y pen draw yr ateb yw 2 i'r n. 31 00:01:28,730 --> 00:01:30,010 32 00:01:30,010 --> 00:01:31,100 >> Cwestiwn tri. 33 00:01:31,100 --> 00:01:33,450 Beth sydd 0x50 mewn deuaidd? 34 00:01:33,450 --> 00:01:39,490 Felly cofiwch fod hecsadegol Mae gan iawn trosi syml i deuaidd. 35 00:01:39,490 --> 00:01:43,180 Felly dyma, mae'n rhaid i ni edrych ar y 5 a'r 0 yn annibynnol. 36 00:01:43,180 --> 00:01:45,110 Felly, beth sydd 5 mewn deuaidd? 37 00:01:45,110 --> 00:01:48,400 0101, dyna'r 1 bit a'r 4 bit. 38 00:01:48,400 --> 00:01:49,900 Beth sydd 0 yn deuaidd? 39 00:01:49,900 --> 00:01:50,520 Ddim yn anodd. 40 00:01:50,520 --> 00:01:52,180 0000. 41 00:01:52,180 --> 00:01:54,970 Felly, dim ond eu rhoi at ei gilydd, ac dyna'r rhif llawn yn deuaidd. 42 00:01:54,970 --> 00:01:57,640 01,010,000. 43 00:01:57,640 --> 00:02:00,439 Ac os ydych yn dymuno gallech cymryd oddi ar y sero leftmost. 44 00:02:00,439 --> 00:02:01,105 Mae'n amherthnasol. 45 00:02:01,105 --> 00:02:02,920 46 00:02:02,920 --> 00:02:05,733 >> Am hynny fel arall, beth yw 0x50 yn y degol? 47 00:02:05,733 --> 00:02:08,649 Os ydych eisiau, rydych could-- os ydych chi'n yn fwy cyfforddus gyda'r binary, 48 00:02:08,649 --> 00:02:11,340 gallech gymryd yr ateb deuaidd ac i drosi hynny'n degol. 49 00:02:11,340 --> 00:02:13,870 Neu gallem dim ond cofiwch hynny hecsadegol. 50 00:02:13,870 --> 00:02:21,140 Fel bod 0 yn y 0-fed le, a y 5 yn y 16 i'r lle cyntaf. 51 00:02:21,140 --> 00:02:25,990 Felly dyma, mae gennym 5 gwaith 16 i'r yn gyntaf, yn ogystal â 0 gwaith 16 i'r sero, 52 00:02:25,990 --> 00:02:27,520 yw 80. 53 00:02:27,520 --> 00:02:29,710 Ac os ydych yn edrych ar y teitl i'r cwestiwn, 54 00:02:29,710 --> 00:02:32,920 yr oedd CS 80, a oedd yn fath o awgrym at yr ateb i'r broblem hon. 55 00:02:32,920 --> 00:02:34,460 56 00:02:34,460 --> 00:02:35,420 >> Cwestiwn pump. 57 00:02:35,420 --> 00:02:40,320 Mae gennym y sgript Scratch, sef ailadrodd 4 gwaith menyn pysgnau jeli. 58 00:02:40,320 --> 00:02:42,800 Felly, sut yr ydym yn awr cod sy'n yn C? 59 00:02:42,800 --> 00:02:47,730 Wel, mae gennym Yma-- rhan mewn print trwm yw'r unig ran bu'n rhaid i chi weithredu. 60 00:02:47,730 --> 00:02:51,950 Felly mae gennym dolen 4 sy'n cael ei dolennu 4 adegau, printf-ing menyn pysgnau jeli, 61 00:02:51,950 --> 00:02:53,910 gyda llinell newydd gan fod y broblem yn gofyn am. 62 00:02:53,910 --> 00:02:55,250 63 00:02:55,250 --> 00:02:57,490 >> Cwestiwn chwech, problem Scratch arall. 64 00:02:57,490 --> 00:03:00,210 Rydym yn gweld bod ein bod mewn cylch am byth. 65 00:03:00,210 --> 00:03:05,000 Rydym yn dweud y ff amrywiol ac yna'n cynyddu i erbyn 1. 66 00:03:05,000 --> 00:03:09,580 Nawr rydym yn awyddus i wneud hynny yn C. Mae ffyrdd lluosog gallem fod wedi gwneud hyn. 67 00:03:09,580 --> 00:03:12,840 Yma rydym yn digwydd i godio'r am byth dolen fel tra (yn wir). 68 00:03:12,840 --> 00:03:16,600 Felly, rydym yn datgan y newidyn i, jyst fel y cawsom i amrywiol mewn Scratch. 69 00:03:16,600 --> 00:03:21,950 Datgan y ff amrywiol, ac am byth tra (yn wir), rydym yn dweud y newidyn i. 70 00:03:21,950 --> 00:03:25,260 Felly printf% i-- neu gallech chi wedi defnyddio% d. 71 00:03:25,260 --> 00:03:27,985 Rydym yn dweud bod newidyn, a Yna cynyddiad iddo, i ++. 72 00:03:27,985 --> 00:03:29,560 73 00:03:29,560 --> 00:03:30,830 >> Cwestiwn saith. 74 00:03:30,830 --> 00:03:35,560 Nawr rydym yn awyddus i wneud rhywbeth tebyg iawn i Mario dot c rhag problem sefydlu un. 75 00:03:35,560 --> 00:03:39,110 Rydym eisiau argraffu hashtags hyn, rydym am i argraffu bump 76 00:03:39,110 --> 00:03:40,700 gan dri petryal o hashes hyn. 77 00:03:40,700 --> 00:03:41,770 78 00:03:41,770 --> 00:03:43,162 Felly, sut yr ydym yn mynd i wneud hynny? 79 00:03:43,162 --> 00:03:45,370 Wel, rydym yn rhoi i chi yn ei gyfanrwydd criw o cod, a 'ch jyst 80 00:03:45,370 --> 00:03:47,560 rhaid i lenwi'r grid swyddogaeth print. 81 00:03:47,560 --> 00:03:49,540 >> Felly beth mae PrintGrid edrych? 82 00:03:49,540 --> 00:03:51,480 Wel ydych chi heibio'r lled ac uchder. 83 00:03:51,480 --> 00:03:53,520 Felly, mae gennym allanol 4 dolen, mae hynny'n dolennu 84 00:03:53,520 --> 00:03:57,650 dros bob un o'r rhesi o hyn grid yr ydym am ei hargraffu. 85 00:03:57,650 --> 00:04:01,250 Yna mae gennym y rhyng-nythu 4 dolen, dyna argraffu dros bob colofn. 86 00:04:01,250 --> 00:04:06,210 Felly, ar gyfer pob rhes, rydym yn argraffu am pob colofn, un hash sengl. 87 00:04:06,210 --> 00:04:10,045 Yna ar ddiwedd y rhes rydym yn argraffu llinell newydd sengl i fynd i'r rhes nesaf. 88 00:04:10,045 --> 00:04:11,420 A dyna ni ar gyfer y grid cyfan. 89 00:04:11,420 --> 00:04:12,810 90 00:04:12,810 --> 00:04:13,675 >> Cwestiwn wyth. 91 00:04:13,675 --> 00:04:17,170 Mae swyddogaeth fel PrintGrid dywedir ei yn cael sgîl-effaith, ond nid yn dychwelyd 92 00:04:17,170 --> 00:04:17,670 gwerth. 93 00:04:17,670 --> 00:04:19,209 Esboniwch y gwahaniaeth. 94 00:04:19,209 --> 00:04:23,080 Felly, mae hyn yn dibynnu ar i chi cofio yr hyn y sgîl-effaith yw. 95 00:04:23,080 --> 00:04:25,180 Wel, yn dychwelyd value-- rydym yn gwybod nad yw'n PrintGrid 96 00:04:25,180 --> 00:04:28,180 cael gwerth dychwelyd, gan fod dde yma mae'n dweud yn ddi-rym. 97 00:04:28,180 --> 00:04:31,150 Felly mae unrhyw beth sy'n dychwelyd yn ddi-rym nid yw'n wir yn dychwelyd unrhyw beth. 98 00:04:31,150 --> 00:04:32,200 99 00:04:32,200 --> 00:04:33,620 Felly beth yw'r sgîl-effaith? 100 00:04:33,620 --> 00:04:36,620 Wel, sgîl-effaith yw unrhyw beth y math yna o yn parhau 101 00:04:36,620 --> 00:04:39,500 ar ôl y swyddogaeth ben nid oedd hynny'n newydd ddychwelyd, 102 00:04:39,500 --> 00:04:41,340 ac nid oedd yn unig oddi wrth y mewnbynnau. 103 00:04:41,340 --> 00:04:44,970 >> Felly, er enghraifft, gallem newid newidyn byd-eang. 104 00:04:44,970 --> 00:04:46,590 Byddai hynny yn sgîl-effaith. 105 00:04:46,590 --> 00:04:49,000 Yn yr achos penodol, a sgîl-effaith bwysig iawn 106 00:04:49,000 --> 00:04:51,070 yn argraffu ar y sgrin. 107 00:04:51,070 --> 00:04:53,110 Felly mae hynny yn sgîl-effaith hynny PrintGrid wedi. 108 00:04:53,110 --> 00:04:54,980 Rydym yn argraffu pethau hyn i'r sgrin. 109 00:04:54,980 --> 00:04:56,370 A allwch chi feddwl am hynny fel sgîl-effaith, 110 00:04:56,370 --> 00:04:58,690 gan fod hynny'n rhywbeth y parhau ar ôl y swyddogaeth hon yn dod i ben. 111 00:04:58,690 --> 00:05:01,481 Mae hynny'n rhywbeth y tu allan i gwmpas y swyddogaeth hon yn y pen draw 112 00:05:01,481 --> 00:05:03,380 yn cael ei newid, mae'r cynnwys y sgrin. 113 00:05:03,380 --> 00:05:05,200 114 00:05:05,200 --> 00:05:05,839 >> Cwestiwn naw. 115 00:05:05,839 --> 00:05:07,880 Ystyried y rhaglen isod, y mae rhifau llinell 116 00:05:07,880 --> 00:05:09,740 wedi cael eu hychwanegu ar gyfer mwyn drafodaeth. 117 00:05:09,740 --> 00:05:13,480 Felly, yn y rhaglen hon rydym yn unig galw GetString, storio 118 00:05:13,480 --> 00:05:16,220 yn hyn o amrywiol s, ac yna argraffu newidyn hwnnw s. 119 00:05:16,220 --> 00:05:16,720 OK. 120 00:05:16,720 --> 00:05:19,090 Felly eglurwch pam mae un llinell yn bresennol. 121 00:05:19,090 --> 00:05:20,920 #include cs50 dot h. 122 00:05:20,920 --> 00:05:23,820 Pam mae angen i ni #include cs50 dot h? 123 00:05:23,820 --> 00:05:26,180 Wel rydym yn galw'r GetString swyddogaeth, 124 00:05:26,180 --> 00:05:28,840 a GetString ei ddiffinio yn y llyfrgell cs50. 125 00:05:28,840 --> 00:05:31,600 Felly os nad oedd gennym #include cs50 dot h, 126 00:05:31,600 --> 00:05:35,760 byddem yn cael y datganiad ymhlyg y gwall swyddogaeth GetString 127 00:05:35,760 --> 00:05:36,840 oddi wrth y compiler. 128 00:05:36,840 --> 00:05:40,110 Felly, mae angen i ni gynnwys y library-- mae angen i ni gynnwys y ffeil pennawd, 129 00:05:40,110 --> 00:05:42,870 neu ddim arall yw'r compiler bydd cydnabod bod GetString yn bodoli. 130 00:05:42,870 --> 00:05:44,380 131 00:05:44,380 --> 00:05:46,140 >> Eglurwch pam llinell dau yn bresennol. 132 00:05:46,140 --> 00:05:47,890 Dot io mor safonol h. 133 00:05:47,890 --> 00:05:50,430 Mae'n union yr un fath fel y broblem blaenorol, 134 00:05:50,430 --> 00:05:53,310 ac eithrio yn hytrach na delio â GetString, rydym yn sôn am printf. 135 00:05:53,310 --> 00:05:56,654 Felly os nad ydym yn dweud ein bod angen i gynnwys safon io dot h, 136 00:05:56,654 --> 00:05:58,820 yna ni fyddem yn gallu i ddefnyddio'r swyddogaeth printf, 137 00:05:58,820 --> 00:06:00,653 oherwydd bod y compiler Ni fyddai yn gwybod am y peth. 138 00:06:00,653 --> 00:06:01,750 139 00:06:01,750 --> 00:06:05,260 >> Why-- beth yw arwyddocâd o ddi-rym yn unol pedwar? 140 00:06:05,260 --> 00:06:08,010 Felly dyma ni wedi int brif (gwagle). 141 00:06:08,010 --> 00:06:10,600 Dyna dim ond dweud ein bod nad ydynt yn cael unrhyw llinell orchymyn 142 00:06:10,600 --> 00:06:12,280 dadleuon to main. 143 00:06:12,280 --> 00:06:17,390 Cofiwch y gallem ddweud int prif cromfachau argv llinyn argc int. 144 00:06:17,390 --> 00:06:20,400 Felly dyma ni jyst dweud ddi-rym i ddweud ein bod yn anwybyddu dadleuon llinell gorchymyn. 145 00:06:20,400 --> 00:06:21,840 146 00:06:21,840 --> 00:06:25,225 >> Eglurwch, o ran cof, yn union pa GetString yn unol chwe ffurflenni. 147 00:06:25,225 --> 00:06:27,040 148 00:06:27,040 --> 00:06:31,640 GetString yn dychwelyd bloc o cof, amrywiaeth o gymeriadau. 149 00:06:31,640 --> 00:06:34,870 Mae wir wedi dychwelyd pwyntydd i'r cymeriad cyntaf. 150 00:06:34,870 --> 00:06:37,170 Cofiwch fod llinyn yn seren torgoch. 151 00:06:37,170 --> 00:06:41,360 Felly s yn pwyntydd i'r cyntaf cymeriad ym mha bynnag y llinyn yn 152 00:06:41,360 --> 00:06:43,510 bod y defnyddiwr safodd o y bysellfwrdd. 153 00:06:43,510 --> 00:06:47,070 A bod y cof yn digwydd i gael ei malloced, fel y cof yn y domen. 154 00:06:47,070 --> 00:06:49,080 155 00:06:49,080 --> 00:06:50,450 >> Cwestiwn 13. 156 00:06:50,450 --> 00:06:51,960 Ystyried y rhaglen isod. 157 00:06:51,960 --> 00:06:55,579 Felly yr holl y rhaglen hon yn ei wneud yn printf-ing 1 rannu gan 10. 158 00:06:55,579 --> 00:06:57,370 Felly, pan luniwyd ac ddienyddio, y rhaglen hon 159 00:06:57,370 --> 00:07:01,170 allbynnau 0.0, er bod 1 wedi'i rannu â 10 yw 0.1. 160 00:07:01,170 --> 00:07:02,970 Felly pam ei fod yn 0.0? 161 00:07:02,970 --> 00:07:05,510 Wel, mae hyn oherwydd o is-adran cyfanrif. 162 00:07:05,510 --> 00:07:08,580 Felly 1 yn gyfanrif, 10 yn gyfanrif. 163 00:07:08,580 --> 00:07:11,980 Felly 1 wedi'i rannu â 10, popeth yn cael ei drin fel cyfanrifau, 164 00:07:11,980 --> 00:07:16,380 ac yn C, pan fyddwn yn is-adran cyfanrif, inni gwtogi'r unrhyw bwynt degol. 165 00:07:16,380 --> 00:07:19,590 Felly 1 wedi'i rannu â 10 yn cael ei 0, ac yna rydym yn ceisio 166 00:07:19,590 --> 00:07:24,410 i argraffu hynny fel fflôt, felly sero hargraffu fel fflôt yw 0.0. 167 00:07:24,410 --> 00:07:27,400 A dyna pam ein bod yn cael 0.0. 168 00:07:27,400 --> 00:07:28,940 >> Ystyried y rhaglen isod. 169 00:07:28,940 --> 00:07:31,280 Nawr rydym yn argraffu 0.1. 170 00:07:31,280 --> 00:07:34,280 Felly dim is-adran cyfanrif, rydym yn unig argraffu 0.1, 171 00:07:34,280 --> 00:07:37,100 ond rydym yn argraffu ei i 28 lle degol. 172 00:07:37,100 --> 00:07:41,810 Ac rydym yn cael 0.1000 hyn, mae criw cyfan o zeros, 5 5 5, blah blah blah. 173 00:07:41,810 --> 00:07:45,495 Felly, y cwestiwn yma yw pam y mae'n ei argraffu, yn lle yn union 0.1? 174 00:07:45,495 --> 00:07:46,620 175 00:07:46,620 --> 00:07:49,640 >> Felly, y rheswm yma yn awr fel y bo'r angen pwynt imprecision. 176 00:07:49,640 --> 00:07:53,410 Cofiwch mai fflôt dim ond 32 o ddarnau. 177 00:07:53,410 --> 00:07:57,540 Felly, ni allwn ond yn cynrychioli nifer gyfyngedig o fel y bo'r angen gwerthoedd pwynt gyda 32 y rhai 178 00:07:57,540 --> 00:07:58,560 darnau. 179 00:07:58,560 --> 00:08:01,760 Wel mae 'y pen draw ganmil llawer o werthoedd pwynt arnawf, 180 00:08:01,760 --> 00:08:04,940 ac mae nifer anfeidraidd fel y bo'r angen Gwerthoedd pwynt mewn rhwng 0 ac 1, 181 00:08:04,940 --> 00:08:07,860 ac rydym yn amlwg yn gallu cynrychioli gwerthoedd hyd yn oed mwy na hynny. 182 00:08:07,860 --> 00:08:13,230 Felly mae'n rhaid i aberthu i yn gallu cynrychioli rhan fwyaf o werthoedd. 183 00:08:13,230 --> 00:08:16,960 >> Felly mae gwerth fel 0.1, yn ôl pob golwg Ni allwn gynrychioli hynny yn union. 184 00:08:16,960 --> 00:08:22,500 Felly, yn lle gynrychioli 0.1 rydym yn ei wneud y orau y gallwn gynrychioli'r hyn 0.100000 5 5 185 00:08:22,500 --> 00:08:23,260 5. 186 00:08:23,260 --> 00:08:26,306 A dyna eithaf agos, ond am lawer o geisiadau 187 00:08:26,306 --> 00:08:28,430 rhaid i chi boeni am fel y bo'r angen pwynt imprecision, 188 00:08:28,430 --> 00:08:30,930 oherwydd ein bod yn methu gynrychioli holl bwyntiau fel y bo'r angen yn union. 189 00:08:30,930 --> 00:08:32,500 190 00:08:32,500 --> 00:08:33,380 >> Cwestiwn 15. 191 00:08:33,380 --> 00:08:34,679 Ystyriwch y cod isod. 192 00:08:34,679 --> 00:08:36,630 Rydym yn unig yn argraffu 1 ac 1. 193 00:08:36,630 --> 00:08:38,289 Felly nid oes unrhyw tric yma. 194 00:08:38,289 --> 00:08:41,780 1 ac 1 yn gwerthuso i 2, ac Yna, rydym yn argraffu hynny. 195 00:08:41,780 --> 00:08:42,789 Mae hyn yn unig printiau 2. 196 00:08:42,789 --> 00:08:43,850 197 00:08:43,850 --> 00:08:44,700 >> Cwestiwn 16. 198 00:08:44,700 --> 00:08:49,450 Nawr rydym yn argraffu cymeriad 1 yn ogystal â chymeriad 1. 199 00:08:49,450 --> 00:08:52,110 Felly pam mae hyn yn Nid yw argraffwch yr un peth? 200 00:08:52,110 --> 00:08:57,680 Wel cymeriad 1 yn ogystal â chymeriad 1, cymeriad 1 Mae gwerth ASCII 49. 201 00:08:57,680 --> 00:09:04,840 Felly, mae hyn yn wir yn dweud 49 yn ogystal â 49, a yn y pen draw mae hyn yn mynd i argraffu 98. 202 00:09:04,840 --> 00:09:06,130 Felly, nid yw hyn yn argraffu 2. 203 00:09:06,130 --> 00:09:08,070 204 00:09:08,070 --> 00:09:09,271 >> Cwestiwn 17. 205 00:09:09,271 --> 00:09:11,520 Cwblhewch y gweithrediad o od isod yn y fath fodd 206 00:09:11,520 --> 00:09:14,615 bod y swyddogaeth yn dychwelyd wir os n yn od ac yn ffug os n yn oed. 207 00:09:14,615 --> 00:09:16,710 208 00:09:16,710 --> 00:09:19,330 Mae hwn yn un o ddibenion mawr gyfer y gweithredwr mod. 209 00:09:19,330 --> 00:09:24,530 Felly, rydym yn cymryd ein dadl n, os yw n mod 2 yn dychwelyd 1, yn dda 210 00:09:24,530 --> 00:09:28,030 sy'n golygu bod rhannu'n n erbyn 2 oedd â gweddill. 211 00:09:28,030 --> 00:09:33,270 Os yw n wedi'i rannu â 2 roedd gweddill, bod n golygu bod yn od, felly rydym yn dychwelyd yn wir. 212 00:09:33,270 --> 00:09:34,910 Else yn dychwelyd ffug. 213 00:09:34,910 --> 00:09:39,070 Yr ydych hefyd gallai fod wedi gwneud n mod 2 gydradd sero, yn dychwelyd ffug, arall yn dychwelyd yn wir. 214 00:09:39,070 --> 00:09:41,600 215 00:09:41,600 --> 00:09:43,640 >> Ystyriwch y swyddogaeth recursive isod. 216 00:09:43,640 --> 00:09:46,920 Felly os n yn llai na neu'n yn hafal i 1, yn dychwelyd 1, 217 00:09:46,920 --> 00:09:50,430 arall dychwelyd n amserau f o n minws 1. 218 00:09:50,430 --> 00:09:52,556 Felly beth yw swyddogaeth hon? 219 00:09:52,556 --> 00:09:54,305 Wel, mae hyn yn unig yw'r swyddogaeth ffactoraidd. 220 00:09:54,305 --> 00:09:55,410 221 00:09:55,410 --> 00:09:57,405 Mae hyn yn cael ei gynrychioli 'n glws fel n ffactoraidd. 222 00:09:57,405 --> 00:09:58,720 223 00:09:58,720 --> 00:10:02,310 >> Felly gwestiwn 19 awr, yr ydym yn awyddus i cymryd y swyddogaeth recursive. 224 00:10:02,310 --> 00:10:04,530 Rydym am ei gwneud yn ailadroddol. 225 00:10:04,530 --> 00:10:05,874 Felly sut ydym yn gwneud hynny? 226 00:10:05,874 --> 00:10:07,790 Dda ar gyfer y staff ateb, ac unwaith eto mae 227 00:10:07,790 --> 00:10:11,090 ffyrdd lluosog y gallech fod wedi gwneud hynny, rydym yn dechrau gyda'r cynnyrch hwn int 228 00:10:11,090 --> 00:10:11,812 yn hafal i 1. 229 00:10:11,812 --> 00:10:13,520 Ac drwy gydol y ar gyfer dolen, rydym yn mynd 230 00:10:13,520 --> 00:10:17,590 i gael ei lluosi cynnyrch i yn y pen draw darfod i fyny ag y ffactoraidd llawn. 231 00:10:17,590 --> 00:10:21,870 Felly, ar gyfer int ff hafal 2, fi yw yn llai na neu'n hafal i n, i yn ++. 232 00:10:21,870 --> 00:10:24,130 >> Efallai eich bod yn meddwl tybed pam fi yn hafal i 2. 233 00:10:24,130 --> 00:10:28,380 Wel, cofiwch fod yma mae'n rhaid i ni sicrhau bod ein achos sylfaenol yn gywir. 234 00:10:28,380 --> 00:10:32,180 Felly os n yn llai na neu'n hafal i 1, rydym yn unig yn dychwelyd 1. 235 00:10:32,180 --> 00:10:34,830 Felly dros yma, yr ydym yn dechrau am ff hafal i 2. 236 00:10:34,830 --> 00:10:39,090 Wel ai fi oedd 1, yna the-- neu pe n yn 1, yna bydd y am ddolen 237 00:10:39,090 --> 00:10:40,600 Ni fyddai'n gweithredu o gwbl. 238 00:10:40,600 --> 00:10:43,190 Ac felly byddem yn unig cynnyrch dychwelyd, sydd 1. 239 00:10:43,190 --> 00:10:45,920 Yn yr un modd, os n yn unrhyw beth yn llai na 1-- 240 00:10:45,920 --> 00:10:49,290 pe bai'n 0, negyddol 1, whatever-- byddem yn dal yn dychwelyd 1, 241 00:10:49,290 --> 00:10:52,260 sef yr union beth yw'r Fersiwn recursive yn ei wneud. 242 00:10:52,260 --> 00:10:54,660 >> Yn awr, os n yn fwy nag 1, yna rydym yn mynd 243 00:10:54,660 --> 00:10:56,550 i wneud o leiaf un ailadroddiad y ddolen hon. 244 00:10:56,550 --> 00:11:00,630 Felly, gadewch i ni ddweud yw n 5, yna rydym yn mynd i wneud amserau cynnyrch yn dychwelyd 2. 245 00:11:00,630 --> 00:11:02,165 Felly nawr cynnyrch yw 2. 246 00:11:02,165 --> 00:11:04,040 Nawr rydym yn mynd i wneud amserau cynnyrch yn dychwelyd 3. 247 00:11:04,040 --> 00:11:04,690 Nawr mae'n 6. 248 00:11:04,690 --> 00:11:07,500 Amserau Cynnyrch hafal 4, yn awr ei fod yn 24. 249 00:11:07,500 --> 00:11:10,420 Amserau Cynnyrch hafal 5, nawr mae'n 120. 250 00:11:10,420 --> 00:11:16,730 Felly, yna yn y pen draw, rydym yn dychwelyd 120, sydd yn gywir 5 ffactoraidd. 251 00:11:16,730 --> 00:11:17,510 >> Cwestiwn 20. 252 00:11:17,510 --> 00:11:22,480 Dyma'r un lle mae rhaid i chi lenwi yn y tabl hwn gydag unrhyw algorithm a roddir, 253 00:11:22,480 --> 00:11:25,735 unrhyw beth yr ydym wedi gweld, bod yn cyd-fynd y rhain rhedeg algorithmig 254 00:11:25,735 --> 00:11:28,060 amseroedd hyn amseroedd rhedeg asymptotic. 255 00:11:28,060 --> 00:11:33,270 Felly beth yw algorithm sy'n yw omega o 1, ond O mawr o n? 256 00:11:33,270 --> 00:11:35,970 Felly gallai fod anfeidrol llawer o atebion yma. 257 00:11:35,970 --> 00:11:39,790 Yr un yr ydym wedi gweld yn ôl pob tebyg y rhan fwyaf o yn aml yn chwilio llinellol yn unig. 258 00:11:39,790 --> 00:11:42,050 >> Felly, yn yr achos gorau senario, mae'r eitem rydym yn 259 00:11:42,050 --> 00:11:44,050 chwilio amdano yw ar y gan ddechrau o'r rhestr 260 00:11:44,050 --> 00:11:47,400 ac felly mewn omega o 1 cam, y peth cyntaf yr ydym yn gwirio, 261 00:11:47,400 --> 00:11:49,740 rydym yn unig yn syth yn dychwelyd ein bod yn dod o hyd i'r eitem. 262 00:11:49,740 --> 00:11:52,189 Yn y sefyllfa waethaf, mae'r eitem yn ar y diwedd, 263 00:11:52,189 --> 00:11:53,730 neu os nad yw'r eitem yn y rhestr o gwbl. 264 00:11:53,730 --> 00:11:56,700 Felly, mae'n rhaid i ni chwilio y rhestr gyfan, pob n 265 00:11:56,700 --> 00:11:58,480 elfennau, a dyna pam ei fod o o n. 266 00:11:58,480 --> 00:11:59,670 267 00:11:59,670 --> 00:12:04,880 >> Felly, erbyn hyn mae'n rhywbeth sy'n ddau omega o n log n, ac O fawr o n log n. 268 00:12:04,880 --> 00:12:08,650 Wel y peth mwyaf perthnasol rydym wedi gweld yma yw cyfuno fath. 269 00:12:08,650 --> 00:12:12,950 Felly uno didoli, cofiwch, yn y pen draw Theta 270 00:12:12,950 --> 00:12:16,920 o n log n, lle theta diffinnir os yw'r ddau omega ac O fawr yr un fath. 271 00:12:16,920 --> 00:12:17,580 Mae'r ddau n log n. 272 00:12:17,580 --> 00:12:18,690 273 00:12:18,690 --> 00:12:21,970 >> Beth sy'n rhywbeth sy'n omega o n, ac O y n sgwario? 274 00:12:21,970 --> 00:12:23,990 Wel, unwaith eto mae ' atebion lluosog posibl. 275 00:12:23,990 --> 00:12:26,440 Yma rydym yn digwydd i ddweud fath swigen. 276 00:12:26,440 --> 00:12:28,840 Byddai fath Mewnosod hefyd yn gweithio yma. 277 00:12:28,840 --> 00:12:31,400 Cofiwch fod swigen fath Mae optimeiddio, lle, 278 00:12:31,400 --> 00:12:34,630 os ydych yn gallu cael drwy'r rhestr gyfan 279 00:12:34,630 --> 00:12:37,402 heb fod angen i'w wneud unrhyw cyfnewidiadau, ac yna, yn dda, 280 00:12:37,402 --> 00:12:40,110 gallwn ddychwelyd hynny ar unwaith y rhestr ei ddatrys i ddechrau. 281 00:12:40,110 --> 00:12:43,185 Felly, yn y senario achos gorau, 'i' jyst omega o n. 282 00:12:43,185 --> 00:12:45,960 Os nad yw 'i' jyst 'n glws rhestr i ddechrau didoli, 283 00:12:45,960 --> 00:12:48,270 yna mae gennym O o n sgwâr cyfnewid. 284 00:12:48,270 --> 00:12:49,330 285 00:12:49,330 --> 00:12:55,610 Ac yn olaf, rydym yn cael y math dethol i n sgwâr, yn omega ac O. mawr 286 00:12:55,610 --> 00:12:56,850 >> Cwestiwn 21. 287 00:12:56,850 --> 00:12:58,870 Beth sy'n gorlif cyfanrif? 288 00:12:58,870 --> 00:13:02,160 Wel unwaith eto, yn debyg i yn gynharach, mai dim ond finitely lawer o ddarnau 289 00:13:02,160 --> 00:13:04,255 i gynrychioli yn gyfanrif, felly efallai 32 o ddarnau. 290 00:13:04,255 --> 00:13:06,300 291 00:13:06,300 --> 00:13:09,180 Gadewch i ni ddweud bod gennym cyfanrif wedi'i lofnodi. 292 00:13:09,180 --> 00:13:12,800 Yna yn y pen draw yr uchaf rhif positif gallwn gynrychioli 293 00:13:12,800 --> 00:13:15,910 yw 2 i 31 minws 1. 294 00:13:15,910 --> 00:13:19,370 Felly, beth sy'n digwydd os ydym yn ceisio Yna cynyddiad hynny cyfanrif? 295 00:13:19,370 --> 00:13:25,320 Wel, rydym yn mynd i fynd o 2 i'r 31 minws 1, yr holl ffordd i lawr i negyddol 2 296 00:13:25,320 --> 00:13:26,490 at y 31. 297 00:13:26,490 --> 00:13:29,470 Felly mae hyn gorlif cyfanrif yw pan fyddwch yn cadw incrementing, 298 00:13:29,470 --> 00:13:32,330 ac yn y pen draw nad ydych yn gallu cael unrhyw uwch a 'i jyst 299 00:13:32,330 --> 00:13:34,520 lapio holl ffordd yn ôl gwmpas i gwerth negyddol. 300 00:13:34,520 --> 00:13:35,850 301 00:13:35,850 --> 00:13:37,779 >> Beth am gorlif byffer? 302 00:13:37,779 --> 00:13:39,820 Felly byffer overflow-- gofio beth byffer yw. 303 00:13:39,820 --> 00:13:41,000 Dim ond darn o gof. 304 00:13:41,000 --> 00:13:43,350 Rhywbeth fel arae yn byffer. 305 00:13:43,350 --> 00:13:46,120 Felly mae gorlif byffer yw pan byddwch yn ceisio cael mynediad cof 306 00:13:46,120 --> 00:13:47,880 tu hwnt i ddiwedd y rhesi. 307 00:13:47,880 --> 00:13:50,410 Felly, os oes gennych amrywiaeth o faint 5 a chi 308 00:13:50,410 --> 00:13:53,700 ceisiwch gael mynediad braced array 5 neu fraced 6 neu fraced 7, 309 00:13:53,700 --> 00:13:56,610 neu unrhyw beth y tu hwnt i'r pen, neu hyd yn oed unrhyw beth 310 00:13:56,610 --> 00:14:00,790 braced array below-- negyddol 1-- pob un o'r rheiny yn gorlifo byffer. 311 00:14:00,790 --> 00:14:02,810 Rydych yn cyffwrdd cof mewn ffyrdd drwg. 312 00:14:02,810 --> 00:14:04,090 313 00:14:04,090 --> 00:14:04,730 >> Cwestiwn 23. 314 00:14:04,730 --> 00:14:05,760 315 00:14:05,760 --> 00:14:09,100 Felly, yn yr un yr ydych ei angen i weithredu strlen. 316 00:14:09,100 --> 00:14:11,630 Ac yr ydym yn dweud wrthych eich bod yn gallu cymryd yn ganiataol na fydd s yn null, 317 00:14:11,630 --> 00:14:13,790 felly nid oes rhaid i chi gwneud unrhyw siec am null. 318 00:14:13,790 --> 00:14:16,190 Ac mae ffyrdd lluosog gallech fod wedi gwneud hyn. 319 00:14:16,190 --> 00:14:18,440 Yma, rydym yn unig yn cymryd y syml. 320 00:14:18,440 --> 00:14:21,780 Rydym yn dechrau gyda cownter, n. n yn cyfrif faint o gymeriadau mae. 321 00:14:21,780 --> 00:14:25,560 Felly, rydym yn dechrau ar 0, ac yna rydym yn ailadrodd dros y rhestr gyfan. 322 00:14:25,560 --> 00:14:29,092 >> S A yw braced 0 hafal i'r cymeriad terminator null? 323 00:14:29,092 --> 00:14:31,425 Cofiwch ein bod yn chwilio am cymeriad terminator null 324 00:14:31,425 --> 00:14:33,360 i benderfynu pa mor hir y mae ein llinyn yw. 325 00:14:33,360 --> 00:14:35,890 Sy'n mynd i derfynu unrhyw llinyn perthnasol. 326 00:14:35,890 --> 00:14:39,400 Felly, mae s braced 0 gyfartal at y terminator null? 327 00:14:39,400 --> 00:14:42,850 Os nad yw'n, yna rydym yn mynd i edrych ar s braced 1, s braced 2. 328 00:14:42,850 --> 00:14:45,050 Rydym yn cadw mynd nes ein ddod o hyd i'r terminator null. 329 00:14:45,050 --> 00:14:48,580 Unwaith y byddwn wedi dod o hyd iddo, ac yna n cynnwys cyfanswm hyd y llinyn, 330 00:14:48,580 --> 00:14:49,942 a gallwn jyst ddychwelyd hynny. 331 00:14:49,942 --> 00:14:51,180 332 00:14:51,180 --> 00:14:51,865 >> Cwestiwn 24. 333 00:14:51,865 --> 00:14:53,010 334 00:14:53,010 --> 00:14:56,050 Felly, mae hyn yw'r un lle rydych yn rhaid i ni wneud y fasnach i ffwrdd. 335 00:14:56,050 --> 00:14:59,810 Felly, mae un peth yn dda mewn un ffordd, ond ym mha ffordd y mae'n ddrwg? 336 00:14:59,810 --> 00:15:02,980 Felly dyma, uno fath yn tueddu i fod yn gyflymach na'r fath swigen. 337 00:15:02,980 --> 00:15:06,530 Wedi dweud that-- yn dda, yno yn atebion lluosog yma. 338 00:15:06,530 --> 00:15:12,930 Ond y prif un yw y swigen fath yw omega o n am restr ddidoli. 339 00:15:12,930 --> 00:15:14,950 >> Cofiwch y tabl ni jyst yn gweld yn gynharach. 340 00:15:14,950 --> 00:15:17,600 Felly swigen yn didoli omega o n, y senario achos gorau 341 00:15:17,600 --> 00:15:20,010 yw ei fod yn gallu jyst yn mynd dros y rhestr unwaith, penderfynu 342 00:15:20,010 --> 00:15:22,270 hey beth mae hyn yn barod didoli, a dychwelyd. 343 00:15:22,270 --> 00:15:25,960 Cyfuno didoli, ni waeth beth yr ydych yn ei wneud, yn omega o n log n. 344 00:15:25,960 --> 00:15:29,200 Felly, ar gyfer y rhestr ddidoli, swigen didoli yn mynd i fod yn gyflymach. 345 00:15:29,200 --> 00:15:30,870 346 00:15:30,870 --> 00:15:32,430 >> Nawr beth am restrau cysylltiedig? 347 00:15:32,430 --> 00:15:36,070 Felly gall rhestr cysylltiedig tyfu ac yn crebachu i gyd-fynd cymaint o elfennau yn ôl yr angen. 348 00:15:36,070 --> 00:15:38,489 Wedi dweud that-- felly Fel arfer, mae'r gymhariaeth uniongyrchol 349 00:15:38,489 --> 00:15:40,280 yn mynd i fod yn gysylltiedig rhestru gydag amrywiaeth. 350 00:15:40,280 --> 00:15:41,600 351 00:15:41,600 --> 00:15:44,050 Felly hyd yn oed er y gall arrays yn hawdd tyfu ac yn crebachu 352 00:15:44,050 --> 00:15:47,130 i gyd-fynd cymaint o elfennau yn ôl yr angen, rhestr cysylltiedig 353 00:15:47,130 --> 00:15:49,600 o'i gymharu â â array-- amrywiaeth yn cael mynediad ar hap. 354 00:15:49,600 --> 00:15:52,960 Gallwn mynegai i mewn i unrhyw elfen benodol o'r rhesi. 355 00:15:52,960 --> 00:15:56,430 >> Felly, am restr cysylltiedig, ni allwn dim ond yn mynd i'r pumed elfen, 356 00:15:56,430 --> 00:16:00,260 mae'n rhaid i ni groesi o'r cychwyn nes i ni gyrraedd y bumed elfen. 357 00:16:00,260 --> 00:16:03,990 Ac mae hynny'n mynd i atal ni rhag gwneud rhywbeth fel chwiliad deuaidd. 358 00:16:03,990 --> 00:16:08,150 Wrth siarad am chwiliad deuaidd, chwiliad deuaidd tueddu i fod yn gyflymach na chwiliad llinol. 359 00:16:08,150 --> 00:16:11,120 Wedi dweud that-- felly, un peth y bo modd 360 00:16:11,120 --> 00:16:13,380 yw na allwch chi ei wneud deuaidd chwilio ar restrau cysylltiedig, 361 00:16:13,380 --> 00:16:14,730 gallwch ond ei wneud ar araeau. 362 00:16:14,730 --> 00:16:18,030 Ond yn fwy na thebyg yn bwysicach, nad ydych yn gallu gwneud chwiliad deuaidd 363 00:16:18,030 --> 00:16:20,690 ar amrywiaeth sydd heb ei datrys. 364 00:16:20,690 --> 00:16:23,990 Ymlaen llaw efallai y bydd angen i chi roi trefn yr amrywiaeth, a dim ond wedyn yn gallu 365 00:16:23,990 --> 00:16:25,370 ydych yn gwneud chwiliad deuaidd. 366 00:16:25,370 --> 00:16:27,660 Felly, os nad yw eich beth yw ddidoli i ddechrau, 367 00:16:27,660 --> 00:16:29,250 yna efallai y chwiliad llinol fod yn gyflymach. 368 00:16:29,250 --> 00:16:30,620 369 00:16:30,620 --> 00:16:31,740 >> Cwestiwn 27. 370 00:16:31,740 --> 00:16:34,770 Felly ystyried y rhaglen isod, a fydd yn y sleid nesaf. 371 00:16:34,770 --> 00:16:37,790 A hon yw'r un lle rydym yn mynd i eisiau datgan yn glir 372 00:16:37,790 --> 00:16:39,980 y gwerthoedd ar gyfer gwahanol newidynnau. 373 00:16:39,980 --> 00:16:41,990 Felly gadewch i ni edrych ar hynny. 374 00:16:41,990 --> 00:16:43,160 >> Felly llinell un. 375 00:16:43,160 --> 00:16:45,457 Mae gennym int x yn hafal i 1. 376 00:16:45,457 --> 00:16:47,040 Dyna'r unig beth sydd wedi digwydd. 377 00:16:47,040 --> 00:16:50,440 Felly, yn y llinell un, rydym yn gweld yn ein tabl, hwnnw y, a, b, ac tmp i gyd 378 00:16:50,440 --> 00:16:51,540 duo. 379 00:16:51,540 --> 00:16:52,280 Felly beth yw x? 380 00:16:52,280 --> 00:16:53,860 Wel rydym yn unig yn gosod ei bod yn hafal i 1. 381 00:16:53,860 --> 00:16:55,020 382 00:16:55,020 --> 00:16:58,770 Ac yna llinell dau, wel, gwelwn fod y ei osod i 2, 383 00:16:58,770 --> 00:17:00,550 ac mae'r tabl yn barod llenwi ar ein cyfer. 384 00:17:00,550 --> 00:17:03,040 Felly x yw 1 ac y yw 2. 385 00:17:03,040 --> 00:17:05,890 >> Yn awr, llinell tri, rydym yn awr yn y tu mewn i'r swyddogaeth cyfnewid. 386 00:17:05,890 --> 00:17:07,560 Beth wnaethon ni basio i gyfnewid? 387 00:17:07,560 --> 00:17:11,609 Rydym yn pasio ampersand x am a, ac ampersand y i b. 388 00:17:11,609 --> 00:17:15,160 Lle mae'r broblem yn gynharach datgan bod y cyfeiriad o x 389 00:17:15,160 --> 00:17:17,520 yw 0x10, a chyfeiriad y yw 0x14. 390 00:17:17,520 --> 00:17:18,970 391 00:17:18,970 --> 00:17:21,909 Felly, a a b yn hafal i 0x10 a 0x14, yn y drefn honno. 392 00:17:21,909 --> 00:17:23,670 393 00:17:23,670 --> 00:17:26,250 >> Nawr yn llinell tri, beth yw x ac y? 394 00:17:26,250 --> 00:17:28,554 Wel, nid oes dim wedi newid am x ac y yn y fan hon. 395 00:17:28,554 --> 00:17:30,470 Hyd yn oed er eu bod yn y tu mewn i brif ffrâm stac, 396 00:17:30,470 --> 00:17:32,469 maent yn dal i gael yr un gwerthoedd yr oeddent o'r blaen. 397 00:17:32,469 --> 00:17:34,030 Nid ydym wedi addasu unrhyw cof. 398 00:17:34,030 --> 00:17:35,710 Felly x yw 1, y yw 2. 399 00:17:35,710 --> 00:17:36,550 400 00:17:36,550 --> 00:17:37,050 Mae pob hawl. 401 00:17:37,050 --> 00:17:40,300 Felly nawr dywedasom tmp int cyfartal i serennu a. 402 00:17:40,300 --> 00:17:44,410 Felly, ar linell pedwar, popeth yr un fath ac eithrio ar gyfer tmp. 403 00:17:44,410 --> 00:17:47,130 Nid ydym wedi newid unrhyw werthoedd o unrhyw beth ac eithrio ar gyfer tmp. 404 00:17:47,130 --> 00:17:49,230 Rydym yn gosod tmp gyfartal i serennu a. 405 00:17:49,230 --> 00:17:50,620 Beth yw seren a? 406 00:17:50,620 --> 00:17:56,240 Wel, mae pwyntiau i x, Felly seren a yn mynd i x cyfartal, sydd 1. 407 00:17:56,240 --> 00:18:00,080 Felly mae popeth yn cael ei gopïo lawr, ac tmp wedi ei osod i 1. 408 00:18:00,080 --> 00:18:01,110 >> Nawr bod y llinell nesaf. 409 00:18:01,110 --> 00:18:03,380 Seren a seren yn gyfartal b. 410 00:18:03,380 --> 00:18:10,000 Felly, gan y llinell five-- yn dda eto, mae popeth yr un fath ac eithrio beth bynnag seren a yw. 411 00:18:10,000 --> 00:18:10,830 Beth yw seren a? 412 00:18:10,830 --> 00:18:13,720 Wel, yr ydym newydd ei ddweud seren a yw x. 413 00:18:13,720 --> 00:18:16,400 Felly, rydym yn newid x i seren gyfartal b. 414 00:18:16,400 --> 00:18:18,960 Beth yw seren b? y. b yn cyfeirio at y. 415 00:18:18,960 --> 00:18:21,030 Felly seren b yn y. 416 00:18:21,030 --> 00:18:25,140 Felly, rydym yn gosod x yn hafal i y, a phopeth arall yr un fath. 417 00:18:25,140 --> 00:18:29,130 Felly rydym yn gweld yn y rhes nesaf bod x yn awr 2, ac mae'r gweddill yn cael eu dim ond copïo i lawr. 418 00:18:29,130 --> 00:18:31,120 >> Nawr yn y llinell nesaf, seren b hafal tmp. 419 00:18:31,120 --> 00:18:34,740 Wel, yr ydym newydd ei ddweud seren b yn y, felly rydym yn gosod y cyfartal i tmp. 420 00:18:34,740 --> 00:18:37,450 Mae popeth arall yr un fath, felly mae popeth yn cael ei gopïo i lawr. 421 00:18:37,450 --> 00:18:42,050 Rydym yn gosod y cyfartal i TMP, sef un, a phopeth arall yr un fath. 422 00:18:42,050 --> 00:18:43,210 >> Nawr yn olaf, llinell saith. 423 00:18:43,210 --> 00:18:44,700 Rydym yn ôl yn y brif swyddogaeth. 424 00:18:44,700 --> 00:18:46,350 Rydym yn chwilio am gyfnewid yn cael ei orffen. 425 00:18:46,350 --> 00:18:48,972 Yr ydym wedi colli a, b, ac tmp, ond yn y pen draw, rydym yn 426 00:18:48,972 --> 00:18:51,180 Nid yn newid unrhyw werthoedd o unrhyw beth yn y fan hon, 427 00:18:51,180 --> 00:18:52,800 ni jyst adysgrifia x ac y lawr. 428 00:18:52,800 --> 00:18:56,490 Ac rydym yn gweld bod x ac y yn erbyn hyn 2 a 1 yn lle 1 a 2. 429 00:18:56,490 --> 00:18:58,160 Mae'r cyfnewid wedi cyflawni yn llwyddiannus. 430 00:18:58,160 --> 00:18:59,500 431 00:18:59,500 --> 00:19:00,105 >> Cwestiwn 28. 432 00:19:00,105 --> 00:19:01,226 433 00:19:01,226 --> 00:19:03,100 Tybiwch eich bod yn dod ar draws y negeseuon gwall 434 00:19:03,100 --> 00:19:06,790 isod yn ystod oriau swyddfa y flwyddyn nesaf fel Awdurdod Cymwys neu TF. 435 00:19:06,790 --> 00:19:08,930 Cynghori sut i atgyweiria pob un o'r gwallau hyn. 436 00:19:08,930 --> 00:19:11,160 Cyfeirio Felly anniffiniedig at GetString. 437 00:19:11,160 --> 00:19:12,540 Pam y gallai byddwch yn gweld hyn? 438 00:19:12,540 --> 00:19:15,380 Wel, os bydd myfyriwr yn defnyddio GetString yn eu cod, 439 00:19:15,380 --> 00:19:20,310 maent wedi briodol hash cynnwys cs50 dot h i gynnwys y llyfrgell cs50. 440 00:19:20,310 --> 00:19:22,380 >> Wel, yr hyn y maent yn Mae angen at atgyweiria gwall hwn? 441 00:19:22,380 --> 00:19:26,810 Mae angen iddynt wneud lcs50 diferyn yn y llinell orchymyn pan fyddant yn llunio. 442 00:19:26,810 --> 00:19:29,501 Felly, os nad ydynt yn pasio lcs50 dash chlang, eu bod yn 443 00:19:29,501 --> 00:19:32,000 ddim yn mynd i gael y gwir cod sy'n gweithredu GetString. 444 00:19:32,000 --> 00:19:33,190 445 00:19:33,190 --> 00:19:34,170 >> Cwestiwn 29. 446 00:19:34,170 --> 00:19:36,190 Ymhlyg datgan strlen swyddogaeth llyfrgell. 447 00:19:36,190 --> 00:19:37,550 448 00:19:37,550 --> 00:19:40,360 Wel mae hyn yn awr, nid oes ganddynt gwneud y hash briodol cynnwys. 449 00:19:40,360 --> 00:19:41,440 450 00:19:41,440 --> 00:19:45,410 Yn yr achos penodol, y ffeil pennawd mae angen iddynt gynnwys yn llinyn dot h, 451 00:19:45,410 --> 00:19:48,710 ac yn cynnwys llinyn dot h, yn awr y student-- awr y compiler 452 00:19:48,710 --> 00:19:51,750 yn cael mynediad at y datganiadau o strlen, 453 00:19:51,750 --> 00:19:54,120 ac mae'n gwybod bod eich cod strlen yn defnyddio yn gywir. 454 00:19:54,120 --> 00:19:55,380 455 00:19:55,380 --> 00:19:56,580 >> Cwestiwn 30. 456 00:19:56,580 --> 00:20:00,240 Mwy o addasiadau y cant na dadleuon data. 457 00:20:00,240 --> 00:20:01,540 Felly beth yw hwn? 458 00:20:01,540 --> 00:20:06,470 Wel cofiwch fod y rhain y cant signs-- sut y maent yn berthnasol i printf. 459 00:20:06,470 --> 00:20:08,890 Felly, yn printf gallem percent-- efallai y byddwn yn argraffu rhywbeth 460 00:20:08,890 --> 00:20:11,380 fel y cant i slaes n. 461 00:20:11,380 --> 00:20:15,310 Neu efallai y byddwn yn argraffu yn hoffi i cant, gofod, fi cant, gofod, y cant i. 462 00:20:15,310 --> 00:20:18,950 Felly, ar gyfer pob un o'r rheini arwyddion y cant, mae angen 463 00:20:18,950 --> 00:20:21,560 i basio newidyn ar ddiwedd y printf. 464 00:20:21,560 --> 00:20:26,980 >> Felly os ydym yn dweud paren printf cant ff n slaes paren agos, 465 00:20:26,980 --> 00:20:30,270 wel, yr ydym yn dweud ein bod ni'n argraffu yn gyfanrif, 466 00:20:30,270 --> 00:20:33,970 ond yna nid ydym yn pasio printf cyfanrif i mewn gwirionedd yn argraffu. 467 00:20:33,970 --> 00:20:37,182 Felly dyma fwy o cant trawsnewidiadau na dadleuon data? 468 00:20:37,182 --> 00:20:39,390 Dyna ddweud bod gennym criw cyfan o percents, 469 00:20:39,390 --> 00:20:42,445 ac nid oes gennym ddigon o newidynnau i lenwi mewn gwirionedd yn y percents hynny. 470 00:20:42,445 --> 00:20:44,850 471 00:20:44,850 --> 00:20:50,010 >> Ac yna yn bendant, ar gyfer cwestiwn 31, bendant yn colli 40 bytes mewn un bloc. 472 00:20:50,010 --> 00:20:52,350 Felly mae hwn yn gamgymeriad Valgrind. 473 00:20:52,350 --> 00:20:54,720 Mae hyn yn dweud bod rhywle yn eich cod, 474 00:20:54,720 --> 00:20:59,010 gennych dyraniad sy'n 40 bytes fawr er mwyn i chi malloced 40 bytes, 475 00:20:59,010 --> 00:21:00,515 ac yr ydych byth yn rhyddhau ei. 476 00:21:00,515 --> 00:21:02,480 477 00:21:02,480 --> 00:21:05,140 Mae'r rhan fwyaf tebygol 'ch jyst angen i ddod o hyd i gollwng cof, 478 00:21:05,140 --> 00:21:07,650 a dod o hyd lle mae angen i chi ddim bloc yma o gof. 479 00:21:07,650 --> 00:21:08,780 480 00:21:08,780 --> 00:21:11,910 >> A chwestiwn 32, ysgrifennu annilys o faint 4. 481 00:21:11,910 --> 00:21:13,250 Unwaith eto mae hyn yn wall Valgrind. 482 00:21:13,250 --> 00:21:15,440 Nid oes gan hyn i'w wneud gyda gollyngiadau cof yn awr. 483 00:21:15,440 --> 00:21:20,750 Mae hyn, mae'r rhan fwyaf likely-- wyf yn golygu, 'i' rhyw fath o hawliau cof annilys. 484 00:21:20,750 --> 00:21:23,270 Ac yn fwyaf tebygol mae hyn yn rhai math o gorlif byffer. 485 00:21:23,270 --> 00:21:26,560 Lle mae gennych amrywiaeth, efallai amrywiaeth cyfanrif, a gadewch i ni 486 00:21:26,560 --> 00:21:30,115 yn dweud ei fod o faint 5, ac rydych ceisio cyffwrdd amrywiaeth braced 5. 487 00:21:30,115 --> 00:21:34,150 Felly, os ydych yn ceisio ysgrifennu at hynny gwerth, nid yw hynny'n darn o gof 488 00:21:34,150 --> 00:21:37,440 eich bod mewn gwirionedd yn cael mynediad i, a felly rydych yn mynd i gael gwall hwn, 489 00:21:37,440 --> 00:21:39,272 gan ddweud ysgrifennu annilys o faint 4. 490 00:21:39,272 --> 00:21:42,480 Valgrind yn mynd i gydnabod eich bod yn ceisio cyffwrdd cof amhriodol. 491 00:21:42,480 --> 00:21:43,980 >> A dyna ni am quiz0. 492 00:21:43,980 --> 00:21:47,065 Rwy'n Rob Bowden, ac mae hyn yn CS50. 493 00:21:47,065 --> 00:21:51,104