1 00:00:00,000 --> 00:00:02,742 2 00:00:02,742 --> 00:00:05,680 >> SIARADWR 1: Helo bawb. 3 00:00:05,680 --> 00:00:07,530 Rydym yn mynd i ddechrau arni. 4 00:00:07,530 --> 00:00:09,330 Rwy'n credu bod pobl yn dal i fynd i fod yn hidlo mewn. 5 00:00:09,330 --> 00:00:12,840 Ond er budd o amser, felly gallwn fynd â chi guys allan o fan hyn ar amser, 6 00:00:12,840 --> 00:00:14,110 rydym yn mynd i ddechrau. 7 00:00:14,110 --> 00:00:18,780 Felly croesawu i'r adolygiad Cwis 0 CS50. 8 00:00:18,780 --> 00:00:23,020 I'r rhai ohonoch nad ydynt wedi sylweddoli eto, mae gennych gwestiwn ar ddydd Mercher. 9 00:00:23,020 --> 00:00:25,700 Woo-hw. 10 00:00:25,700 --> 00:00:29,780 >> Os nad ydych wedi dechrau astudio eto neu Nid yw wedi sylweddoli bod hwn yn bodoli eto, 11 00:00:29,780 --> 00:00:34,070 cwisiau yn y gorffennol a'r holl wybodaeth am eich cwis ar cs50.net/quizzes. 12 00:00:34,070 --> 00:00:38,090 Mae rhai pethau 'n bert da ar yno, cwisiau yn y gorffennol gan yr olaf 10 13 00:00:38,090 --> 00:00:43,760 blynyddoedd yn ogystal â gwybodaeth am y cwis hwn a phynciau 14 00:00:43,760 --> 00:00:46,250 fydd yn cael eu cynnwys. 15 00:00:46,250 --> 00:00:48,980 Felly gadewch i ni ddechrau arni. 16 00:00:48,980 --> 00:00:54,240 >> Felly, efallai y byddwch yn guys yn cofio, y cyntaf Roedd gan ddiwrnod o ddosbarth Dafydd lampau y rhai ar. 17 00:00:54,240 --> 00:00:59,650 Felly y bôn, popeth sy'n mynd ar o dan y cwfl y cyfrifiadur yn 18 00:00:59,650 --> 00:01:00,860 wneud mewn deuaidd. 19 00:01:00,860 --> 00:01:04,080 Deuaidd yn golygu yr hyn y mae'n swnio fel, 0 ac 1 yn. 20 00:01:04,080 --> 00:01:09,290 Mae ganddo ddau o werthoedd sy'n Gellir ei gynrychioli. 21 00:01:09,290 --> 00:01:14,675 >> Felly, yn union fel yn y dydd cyntaf o adran pan drodd David ar golau 22 00:01:14,675 --> 00:01:21,990 bwlb i gynrychioli ar, neu 1, ein cyfrifiadur deall deuaidd fel 0 a 23 00:01:21,990 --> 00:01:24,110 1 yn, ar neu i ffwrdd. 24 00:01:24,110 --> 00:01:25,360 Hanfodion Binary. 25 00:01:25,360 --> 00:01:29,440 26 00:01:29,440 --> 00:01:32,470 Mae pob lle yn cael ei gynrychioli yn sylfaen dau. 27 00:01:32,470 --> 00:01:36,260 Felly, byddwch yn ychwanegu 2 i 0 ar y 1 i 2 yr holl ffordd i fyny. 28 00:01:36,260 --> 00:01:41,970 >> I gyfrifo beth yw eich deuaidd yw degol, 'ch jyst yn dilyn hafaliad hwn 29 00:01:41,970 --> 00:01:42,840 fath beth. 30 00:01:42,840 --> 00:01:49,510 Os oes gennych 1 yn unrhyw un o'r lleoedd hynny, chi luosi iddo gan ba bynnag 31 00:01:49,510 --> 00:01:53,820 seilio ei fod i mewn, ei ychwanegu i fyny, ac byddwch yn cael y degol. 32 00:01:53,820 --> 00:01:57,930 Felly, mae hyn yw sut yr ydych yn cyfrif i 5 mewn deuaidd. 33 00:01:57,930 --> 00:02:01,400 Yn union fel yr hyn yr ydym yn ei wneud ar y sleid olaf, dyma sut y byddech 34 00:02:01,400 --> 00:02:02,650 cynrychioli 1 drwy 5. 35 00:02:02,650 --> 00:02:05,320 36 00:02:05,320 --> 00:02:09,660 >> Yn yr un modd, dim ond yn hoffi gallwch ychwanegu a tynnu yn y degol neu fôn 10, neu 37 00:02:09,660 --> 00:02:13,040 'n sylweddol unrhyw sylfaen, ar y gall ychwanegu a thynnu mewn deuaidd. 38 00:02:13,040 --> 00:02:18,400 Union beth y byddech yn ei ddisgwyl pan fyddwch yn ychwanegwch y ddwy i fyny, os bydd yn hafal i fwy 39 00:02:18,400 --> 00:02:24,220 nag 1, yr ydych yn cario 1, gwneud yn 0, a gwneud y ychwanegiad y ffordd honno, dim ond 40 00:02:24,220 --> 00:02:29,910 fel y byddech yn ei ddisgwyl gyda rheolaidd degol neu unrhyw sail arall. 41 00:02:29,910 --> 00:02:30,970 Cool. 42 00:02:30,970 --> 00:02:35,140 >> Felly, fel y dywedais o'r blaen, mae popeth sy'n mynd ymlaen o dan y cwfl ein cyfrifiadur 43 00:02:35,140 --> 00:02:37,560 cael ei wneud yn 0 ac 1 yn, neu deuaidd. 44 00:02:37,560 --> 00:02:43,470 Felly sut rydym yn mynegi, er enghraifft, llythrennau, neu rifau, neu gymeriadau? 45 00:02:43,470 --> 00:02:45,560 A'r ateb i hynny yw ASCII. 46 00:02:45,560 --> 00:02:49,380 >> ASCII yn mapio rhwng cymeriadau y byddem fel arfer yn gweld yn y 47 00:02:49,380 --> 00:02:53,360 Saesneg fel A, B, C, tanlinellu, llinellau toriad, a 48 00:02:53,360 --> 00:02:54,910 unrhyw beth fel 'na. 49 00:02:54,910 --> 00:02:57,260 Ac mae'n mapiau hynny i'r gwerth ASCII. 50 00:02:57,260 --> 00:03:03,080 Mae gwerth ASCII yn unig yw rhif sy'n Gellir deall gan eich cyfrifiadur. 51 00:03:03,080 --> 00:03:07,430 Ac yn union fel chi ei wneud yn gallu adio a tynnu gyda rhifau, gallwch chi ei wneud 52 00:03:07,430 --> 00:03:10,890 nhw gyda gwerthoedd ASCII. 53 00:03:10,890 --> 00:03:14,050 >> Felly, yn yr enghraifft hon, yr hyn Bydd hyn yn argraffu? 54 00:03:14,050 --> 00:03:26,790 55 00:03:26,790 --> 00:03:35,480 Yeah, felly dim ond A gofod gofod gofod B C D. O ble ddaeth fy llygoden yn mynd? 56 00:03:35,480 --> 00:03:39,200 57 00:03:39,200 --> 00:03:43,380 Hysbysiad gallwch ddiffinio yn int yn 65 oed. 58 00:03:43,380 --> 00:03:47,080 A phan fyddwch yn argraffu'r bod allan drwy ddefnyddio cant C, bydd yn dehongli hynny fel 59 00:03:47,080 --> 00:03:49,330 cymeriad a bydd yn argraffu A. 60 00:03:49,330 --> 00:03:52,800 >> Yn yr un modd, gallwch chi ddatgan fel torgoch. 61 00:03:52,800 --> 00:03:56,860 A phan fyddwch yn ei hargraffu gan ddefnyddio y cant C, bydd yn dehongli hynny fel 62 00:03:56,860 --> 00:04:05,240 cant D. Ac yn union fel chi yn gallu ychwanegu rhif, gallwch ychwanegu cymeriadau yn 63 00:04:05,240 --> 00:04:06,878 Gwerthoedd ASCII, yn yr achos hwn. 64 00:04:06,878 --> 00:04:11,370 65 00:04:11,370 --> 00:04:16,130 >> Cyn lleied pwyntydd i bawb. 66 00:04:16,130 --> 00:04:19,610 5, fel llinyn, nid yw'n mewn gwirionedd yn hafal 5. 67 00:04:19,610 --> 00:04:26,610 Felly, sut y gallem newid y llinyn 5 i'r cyfanrif 5? 68 00:04:26,610 --> 00:04:28,930 Unrhyw syniadau? 69 00:04:28,930 --> 00:04:31,630 Yeah. 70 00:04:31,630 --> 00:04:36,720 >> Felly, os ydym wedi 5 fel llinyn, gallwn dynnu 0. 71 00:04:36,720 --> 00:04:37,820 A bydd ei rhoi i ni 5. 72 00:04:37,820 --> 00:04:41,670 Ac yn yr un modd, os oes gennym 5 fel cyfanrif, ychwanegu bod i'r llinyn 0. 73 00:04:41,670 --> 00:04:43,112 Ac mae hynny'n rhoi'r llinyn 5 atom. 74 00:04:43,112 --> 00:04:46,350 75 00:04:46,350 --> 00:04:48,350 Cool. 76 00:04:48,350 --> 00:04:52,940 >> Yn awr, yn cofio yn ôl i ddarlithio un lle buom yn siarad am algorithmau. 77 00:04:52,940 --> 00:04:57,260 Felly sut rydym yn mewn gwirionedd yn eisiau cyfrifiadur i wneud pethau diddorol? 78 00:04:57,260 --> 00:05:00,460 Rydych yn gwybod, dim ond adio a thynnu Nid yw rhifau ac argraffu pethau allan yn 79 00:05:00,460 --> 00:05:01,730 hynny gyffrous. 80 00:05:01,730 --> 00:05:04,620 Fel arfer, rydym am i'n cyfrifiadur i perfformio rhyw fath o algorithm. 81 00:05:04,620 --> 00:05:07,820 Rhywbeth ychydig yn fwy cymhleth na dim ond rhifyddeg syml. 82 00:05:07,820 --> 00:05:11,930 >> Algorithm yn unig yw set gam gam wrth o gyfarwyddiadau ar sut i berfformio 83 00:05:11,930 --> 00:05:14,640 a task-- penodol 84 00:05:14,640 --> 00:05:15,660 yn union fel rysáit. 85 00:05:15,660 --> 00:05:19,990 Efallai y byddwch yn cofio y diwrnod cyntaf dosbarth lle David wedi i ni gyfrif ystafell 86 00:05:19,990 --> 00:05:22,550 o bobl a faint o bobl oedd yn yr ystafell. 87 00:05:22,550 --> 00:05:24,480 Efallai y byddwch yn cael ei ddefnyddio i gyfrif o un i un. 88 00:05:24,480 --> 00:05:25,860 1, 2, 3, 4. 89 00:05:25,860 --> 00:05:28,010 Yn yr achos hwnnw, mae algorithm amser llinol. 90 00:05:28,010 --> 00:05:31,710 >> Ond Cyflwynodd David algorithm ar gyfer i chi gyfrif y bobl yn yr ystafell 91 00:05:31,710 --> 00:05:37,340 lle mae pawb yn sefyll i fyny, yr ydych yn dweud eich rhif i berson arall, ychwanegu bod 92 00:05:37,340 --> 00:05:39,200 rhif i fyny, ac un person yn eistedd i lawr. 93 00:05:39,200 --> 00:05:40,410 A ydych yn dweud hynny. 94 00:05:40,410 --> 00:05:42,910 Dyna un math o algorithm. 95 00:05:42,910 --> 00:05:47,520 Gallwn yn dadansoddi pa mor effeithlon â algorithm yn seiliedig ar ei fod yn rhedeg amser. 96 00:05:47,520 --> 00:05:49,680 Ond byddwn yn siarad ychydig bach mwy am hynny yn nes ymlaen. 97 00:05:49,680 --> 00:05:52,740 98 00:05:52,740 --> 00:05:57,090 >> Felly gall pob algorithmau hefyd cael ei ysgrifennu mewn pseudocode. 99 00:05:57,090 --> 00:06:01,120 Pseudocode yn unig yw Saesneg fel defnyddio cystrawen i gynrychioli 100 00:06:01,120 --> 00:06:02,420 iaith raglennu. 101 00:06:02,420 --> 00:06:06,070 Er enghraifft, os oeddem am ofyn i ddefnyddiwr i ddyfalu fy hoff rif, rydym yn 102 00:06:06,070 --> 00:06:08,390 ei chael pseudocode fel y cyfryw. 103 00:06:08,390 --> 00:06:09,850 >> Cael defnyddwyr dyfalu. 104 00:06:09,850 --> 00:06:13,570 Os yw'r dyfalu yn gywir, dywedwch wrthynt eu bod yn gywir, arall yn dweud wrthynt 105 00:06:13,570 --> 00:06:15,560 dydyn nhw ddim yn gywir. 106 00:06:15,560 --> 00:06:22,530 Ac pseudocode yn ffordd o hawdd yn cynrychioli syniad neu algorithm. 107 00:06:22,530 --> 00:06:26,910 Felly nawr efallai y byddwn am ei ysgrifennu mewn gwirionedd hyn yn yr iaith y mae'r cyfrifiadur 108 00:06:26,910 --> 00:06:27,980 gallai dealltwriaeth. 109 00:06:27,980 --> 00:06:35,660 Felly, gallem ysgrifennu ein pseudocode a dehongli hynny i mewn i cod ffynhonnell. 110 00:06:35,660 --> 00:06:41,320 >> Hyd yn hyn, mae'n rhaid i cod ffynhonnell lynu at cystrawen penodol o 111 00:06:41,320 --> 00:06:42,490 iaith raglennu. 112 00:06:42,490 --> 00:06:45,430 A hyd yn hyn, yn CS50, rydym wedi bod yn defnyddio yn bennaf c. 113 00:06:45,430 --> 00:06:48,320 Felly, gallai hyn fod cod ffynhonnell ar gyfer c. 114 00:06:48,320 --> 00:06:51,440 Yn nes ymlaen yn y cwrs, byddwch yn dod nos i gysylltiad â rhaglenni eraill 115 00:06:51,440 --> 00:06:52,480 ieithoedd fel PHP. 116 00:06:52,480 --> 00:06:57,540 Neu os ydych yn hyd yn oed yn cymryd dosbarthiadau eraill, byddwch yn Gallai wneud Java, Python, neu hyd yn oed OCML. 117 00:06:57,540 --> 00:07:01,570 Ond yn ein hiaith rhaglen c, mae hyn yn sut y byddwn yn ysgrifennu y cod ffynhonnell ar gyfer 118 00:07:01,570 --> 00:07:04,760 mae'r algorithm pseudocode sy'n Fi jyst a ddisgrifiwyd yn gynharach. 119 00:07:04,760 --> 00:07:08,630 120 00:07:08,630 --> 00:07:11,430 >> Felly sut mae eich cyfrifiadur mewn gwirionedd yn deall bod? 121 00:07:11,430 --> 00:07:14,490 Fel y dywedais o'r blaen, dim ond mewn gwirionedd deall seroau a rhai. 122 00:07:14,490 --> 00:07:17,880 Felly, sut mae'n mynd o'r ffynhonnell cod i rywbeth y gellir ei 123 00:07:17,880 --> 00:07:18,960 deall? 124 00:07:18,960 --> 00:07:22,920 Wel, mae gennym rywbeth a elwir yn compiler. 125 00:07:22,920 --> 00:07:28,450 >> Os cofiwch yn ôl yn y rhan fwyaf o'ch psets, oedd gennych ryw fath o raglen 126 00:07:28,450 --> 00:07:30,370 hysgrifennu mewn ffeil dot c. 127 00:07:30,370 --> 00:07:32,550 Ac yna byddai'n gwneud i chi deipio. 128 00:07:32,550 --> 00:07:35,970 Felly beth sy'n gwneud ei wneud? 129 00:07:35,970 --> 00:07:39,970 >> Gallwch deipio gwneud i lunio eich rhaglen oherwydd someone-- 130 00:07:39,970 --> 00:07:42,730 pwy bynnag ysgrifennodd eich p set; yn ôl pob tebyg David-- 131 00:07:42,730 --> 00:07:44,190 creu ffeil gwneud. 132 00:07:44,190 --> 00:07:51,320 A bod yn dweud ei wneud i wybod i redeg eich compiler, a elwir yn chlang, bydd hynny'n 133 00:07:51,320 --> 00:07:55,560 Yna, llunio eich cod ffynhonnell i wrthwynebu cod, sy'n zeros a rhai 134 00:07:55,560 --> 00:07:57,720 bod eich cyfrifiadur yn deall. 135 00:07:57,720 --> 00:08:01,610 Ond ychydig yn nes ymlaen, byddwn yn mynd mwy manwl am crynoadyddion. 136 00:08:01,610 --> 00:08:05,640 137 00:08:05,640 --> 00:08:10,800 >> Felly, yn galw i gof pset 0, where-- ie, gennych chi gwestiwn? 138 00:08:10,800 --> 00:08:11,620 >> CYNULLEIDFA: [Anghlywadwy]? 139 00:08:11,620 --> 00:08:12,490 >> SIARADWR 1: Oes. 140 00:08:12,490 --> 00:08:14,960 Rwy'n credu eu bod mewn gwirionedd yn Dylai fod ar-lein. 141 00:08:14,960 --> 00:08:15,120 Yeah. 142 00:08:15,120 --> 00:08:16,572 >> CYNULLEIDFA: A yw'n hoffi [Anghlywadwy]? 143 00:08:16,572 --> 00:08:19,476 144 00:08:19,476 --> 00:08:20,830 >> SIARADWR 1: Nid yw'n. 145 00:08:20,830 --> 00:08:25,810 Y mae ar cs50.net/quizzes. 146 00:08:25,810 --> 00:08:32,900 >> CYNULLEIDFA: cwisiau Slash, slaes 2013, slaes 0, a dim ond cliciwch thrwy 147 00:08:32,900 --> 00:08:35,956 cwisiau 2013 ac cwis 0, adolygu'r adran sleidiau. 148 00:08:35,956 --> 00:08:40,380 >> SIARADWR 1: Yeah, felly os ydych guys dymuno dynnu i fyny ac yn edrych arno ar eich 149 00:08:40,380 --> 00:08:42,740 cyfrifiadur eich hun, mae hynny'n iawn hefyd. 150 00:08:42,740 --> 00:08:43,130 Ddweud hynny eto. 151 00:08:43,130 --> 00:08:44,546 >> CYNULLEIDFA: [Anghlywadwy]. 152 00:08:44,546 --> 00:08:48,780 >> SIARADWR 1: Yeah, [Anghlywadwy] yw'r newidyn ffug. 153 00:08:48,780 --> 00:08:49,644 O, ie? 154 00:08:49,644 --> 00:08:51,372 >> CYNULLEIDFA: [Anghlywadwy]? 155 00:08:51,372 --> 00:08:54,300 >> SIARADWR 1: Na, streiciau nad ydynt ar yr arholiad. 156 00:08:54,300 --> 00:08:55,950 Mae'n ddrwg gennym, ei chwestiwn oedd, roedd taro ar yr arholiad. 157 00:08:55,950 --> 00:08:59,530 Ac nid yw'n. 158 00:08:59,530 --> 00:09:05,780 Felly pset 0, dylech guys gael yr holl rhoi ar waith rhywbeth gan ddefnyddio crafu. 159 00:09:05,780 --> 00:09:13,100 Ac rydym wedi dysgu rhywfaint o raglennu sylfaenol blociau adeiladu gan ddefnyddio crafu. 160 00:09:13,100 --> 00:09:15,590 >> Felly, gadewch i ni edrych ar rai bloc adeiladu 161 00:09:15,590 --> 00:09:18,170 sy'n ffurfio rhaglen. 162 00:09:18,170 --> 00:09:20,570 Cyntaf yw mynegiad Boole. 163 00:09:20,570 --> 00:09:24,540 Mynegiadau Boole yn rhai a 0 neu unrhyw beth sydd wedi 164 00:09:24,540 --> 00:09:25,700 ddau werth posibl. 165 00:09:25,700 --> 00:09:30,320 Yn yr achos hwn, yn wir neu'n anwir, ar neu oddi ar, ac ie neu na. 166 00:09:30,320 --> 00:09:35,390 Enghraifft o syml, yn syml iawn, rhaglen sy'n defnyddio Boole 167 00:09:35,390 --> 00:09:39,140 mynegiant i fyny yma. 168 00:09:39,140 --> 00:09:43,220 >> Felly, er mwyn i mynegiadau Boole i fod yn ddefnyddiol, mae gennym weithredwyr Boole. 169 00:09:43,220 --> 00:09:48,920 Mae'r rhain yn weithredwyr y gellir eu defnyddio i gymharu gwerthoedd penodol. 170 00:09:48,920 --> 00:09:52,820 Felly mae gennym ac neu ddim yn hafal i, llai na neu'n hafal i, fwy na neu'n 171 00:09:52,820 --> 00:09:55,130 cyfartal i, ac yn llai na neu'n fwy na. 172 00:09:55,130 --> 00:09:59,060 Ond nid yw gweithredwyr hyn yn ddefnyddiol iawn oni bai y gallwn ni eu cyfuno i mewn i 173 00:09:59,060 --> 00:10:00,320 amodau. 174 00:10:00,320 --> 00:10:04,370 >> Felly, efallai y byddwch yn guys yn cofio o'r dechrau ac o'ch p yn gosod ein bod yn 175 00:10:04,370 --> 00:10:05,400 Roedd gan amodau. 176 00:10:05,400 --> 00:10:09,710 Maent yn, yn y bôn, fel ffyrc mewn rhesymeg eich rhaglen sy'n 177 00:10:09,710 --> 00:10:12,670 executes gan ddibynnu a amod yn cael ei fodloni. 178 00:10:12,670 --> 00:10:18,150 Felly, un o'r amodau a oedd gennym defnyddio sawl gwaith yn y cwrs hwn yw'r 179 00:10:18,150 --> 00:10:21,470 os, arall, os oes, a arall amodau. 180 00:10:21,470 --> 00:10:24,060 >> Dyma enghraifft o sut y Efallai y byddwch yn defnyddio hynny. 181 00:10:24,060 --> 00:10:28,430 Oes rhywun yn gwybod y gwahaniaeth rhwng dim ond yn defnyddio os yw'r datganiadau i gyd 182 00:10:28,430 --> 00:10:32,530 ffordd i lawr penillion os, arall, os, ac arall yn cyfuno? 183 00:10:32,530 --> 00:10:33,013 Ie? 184 00:10:33,013 --> 00:10:34,263 >> CYNULLEIDFA: [Anghlywadwy]. 185 00:10:34,263 --> 00:10:40,741 186 00:10:40,741 --> 00:10:42,160 >> SIARADWR 1: Yn union. 187 00:10:42,160 --> 00:10:50,210 Felly, os oedd gen i os yr holl ffordd i lawr y ffordd, hyd yn oed os y cyflwr hwn yn dychwelyd 188 00:10:50,210 --> 00:10:52,800 yn wir, bydd yn dal yn parhau profi'r ddwy nesaf. 189 00:10:52,800 --> 00:11:00,120 Tra, gyda arall-os, bydd arall datganiad, os bydd y naill yn dychwelyd yn wir, 190 00:11:00,120 --> 00:11:02,640 nid y lleill yn cael eu profi. 191 00:11:02,640 --> 00:11:05,955 Unrhyw gwestiynau am hynny? 192 00:11:05,955 --> 00:11:06,890 Cool. 193 00:11:06,890 --> 00:11:12,240 >> Felly rydych yn defnyddio os-arall o arall datganiad os ydych yn gwybod mai dim ond 194 00:11:12,240 --> 00:11:14,470 fod yn un o'r achosion hyn. 195 00:11:14,470 --> 00:11:21,550 Felly rydym yn gwybod os yw x yn llai na 0, 'i' bendant ddim yn mynd i fod yn 196 00:11:21,550 --> 00:11:22,890 fwy na 0. 197 00:11:22,890 --> 00:11:26,940 198 00:11:26,940 --> 00:11:31,480 >> Nesaf, bloc adeiladu arall ein bod yn dysgu yn dolenni. 199 00:11:31,480 --> 00:11:33,310 Mae gennym dri math o dolenni. 200 00:11:33,310 --> 00:11:35,830 Ar gyfer dolenni, tra dolenni, ac yn wneud tra dolenni. 201 00:11:35,830 --> 00:11:38,730 Ac yn gyffredinol, pan fyddwch yn eistedd i lawr i ysgrifennu rhywbeth, rhaid i chi benderfynu 202 00:11:38,730 --> 00:11:40,060 pa un o'r tri yr ydych am ei ddefnyddio. 203 00:11:40,060 --> 00:11:41,900 Felly sut rydym yn penderfynu pa un? 204 00:11:41,900 --> 00:11:44,920 205 00:11:44,920 --> 00:11:48,790 >> Rydym yn gyffredinol yn defnyddio ar gyfer dolen os ydym yn gwybod faint o weithiau yr ydym am ei ailadrodd 206 00:11:48,790 --> 00:11:53,650 drwy rywbeth neu faint o weithiau rydym am i gyflawni tasg. 207 00:11:53,650 --> 00:11:58,830 Rydym yn defnyddio tra dolenni os oes angen rhywfaint o amod i fod yn wir i gadw redeg. 208 00:11:58,830 --> 00:12:03,730 Ac rydym yn defnyddio wneud tra yn debyg iawn i tra, ond rydym am i'n cod i redeg ar 209 00:12:03,730 --> 00:12:04,880 o leiaf un tro. 210 00:12:04,880 --> 00:12:09,410 >> Felly wneud tra, beth bynnag sydd yn y do, bydd bob amser yn rhedeg o leiaf un pryd. 211 00:12:09,410 --> 00:12:13,120 Tra, gyda'r amser, mae'n Efallai na fydd yn rhedeg o gwbl os yw'r 212 00:12:13,120 --> 00:12:15,490 Nid yw cyflwr wedi'i fodloni. 213 00:12:15,490 --> 00:12:16,740 Unrhyw gwestiynau â hynny? 214 00:12:16,740 --> 00:12:20,480 215 00:12:20,480 --> 00:12:22,860 >> Felly strwythur ar gyfer dolen. 216 00:12:22,860 --> 00:12:23,620 Yr ydych guys i gyd wedi gweld hyn. 217 00:12:23,620 --> 00:12:25,320 Rydych yn ei ymgychwyn. 218 00:12:25,320 --> 00:12:26,600 Mae gennych ryw fath o gyflwr. 219 00:12:26,600 --> 00:12:32,340 Felly, er enghraifft, efallai y byddwn yn ymgychwyn fel ar gyfer i dychwelyd 0. 220 00:12:32,340 --> 00:12:34,040 ff yn llai na 10. 221 00:12:34,040 --> 00:12:35,442 A fi ++. 222 00:12:35,442 --> 00:12:39,010 Un syml iawn yr ydym wedi ei wneud. 223 00:12:39,010 --> 00:12:42,210 >> Am ddolen tra, yn yr un modd, mae gennych i gael rhyw fath o initialization, 224 00:12:42,210 --> 00:12:44,980 rhyw fath o gyflwr, a rhyw fath o diweddariad. 225 00:12:44,980 --> 00:12:51,990 Felly, gallwn weithredu ein gyfer dolen hefyd fel dolen wrth ddefnyddio'r hyn. 226 00:12:51,990 --> 00:12:56,000 Ac yn yr un modd â do tra dolen, efallai y byddwn yn cael rhywfaint o initialization, 227 00:12:56,000 --> 00:12:58,640 gweithredu rhywbeth, diweddaru, ac ac yna gwirio'r cyflwr. 228 00:12:58,640 --> 00:13:03,500 229 00:13:03,500 --> 00:13:05,140 >> Felly nawr swyddogaethau. 230 00:13:05,140 --> 00:13:06,460 Rydym yn rhoi popeth at ei gilydd. 231 00:13:06,460 --> 00:13:10,140 Efallai y byddwn yn awyddus i ysgrifennu rhai fath o swyddogaeth. 232 00:13:10,140 --> 00:13:12,790 Swyddogaeth gyffredin eich bod yn allai wedi gweld eisoes yn brif. 233 00:13:12,790 --> 00:13:13,770 Main yn swyddogaeth. 234 00:13:13,770 --> 00:13:16,160 Mae ganddo fath ddychwelyd, int. 235 00:13:16,160 --> 00:13:18,470 Mae ganddo enw swyddogaeth, prif. 236 00:13:18,470 --> 00:13:20,810 Ac mae wedi dadleuon, argc a argv. 237 00:13:20,810 --> 00:13:24,040 Felly prif yn unig yw swyddogaeth. 238 00:13:24,040 --> 00:13:27,230 >> Swyddogaethau eraill y gallech fod wedi eu defnyddio, printf printf-- yn function-- 239 00:13:27,230 --> 00:13:29,330 GetInt, toupper. 240 00:13:29,330 --> 00:13:32,010 Ond mae'r rhain yn digwydd i wedi bod yn rhoi ar waith ar ein rhan gan 241 00:13:32,010 --> 00:13:33,270 rhyw fath o lyfrgell. 242 00:13:33,270 --> 00:13:37,400 Os ydych yn guys yn cofio cynnwys llyfrgell hon CS50.h neu'r 243 00:13:37,400 --> 00:13:38,510 Rwyf safonol / llyfrgell O. 244 00:13:38,510 --> 00:13:39,200 Ie, cwestiwn? 245 00:13:39,200 --> 00:13:41,610 >> CYNULLEIDFA: A yw Prif unig sy'n gynhenid ​​yn c? 246 00:13:41,610 --> 00:13:44,740 A yw'n jyst fath o [Anghlywadwy]? 247 00:13:44,740 --> 00:13:47,370 >> SIARADWR 1: Y cwestiwn yw os brif yn rhan annatod o c. 248 00:13:47,370 --> 00:13:51,460 Ac ie, yr holl swyddogaethau fod â phrif swyddogaeth. 249 00:13:51,460 --> 00:13:55,290 Mae'n fath o angenrheidiol ar gyfer y cyfrifiadur gwybod ble i ddechrau 250 00:13:55,290 --> 00:13:55,993 rhedeg y cod. 251 00:13:55,993 --> 00:13:58,108 >> CYNULLEIDFA: Felly ni fyddai chi [Anghlywadwy]? 252 00:13:58,108 --> 00:13:59,480 >> SIARADWR 1: Na 253 00:13:59,480 --> 00:14:00,760 Unrhyw gwestiynau eraill? 254 00:14:00,760 --> 00:14:03,430 255 00:14:03,430 --> 00:14:04,770 Cool. 256 00:14:04,770 --> 00:14:08,050 Felly, yn union fel chi yn gallu defnyddio swyddogaeth sydd wedi ei ysgrifennu ar gyfer chi, gallwch hefyd 257 00:14:08,050 --> 00:14:10,380 ysgrifennu eich swyddogaeth ei hun. 258 00:14:10,380 --> 00:14:17,050 Mae hon yn swyddogaeth y gallai rhywun wedi ysgrifennu i gyfrifo cyfaint 259 00:14:17,050 --> 00:14:18,395 o q, er enghraifft. 260 00:14:18,395 --> 00:14:21,300 261 00:14:21,300 --> 00:14:29,500 Mae 'na fath ddychwelyd yma, yn yr achos hwn int, ein henw swyddogaeth q ac mae ein 262 00:14:29,500 --> 00:14:31,360 rhestr o baramedrau. 263 00:14:31,360 --> 00:14:34,550 >> Ac yn nodi bod yn rhaid i chi ysgrifennu y data math o y paramedr ydych am ei 264 00:14:34,550 --> 00:14:38,660 defnyddio neu arall nad yw'r swyddogaeth yn yn gwybod pa fath o 265 00:14:38,660 --> 00:14:41,650 paramedr ddylwn i ei derbyn. 266 00:14:41,650 --> 00:14:48,110 Felly, yn yr achos hwn, rydym am cyfanrif fel ein mewnbwn. 267 00:14:48,110 --> 00:14:50,390 Felly pam y gallai rydym am ddefnyddio swyddogaethau? 268 00:14:50,390 --> 00:14:52,800 >> Yn gyntaf oll, gwych ar gyfer sefydliad. 269 00:14:52,800 --> 00:14:56,350 Maent yn helpu i dorri i fyny eich cod i mewn darnau mwy drefnus ac yn gwneud 270 00:14:56,350 --> 00:14:57,960 yn haws i'w ddarllen. 271 00:14:57,960 --> 00:14:59,760 Symleiddio. 272 00:14:59,760 --> 00:15:01,740 Mae hyn yn dda ar gyfer dylunio. 273 00:15:01,740 --> 00:15:04,570 Pan ydych yn darllen darn o god ac mae'r prif swyddogaeth yn wirioneddol, 274 00:15:04,570 --> 00:15:07,750 hir iawn, gallai fod yn fwy anodd i rheswm am yr hyn sy'n digwydd. 275 00:15:07,750 --> 00:15:11,710 Felly, os byddwch yn torri i lawr i mewn i swyddogaethau, efallai y byddai'n haws eu darllen. 276 00:15:11,710 --> 00:15:12,750 Ac ailddefnyddio-gallu. 277 00:15:12,750 --> 00:15:16,940 Os oes gennych darn o god sydd wedi cael ei Gelwir neu redeg sawl gwaith, 278 00:15:16,940 --> 00:15:20,690 yn hytrach na ailysgrifennu y cod 10 gwaith yn eich prif swyddogaeth, gallech chi 279 00:15:20,690 --> 00:15:21,440 eisiau ei ailddefnyddio. 280 00:15:21,440 --> 00:15:25,740 Ac yna bob tro y mae angen i chi ddefnyddio'r darn o god, ffoniwch y swyddogaeth. 281 00:15:25,740 --> 00:15:30,550 282 00:15:30,550 --> 00:15:35,380 >> Felly nawr os ydym yn cofio yn ôl i'r dechrau, buom yn siarad hefyd am ychydig o gysyniadau, 283 00:15:35,380 --> 00:15:37,680 un ohonynt yn edafu. 284 00:15:37,680 --> 00:15:41,120 Thread yw'r cysyniad o lluosog dilyniannau o cod 285 00:15:41,120 --> 00:15:43,040 gweithredu ar yr un pryd. 286 00:15:43,040 --> 00:15:47,490 Felly meddyliwch yn ôl i'r diwrnod cyntaf lle mae David oedd chi guys yn cyfrif oddi ar y nifer o 287 00:15:47,490 --> 00:15:48,440 bobl yn yr ystafell. 288 00:15:48,440 --> 00:15:50,550 >> Yn y bôn, yr hyn oedd yn mynd arno yw pob un ohonoch guys yn 289 00:15:50,550 --> 00:15:52,370 rhedeg edafedd ar wahân. 290 00:15:52,370 --> 00:15:55,540 Ac edafedd rhai yn dod at ei gilydd i gael rhyw fath o ateb. 291 00:15:55,540 --> 00:15:58,890 Yn yr un modd, yn Scratch, pan fydd gennych sprites lluosog, gallech chi 292 00:15:58,890 --> 00:16:01,070 gael cath a chi. 293 00:16:01,070 --> 00:16:08,770 A byddent yn yr un pryd rhedeg eu sgriptiau eu hunain. 294 00:16:08,770 --> 00:16:10,020 Mae hynny'n enghraifft o edafu. 295 00:16:10,020 --> 00:16:12,860 296 00:16:12,860 --> 00:16:18,000 >> A'r cysyniad arall a oedd a gyflwynwyd yn crafu yn y digwyddiadau. 297 00:16:18,000 --> 00:16:22,550 A digwyddiadau yn phan lluosog rannau o eich cod yn cyfathrebu â'i gilydd. 298 00:16:22,550 --> 00:16:26,840 Yn Scratch, roedd hyn yn pan fyddwch yn defnyddio'r rheolaeth darlledu a'r Pan fyddaf 299 00:16:26,840 --> 00:16:29,500 Derbyn blociau. 300 00:16:29,500 --> 00:16:35,170 >> A hefyd, yn Problem Set 4, gwelsom ychydig o ddigwyddiadau yn ogystal. 301 00:16:35,170 --> 00:16:38,250 Efallai eich bod guys wedi defnyddio llyfrgell Gevent. 302 00:16:38,250 --> 00:16:42,450 Ac yr oedd swyddogaeth waitForClick yr ydych yn aros 303 00:16:42,450 --> 00:16:44,300 ar gyfer y defnyddiwr i glicio. 304 00:16:44,300 --> 00:16:47,870 Ac yn dy cliciwch, yn yr achos hwn, yn y digwyddiad ac yn aros am cliciwch yw eich 305 00:16:47,870 --> 00:16:49,120 triniwr digwyddiad. 306 00:16:49,120 --> 00:16:53,690 307 00:16:53,690 --> 00:16:58,630 >> A hefyd, drwy gydol redeg eich psets a gweithio ar eich psets, byddwch yn 308 00:16:58,630 --> 00:17:01,920 allai fod wedi dod i gysylltiad â mae rhai o'r gorchmynion hyn. 309 00:17:01,920 --> 00:17:05,579 Mae hyn yn yr hyn yr ydych deipio i mewn i'ch ffenestr derfynnell neu beth bynnag ffenestr 310 00:17:05,579 --> 00:17:12,119 sy'n dangos i fyny ar eich g golygu i, yn y bôn, navigate eich cyfrifiadur. 311 00:17:12,119 --> 00:17:19,440 >> Felly, er enghraifft, LS rhestru'r cynnwys cyfeiriadur. 312 00:17:19,440 --> 00:17:22,510 Gwnewch cyfeiriadur yn creu ffolder newydd. 313 00:17:22,510 --> 00:17:24,819 CD, cyfeiriadur newid. 314 00:17:24,819 --> 00:17:28,400 RM, tynnu, dileu'r ffeil neu ryw cyfeiriadur. 315 00:17:28,400 --> 00:17:31,050 Ac yna tynnwch cyfeiriadur yn dileu cyfeiriadur. 316 00:17:31,050 --> 00:17:32,300 >> CYNULLEIDFA: [Anghlywadwy]? 317 00:17:32,300 --> 00:17:36,978 318 00:17:36,978 --> 00:17:38,370 >> SIARADWR 1: Yeah, yn sicr. 319 00:17:38,370 --> 00:17:42,530 320 00:17:42,530 --> 00:17:46,040 Mae'n ddrwg gennym, y cwestiwn oedd os ydych Byddai hyn yn awgrymu rhoi'r 321 00:17:46,040 --> 00:17:48,840 ar y daflen twyllo. 322 00:17:48,840 --> 00:17:49,440 Gallai helpu. 323 00:17:49,440 --> 00:17:51,490 Os oes gennych le, gallwch roi ar. 324 00:17:51,490 --> 00:17:56,170 Mae hefyd yn dim ond yn gyffredinol yn ddigon da i'w gofio oherwydd pan fyddwch yn ei ddefnyddio 325 00:17:56,170 --> 00:17:59,060 efallai y byddwch am i ddim ond wedi ei cof. 326 00:17:59,060 --> 00:18:02,750 Bydd yn gwneud eich bywyd yn llawer haws. 327 00:18:02,750 --> 00:18:04,000 Oeddwn i'n ateb eich cwestiwn? 328 00:18:04,000 --> 00:18:10,528 329 00:18:10,528 --> 00:18:14,290 >> Felly nawr, buom yn siarad ychydig bach yn fyr am lyfrgelloedd. 330 00:18:14,290 --> 00:18:18,570 Ond mae'r ddau brif rhai yr ydym wedi bod ddefnyddio hyd yn hyn yn y cwrs yw 331 00:18:18,570 --> 00:18:20,860 Rwyf safonol / O a cs50. 332 00:18:20,860 --> 00:18:25,410 Pa fath o bethau yn cael eu cynnwys yn y I / O llyfrgell safonol? 333 00:18:25,410 --> 00:18:28,410 >> Yeah, hyd yn hyn rydym wedi defnyddio printf. 334 00:18:28,410 --> 00:18:31,150 Yn cs50, rydym wedi defnyddio GetInt a GetString. 335 00:18:31,150 --> 00:18:37,200 Ac y llinyn math data hefyd yn digwydd i gael eu datgan yn y llyfrgell cs50 hwn. 336 00:18:37,200 --> 00:18:40,250 Byddwn yn siarad ychydig yn fwy yn fanwl ynghylch sut mae llyfrgelloedd yn gweithio a sut y maent yn 337 00:18:40,250 --> 00:18:41,870 rhyngweithio â gweddill eich cod. 338 00:18:41,870 --> 00:18:46,220 Ond dyna'r ddau brif rhai yr ydym wedi dod i gysylltiad â hyd yn hyn yn 339 00:18:46,220 --> 00:18:48,430 y cwrs. 340 00:18:48,430 --> 00:18:50,050 >> Mathau. 341 00:18:50,050 --> 00:18:58,120 Mae'r rhain yn dda i gofio faint o bob math yn cael ei gynrychioli gan neu sut 342 00:18:58,120 --> 00:19:02,840 llawer beit pob un math requires-- 343 00:19:02,840 --> 00:19:04,990 int, 4 bytes; torgoch, 1 beit. 344 00:19:04,990 --> 00:19:06,550 Fflôt yw 4 bytes. 345 00:19:06,550 --> 00:19:07,782 Beth yw dwbl? 346 00:19:07,782 --> 00:19:09,032 >> CYNULLEIDFA: [Anghlywadwy]. 347 00:19:09,032 --> 00:19:11,398 348 00:19:11,398 --> 00:19:16,240 >> SIARADWR 1: Yeah, felly fflôt ond yn dyblu maint. 349 00:19:16,240 --> 00:19:17,150 Beth am hir? 350 00:19:17,150 --> 00:19:18,400 >> CYNULLEIDFA: [Anghlywadwy]. 351 00:19:18,400 --> 00:19:21,614 352 00:19:21,614 --> 00:19:24,680 >> SIARADWR 1: OK. 353 00:19:24,680 --> 00:19:25,410 Beth yw hir? 354 00:19:25,410 --> 00:19:26,660 >> CYNULLEIDFA: [Anghlywadwy]. 355 00:19:26,660 --> 00:19:29,400 356 00:19:29,400 --> 00:19:31,450 >> SIARADWR 1: Yeah, dwbl yn int. 357 00:19:31,450 --> 00:19:34,240 358 00:19:34,240 --> 00:19:34,705 Ydw. 359 00:19:34,705 --> 00:19:36,100 >> CYNULLEIDFA: [Anghlywadwy]. 360 00:19:36,100 --> 00:19:38,030 >> SIARADWR 1: Long [Anghlywadwy]. 361 00:19:38,030 --> 00:19:41,860 Ac yna hir hir yn ddwbl hynny. 362 00:19:41,860 --> 00:19:42,814 >> CYNULLEIDFA: Na, na. 363 00:19:42,814 --> 00:19:47,107 Mae o hyd yn unig yw int. 364 00:19:47,107 --> 00:19:50,910 Mae'n dibynnu ar y bensaernïaeth cyn i'r [Anghlywadwy] 365 00:19:50,910 --> 00:19:52,922 ac int cael yr un maint. 366 00:19:52,922 --> 00:19:54,172 [Anghlywadwy]. 367 00:19:54,172 --> 00:19:58,841 368 00:19:58,841 --> 00:20:00,920 >> SIARADWR 1: Felly hir a yn int yr un fath. 369 00:20:00,920 --> 00:20:02,943 Ac yna yn hir o amser dwbl y int. 370 00:20:02,943 --> 00:20:03,910 Cool. 371 00:20:03,910 --> 00:20:05,550 Ac yna, beth yw'r math olaf? 372 00:20:05,550 --> 00:20:06,510 >> CYNULLEIDFA: Pointer. 373 00:20:06,510 --> 00:20:10,350 >> SIARADWR 1: Yeah, felly rydym yn dysgu ychydig am awgrymiadau. 374 00:20:10,350 --> 00:20:14,015 A heb ystyried yr hyn y pwyntydd yn Gallai bwyntio canlynol-- fod yn seren torgoch 375 00:20:14,015 --> 00:20:15,880 neu int star-- 376 00:20:15,880 --> 00:20:20,530 'i' 4 bytes am pwyntydd bob amser. 377 00:20:20,530 --> 00:20:21,633 Cwestiynau am hynny? 378 00:20:21,633 --> 00:20:22,116 Ie? 379 00:20:22,116 --> 00:20:24,531 >> CYNULLEIDFA: [Anghlywadwy]? 380 00:20:24,531 --> 00:20:29,530 >> SIARADWR 1: Felly hir a int yn yr un fath yn y peiriant cs50. 381 00:20:29,530 --> 00:20:32,302 >> CYNULLEIDFA: Mae'r peiriant yn gwbl ymgyfnewidiol. 382 00:20:32,302 --> 00:20:33,510 >> SIARADWR 1: Yeah. 383 00:20:33,510 --> 00:20:36,610 Felly, yna hir hir yn ddwbl yn int. 384 00:20:36,610 --> 00:20:39,250 >> CYNULLEIDFA: Dyma'r 32 bit? 385 00:20:39,250 --> 00:20:40,620 >> SIARADWR 1: 32 bit, yeah. 386 00:20:40,620 --> 00:20:43,572 >> CYNULLEIDFA: Felly [Anghlywadwy]? 387 00:20:43,572 --> 00:20:46,790 >> SIARADWR 1: Oes, os nad yw'n gwneud dweud, byddwch yn benodol 388 00:20:46,790 --> 00:20:47,870 Dylai dybio yn 32 bit. 389 00:20:47,870 --> 00:20:50,040 >> CYNULLEIDFA: Byddai'n dweud rhywbeth hoffi gan dybio 390 00:20:50,040 --> 00:20:51,498 pensaernïaeth fel y peiriant. 391 00:20:51,498 --> 00:20:58,800 392 00:20:58,800 --> 00:21:01,710 Ar gyfer 64 bit, yr unig bethau sy'n newid yn ysu ac awgrymiadau. 393 00:21:01,710 --> 00:21:05,614 Maent yn ddau [Anghlywadwy]. 394 00:21:05,614 --> 00:21:06,590 >> SIARADWR 1: Ie? 395 00:21:06,590 --> 00:21:07,566 >> CYNULLEIDFA: Cwestiwn. 396 00:21:07,566 --> 00:21:10,982 Felly, ar un o'r cwisiau arfer, mae'n gofyn am int heb ei arwyddo. 397 00:21:10,982 --> 00:21:15,374 Felly, sut y byddai hynny'n cael ei benderfynu o int [Anghlywadwy]? 398 00:21:15,374 --> 00:21:18,140 >> SIARADWR 1: Mae heb eu llofnodi mewn yw 4 bytes hefyd. 399 00:21:18,140 --> 00:21:21,172 Ond yr hyn sy'n wahanol am lofnodi int a int heb ei arwyddo? 400 00:21:21,172 --> 00:21:22,422 >> CYNULLEIDFA: [Anghlywadwy]. 401 00:21:22,422 --> 00:21:24,868 402 00:21:24,868 --> 00:21:25,630 >> SIARADWR 1: Hawl. 403 00:21:25,630 --> 00:21:27,570 Gall un cynrychioli gwerthoedd negatif. 404 00:21:27,570 --> 00:21:28,580 Ond sut mae'n gwneud hynny? 405 00:21:28,580 --> 00:21:30,536 >> CYNULLEIDFA: [Anghlywadwy]. 406 00:21:30,536 --> 00:21:36,370 >> SIARADWR 1: Yeah, mae'n arbed 1 rhan i gynrychioli'r arwydd. 407 00:21:36,370 --> 00:21:40,910 408 00:21:40,910 --> 00:21:45,040 Y lofnodi Mae un darn sy'n cynrychioli'r arwydd. 409 00:21:45,040 --> 00:21:48,886 A heb eu llofnodi yn unig yw pob pethau cadarnhaol. 410 00:21:48,886 --> 00:21:50,365 >> CYNULLEIDFA: OK. 411 00:21:50,365 --> 00:21:54,230 Felly, yr ydych yn dweud bod dwbl yn ddwywaith maint fflôt? 412 00:21:54,230 --> 00:21:58,202 >> SIARADWR 1: Dwbl ddwywaith maint fflôt, ie. 413 00:21:58,202 --> 00:22:01,639 >> CYNULLEIDFA: Sut mae pwyntydd i hir hir [Anghlywadwy]? 414 00:22:01,639 --> 00:22:06,058 415 00:22:06,058 --> 00:22:10,870 >> SIARADWR 1: Felly, y cwestiwn yw sut mae y pwyntydd i long-- hir 416 00:22:10,870 --> 00:22:13,800 sut yw mai dim ond pedwar bytes pan hir hir ei 8 bytes. 417 00:22:13,800 --> 00:22:17,310 Felly cofiwch beth yw pwyntydd, yn y bôn, ar y gwerth sylfaenol iawn. 418 00:22:17,310 --> 00:22:19,046 >> CYNULLEIDFA: [Anghlywadwy]. 419 00:22:19,046 --> 00:22:22,670 >> SIARADWR 1: Yeah, felly mae pwyntydd yn unig yw lleoliad cof. 420 00:22:22,670 --> 00:22:28,040 Felly, does dim ots faint o le y pwyntydd yn pwyntio i. 421 00:22:28,040 --> 00:22:32,060 Dim ond mae angen 4 bytes i gadw golwg o'r lleoliad cof. 422 00:22:32,060 --> 00:22:34,760 423 00:22:34,760 --> 00:22:36,010 Unrhyw gwestiynau eraill? 424 00:22:36,010 --> 00:22:39,800 425 00:22:39,800 --> 00:22:41,050 Cool. 426 00:22:41,050 --> 00:22:42,920 427 00:22:42,920 --> 00:22:47,460 >> Felly, y peth diwethaf yr wyf wedi yn allbwn safonol. 428 00:22:47,460 --> 00:22:51,020 Dylech eu defnyddio yn aml ddigon y gallwch ei gofio. 429 00:22:51,020 --> 00:22:54,800 Ond mae hyn yn pan fyddwn yn defnyddio printf, er enghraifft. 430 00:22:54,800 --> 00:22:59,260 Ac rydym wedi bachau hyn sy'n Galwyd codau fformat. 431 00:22:59,260 --> 00:23:03,910 >> Felly cant c torgoch, cant ff gyfer int, a gallwn hefyd ddefnyddio cant d. 432 00:23:03,910 --> 00:23:05,130 Mae yr un peth. 433 00:23:05,130 --> 00:23:08,200 Ond, yn gyffredinol, yn CS50 rydym ceisiwch ddefnyddio ff cant. 434 00:23:08,200 --> 00:23:09,860 Canran dd ar gyfer fflôt. 435 00:23:09,860 --> 00:23:15,620 Ld y cant ar gyfer hir hir ac s y cant ar gyfer llinyn. 436 00:23:15,620 --> 00:23:18,550 >> Yn yr un modd, yr ydym wedi bod yn defnyddio ychydig o ddilyniannau dianc hyn. 437 00:23:18,550 --> 00:23:22,431 Er enghraifft, ar gyfer n slaes llinell newydd. 438 00:23:22,431 --> 00:23:26,910 Mae hyn yn unig ar gyfer pan fyddwch yn fformatio eich cod ar gyfer print f. 439 00:23:26,910 --> 00:23:27,260 Ie? 440 00:23:27,260 --> 00:23:28,906 >> CYNULLEIDFA: Beth yw y cant d amdano? 441 00:23:28,906 --> 00:23:31,850 >> SIARADWR 1: Felly, y cwestiwn yn yr hyn sy'n cant d amdano? 442 00:23:31,850 --> 00:23:33,270 Canran d ar gyfer ints. 443 00:23:33,270 --> 00:23:37,392 Canran d a fi cant yr un fath. 444 00:23:37,392 --> 00:23:41,130 >> CYNULLEIDFA: Beth yw'r gwahaniaeth rhwng slaes n a slaes r? 445 00:23:41,130 --> 00:23:45,300 >> SIARADWR 1: Felly, y cwestiwn yw beth yw'r gwahaniaeth rhwng adlach n a 446 00:23:45,300 --> 00:23:48,615 r adlach? 447 00:23:48,615 --> 00:23:50,906 Rwy'n credu slaes r yw-- 448 00:23:50,906 --> 00:23:54,340 >> CYNULLEIDFA: Felly slaes r yn unig yn awgrymu dychwelyd i gychwyn y llinell 449 00:23:54,340 --> 00:23:56,670 heb wir yn mynd i linell newydd. 450 00:23:56,670 --> 00:24:01,000 Felly, os ydych yn argraffu r slaes ac rydych fynd yn ôl at ddechrau'r llinell 451 00:24:01,000 --> 00:24:04,005 yna byddwch yn argraffu mwy o bethau, byddwch yn trosysgrifo y pethau sydd eisoes ar 452 00:24:04,005 --> 00:24:04,390 [Anghlywadwy]. 453 00:24:04,390 --> 00:24:06,725 Tra, n mewn gwirionedd yn mynd i newydd llinell ac yn mynd i [Anghlywadwy]. 454 00:24:06,725 --> 00:24:10,525 455 00:24:10,525 --> 00:24:13,915 >> SIARADWR 1: Wel, unrhyw gwestiynau eraill? 456 00:24:13,915 --> 00:24:15,430 Mae pob hawl. 457 00:24:15,430 --> 00:24:18,617 Rydw i'n mynd i law i ffwrdd i Dan fydd yn parhau. 458 00:24:18,617 --> 00:24:25,078 >> [Cymeradwyaeth] 459 00:24:25,078 --> 00:25:08,814 460 00:25:08,814 --> 00:25:09,720 >> DAN: All righty. 461 00:25:09,720 --> 00:25:18,590 Felly, byddaf yn sôn am led arall amrywiaeth o syniadau gan y dosbarth sydd yn 462 00:25:18,590 --> 00:25:23,220 fras gynrychioliadol o wythnos dau a dechrau'r wythnos tri gan ddechrau i ffwrdd 463 00:25:23,220 --> 00:25:28,690 gyda castio, sydd ychydig yn ffordd o drin gwerth o fath arbennig fel 464 00:25:28,690 --> 00:25:30,830 gwerth o fath gwahanol. 465 00:25:30,830 --> 00:25:34,110 Felly, gallwn wneud hyn gyda chars i ints, arnofio i ints, a 466 00:25:34,110 --> 00:25:35,360 ysu hir i ddyblu. 467 00:25:35,360 --> 00:25:38,170 468 00:25:38,170 --> 00:25:44,500 >> Gall yr holl bethau hyn yn cael eu defnyddio fel ffyrdd o drin rhywfaint o werth rhifol 469 00:25:44,500 --> 00:25:48,370 torgoch minws â rhai eraill gwerth rhifol. 470 00:25:48,370 --> 00:25:54,480 Felly, mae rhai problemau gyda hyn, o cwrs, sy'n dod pan fyddwch yn bwrw 471 00:25:54,480 --> 00:25:57,860 pethau fel fflôt i ints. 472 00:25:57,860 --> 00:26:00,500 Felly mae hwn yn ychydig yn od. 473 00:26:00,500 --> 00:26:03,170 Mae gennym fflôt sydd yn 1.31. 474 00:26:03,170 --> 00:26:05,220 Rydym luosi iddo gan 10,000. 475 00:26:05,220 --> 00:26:08,380 Ac yna rydym yn ei argraffu fel int. 476 00:26:08,380 --> 00:26:09,630 Beth mae'r allbwn hwn? 477 00:26:09,630 --> 00:26:11,600 478 00:26:11,600 --> 00:26:14,020 10,000 gwaith 1.31. 479 00:26:14,020 --> 00:26:18,761 Felly 13,000, yw bod y dyfalu? 480 00:26:18,761 --> 00:26:20,685 >> CYNULLEIDFA: Yr wyf yn credu ei fod yn 10,000. 481 00:26:20,685 --> 00:26:24,234 >> DAN: Felly rwy'n ei luosi 10,000 cyn i mi i'n castio iddo. 482 00:26:24,234 --> 00:26:25,202 >> CYNULLEIDFA: Oh. 483 00:26:25,202 --> 00:26:27,622 Oni fyddai cael un 9 a rhai 0 rhifau? 484 00:26:27,622 --> 00:26:29,270 >> DAN: Efallai y byddwch yn cael rhywfaint digidau rhyfedd. 485 00:26:29,270 --> 00:26:32,410 486 00:26:32,410 --> 00:26:37,670 Felly gywir, mae'n 1.3 gwaith 10,000. 487 00:26:37,670 --> 00:26:40,040 Felly dyna 13,000. 488 00:26:40,040 --> 00:26:41,313 Ac mae weird-- ychwanegol hwn 489 00:26:41,313 --> 00:26:42,160 >> CYNULLEIDFA: 13,100. 490 00:26:42,160 --> 00:26:42,650 >> DAN: 13,100. 491 00:26:42,650 --> 00:26:44,910 Diolch i chi, Rob. 492 00:26:44,910 --> 00:26:46,610 Ac mae weirdness-- ychwanegol hwn 493 00:26:46,610 --> 00:26:48,060 hyn 9,9-- 494 00:26:48,060 --> 00:26:53,860 yn syml oherwydd castio hwn a ddaeth i ben i fyny talgrynnu i lawr lle 495 00:26:53,860 --> 00:26:55,394 ni ddylai fod wedi. 496 00:26:55,394 --> 00:26:55,871 Yeah. 497 00:26:55,871 --> 00:26:58,256 >> CYNULLEIDFA: Y castio yn digwydd ar ôl unrhyw beth arall? 498 00:26:58,256 --> 00:27:03,865 >> DAN: Felly, gan fy mod wedi hyn mewn print, mae'n mae lluosi hwn cyn iddo 499 00:27:03,865 --> 00:27:05,230 castio yn gwneud hyn. 500 00:27:05,230 --> 00:27:06,140 >> CYNULLEIDFA: [Anghlywadwy]. 501 00:27:06,140 --> 00:27:11,350 >> DAN: Yr wyf yn meddwl y byddai'n bwrw yn gyntaf, yeah, a fyddai'n 10,000. 502 00:27:11,350 --> 00:27:12,610 Unrhyw beth arall? 503 00:27:12,610 --> 00:27:13,330 Cool. 504 00:27:13,330 --> 00:27:16,344 Felly, mae hyn yn 13,099. 505 00:27:16,344 --> 00:27:17,840 Pam mae hyn yn digwydd? 506 00:27:17,840 --> 00:27:18,900 Imprecision. 507 00:27:18,900 --> 00:27:21,020 >> Nid fflotiau yn berffaith. 508 00:27:21,020 --> 00:27:27,550 Gallant ond yn cynrychioli rhifau i nifer penodol o ffigurau ystyrlon. 509 00:27:27,550 --> 00:27:35,120 Felly, os ydym yn argraffu 8 ffigys sig ar arnofio hwn, rydym yn cael rhyw fath o 510 00:27:35,120 --> 00:27:36,800 rhif edrych yn hyll. 511 00:27:36,800 --> 00:27:45,580 A dyna oherwydd nad 1.31 yn gallu gywir eu cynrychioli gan syml 512 00:27:45,580 --> 00:27:49,000 pwerau o ddau yn y peiriant. 513 00:27:49,000 --> 00:27:53,530 Felly mae'n dod i ben i fyny yn cymryd yr agosaf dyfalu, sy'n dod i ben i fyny 514 00:27:53,530 --> 00:27:55,710 bod yn ychydig yn isel. 515 00:27:55,710 --> 00:27:57,730 Gwneud synnwyr? 516 00:27:57,730 --> 00:27:59,110 OK. 517 00:27:59,110 --> 00:28:05,840 >> Yn awr, troi yn ffordd wahanol o gwneud datganiadau amodol lle mae pob 518 00:28:05,840 --> 00:28:09,900 yr ydym yn gofalu am yn newidyn sengl. 519 00:28:09,900 --> 00:28:16,570 Felly, yn yr enghraifft benodol, rydym yn cael cyfanrif gan y defnyddiwr. 520 00:28:16,570 --> 00:28:21,070 Ac yna rydym yn edrych ar yr hyn y cyfanrif yn. 521 00:28:21,070 --> 00:28:23,500 Yn ôl pob tebyg, mae'n rhif rhwng un a phedwar. 522 00:28:23,500 --> 00:28:24,800 Dyna beth rydym yn gofyn am. 523 00:28:24,800 --> 00:28:28,450 >> Felly, byddwch yn gwneud switsh o yr enw newidyn. 524 00:28:28,450 --> 00:28:34,290 Yna byddwch yn sefydlu achosion o bosibl gwerthfawrogi y gallai fod. 525 00:28:34,290 --> 00:28:37,730 Felly achos un, yn dweud ei fod yn isel. 526 00:28:37,730 --> 00:28:41,080 Ac yna byddwch yn torri i fynd allan o'r cyflwr switsh felly 527 00:28:41,080 --> 00:28:43,270 nad ydych yn cadw i fynd. 528 00:28:43,270 --> 00:28:44,830 >> Yn yr achos-- nesaf 529 00:28:44,830 --> 00:28:46,940 felly achos dau a achos three-- 530 00:28:46,940 --> 00:28:51,920 os yw'n achos dau 'i jyst yn disgyn i lawr i y llinell gyntaf o god y gwêl fel gyda 531 00:28:51,920 --> 00:28:55,400 tri achos hyd nes ei fod yn gweld toriad. 532 00:28:55,400 --> 00:29:00,430 Felly, y rheswm ydych yn cael un achos i unig print isel yw oherwydd fy mod 533 00:29:00,430 --> 00:29:01,890 gael egwyl hwn yma. 534 00:29:01,890 --> 00:29:05,360 Os byddaf, dyweder, anwybyddu break-- hwn os byddaf yn taflu breakaway-- hwn 535 00:29:05,360 --> 00:29:09,740 byddai'n argraffu isel, ac yna byddai argraffu canol, ac yna byddai'n torri. 536 00:29:09,740 --> 00:29:12,200 >> Felly seibiannau yn rhan bwysig o newid amodau a 537 00:29:12,200 --> 00:29:14,340 dylent fod yno. 538 00:29:14,340 --> 00:29:20,070 Unrhyw achosion nad ydynt yn nodi'n benodol yn cael eu trin gan y ddiofyn 539 00:29:20,070 --> 00:29:26,645 Dylai achos yn y switsh a chael eu bwrw. 540 00:29:26,645 --> 00:29:31,363 >> CYNULLEIDFA: Felly 1, 2, 3, a byddai 4 fod n? 541 00:29:31,363 --> 00:29:33,310 >> DAN: Gwerthoedd y gall fod yn n. 542 00:29:33,310 --> 00:29:34,654 Ydw. 543 00:29:34,654 --> 00:29:35,146 Yeah? 544 00:29:35,146 --> 00:29:37,606 >> CYNULLEIDFA: Felly pan fydd gennych bod [Anghlywadwy]? 545 00:29:37,606 --> 00:29:44,002 546 00:29:44,002 --> 00:29:46,830 >> DAN: Byddech argraffu isel, ac yna byddai'n argraffu canol, ac 547 00:29:46,830 --> 00:29:47,400 yna byddai'n torri. 548 00:29:47,400 --> 00:29:50,244 >> CYNULLEIDFA: Pam y byddai'n argraffu canol os [Anghlywadwy]? 549 00:29:50,244 --> 00:29:54,036 550 00:29:54,036 --> 00:30:00,550 >> DAN: Felly popeth o dan achos cyn y toriad yn dod o dan. 551 00:30:00,550 --> 00:30:09,390 Felly achos un brint achos dan un fel y mae hwn print canlynol. 552 00:30:09,390 --> 00:30:09,890 Yeah? 553 00:30:09,890 --> 00:30:11,140 >> CYNULLEIDFA: [Anghlywadwy]? 554 00:30:11,140 --> 00:30:15,890 555 00:30:15,890 --> 00:30:22,170 >> DAN: Felly rhif hwn yn unig yw neilltuol gwerth y newidyn hwn 556 00:30:22,170 --> 00:30:23,420 Gall gymryd, dde? 557 00:30:23,420 --> 00:30:26,740 558 00:30:26,740 --> 00:30:28,490 A yw hynny'n gwneud synnwyr? 559 00:30:28,490 --> 00:30:28,990 Yeah. 560 00:30:28,990 --> 00:30:31,490 >> CYNULLEIDFA: [Anghlywadwy]? 561 00:30:31,490 --> 00:30:34,130 >> DAN: Ie, byddai achos dau argraffu canol ac yna torri. 562 00:30:34,130 --> 00:30:35,380 >> CYNULLEIDFA: [Anghlywadwy]? 563 00:30:35,380 --> 00:30:37,954 564 00:30:37,954 --> 00:30:40,050 >> DAN: Yr wyf yn meddwl o gwbl? 565 00:30:40,050 --> 00:30:43,855 Pa fathau data arall gallwch newid drosodd? 566 00:30:43,855 --> 00:30:46,320 >> CYNULLEIDFA: Gallwch newid dros unrhyw fathau o ddata. 567 00:30:46,320 --> 00:30:50,905 Ond dim ond yn golygu unrhyw beth dros chars a ints a phethau fel 'na, oherwydd 568 00:30:50,905 --> 00:30:55,600 os ydych yn newid dros pwyntydd nid yw hynny'n wir yn gwneud synnwyr, 569 00:30:55,600 --> 00:30:59,555 newid dros llwythi, os yw'n hyd yn oed yn gadewch i ni ydych yn gwneud hynny, oherwydd y pwynt arnawf 570 00:30:59,555 --> 00:31:02,840 mewn cywirdeb, ni fyddai chi wir am wneud hynny beth bynnag. 571 00:31:02,840 --> 00:31:07,320 Felly 'n bert lawer, dim ond ints a chars a phethau fel 'na. 572 00:31:07,320 --> 00:31:12,360 >> DAN: Yeah, 'i' pan fydd gennych eglur ydych gwerthoedd bod yn gwybod, yr wyf yn meddwl, yn gallu bod yn 573 00:31:12,360 --> 00:31:14,250 bod switsh mewn gwirionedd yn ddefnyddiol. 574 00:31:14,250 --> 00:31:17,094 575 00:31:17,094 --> 00:31:18,990 Da? 576 00:31:18,990 --> 00:31:21,370 OK. 577 00:31:21,370 --> 00:31:26,180 >> Scope yw ystod y mae datgan amrywiol yn ymestyn. 578 00:31:26,180 --> 00:31:32,190 Felly, yn y darn bach hwn o god gen i, byddai'n llawn o wallau. 579 00:31:32,190 --> 00:31:41,450 A'r rheswm yw i mi ddatgan int hwn ff o fewn cwmpas o hyn ar gyfer dolen. 580 00:31:41,450 --> 00:31:46,390 Ac yna Im 'yn ceisio cyfeirio bod ff y tu allan i gwmpas hynny ar gyfer dolen. 581 00:31:46,390 --> 00:31:50,330 >> Felly y bôn, gallwch chi feddwl am gwmpas ag unrhyw beth yr ydych yn datgan 582 00:31:50,330 --> 00:31:59,750 gyda tu mewn i set o braces cyrliog yn unig bodoli o fewn braces cyrliog hynny. 583 00:31:59,750 --> 00:32:04,990 Ac os ydych yn ceisio defnyddio'r newidyn y tu allan i braces cyrliog rheini, wnewch chi helpu 584 00:32:04,990 --> 00:32:08,356 cael gwall gan y compiler. 585 00:32:08,356 --> 00:32:08,812 Yeah? 586 00:32:08,812 --> 00:32:09,724 >> CYNULLEIDFA: Felly, nid yw'r un yn gweithio? 587 00:32:09,724 --> 00:32:11,790 >> DAN: Nid yw hyn yn gweithio, ie. 588 00:32:11,790 --> 00:32:17,190 589 00:32:17,190 --> 00:32:18,660 Strings. 590 00:32:18,660 --> 00:32:19,780 Llinyn torgoch yn *. 591 00:32:19,780 --> 00:32:22,250 Maent yn union yr un fath. 592 00:32:22,250 --> 00:32:25,540 Maent yr un awgrymiadau i gymeriadau. 593 00:32:25,540 --> 00:32:33,000 A dylai unrhyw llinynnau sydd gennych yn dod i ben gyda slaes sero, sydd ychydig 594 00:32:33,000 --> 00:32:34,410 confensiwn c. 595 00:32:34,410 --> 00:32:36,680 >> Fe'i gelwir yn y terminator NULL. 596 00:32:36,680 --> 00:32:39,050 Ac NULL-- 597 00:32:39,050 --> 00:32:41,670 cyfalaf N, cyfalaf U, cyfalaf L, cyfalaf L-- 598 00:32:41,670 --> 00:32:44,290 Nid yw yr un fath â'r Terminator NULL. 599 00:32:44,290 --> 00:32:46,640 Mae hwn yn pwyntydd. 600 00:32:46,640 --> 00:32:48,280 Mae hon yn gymeriad. 601 00:32:48,280 --> 00:32:49,530 Maent yn wahanol iawn. 602 00:32:49,530 --> 00:32:50,200 Cofiwch ei. 603 00:32:50,200 --> 00:32:52,320 Bydd yn ar y cwis, yn ôl pob tebyg. 604 00:32:52,320 --> 00:32:54,040 Nid wyf wedi gweld y cwis. 605 00:32:54,040 --> 00:32:57,880 606 00:32:57,880 --> 00:32:58,840 Yeah? 607 00:32:58,840 --> 00:33:01,232 >> CYNULLEIDFA: Felly NULL yw, dyweder, mae'r pwyntydd? 608 00:33:01,232 --> 00:33:01,995 >> DAN: Ydw. 609 00:33:01,995 --> 00:33:05,170 >> CYNULLEIDFA: Beth mae [Anghlywadwy]? 610 00:33:05,170 --> 00:33:10,050 >> DAN: Os, yn dweud, yn cael ei alw'n malloc pan fyddwch Nid oes gennych ddigon o gof i gael 611 00:33:10,050 --> 00:33:14,400 beth bynnag faint rydych yn gofyn amdano, Bydd malloc dychwelyd NULL. 612 00:33:14,400 --> 00:33:19,550 Mae'n, yn y bôn, pryd bynnag y swyddogaeth yn i fod i ddychwelyd pwyntydd, rydych 613 00:33:19,550 --> 00:33:22,600 Mae angen i wirio yn erbyn NULL oherwydd NULL yn good-- 'n bert 614 00:33:22,600 --> 00:33:25,260 'i', math o, mae'r gwerth garbage. 615 00:33:25,260 --> 00:33:27,050 Mae'n sero cyn belled ag awgrymiadau fynd. 616 00:33:27,050 --> 00:33:29,630 617 00:33:29,630 --> 00:33:32,250 >> Pryd bynnag y byddwch yn galw swyddogaeth, sy'n dychwelyd pwyntydd. 618 00:33:32,250 --> 00:33:35,960 Rydych yn mynd i am wirio bod siwr nad yw'r pwyntydd yn NULL 619 00:33:35,960 --> 00:33:37,760 oherwydd NULL yn gyffredin iawn. 620 00:33:37,760 --> 00:33:40,160 Mae'n fath o ddychwelyd garbage. 621 00:33:40,160 --> 00:33:44,902 Felly, os nad yw rhywbeth yn mynd yn iawn, dim ond dychwelyd NULL yn lle hynny. 622 00:33:44,902 --> 00:33:45,898 >> CYNULLEIDFA: [Anghlywadwy]? 623 00:33:45,898 --> 00:33:48,922 >> DAN: Ie, a dyna hyn. 624 00:33:48,922 --> 00:33:51,750 >> CYNULLEIDFA: [Anghlywadwy]? 625 00:33:51,750 --> 00:33:52,800 >> DAN: Sillafu fel hyn. 626 00:33:52,800 --> 00:33:54,150 Mae'n y terminator NULL. 627 00:33:54,150 --> 00:33:56,560 Mae'n llythrennau bach N-U-L-L os eich bod yn sillafu ei. 628 00:33:56,560 --> 00:33:59,860 >> CYNULLEIDFA: Ac yr wyf yn jyst yn mynd yn ôl ac yn ei brofi. 629 00:33:59,860 --> 00:34:03,010 Ac os ydych yn ceisio rhoi pwynt arnawf gwerth i mewn switsh, bydd yn gweiddi ar chi 630 00:34:03,010 --> 00:34:05,916 gan ddywedyd, datganiad yn gofyn mynegiant o'r math cyfanrif. 631 00:34:05,916 --> 00:34:07,166 >> DAN: Dyna chi. 632 00:34:07,166 --> 00:34:09,639 633 00:34:09,639 --> 00:34:12,246 Ond ie, beth oedd y cwestiwn eto? 634 00:34:12,246 --> 00:34:13,496 >> CYNULLEIDFA: [Anghlywadwy]? 635 00:34:13,496 --> 00:34:16,150 636 00:34:16,150 --> 00:34:23,679 >> DAN: Felly cyfalaf N, cyfalaf U, cyfalaf L, cyfalaf L yn c beth gwirioneddol. 637 00:34:23,679 --> 00:34:29,719 Mae'n pwyntydd NULL a bydd ond yn cael eu trin felly. 638 00:34:29,719 --> 00:34:33,530 Ni fyddwch byth yn ceisio sillafu y NULL cymeriad a gweld unrhyw 639 00:34:33,530 --> 00:34:35,630 ffordd arall na hyn. 640 00:34:35,630 --> 00:34:36,610 Yeah? 641 00:34:36,610 --> 00:34:42,490 >> CYNULLEIDFA: Felly dychwelyd i torgoch max neu rhywbeth yn y nodiadau, byddai ei 642 00:34:42,490 --> 00:34:43,960 ymgorffori'r un swyddogaeth fel [Anghlywadwy]? 643 00:34:43,960 --> 00:34:50,655 644 00:34:50,655 --> 00:34:54,949 >> CYNULLEIDFA: Felly, yr ydych yn cyfeirio at max dychwelyd cols o getchar, neu 645 00:34:54,949 --> 00:34:55,444 beth bynnag ydyw? 646 00:34:55,444 --> 00:34:55,940 >> CYNULLEIDFA: Yeah. 647 00:34:55,940 --> 00:34:58,620 >> CYNULLEIDFA: Yeah, felly mae'r gyffredinol tymor ar gyfer yr holl bethau y rhai 648 00:34:58,620 --> 00:34:59,920 yn werthoedd sentinel. 649 00:34:59,920 --> 00:35:03,640 Felly, yn hoffi dychwelyd max int o GetInt a max cols o getchar, 'i' 650 00:35:03,640 --> 00:35:06,010 i fod i fod yn debyg, yn iawn, os y pethau hyn yn cael eu dychwelyd i ni, 651 00:35:06,010 --> 00:35:07,210 Aeth rhywbeth o'i le. 652 00:35:07,210 --> 00:35:09,950 >> Ar gyfer awgrymiadau, rydym yn unig yn digwydd i gael y gwerth sentinel bod pawb 653 00:35:09,950 --> 00:35:10,750 yn cytuno arnynt. 654 00:35:10,750 --> 00:35:13,210 Ac mae hyn yn y peth rydych yn dychwelyd pan fydd pethau'n mynd o chwith. 655 00:35:13,210 --> 00:35:15,910 Felly max torgoch yw'r hyn yr ydym yn ei ddefnyddio i gynrychioli rhywbeth 656 00:35:15,910 --> 00:35:18,100 fel NULL neu getchar. 657 00:35:18,100 --> 00:35:23,420 >> CYNULLEIDFA: Felly, os ydych yn profi getchar, fe allech chi jyst roi NULL? 658 00:35:23,420 --> 00:35:23,910 A fyddai hynny'n gwneud gwahaniaeth? 659 00:35:23,910 --> 00:35:25,400 >> DAN: Ni allech wirio NULL. 660 00:35:25,400 --> 00:35:30,130 Byddai'n rhaid i chi wirio max torgoch oherwydd bod y gwerth dychwelyd oddi wrth y swyddogaeth yn 661 00:35:30,130 --> 00:35:35,416 Nid yw cymeriad pwyntydd. 662 00:35:35,416 --> 00:35:35,888 Yeah? 663 00:35:35,888 --> 00:35:38,248 >> CYNULLEIDFA: Mae'r cwestiwn hwn yn gofyn gyfer y darn llinyn. 664 00:35:38,248 --> 00:35:40,136 A yw hynny'n cynnwys y cymeriad null? 665 00:35:40,136 --> 00:35:41,000 >> DAN: Na 666 00:35:41,000 --> 00:35:45,930 A dyna mewn gwirionedd sut hyd llinyn gwybod i roi'r gorau oherwydd ei fod yn mynd drwy 667 00:35:45,930 --> 00:35:49,070 eich amrywiaeth o gymeriadau nes mae'n gweld cymeriad NULL. 668 00:35:49,070 --> 00:35:51,030 Ac yna mae fel, pob dde, dwi'n ei wneud. 669 00:35:51,030 --> 00:35:52,130 >> CYNULLEIDFA: [Anghlywadwy] pump? 670 00:35:52,130 --> 00:35:53,990 >> DAN: Byddai Helo yn bump. 671 00:35:53,990 --> 00:35:55,240 Yep. 672 00:35:55,240 --> 00:35:59,580 673 00:35:59,580 --> 00:36:02,880 Felly, araeau yn barhaus blociau o gof. 674 00:36:02,880 --> 00:36:08,480 Mae ganddynt fynediad ar unwaith drwy ddweud y enwi y rhesi, ac yna, yn cyrliog 675 00:36:08,480 --> 00:36:16,720 bresys, beth bynnag mynegai ydych am fynd i, maent yn mynegeio o sero drwy 676 00:36:16,720 --> 00:36:20,100 hyd y rhesi minws 1. 677 00:36:20,100 --> 00:36:23,070 >> Ac maen nhw'n datgan gan y math o yr beth yr ydych yn ei storio yn y 678 00:36:23,070 --> 00:36:29,750 array, enw'r y rhesi, ac yna beth bynnag yw maint yw y rhesi. 679 00:36:29,750 --> 00:36:36,660 Felly mae hwn yn amrywiaeth torgoch o hyd chwech sydd â gwerthoedd hyn. 680 00:36:36,660 --> 00:36:42,050 681 00:36:42,050 --> 00:36:42,700 Yeah? 682 00:36:42,700 --> 00:36:43,950 >> CYNULLEIDFA: [Anghlywadwy]? 683 00:36:43,950 --> 00:36:47,980 684 00:36:47,980 --> 00:36:48,460 >> DAN: Yeah. 685 00:36:48,460 --> 00:36:51,340 >> CYNULLEIDFA: [Anghlywadwy]? 686 00:36:51,340 --> 00:36:56,700 >> DAN: Os oes gennych chi beth sydd yn mynd i mewn i'r amrywiaeth a wnaed eisoes. 687 00:36:56,700 --> 00:37:02,260 Felly gallech nodi hyn yn lle hynny fel, dyweder, torgoch, beth bynnag enw eich 688 00:37:02,260 --> 00:37:12,200 amrywiaeth yw, cromfachau gwag hafal cyrliog Brace H coma E atalnod atalnod L L coma 689 00:37:12,200 --> 00:37:16,290 O atalnod cymeriad NULL a Brace cyrliog. 690 00:37:16,290 --> 00:37:18,180 Byddai hynny hefyd yn gweithio fel datganiad. 691 00:37:18,180 --> 00:37:20,886 >> CYNULLEIDFA: [Anghlywadwy]? 692 00:37:20,886 --> 00:37:23,110 >> DAN: Yna, bydd angen i chi gael maint a wnaed eisoes. 693 00:37:23,110 --> 00:37:23,896 >> CYNULLEIDFA: [Anghlywadwy]? 694 00:37:23,896 --> 00:37:25,146 >> DAN: Ydw. 695 00:37:25,146 --> 00:37:30,114 696 00:37:30,114 --> 00:37:32,420 Pob righty. 697 00:37:32,420 --> 00:37:36,430 Dadleuon llinell gorchymyn yn ffordd o cael mewnbwn gan y defnyddiwr fel 698 00:37:36,430 --> 00:37:39,380 dadleuon i'r prif. 699 00:37:39,380 --> 00:37:40,600 Prif cymryd dwy dadleuon. 700 00:37:40,600 --> 00:37:47,680 Mae nifer y dadleuon sydd yn cael ei pasio ar hyd y llinell gorchymyn a 701 00:37:47,680 --> 00:37:55,340 fector llinyn neu amrywiaeth llinyn o'r holl ddadleuon. 702 00:37:55,340 --> 00:38:07,840 >> Felly os wyf i, dyweder, a elwir yn swyddogaeth o'r fath fel dot allan 1 lle, 2 gofod, tri, 703 00:38:07,840 --> 00:38:10,110 Byddai argc yn 4. 704 00:38:10,110 --> 00:38:17,370 A byddai'r argv 0 fod yn dot allan. 705 00:38:17,370 --> 00:38:19,130 Byddai Argv1 fod yn 1. 706 00:38:19,130 --> 00:38:23,030 argv2 fyddai fyddai 2. argv3 yn 3, yn yr achos penodol. 707 00:38:23,030 --> 00:38:23,310 Yeah? 708 00:38:23,310 --> 00:38:25,400 >> CYNULLEIDFA: [Anghlywadwy]? 709 00:38:25,400 --> 00:38:34,010 >> DAN: Yr elfen olaf yn y arae oherwydd bod yr amrywiaeth yn argc hyd plws 710 00:38:34,010 --> 00:38:41,050 un o argb, mae'r elfen olaf yw'r pwyntydd NULL. 711 00:38:41,050 --> 00:38:42,580 Mae'n argc plws 1. 712 00:38:42,580 --> 00:38:46,210 713 00:38:46,210 --> 00:38:52,150 Felly, yn yr achos yr wyf newydd ei ddweud, mae'n Byddai argv 0 yn dot allan. 714 00:38:52,150 --> 00:38:56,330 argv 1 yw 1. argv2 yw 2. argv 3 yw 3. 715 00:38:56,330 --> 00:39:03,490 argv 4, sydd yn un mwy o faint nag argc fyddai'n NULL. 716 00:39:03,490 --> 00:39:04,870 >> A dyna y pwyntydd NULL. 717 00:39:04,870 --> 00:39:06,590 Ydw. 718 00:39:06,590 --> 00:39:11,250 Ac mae hynny oherwydd bod llinyn yn yn seren torgoch yn pwyntydd. 719 00:39:11,250 --> 00:39:14,102 Felly, mae'n rhaid iddo fod yr un fath. 720 00:39:14,102 --> 00:39:14,595 Yeah? 721 00:39:14,595 --> 00:39:16,074 >> CYNULLEIDFA: Dau gwestiwn. 722 00:39:16,074 --> 00:39:21,004 Felly un, beth yw'r gwahaniaeth rhwng GetString hwn ac eraill nag un math 723 00:39:21,004 --> 00:39:22,483 yn y peiriant defnyddiwr? 724 00:39:22,483 --> 00:39:25,934 A dau, a yw'n cael ei storio o fewn eich cof diweddar? 725 00:39:25,934 --> 00:39:28,399 Felly fel, byddai GetString fod yn [Anghlywadwy]? 726 00:39:28,399 --> 00:39:31,357 727 00:39:31,357 --> 00:39:33,650 >> DAN: Ble y caiff ei storio? 728 00:39:33,650 --> 00:39:34,905 Nid wyf yn gwybod ble mae'n cael ei storio. 729 00:39:34,905 --> 00:39:40,000 >> CYNULLEIDFA: Felly, mewn gwirionedd, eich bod yn gwybod sut y mae unrhyw swyddogaeth byddwch yn ffonio ei fod dadleuon 730 00:39:40,000 --> 00:39:42,170 yn cael eu storio yn y pentwr? 731 00:39:42,170 --> 00:39:46,610 Felly argc a argv dadleuon to main ac maent ar y corn, neu mewn gwirionedd 732 00:39:46,610 --> 00:39:49,131 ychydig yn uwch na'r hyn yr ydych yn meddwl fel cychwyn y pentwr. 733 00:39:49,131 --> 00:39:53,490 Beth oedd y rhan arall o'r cwestiwn? 734 00:39:53,490 --> 00:39:56,821 >> CYNULLEIDFA: Felly beth yw'r [Anghlywadwy]? 735 00:39:56,821 --> 00:40:00,990 >> DAN: Yeah, 'i' jyst ffordd wahanol o gael mewnbwn gan y defnyddiwr. 736 00:40:00,990 --> 00:40:06,030 Mae hyn yn un o ychydig yn fwy effeithlon a mae'n handier i sgriptiau oherwydd eich 737 00:40:06,030 --> 00:40:10,070 gall dim ond pasio dadleuon i'ch prif swyddogaeth yn hytrach na gorfod aros 738 00:40:10,070 --> 00:40:13,400 ar gyfer defnyddwyr os nad oes unrhyw ddefnyddwyr i chi. 739 00:40:13,400 --> 00:40:16,280 >> CYNULLEIDFA: Ac ie, yn cael llinynnau fyddai [Anghlywadwy]. 740 00:40:16,280 --> 00:40:17,922 Byddai'n storio'r pethau yr ydych ei angen. 741 00:40:17,922 --> 00:40:18,834 >> DAN: Yeah? 742 00:40:18,834 --> 00:40:21,114 >> CYNULLEIDFA: [Anghlywadwy]? 743 00:40:21,114 --> 00:40:27,545 >> DAN: Ie, argv 0 bob amser yn cynnwys y dot slaes y swyddogaeth alwad. 744 00:40:27,545 --> 00:40:28,042 Yeah? 745 00:40:28,042 --> 00:40:29,292 >> CYNULLEIDFA: [Anghlywadwy]? 746 00:40:29,292 --> 00:40:33,509 747 00:40:33,509 --> 00:40:37,310 >> DAN: Ie, pob un o'r dadleuon yn i ben o ran cymeriad NULL am eu bod 748 00:40:37,310 --> 00:40:38,310 yn llinynnau. 749 00:40:38,310 --> 00:40:40,892 >> CYNULLEIDFA: [Anghlywadwy]? 750 00:40:40,892 --> 00:40:44,116 >> DAN: Ie, argv argc yn pwyntydd NULL. 751 00:40:44,116 --> 00:40:45,112 >> CYNULLEIDFA: [Anghlywadwy]? 752 00:40:45,112 --> 00:40:47,104 >> DAN: Oh yeah. 753 00:40:47,104 --> 00:40:48,100 Yeah, mae'n ddrwg gennyf. 754 00:40:48,100 --> 00:40:49,594 >> CYNULLEIDFA: Felly [Anghlywadwy]? 755 00:40:49,594 --> 00:41:08,518 756 00:41:08,518 --> 00:41:16,340 >> DAN: Felly, y cwestiwn yw os ydych yn cael y dot llinell gorchymyn slaes dot allan 1, 2, 757 00:41:16,340 --> 00:41:20,410 byddai nifer y llinell orchymyn dadleuon fod yn ddau neu a fyddai'n tri? 758 00:41:20,410 --> 00:41:24,420 759 00:41:24,420 --> 00:41:28,240 >> CYNULLEIDFA: Yr wyf yn meddwl nad yw'n gwneud hynny wirioneddol bwysig. 760 00:41:28,240 --> 00:41:31,370 Dwi'n tueddu i ddweud, oh, nid oeddech yn pasio unrhyw ddadleuon llinell gorchymyn pryd, 761 00:41:31,370 --> 00:41:32,730 yn amlwg, rydych elwir y swyddogaeth. 762 00:41:32,730 --> 00:41:37,950 Felly, yr wyf yn tueddu i wahardd lleisiol y swyddogaeth o'r llinell orchymyn 763 00:41:37,950 --> 00:41:40,350 dadleuon hyd yn oed er 'i' cynnwys yn argv. 764 00:41:40,350 --> 00:41:42,600 >> DAN: Ond os oedd ar y test-- 765 00:41:42,600 --> 00:41:46,550 yeah-- a hefyd os byddwch yn dweud rhywbeth fel argc hafal 3, 766 00:41:46,550 --> 00:41:48,512 eich bod yn sefyll yn ddiogel. 767 00:41:48,512 --> 00:41:49,416 Yeah? 768 00:41:49,416 --> 00:41:50,666 >> CYNULLEIDFA: [Anghlywadwy]? 769 00:41:50,666 --> 00:42:00,990 770 00:42:00,990 --> 00:42:09,510 >> DAN: Yr wyf yn meddwl os yn hytrach na galw hyn mewn argc a llinyn cromfachau argv 771 00:42:09,510 --> 00:42:14,350 ond cadw yr un mathau a newydd alw nhw rhywbeth gwahanol fel 772 00:42:14,350 --> 00:42:16,640 a b, byddai'n dal i weithio? 773 00:42:16,640 --> 00:42:18,790 A byddai'n dal i weithio, byddech yn just-- 774 00:42:18,790 --> 00:42:21,520 yn hytrach na defnyddio argc-- byddech yn defnyddio ac yn b. 775 00:42:21,520 --> 00:42:24,436 776 00:42:24,436 --> 00:42:25,408 Yeah? 777 00:42:25,408 --> 00:42:26,658 >> CYNULLEIDFA: [Anghlywadwy]? 778 00:42:26,658 --> 00:42:34,642 779 00:42:34,642 --> 00:42:38,850 >> DAN: Felly, y cwestiwn yw GetString yw mynd i storio cof yn y domen 780 00:42:38,850 --> 00:42:42,280 oherwydd GetString yn torgoch *. 781 00:42:42,280 --> 00:42:47,530 Mae'n storio cof yn y domen oherwydd ei fod nawr yn galw malloc fewn y gwir 782 00:42:47,530 --> 00:42:49,258 gweithredu'r GetString. 783 00:42:49,258 --> 00:42:53,210 784 00:42:53,210 --> 00:42:55,090 OK, symud ymlaen. 785 00:42:55,090 --> 00:42:55,950 >> Diogelwch. 786 00:42:55,950 --> 00:43:01,090 Felly, i fod yn wirioneddol ddiogel, byddwch yn dibynnu ar ddim un a byddwch yn caniatáu unrhyw un mynediad at unrhyw 787 00:43:01,090 --> 00:43:04,540 eich gwybodaeth, a dyna pam mae pawb yn adeiladu eu peiriannau eu hunain, 788 00:43:04,540 --> 00:43:09,580 eu systemau gweithredu eu hunain, i gyd eu rhaglenni o'r dechrau, ac yn amlwg 789 00:43:09,580 --> 00:43:13,410 peidiwch â gysylltu ag unrhyw beiriannau eraill drwy'r rhyngrwyd. 790 00:43:13,410 --> 00:43:17,350 Felly cyfrifiaduron yn ansicr. 791 00:43:17,350 --> 00:43:19,200 Ydynt mewn gwirionedd. 792 00:43:19,200 --> 00:43:20,940 Mae'n rhaid i ni ymddiried mewn pobl eraill. 793 00:43:20,940 --> 00:43:26,500 >> A'r syniad o ddiogelwch yw eich bod yn ceisio cyfyngu ar faint o 794 00:43:26,500 --> 00:43:27,540 ymddiriedaeth sydd ei angen arnoch. 795 00:43:27,540 --> 00:43:32,080 Ac un o'r ffyrdd yr ydych yn gwneud hynny yw drwy cryptograffeg. 796 00:43:32,080 --> 00:43:34,950 Cryptograffeg yw, yn y bôn, gennym cyfrinachau. 797 00:43:34,950 --> 00:43:38,880 >> Weithiau mae'n rhaid i ni basio ein cyfrinachau hyd drwy, dyweder, y rhyngrwyd neu 798 00:43:38,880 --> 00:43:39,980 pethau eraill. 799 00:43:39,980 --> 00:43:43,180 Ac nid ydym am i bobl gwybod cyfrinachau hyn. 800 00:43:43,180 --> 00:43:50,100 Felly, rydym yn amgryptio ein cyfrinachau i mewn ffordd ein bod yn gobeithio y gall unrhyw un chyfrif i maes. 801 00:43:50,100 --> 00:43:51,600 >> Felly rydym used-- 802 00:43:51,600 --> 00:43:54,340 drwy gydol class-- hwn 803 00:43:54,340 --> 00:44:00,750 pethau fel Caesar cipher a [Anghlywadwy], sydd ill dau yn iawn, iawn 804 00:44:00,750 --> 00:44:03,200 ffyrdd anniogel o amgryptio pethau. 805 00:44:03,200 --> 00:44:07,930 Maent yn hawdd i'w chyfrif i maes yr hyn y maent a beth yw eich cyfrinachau yn cael eu. 806 00:44:07,930 --> 00:44:12,130 Y byd go iawn yn defnyddio llawer mwy cynlluniau amgryptio cymhleth. 807 00:44:12,130 --> 00:44:13,880 Ac ni fyddwn yn mynd i mewn i llawer mwy na hynny. 808 00:44:13,880 --> 00:44:18,280 809 00:44:18,280 --> 00:44:19,430 >> Debugging. 810 00:44:19,430 --> 00:44:20,785 GDB ydy 'r enilla. 811 00:44:20,785 --> 00:44:24,014 812 00:44:24,014 --> 00:44:25,810 Rydw i'n mynd i bwysleisio hyn eto. 813 00:44:25,810 --> 00:44:30,920 Defnyddiwch GDB drwy'r amser bob amser gennych broblem. 814 00:44:30,920 --> 00:44:36,030 Gorchmynion sy'n ddefnyddiol yn GDB yn torri, yr ydych yn pasio naill linell 815 00:44:36,030 --> 00:44:41,330 rhif, enw swyddogaeth, yn y bôn ble yn eich cod ydych am roi'r gorau, 816 00:44:41,330 --> 00:44:45,600 ac yn gallu cymryd rheolaeth. 817 00:44:45,600 --> 00:44:54,140 >> Print cymryd amrywiol ac yn argraffu allan beth bynnag y newidyn ar hynny 818 00:44:54,140 --> 00:44:55,990 pwynt yn eich weithredu. 819 00:44:55,990 --> 00:45:00,130 Nesaf yn symud eich gweithredu ar hyd un cam. 820 00:45:00,130 --> 00:45:05,050 A llys grisiau y tu mewn swyddogaeth yn eich gweithredu. 821 00:45:05,050 --> 00:45:10,480 >> Pethau eraill yn cael eu rhedeg, a dyna sut y chi mewn gwirionedd yn rhedeg eich cod. 822 00:45:10,480 --> 00:45:16,630 Parhau yn cymryd yr holl gamau sydd eu hangen i gyrraedd y pwynt torri nesaf. 823 00:45:16,630 --> 00:45:18,300 Ac mae llawer, llawer o rai eraill. 824 00:45:18,300 --> 00:45:19,040 Edrychwch i fyny. 825 00:45:19,040 --> 00:45:19,901 Maen nhw'n wych. 826 00:45:19,901 --> 00:45:20,863 Yeah? 827 00:45:20,863 --> 00:45:22,113 >> CYNULLEIDFA: [Anghlywadwy]? 828 00:45:22,113 --> 00:45:26,635 829 00:45:26,635 --> 00:45:28,200 >> DAN: Ie, sy'n dadfygiwr. 830 00:45:28,200 --> 00:45:34,230 Felly mae debugger yn rhaglen sy'n yn gadael i chi dadfygio eich rhaglen. 831 00:45:34,230 --> 00:45:39,931 Dyw hi ddim yn rhaglen sy'n canfod bygiau gyfer chi, y byddai er hynny yn wych. 832 00:45:39,931 --> 00:45:43,020 833 00:45:43,020 --> 00:45:46,040 >> Ac yn olaf i mi yw chwilio. 834 00:45:46,040 --> 00:45:51,470 Felly, y mathau o chwilio yr ydym yn siarad am yn y dosbarth hwn yw chwiliad llinol, 835 00:45:51,470 --> 00:45:55,960 sydd ychydig yn eich bod yn edrych drwy bob elfen o'r gofod chwilio, un 836 00:45:55,960 --> 00:46:00,410 elfen ar y tro, nes i chi ddod o hyd yr hyn ydych yn chwilio am, neu nes i chi gyrraedd 837 00:46:00,410 --> 00:46:03,350 diwedd eich gofod chwilio lle pwyntio yr ydych yn dweud na allai ddod o hyd 838 00:46:03,350 --> 00:46:06,360 yr elfen yr ydych yn chwilio amdano. 839 00:46:06,360 --> 00:46:13,450 Ac mae hyn yn cymryd amser ar y gorau yn gyson, sydd yn 0 o 1 ac ar llinellol gwaethaf 840 00:46:13,450 --> 00:46:16,070 amser, sef 0 o n. 841 00:46:16,070 --> 00:46:19,250 >> Chwiliad deuaidd, mae angen elfennau sordid. 842 00:46:19,250 --> 00:46:24,230 Rydych yn mynd i ganol eich elfennau, weld a yw'r elfen rydych yn chwilio amdano 843 00:46:24,230 --> 00:46:30,120 yn fwy neu'n llai na'r elfen eich bod chi yn y canol. 844 00:46:30,120 --> 00:46:36,510 Mae'n ei fod yn mwy o faint, yr ydych yn dweud bod y gwaelod eich chwiliad gofod yw eich 845 00:46:36,510 --> 00:46:41,550 lleoliad presennol, y canol, a'ch bod yn ailgychwyn y broses. 846 00:46:41,550 --> 00:46:46,150 Os yw'n llai, yr ydych yn edrych yn dweud bod the-- yeah, beth sydd i fyny? 847 00:46:46,150 --> 00:46:47,400 >> CYNULLEIDFA: [Anghlywadwy]? 848 00:46:47,400 --> 00:46:51,000 849 00:46:51,000 --> 00:46:54,260 >> DAN: Ydw. 850 00:46:54,260 --> 00:46:58,360 Unrhyw fath o fath sydd wedi bod yn eu dysgu mewn y dosbarth yn gêm teg ar gyfer y prawf. 851 00:46:58,360 --> 00:47:01,504 852 00:47:01,504 --> 00:47:04,920 >> [Chwerthin] 853 00:47:04,920 --> 00:47:10,260 >> DAN: Ac mae'r ffaith nad ydych wedi cael i wneud hynny ar gyfer problem penodol, mae'n deg 854 00:47:10,260 --> 00:47:12,420 gêm ar gyfer y prawf. 855 00:47:12,420 --> 00:47:15,186 >> CYNULLEIDFA: A allwn ni fynd drosto sut canlynol-- 856 00:47:15,186 --> 00:47:17,052 >> DAN: Bydd yn cael ei mynd drosodd. 857 00:47:17,052 --> 00:47:20,496 >> SIARADWR 2: Y cod gwirioneddol ar gyfer [Anghlywadwy] ar study.cs50.net. 858 00:47:20,496 --> 00:47:25,910 859 00:47:25,910 --> 00:47:32,680 Felly, os ydych yn edrych ar y broblem practis yn y dudalen math uno o 860 00:47:32,680 --> 00:47:35,880 study.cs50.net, mae cod gyfer gweithredu uno fath. 861 00:47:35,880 --> 00:47:38,550 Felly nid oes rhaid i chi weithredu eich hun heno. 862 00:47:38,550 --> 00:47:42,090 Ond gwnewch yn siŵr eich bod yn deall ei fod yn hytrach na dim ond cofio iddo. 863 00:47:42,090 --> 00:47:45,035 >> CYNULLEIDFA: [Anghlywadwy]? 864 00:47:45,035 --> 00:47:49,720 >> SIARADWR 2: Mae'r dudalen didoli uno ar study.cs50.net, mae arfer 865 00:47:49,720 --> 00:47:53,570 problem hynny, os ydych yn clicio drwy'r broblem, yn y pen iawn mae 866 00:47:53,570 --> 00:47:56,280 ateb, sef y merge gweithredu'r fath. 867 00:47:56,280 --> 00:47:58,510 Ond gwnewch yn siŵr eich bod yn deall ei yn hytrach na dim ond cofio ei 868 00:47:58,510 --> 00:47:59,760 neu gopïo i lawr. 869 00:47:59,760 --> 00:48:02,870 870 00:48:02,870 --> 00:48:06,340 >> CYNULLEIDFA: A berffaith ddilys Byddai problem ar gyfer yr arholiad fod 871 00:48:06,340 --> 00:48:07,990 rhywbeth fel dyma restr. 872 00:48:07,990 --> 00:48:12,100 Beth mae'r rhestr hon yn edrych fel ar ôl un cam o ddetholiadau fath neu 873 00:48:12,100 --> 00:48:13,330 didoli gosod neu beth bynnag. 874 00:48:13,330 --> 00:48:14,940 Mae un ailadroddiad llawn o'r rhestr. 875 00:48:14,940 --> 00:48:18,530 Felly hyd yn oed os nad ydych yn y pen draw angen cod ar gyfer iddo, mae angen i chi ei ddeall 876 00:48:18,530 --> 00:48:20,440 ddigon da i wybod sut y mae'n mynd i gael ei addasu arae yma. 877 00:48:20,440 --> 00:48:24,144 878 00:48:24,144 --> 00:48:25,394 >> DAN: Dyna ni i mi. 879 00:48:25,394 --> 00:48:30,604 880 00:48:30,604 --> 00:48:32,588 >> [Cymeradwyaeth] 881 00:48:32,588 --> 00:49:06,316 882 00:49:06,316 --> 00:49:07,410 >> LUCAS: Hey pawb. 883 00:49:07,410 --> 00:49:08,390 Fy enw i yw Lucas. 884 00:49:08,390 --> 00:49:16,840 Rydw i'n mynd i siarad am recursion, pob y mathau yr ydym wedi dysgu, ac mae 885 00:49:16,840 --> 00:49:18,050 ychydig bach o'r holl awgrymiadau. 886 00:49:18,050 --> 00:49:18,740 OK? 887 00:49:18,740 --> 00:49:20,340 Felly, yn gyntaf oll, recursion. 888 00:49:20,340 --> 00:49:22,951 Beth mae'n ei olygu i ddweud bod swyddogaeth yn ailadroddus? 889 00:49:22,951 --> 00:49:24,675 >> CYNULLEIDFA: Yn galw ei hun. 890 00:49:24,675 --> 00:49:26,500 >> LUCAS: OK, yn galw ei hun, yeah. 891 00:49:26,500 --> 00:49:27,700 Felly, fel y llun yma, er enghraifft. 892 00:49:27,700 --> 00:49:30,280 Mae fel y llun y tu mewn o llun ac yn y blaen. 893 00:49:30,280 --> 00:49:35,740 Felly, er enghraifft, gallwch have-- fel Dan a oedd yn siarad am chwiliad deuaidd. 894 00:49:35,740 --> 00:49:41,840 Un ffordd y mae chwiliad deuaidd yn recursive yw'r ffaith eich bod yn 895 00:49:41,840 --> 00:49:43,130 ceisio dod o hyd i rif. 896 00:49:43,130 --> 00:49:44,250 Felly, byddwch yn mynd i'r canol. 897 00:49:44,250 --> 00:49:47,130 Ac yna i chi weld a yw'r niferoedd yno yn y chwith ac yn y dde. 898 00:49:47,130 --> 00:49:49,650 >> Ac yna os byddwch yn cael gwybod y rhif yw mynd i fod ar y chwith, 'i' yr un fath 899 00:49:49,650 --> 00:49:53,340 beth â gwneud y chwiliad eto ond dim ond ar y chwith o'r rhestr. 900 00:49:53,340 --> 00:49:57,350 Felly dyna sut y mae'n swnio fel ei fod yn ailadroddus. 901 00:49:57,350 --> 00:50:01,870 Felly dyna pam yr ydych yn guys yn cael recursive ateb ar gyfer math uno. 902 00:50:01,870 --> 00:50:04,270 >> Iawn, felly dyma enghraifft. 903 00:50:04,270 --> 00:50:07,280 Felly, gadewch i ni ddweud fy mod am ddewis yr holl rifau o 1 i n. 904 00:50:07,280 --> 00:50:13,790 Gallaf sylweddoli bod swm yr n rhif yw n plws minws n 1 hyd at 1. 905 00:50:13,790 --> 00:50:17,810 Ond wedyn, os wyf yn edrych ar n minws 1 plws n minws 2 plws 1, dyna yr un fath 906 00:50:17,810 --> 00:50:20,680 beth â rhifau grynhoi hyd at n minws 1. 907 00:50:20,680 --> 00:50:25,890 Felly, gallaf ddweud y swm o swm cyfartal hafal n plws swm minws n 1. 908 00:50:25,890 --> 00:50:28,010 A yw hynny'n gwneud synnwyr? 909 00:50:28,010 --> 00:50:32,630 >> Ac yr wyf hefyd byddai'n rhaid i rywbeth arall Gelwir yr achos sylfaenol, sef bod 910 00:50:32,630 --> 00:50:37,440 y swm y rhifau i fyny i sero fyddai sero. 911 00:50:37,440 --> 00:50:42,770 Felly, cyn gynted ag yr wyf yn cyrraedd y nifer sero, yr wyf yn rhoi'r gorau i cyfrif. 912 00:50:42,770 --> 00:50:45,330 A yw hynny'n gwneud synnwyr? 913 00:50:45,330 --> 00:50:48,120 >> Felly dyma enghraifft o sut Gallaf gweithredu hynny. 914 00:50:48,120 --> 00:50:49,860 Felly mae gen i swyddogaeth hon mewn rhai. 915 00:50:49,860 --> 00:50:51,700 Mae hynny'n mynd yn gyfanrif n. 916 00:50:51,700 --> 00:50:56,300 Felly dyma yr wyf yn holi yn gyntaf os n yn yn llai neu yn hafal i sero. 917 00:50:56,300 --> 00:51:00,310 Felly, os yw'n llai neu'n hafal i sero, yr wyf yn dychwelyd sero, sef ein achos sylfaenol. 918 00:51:00,310 --> 00:51:05,690 Fel arall, a gaf fi ddychwelyd n plws swm y rhifau o 919 00:51:05,690 --> 00:51:07,190 un i un n minws. 920 00:51:07,190 --> 00:51:09,360 Gwneud synnwyr? 921 00:51:09,360 --> 00:51:10,100 OK. 922 00:51:10,100 --> 00:51:11,610 >> Felly dyma sut mae'n edrych. 923 00:51:11,610 --> 00:51:15,260 Mae gennych swm o 2 hafal 2 yn ogystal â'r swm o 1. 924 00:51:15,260 --> 00:51:18,930 Ac mae rhai o 1 yw 1 yn ogystal â'r swm o 0, sydd yn 0. 925 00:51:18,930 --> 00:51:20,216 Gwneud synnwyr? 926 00:51:20,216 --> 00:51:25,342 Felly, os edrychwn ar y pentwr o dy rhaglen, dyma sut mae'n edrych. 927 00:51:25,342 --> 00:51:26,820 >> Yn gyntaf, mae gennym y prif swyddogaeth. 928 00:51:26,820 --> 00:51:30,320 Ac yna y prif swyddogaeth Gelwir swm 2. 929 00:51:30,320 --> 00:51:36,690 Ac yna swm 2 yn mynd i ddweud, oh, swm 2 yn dychwelyd 2 yn ogystal â'r swm o un. 930 00:51:36,690 --> 00:51:39,460 Felly, yr wyf yn ychwanegu swm o 1 i'r pentwr. 931 00:51:39,460 --> 00:51:43,860 A'r swm o 1 yn mynd i alw swm o 0, sydd hefyd yn mynd i gael eu hychwanegu 932 00:51:43,860 --> 00:51:44,630 at y pentwr. 933 00:51:44,630 --> 00:51:49,240 Ac yna pob un o'r rhai hyn sydd yn ar ben y llall rhaid i ni ddychwelyd 934 00:51:49,240 --> 00:51:52,020 cyn y gall y rhai eraill yn dal i fynd. 935 00:51:52,020 --> 00:51:56,240 >> Felly, er enghraifft, yma, swm o 0, yn gyntaf, yn mynd i ddychwelyd 0. 936 00:51:56,240 --> 00:51:58,320 A 'na ddethol swm o 1. 937 00:51:58,320 --> 00:52:00,850 Yna swm o 1 yn mynd i dychwelyd 1 i grynhoi o 2. 938 00:52:00,850 --> 00:52:03,900 Ac yn olaf, swm o 2 yn mynd i ddychwelyd i'r brif 3. 939 00:52:03,900 --> 00:52:05,320 A yw hynny'n gwneud synnwyr? 940 00:52:05,320 --> 00:52:09,496 >> Mae'n bwysig iawn i ddeall sut y das yn gweithio ac yn ceisio 941 00:52:09,496 --> 00:52:11,980 weld a yw'n gwneud synnwyr. 942 00:52:11,980 --> 00:52:13,260 Iawn, felly didoli. 943 00:52:13,260 --> 00:52:16,170 Felly pam yn didoli yn bwysig, yn gyntaf oll? 944 00:52:16,170 --> 00:52:18,260 Pam ddylem ni boeni? 945 00:52:18,260 --> 00:52:20,310 Dylai unrhyw un? 946 00:52:20,310 --> 00:52:20,695 Rhowch enghraifft i mi? 947 00:52:20,695 --> 00:52:21,040 Yeah? 948 00:52:21,040 --> 00:52:22,968 >> CYNULLEIDFA: [Anghlywadwy]. 949 00:52:22,968 --> 00:52:24,700 >> LUCAS: Yeah, OK. 950 00:52:24,700 --> 00:52:26,090 Felly, gallwch chwilio yn fwy effeithlon. 951 00:52:26,090 --> 00:52:28,580 Dyna ffordd dda. 952 00:52:28,580 --> 00:52:32,462 Felly, er enghraifft, mae gennym lawer o pethau, mewn gwirionedd, yn ein bywydau sy'n 953 00:52:32,462 --> 00:52:32,920 cael eu datrys. 954 00:52:32,920 --> 00:52:34,830 Er enghraifft, geiriaduron. 955 00:52:34,830 --> 00:52:39,210 >> Mae'n bwysig iawn i gael yr holl geiriau mewn rhyw fath o drefn i ni 956 00:52:39,210 --> 00:52:41,970 yn gallu cael gafael yn rhwydd. 957 00:52:41,970 --> 00:52:43,280 Felly dyna beth oedd yn ei ddweud. 958 00:52:43,280 --> 00:52:45,530 Gallwch chwilio yn fwy effeithlon. 959 00:52:45,530 --> 00:52:48,740 Meddyliwch am pa mor galed y byddai'n cael Geiriadur y mae y geiriau yn 960 00:52:48,740 --> 00:52:49,500 trefn ar hap. 961 00:52:49,500 --> 00:52:53,120 Bydd yn rhaid i chi edrych ar, 'n bert lawer, pob un gair nes i chi ddod o hyd i'r 962 00:52:53,120 --> 00:52:54,720 gair yr ydych yn chwilio am. 963 00:52:54,720 --> 00:52:58,710 >> Os ydych yn defnyddio Facebook hefyd, pan ydych yn edrych ar eich ffrindiau, eich bod yn 964 00:52:58,710 --> 00:53:03,540 mynd i weld bod Facebook yn rhoi eich ffrind agosach sydd ar ben y rhai 965 00:53:03,540 --> 00:53:05,470 nad ydych yn siarad â bod llawer. 966 00:53:05,470 --> 00:53:08,080 Os byddwch yn mynd yr holl ffordd i waelod eich rhestr ffrind, rydych chi'n mynd i weld 967 00:53:08,080 --> 00:53:11,250 bobl nad ydych yn debyg nad yn ei wneud hyd yn oed yn cofiwch eich bod yn ffrindiau gyda. 968 00:53:11,250 --> 00:53:14,590 A dyna oherwydd bod math Facebook eich ffrindiau yn seiliedig ar sut y 969 00:53:14,590 --> 00:53:16,472 cau eich bod iddynt. 970 00:53:16,472 --> 00:53:17,930 >> Felly, trefnu data. 971 00:53:17,930 --> 00:53:18,450 Hefyd Pokemon. 972 00:53:18,450 --> 00:53:21,400 Felly, byddwch yn gweld bod yr holl pokemons niferoedd. 973 00:53:21,400 --> 00:53:27,210 A dyna fel hawdd ffordd o gael gafael ar ddata. 974 00:53:27,210 --> 00:53:29,050 >> CYNULLEIDFA: Cael mynediad Pokemon. 975 00:53:29,050 --> 00:53:29,890 >> LUCAS: Yeah. 976 00:53:29,890 --> 00:53:32,395 >> CYNULLEIDFA: [Anghlywadwy]. 977 00:53:32,395 --> 00:53:33,460 >> LUCAS: Yep. 978 00:53:33,460 --> 00:53:35,140 Iawn, felly didoli dethol. 979 00:53:35,140 --> 00:53:41,610 Fath dethol yn mynd i ddewis y heb ei ddidoli gwerth lleiaf o restr bob 980 00:53:41,610 --> 00:53:43,300 amser ym mhob fersiwn. 981 00:53:43,300 --> 00:53:46,800 Mae'n fath o fel y math rydych chi'n ei wneud yn eich pen pan fyddwch yn ceisio 982 00:53:46,800 --> 00:53:48,430 didoli rhestr wrth law. 983 00:53:48,430 --> 00:53:51,990 >> Yn y bôn, yr holl chi ei wneud yw i chi edrych gyfer y nifer lleiaf. 984 00:53:51,990 --> 00:53:54,280 Ei roi yn y rhestr ddidoli. 985 00:53:54,280 --> 00:53:56,230 Ac yna byddwch yn chwilio am y nesaf rhif lleiaf. 986 00:53:56,230 --> 00:54:00,080 Ac yna i chi barhau i wneud hynny ac yn y blaen. 987 00:54:00,080 --> 00:54:04,600 >> Felly, didoli dewis yn y bôn i chi dewis bob tro y lleiaf 988 00:54:04,600 --> 00:54:05,750 werth heb eu didoli. 989 00:54:05,750 --> 00:54:10,840 Rhowch ar ddiwedd y didoli rhan o'r rhestr. 990 00:54:10,840 --> 00:54:12,370 Ac yn barhau i wneud hynny. 991 00:54:12,370 --> 00:54:15,890 Felly, gadewch i ni weld yn gyflym yr hyn mae hyn yn edrych fel. 992 00:54:15,890 --> 00:54:19,340 Felly dyma y didoli a rhestr heb eu didoli. 993 00:54:19,340 --> 00:54:23,350 >> Felly, ar gyfer y datrys y rhestr, ei fod yn wag yn y lle cyntaf. 994 00:54:23,350 --> 00:54:26,760 Ac yna yr wyf i'n mynd i ddewis y nifer lleiaf yma, sydd 2. 995 00:54:26,760 --> 00:54:30,650 Felly, yr wyf yn cael y rhif 2 ac yr wyf yn rhoi yn y flaen y rhestr. 996 00:54:30,650 --> 00:54:34,910 Ac yna yr wyf yn edrych am y lleiaf nesaf elfen, sydd 3. 997 00:54:34,910 --> 00:54:37,050 Felly yr wyf yn ei roi ar y diwedd o'r rhestr didoli. 998 00:54:37,050 --> 00:54:38,140 Ac yna mi barhau i wneud hynny. 999 00:54:38,140 --> 00:54:40,040 Rwy'n dod o hyd i 4 ac yn ei roi ar y diwedd. 1000 00:54:40,040 --> 00:54:41,360 Dod o hyd i 5 ac yn ei roi ar y diwedd. 1001 00:54:41,360 --> 00:54:44,830 >> Ac edrych ar sut yr holl adegau hynny sy'n I ddim yn dweud ei roi ar y diwedd yw, 1002 00:54:44,830 --> 00:54:46,850 bôn, cyfnewid ddau werth. 1003 00:54:46,850 --> 00:54:48,100 OK? 1004 00:54:48,100 --> 00:54:50,140 1005 00:54:50,140 --> 00:54:52,825 Ac yna yr un diwethaf, 'ch jyst cael un elfen mwy. 1006 00:54:52,825 --> 00:54:55,870 Felly mae eisoes wedi datrys. 1007 00:54:55,870 --> 00:54:57,800 >> Iawn, felly didoli gosod. 1008 00:54:57,800 --> 00:55:03,180 Didoli Mewnosod ydych yn mynd i gael hefyd y peth o fod wedi cael eu didoli a'u 1009 00:55:03,180 --> 00:55:04,690 rhestr heb eu didoli. 1010 00:55:04,690 --> 00:55:14,540 Yr unig beth yw bod bob tro y eich bod yn ychwanegu elfen i'r didoli 1011 00:55:14,540 --> 00:55:18,170 rhestr, 'ch jyst ddewis yr elfen sy'n yn o flaen y rhestr heb eu didoli. 1012 00:55:18,170 --> 00:55:20,880 Ac yna rydych chi'n mynd i ddod o hyd i beth sefyllfa y dylai fod yn y ddidoli 1013 00:55:20,880 --> 00:55:22,300 rhan o'r rhestr. 1014 00:55:22,300 --> 00:55:25,840 >> Gadewch i ni weld beth mae hyn yn wir mae hyn yn gwneud mwy o synnwyr. 1015 00:55:25,840 --> 00:55:29,360 Felly, i ddechrau, er enghraifft, Im 'yn ceisio i mewnosoder y rhif tri yn y 1016 00:55:29,360 --> 00:55:30,680 rhan ddidoli o'r rhestr. 1017 00:55:30,680 --> 00:55:31,800 Felly, nid oes gan unrhyw beth y rhestr. 1018 00:55:31,800 --> 00:55:34,160 Felly gall Fi jyst roi'r rhif 3. 1019 00:55:34,160 --> 00:55:37,480 >> Yn awr, yr wyf am ychwanegu rhif 5 i y rhan ddidoli o'r rhestr. 1020 00:55:37,480 --> 00:55:38,900 Felly, yr wyf yn edrych ar y rhif 5. 1021 00:55:38,900 --> 00:55:40,450 Yr wyf yn sylwi ei fod yn fwy na 3. 1022 00:55:40,450 --> 00:55:41,980 Felly yr wyf yn gwybod bod yn rhaid iddo fod yn ôl 3. 1023 00:55:41,980 --> 00:55:44,100 Felly, yr wyf yn rhoi 3 a 5. 1024 00:55:44,100 --> 00:55:45,940 >> Yna, yr wyf am i fewnosod y rhif 2. 1025 00:55:45,940 --> 00:55:51,630 Sylwaf fod y rhif 2 mewn gwirionedd para yna ddau 3 a 5. 1026 00:55:51,630 --> 00:55:54,580 Felly, yr wyf mewn gwirionedd yn rhaid i roi i gyd y ffordd yn y ddechrau'r rhestr. 1027 00:55:54,580 --> 00:55:59,030 Felly, rhaid i mi, math o, symud yr holl elfennau yn y rhestr didoli felly rwy'n gallu 1028 00:55:59,030 --> 00:56:01,970 wneud lle ar gyfer y nifer 2. 1029 00:56:01,970 --> 00:56:03,160 >> Yna mi weld y rhif 6. 1030 00:56:03,160 --> 00:56:05,450 Gwelaf fod dylai fod yn ôl 5. 1031 00:56:05,450 --> 00:56:06,240 Felly yr wyf yn ei roi yno. 1032 00:56:06,240 --> 00:56:07,965 Ac yn olaf, yr wyf yn edrych ar y rhif 4. 1033 00:56:07,965 --> 00:56:11,030 Ac yr wyf yn sylwi y dylai fod rhwng 3 a 5. 1034 00:56:11,030 --> 00:56:14,870 Ac yna yr wyf yn ei roi yno a newid holl elfennau eraill. 1035 00:56:14,870 --> 00:56:16,120 Gwneud synnwyr? 1036 00:56:16,120 --> 00:56:17,880 1037 00:56:17,880 --> 00:56:19,150 >> Trefnu yn Bubble. 1038 00:56:19,150 --> 00:56:25,730 Felly fath swigen yn y bôn yr hyn yr ydych chi'n mynd i do-- rydym yn galw ei swigen 1039 00:56:25,730 --> 00:56:30,113 fath oherwydd eich bod yn mynd drwy'r list-- 'i' mewn gwirionedd yn well os Fi jyst yn dangos 1040 00:56:30,113 --> 00:56:32,300 chi'n hoffi this-- 1041 00:56:32,300 --> 00:56:35,030 a ydych yn mynd i gymharu rhifau cyfagos. 1042 00:56:35,030 --> 00:56:38,410 A ydych yn mynd i gyfnewid eu swyddi os nad ydynt yn 1043 00:56:38,410 --> 00:56:39,190 yn y drefn gywir. 1044 00:56:39,190 --> 00:56:42,570 >> Felly y bôn, yr hyn sy'n mynd i yn digwydd yn fan hyn, er enghraifft, 1045 00:56:42,570 --> 00:56:44,160 gennych chi 8 a 6. 1046 00:56:44,160 --> 00:56:47,270 Rydych yn gwybod bod y drefn ddidoli bydd mewn gwirionedd fod yn 6 a 5, dde? 1047 00:56:47,270 --> 00:56:49,540 Felly, rydych chi'n mynd i gyfnewid y gorchmynion. 1048 00:56:49,540 --> 00:56:51,370 Yna, rwy'n gweld 8 a 4 yma. 1049 00:56:51,370 --> 00:56:52,250 Ac yr wyf yn gwneud yr un peth. 1050 00:56:52,250 --> 00:56:53,400 Rwy'n cyfnewid eto. 1051 00:56:53,400 --> 00:56:55,070 Ac yn olaf, 2 a 8. 1052 00:56:55,070 --> 00:56:56,670 Rwyf hefyd yn eu cyfnewid. 1053 00:56:56,670 --> 00:57:01,690 >> Mae'n cael ei alw Bubble Sort oherwydd ar ôl pob un o'r iteriadau hyn, mewn gwirionedd, 1054 00:57:01,690 --> 00:57:05,910 y nifer fwyaf yn y rhestr yn cael yr holl y ffordd hyd at ddiwedd y rhestr. 1055 00:57:05,910 --> 00:57:06,940 A yw hynny'n gwneud synnwyr? 1056 00:57:06,940 --> 00:57:11,880 Oherwydd ei fod yn cadw cyfnewid ei a'i symud i'r dde. 1057 00:57:11,880 --> 00:57:14,440 >> Iawn, felly mae hwn yn ail ailadroddiad. 1058 00:57:14,440 --> 00:57:17,200 Byddai'n yr un peth. 1059 00:57:17,200 --> 00:57:20,190 'N annhymerus' wneud un cyfnewid a Yna yr un olaf. 1060 00:57:20,190 --> 00:57:23,290 Yr wyf nad oes unrhyw cyfnewidiadau ac mae'r rhestr yn cael ei datrys. 1061 00:57:23,290 --> 00:57:27,460 Felly, yn Bubble Didoli, rydym yn y bôn yn cadw mynd trwy'r rhestr a chyfnewid 1062 00:57:27,460 --> 00:57:32,310 pethau nes i mi sylwi nad oeddwn yn ei wneud unrhyw cyfnewidiadau wneud hynny iteriad, sy'n 1063 00:57:32,310 --> 00:57:34,270 yn golygu bod y rhestr eisoes yn cael ei datrys. 1064 00:57:34,270 --> 00:57:35,520 Gwneud synnwyr? 1065 00:57:35,520 --> 00:57:38,400 1066 00:57:38,400 --> 00:57:40,870 >> Gadewch i ni siarad ychydig bach am redeg amser. 1067 00:57:40,870 --> 00:57:45,165 Felly, ydych chi'n guys cofio Mawr O, Omega, a Theta? 1068 00:57:45,165 --> 00:57:49,290 1069 00:57:49,290 --> 00:57:50,990 Yeah? 1070 00:57:50,990 --> 00:57:53,070 OK, yr hyn sy'n Big O, yn gyntaf oll? 1071 00:57:53,070 --> 00:57:54,315 >> CYNULLEIDFA: [Anghlywadwy]. 1072 00:57:54,315 --> 00:57:59,070 >> LUCAS: Yeah, fe'i gelwir yn achos gwaethaf Rhedeg, a dim ond yn golygu ei fod yn 1073 00:57:59,070 --> 00:58:03,470 faint yr ydych yn disgwyl i'r rhaglen eu cymryd i redeg. 1074 00:58:03,470 --> 00:58:04,910 Fel, yn nhermau o- 1075 00:58:04,910 --> 00:58:06,660 yn achos-- n hwn. 1076 00:58:06,660 --> 00:58:09,150 Mae nifer o elfennau yn y rhestr yn yr achos gwaethaf. 1077 00:58:09,150 --> 00:58:12,520 Fel, yn yr achos gwaethaf posibl. 1078 00:58:12,520 --> 00:58:17,100 >> Felly, ar gyfer Bubble Didoli, er enghraifft, mae gennym O Big o n sgwâr. 1079 00:58:17,100 --> 00:58:20,580 Pam mae gennym hynny? 1080 00:58:20,580 --> 00:58:24,716 Pam fod Bubble Sort Big sgwâr O n? 1081 00:58:24,716 --> 00:58:27,614 >> CYNULLEIDFA: [Anghlywadwy]. 1082 00:58:27,614 --> 00:58:35,670 >> LUCAS: Yeah, felly bydd yr achos gwaethaf yn y bydd rhaid i mi wneud iteriadau n. 1083 00:58:35,670 --> 00:58:39,260 Felly pob un o'r iteriadau yn mynd i dod â'r elfen fwyaf hyd y diwedd 1084 00:58:39,260 --> 00:58:40,290 o'r rhestr. 1085 00:58:40,290 --> 00:58:44,230 Felly, yr achos gwaethaf yw bod gennyf i wneud hynny peth n amser. 1086 00:58:44,230 --> 00:58:48,550 Ac ar gyfer pob un o'r adegau hynny, rhaid i mi gwneud cyfnewidiadau n am fod rhaid i mi gymharu 1087 00:58:48,550 --> 00:58:49,870 pob un ddwy elfen. 1088 00:58:49,870 --> 00:58:53,730 Felly dyna pam ei fod yn sgwâr n am ei fod yn amserau n n. 1089 00:58:53,730 --> 00:59:00,120 >> Yna, didoli dewis hefyd yn n sgwâr oherwydd, ar gyfer pob iteriad, rhaid i mi 1090 00:59:00,120 --> 00:59:02,650 edrych ar bob elfen unigol yn y rhestr. 1091 00:59:02,650 --> 00:59:04,980 Ac yna ddod o hyd i'r lleiaf, sy'n golygu bod yn rhaid i mi 1092 00:59:04,980 --> 00:59:06,130 edrych trwy elfennau n. 1093 00:59:06,130 --> 00:59:11,750 Ac mae rhaid i mi wneud hynny amserau n oherwydd Rhaid i mi ddewis yr holl elfennau n. 1094 00:59:11,750 --> 00:59:18,273 >> Mae math gosod hefyd n sgwâr oherwydd bod y sefyllfa waethaf fydd 1095 00:59:18,273 --> 00:59:20,950 fod, yn un, rhaid i mi mewnosod rhifau n, dde? 1096 00:59:20,950 --> 00:59:22,765 Felly, yr wyf eisoes yn gwybod fy mod i'n mynd i gael iteriadau n. 1097 00:59:22,765 --> 00:59:25,466 1098 00:59:25,466 --> 00:59:29,840 Ond ar gyfer pob un o'r rhifau hynny, os wyf wedi cael i edrych ar bob un o'r rhifau yn 1099 00:59:29,840 --> 00:59:34,380 y rhestr didoli a'i roi yn yr holl ffordd yn y blaen, a fydd yn n sgwâr 1100 00:59:34,380 --> 00:59:36,230 oherwydd bydd yn n amseroedd n eto. 1101 00:59:36,230 --> 00:59:38,280 Gwneud synnwyr? 1102 00:59:38,280 --> 00:59:41,512 Beth am omega? 1103 00:59:41,512 --> 00:59:42,886 >> CYNULLEIDFA: [Anghlywadwy]. 1104 00:59:42,886 --> 00:59:44,620 >> LUCAS: Mae'n y senario achos gorau. 1105 00:59:44,620 --> 00:59:48,810 Felly mae'n debyg, mewn llawer o weithiau ar gyfer didoli, y senario achos gorau yn 1106 00:59:48,810 --> 00:59:50,660 pan mae'r rhestr eisoes yn datrys. 1107 00:59:50,660 --> 00:59:52,670 Felly, nad ydych yn wir gennych i wneud unrhyw beth. 1108 00:59:52,670 --> 00:59:56,290 Bubble Didoli sydd â'r gorau senario achos o n. 1109 00:59:56,290 --> 00:59:58,820 Ydych chi'n guys yn gwybod pam? 1110 00:59:58,820 --> 01:00:00,620 >> CYNULLEIDFA: [Anghlywadwy]. 1111 01:00:00,620 --> 01:00:05,640 >> LUCAS: Yeah, os ydych yn cadw golwg ar a oedd gan Dogn data unrhyw cyfnewidiadau neu 1112 01:00:05,640 --> 01:00:10,533 Nid yw, os oes gennych rhywbeth fel osod i wir os bu iteriad, os bydd y 1113 01:00:10,533 --> 01:00:15,140 rhestr eisoes yn didoli, yn y bôn, beth sy'n mynd i ddigwydd yw fy mod i'n mynd i 1114 01:00:15,140 --> 01:00:17,890 ceisiwch gyfnewid bob dau elfennau cyfagos. 1115 01:00:17,890 --> 01:00:19,920 Dw i'n mynd i weld bod nid oes unrhyw cyfnewidiadau. 1116 01:00:19,920 --> 01:00:21,230 Ac yr wyf yn jyst yn dychwelyd ar unwaith. 1117 01:00:21,230 --> 01:00:24,240 >> Felly, mae'n golygu fy mod i newydd gael i yn mynd drwy'r rhestr un pryd. 1118 01:00:24,240 --> 01:00:28,990 Felly mae'n n am fy mod yn edrych yn n elfen. 1119 01:00:28,990 --> 01:00:30,930 Pam dewis didoli n sgwâr? 1120 01:00:30,930 --> 01:00:35,150 1121 01:00:35,150 --> 01:00:45,520 >> Yeah, hyd yn oed os bydd y rhestr yn cael ei datrys, er pob fersiwn o'r math dethol, yr wyf yn 1122 01:00:45,520 --> 01:00:47,590 rhaid i ddewis yr elfen lleiaf. 1123 01:00:47,590 --> 01:00:49,980 Felly, mae hynny'n golygu bod gennyf allan i edrych ar yr holl elfennau yn y heb eu didoli 1124 01:00:49,980 --> 01:00:53,350 restru a dod o hyd i'r lleiafswm ar gyfer pob iteriad. 1125 01:00:53,350 --> 01:00:54,600 A yw hynny'n gwneud synnwyr? 1126 01:00:54,600 --> 01:00:56,880 1127 01:00:56,880 --> 01:01:04,690 >> A chleddyf gosod yn N oherwydd yn y achos fy mod i'n ceisio mewnosoder y 1128 01:01:04,690 --> 01:01:09,320 niferoedd a phob un o'r rhifau, pan fyddaf yn ceisio mewnosod nhw, yr wyf yn gweld eu bod yn 1129 01:01:09,320 --> 01:01:10,510 yn y safle cywir. 1130 01:01:10,510 --> 01:01:15,120 Nid oes rhaid i mi fynd yn gwirio'r holl arall rhifau yn y rhestr heb eu didoli. 1131 01:01:15,120 --> 01:01:17,170 Felly dyna pam y bydd yn n. 1132 01:01:17,170 --> 01:01:19,480 Gwneud synnwyr? 1133 01:01:19,480 --> 01:01:21,035 A beth yw theta? 1134 01:01:21,035 --> 01:01:23,410 >> CYNULLEIDFA: [Anghlywadwy]. 1135 01:01:23,410 --> 01:01:24,380 >> LUCAS: Beth, sori? 1136 01:01:24,380 --> 01:01:24,960 Ddweud eto. 1137 01:01:24,960 --> 01:01:25,666 >> CYNULLEIDFA: [Anghlywadwy]. 1138 01:01:25,666 --> 01:01:26,490 >> LUCAS: Yn union. 1139 01:01:26,490 --> 01:01:31,280 Fel y gallwch weld mai dim ond detholiad storio mewn Merge didoli cael thetas. 1140 01:01:31,280 --> 01:01:39,920 A dyna oherwydd dim ond theta sydd gennych os yw'r ddau Big O ac Omega yr un fath. 1141 01:01:39,920 --> 01:01:41,520 OK. 1142 01:01:41,520 --> 01:01:44,210 Ac yn olaf, uno fath yw mewn log n. 1143 01:01:44,210 --> 01:01:48,910 >> Ac yna, fel Dan yn dweud, Uno didoli yn fath o fel yr un ffordd ag y 1144 01:01:48,910 --> 01:01:50,320 ydych yn gwneud chwiliad deuaidd. 1145 01:01:50,320 --> 01:01:53,530 Felly, byddwch yn cael y rhestr. 1146 01:01:53,530 --> 01:01:55,170 A ydych yn mynd i dorri yn ei hanner. 1147 01:01:55,170 --> 01:02:00,580 Ac yna rydych yn eu torri mewn haneri llai. 1148 01:02:00,580 --> 01:02:01,730 Ac yna ydych yn eu cyfuno. 1149 01:02:01,730 --> 01:02:02,960 Rydych guys yn cofio bod, dde? 1150 01:02:02,960 --> 01:02:04,960 OK, fel yr oedd yn ei ddweud. 1151 01:02:04,960 --> 01:02:08,330 >> OK, pwyntyddion. 1152 01:02:08,330 --> 01:02:11,078 Felly beth yw pwyntydd? 1153 01:02:11,078 --> 01:02:12,050 >> CYNULLEIDFA: [Anghlywadwy]. 1154 01:02:12,050 --> 01:02:12,820 >> LUCAS: Mae cyfeiriad. 1155 01:02:12,820 --> 01:02:13,720 OK. 1156 01:02:13,720 --> 01:02:18,530 Gwn fod David yn dangos criw o fideos o binky a phethau pwyntio 1157 01:02:18,530 --> 01:02:19,080 ei gilydd. 1158 01:02:19,080 --> 01:02:22,960 Ond rwy'n hoffi meddwl am awgrymiadau fel dim ond o gyfeiriad. 1159 01:02:22,960 --> 01:02:26,110 Felly mae'n newidyn sydd yn mynd i storio cyfeiriad. 1160 01:02:26,110 --> 01:02:31,940 >> Felly, 'i' jyst newidyn arbennig hwn hynny yw pedwar bytes o hyd. 1161 01:02:31,940 --> 01:02:36,550 Cofiwch, y pwyntydd i unrhyw beth yn bob amser pedwar bytes hir ar gyfer ein 32-bit 1162 01:02:36,550 --> 01:02:39,370 peiriant felly yr achos gyda y peiriant. 1163 01:02:39,370 --> 01:02:41,920 1164 01:02:41,920 --> 01:02:47,050 A 'i jyst wedi y lleoliad o newidyn tu mewn iddo. 1165 01:02:47,050 --> 01:02:50,240 >> Iawn, felly mae cof hwn, yn y bôn. 1166 01:02:50,240 --> 01:02:57,420 Felly mae gan bob bloc o gof mewn gwirionedd yn cael label, sef cyfeiriad y 1167 01:02:57,420 --> 01:02:58,890 cof slotty. 1168 01:02:58,890 --> 01:03:02,370 Felly, mae hynny'n golygu y gallaf gael yn pwyntio pwyntydd i 1169 01:03:02,370 --> 01:03:03,380 unrhyw un o'r cyfeiriadau hyn. 1170 01:03:03,380 --> 01:03:09,930 Felly, y rheswm pam y byddwn yn defnyddio awgrymiadau yn os oes rhaid i mi gofio y lleoliad 1171 01:03:09,930 --> 01:03:12,300 bod newidyn penodol yn cof. 1172 01:03:12,300 --> 01:03:16,560 >> A ydych yn guys yn cofio mai un o'r rhai achosion a oedd os oes gen i swyddogaeth 1173 01:03:16,560 --> 01:03:20,820 os oes gen i mewn gwirionedd am i chi cyfnewid ar gyfer reals, Fi 'n weithredol 1174 01:03:20,820 --> 01:03:22,110 rhaid i anfon pwyntydd. 1175 01:03:22,110 --> 01:03:23,460 Nid y newidyn. 1176 01:03:23,460 --> 01:03:25,200 Ydych chi guys cofio hynny? 1177 01:03:25,200 --> 01:03:26,450 Mae'r between-- gwahaniaeth 1178 01:03:26,450 --> 01:03:33,350 1179 01:03:33,350 --> 01:03:34,120 beth yw'r enw? 1180 01:03:34,120 --> 01:03:36,010 Yn galw o ran gwerth a galw drwy gyfeirio, dde? 1181 01:03:36,010 --> 01:03:36,840 >> OK, yeah. 1182 01:03:36,840 --> 01:03:38,330 Felly ffoniwch yn ôl gwerth. 1183 01:03:38,330 --> 01:03:43,570 Pan fyddwch yn jyst anfon newidyn i swyddogaeth ydych ond yn anfon werth. 1184 01:03:43,570 --> 01:03:45,610 Felly, rydych yn anfon mewn gwirionedd copi o'r newidyn. 1185 01:03:45,610 --> 01:03:49,720 Ac ni allai eich rhaglen gofal llai am pe bai'r un newidyn mewn gwirionedd 1186 01:03:49,720 --> 01:03:51,650 gwneud copi. 1187 01:03:51,650 --> 01:03:56,330 >> Ac yn galw drwy gyfeirio yn golygu bod Im 'mewn gwirionedd yn anfon copi o'r 1188 01:03:56,330 --> 01:03:57,550 pwyntydd at y newidyn. 1189 01:03:57,550 --> 01:04:00,970 Felly, mae'n golygu fy mod yn anfon y lleoliad y newidyn. 1190 01:04:00,970 --> 01:04:04,440 Felly, yn synhwyro gen i'r lleoliad y amrywiol, pan fyddaf yn galw y swyddogaeth 1191 01:04:04,440 --> 01:04:09,700 gydag awgrymiadau, fy mod yn gallu mewn gwirionedd newid y data a oedd yn brif. 1192 01:04:09,700 --> 01:04:12,050 Gwneud synnwyr? 1193 01:04:12,050 --> 01:04:17,560 >> Er, mae'r pwyntydd yn gopi, mae'r dal i bwyntydd y cyfeiriad gwirioneddol o 1194 01:04:17,560 --> 01:04:20,090 y newidyn yr wyf am ei newid. 1195 01:04:20,090 --> 01:04:21,920 Gwneud synnwyr? 1196 01:04:21,920 --> 01:04:24,290 >> Felly mae creu awgrymiadau. 1197 01:04:24,290 --> 01:04:28,410 Cofiwch, mae'r pwyntydd bob amser yn cael y math ei fod yn pwyntio 1198 01:04:28,410 --> 01:04:29,890 i ac yna yn seren. 1199 01:04:29,890 --> 01:04:31,030 Ac yna byddwch yn rhoi yr enw. 1200 01:04:31,030 --> 01:04:35,765 Felly cofiwch fod pryd bynnag y byddwch yn cael beth bynnag seren, mae fel pwyntydd i 1201 01:04:35,765 --> 01:04:38,990 pa bynnag newidyn teipiwch eich bod wedi. 1202 01:04:38,990 --> 01:04:42,850 >> Felly, yma yn seren, er enghraifft, 'i' pwyntydd ac yn gyfanrif. 1203 01:04:42,850 --> 01:04:47,680 Ac yna seren torgoch yn pwyntydd seren torgoch ac yn y blaen. 1204 01:04:47,680 --> 01:04:47,960 Yeah? 1205 01:04:47,960 --> 01:04:52,710 >> CYNULLEIDFA: Beth os oes gennym pwyntydd i n i fod yn seren x. 1206 01:04:52,710 --> 01:04:55,255 Gwn fod yn creu pwyntydd i'r x. 1207 01:04:55,255 --> 01:04:59,432 A yw'n hefyd yn datgan x cyfanrif? 1208 01:04:59,432 --> 01:05:05,170 >> LUCAS: Iawn, felly pan fyddwch yn dweud n seren x, nad ydych yn creu pwyntydd i 1209 01:05:05,170 --> 01:05:06,000 x amrywiol. 1210 01:05:06,000 --> 01:05:08,170 Rydych yn creu pwyntydd x enwir. 1211 01:05:08,170 --> 01:05:09,396 >> CYNULLEIDFA: [Anghlywadwy]. 1212 01:05:09,396 --> 01:05:14,250 >> LUCAS: Felly, pan fyddaf yn dweud n seren x, rwy'n gan ddywedyd, hey, er cof, yr wyf i'n mynd i 1213 01:05:14,250 --> 01:05:16,390 gael un o'r rhain tri blwch. 1214 01:05:16,390 --> 01:05:20,750 Ac yr wyf i'n mynd i ddweud bod hynny yn mynd i fod x, sef 1215 01:05:20,750 --> 01:05:22,000 mynd i fod yn pwyntydd. 1216 01:05:22,000 --> 01:05:26,860 1217 01:05:26,860 --> 01:05:30,640 A rhywbeth diddorol am awgrymiadau yw ein bod yn dweud bod ganddyn nhw 1218 01:05:30,640 --> 01:05:32,620 4 bytes ar gyfer 32-bit peiriant. 1219 01:05:32,620 --> 01:05:36,320 A'r rheswm am hynny yw bod 4 bytes 32-darnau. 1220 01:05:36,320 --> 01:05:40,490 >> A pheiriannau sy'n 64 darnau mewn gwirionedd cael awgrymiadau cyfeiriadau 1221 01:05:40,490 --> 01:05:43,480 sydd yn 64 darnau hir. 1222 01:05:43,480 --> 01:05:49,820 Felly, 'i jyst yn golygu bod maint y cyfeiriadau yn y peiriant yn wahanol. 1223 01:05:49,820 --> 01:05:52,270 >> Felly Cyfeirnodi a Dereferencing. 1224 01:05:52,270 --> 01:05:54,310 Mae dau weithredwyr sy'n dylech gofio guys. 1225 01:05:54,310 --> 01:05:55,450 Y cyntaf yw ampersand. 1226 01:05:55,450 --> 01:05:56,810 Yr ail yn seren. 1227 01:05:56,810 --> 01:06:05,060 Peidiwch â drysu gan y seren, ac mae hyn seren oherwydd cofiwch fod, yn 1228 01:06:05,060 --> 01:06:06,950 yr achos hwn, mae gennych n seren. 1229 01:06:06,950 --> 01:06:08,700 >> Mae'n debyg i holl beth at ei gilydd. 1230 01:06:08,700 --> 01:06:10,720 Does dim seren ofod n. 1231 01:06:10,720 --> 01:06:12,070 Felly, mae'n golygu ei fod yn y math. 1232 01:06:12,070 --> 01:06:14,870 Cofiwch, pan fyddwch yn cael y seren amrywiol, rydych yn 1233 01:06:14,870 --> 01:06:16,230 siarad am y math. 1234 01:06:16,230 --> 01:06:20,540 >> Pan fyddwch wedi dim ond seren ac yna'r enw'r newidyn, mae'n golygu bod 1235 01:06:20,540 --> 01:06:24,100 eich bod yn dereferencing y pwyntydd, a oedd yn yn golygu eich bod yn edrych ar y 1236 01:06:24,100 --> 01:06:28,290 bwyntydd, dod o hyd i'r cyfeiriad 'i' pwyntio at, yn mynd i'r cyfeiriad hwnnw, 1237 01:06:28,290 --> 01:06:30,850 ac edrych ar pryd bynnag sydd gennych yno. 1238 01:06:30,850 --> 01:06:34,310 Felly, yr wyf yn dweud wrth fy myfyrwyr fod pan fydd gennych seren, dylech feddwl ei fod yn 1239 01:06:34,310 --> 01:06:36,850 y talfyriad o gyflwr gynnwys. 1240 01:06:36,850 --> 01:06:39,770 >> Felly, os oes gennych pwyntydd ac rydych gwneud pwyntydd seren, 'i' y 1241 01:06:39,770 --> 01:06:41,720 cynnwys y pwyntydd. 1242 01:06:41,720 --> 01:06:44,580 Felly, byddwch yn mynd i beth bynnag mae'n pwyntio at ac edrych ar y cynnwys cyson. 1243 01:06:44,580 --> 01:06:47,730 Ac mae'r ampersand yr un fath beth â chyfeiriad y. 1244 01:06:47,730 --> 01:06:52,560 >> Felly os oes gen i newidyn a-- fel, gadewch i ni ddweud fy mod yn gwneud int a hafal 3-- 1245 01:06:52,560 --> 01:06:56,900 os ydw i am ddod o hyd i gyfeiriad y amrywiol cof, a gaf fi wneud 1246 01:06:56,900 --> 01:06:58,240 ampersand a. 1247 01:06:58,240 --> 01:07:00,280 Felly mae'n gyfeiriad o a. 1248 01:07:00,280 --> 01:07:01,530 Gwneud synnwyr? 1249 01:07:01,530 --> 01:07:03,790 1250 01:07:03,790 --> 01:07:05,040 >> Felly dyma enghraifft. 1251 01:07:05,040 --> 01:07:08,370 1252 01:07:08,370 --> 01:07:11,530 Mae hyn ar goll int b ac c int. 1253 01:07:11,530 --> 01:07:16,520 Felly int yn hafal i 3 yn golygu bod Rydw i'n mynd i fynd i'r cof. 1254 01:07:16,520 --> 01:07:19,870 Ac yr wyf i'n mynd i ddod o hyd i slot a rhowch y rhif 3 yma. 1255 01:07:19,870 --> 01:07:22,200 >> Ac yna int b yn hafal 4. 1256 01:07:22,200 --> 01:07:23,100 Rydw i'n mynd i wneud yr un peth. 1257 01:07:23,100 --> 01:07:25,840 Ewch i gof ac yn rhoi nifer 4 mewn un o'r blychau. 1258 01:07:25,840 --> 01:07:27,100 Ac int yn dychwelyd 5. 1259 01:07:27,100 --> 01:07:29,740 Dod o hyd i flwch arall ac yn rhoi rhif 5. 1260 01:07:29,740 --> 01:07:36,160 >> Felly, beth yw y llinell hon yn ei wneud allan? n seren y flwyddyn hafal ampersand a. 1261 01:07:36,160 --> 01:07:37,800 Felly, yn gyntaf oll, n seren pa. 1262 01:07:37,800 --> 01:07:39,050 Beth sy'n cael ei wneud? 1263 01:07:39,050 --> 01:07:40,930 1264 01:07:40,930 --> 01:07:42,298 >> CYNULLEIDFA: [Anghlywadwy]. 1265 01:07:42,298 --> 01:07:47,890 >> LUCAS: Yeah, felly n seren y flwyddyn, yn gyntaf, datgan pwyntydd o'r enw y flwyddyn. 1266 01:07:47,890 --> 01:07:53,720 Ac yna mae'n aseinio gwerth y pwyntydd i fod yn y cyfeiriad o a. 1267 01:07:53,720 --> 01:07:55,790 Felly ampersand a. 1268 01:07:55,790 --> 01:07:58,510 Yna, os wyf yn gwneud pb seren, beth yw pb seren? 1269 01:07:58,510 --> 01:08:02,418 1270 01:08:02,418 --> 01:08:03,150 >> O, sori. 1271 01:08:03,150 --> 01:08:06,330 Mae hyn hefyd ar goll. pb seren n. 1272 01:08:06,330 --> 01:08:07,905 Yr wyf yn golygu pc seren. 1273 01:08:07,905 --> 01:08:11,200 Rydw i mor flin. 1274 01:08:11,200 --> 01:08:11,940 Mae yr un peth. 1275 01:08:11,940 --> 01:08:16,408 Ond yn awr yr wyf i'n dda on greu pwyntydd ib ac yna pwyntydd i c. 1276 01:08:16,408 --> 01:08:16,886 Yeah? 1277 01:08:16,886 --> 01:08:18,136 >> CYNULLEIDFA: [Anghlywadwy]? 1278 01:08:18,136 --> 01:08:25,490 1279 01:08:25,490 --> 01:08:26,670 >> LUCAS: Ydw. 1280 01:08:26,670 --> 01:08:32,630 Felly, os byddwch yn mynd i gof a byddwch yn mynd i y blwch sy'n dynodwr ar gyfer y flwyddyn, 1281 01:08:32,630 --> 01:08:37,149 eich bod yn wir yn mynd i gweld gyfeiriad o a. 1282 01:08:37,149 --> 01:08:38,399 OK? 1283 01:08:38,399 --> 01:08:42,970 1284 01:08:42,970 --> 01:08:43,300 Yeah? 1285 01:08:43,300 --> 01:08:45,605 >> CYNULLEIDFA: [Anghlywadwy]? 1286 01:08:45,605 --> 01:08:49,260 >> LUCAS: Yeah, pwyntydd yn gyfeiriad. 1287 01:08:49,260 --> 01:08:50,120 Peidiwch byth ag anghofio hynny. 1288 01:08:50,120 --> 01:08:52,800 Mae fel y rhai mwyaf pwysig rhan am awgrymiadau. 1289 01:08:52,800 --> 01:08:56,180 Mae storio a chyfeiriad i ryw newidyn. 1290 01:08:56,180 --> 01:08:56,890 Unrhyw beth arall? 1291 01:08:56,890 --> 01:08:58,370 Unrhyw gwestiynau eraill? 1292 01:08:58,370 --> 01:08:59,189 OK. 1293 01:08:59,189 --> 01:09:00,399 >> Felly Awgrymiadau a Arrays. 1294 01:09:00,399 --> 01:09:08,189 Cofiwch fod pan fyddaf yn int array 3, yn y bôn, yr hyn rwy'n ei wneud yw fy mod, caredig 1295 01:09:08,189 --> 01:09:12,779 o, gan ddatgan mewn pwyntydd. 1296 01:09:12,779 --> 01:09:18,960 Felly mae amrywiaeth yn fath o fel pwyntydd i lle penodol mewn cof yn yr wyf yn 1297 01:09:18,960 --> 01:09:21,999 ddyrannwyd tri slotiau ar gyfer gyfanrifau. 1298 01:09:21,999 --> 01:09:23,430 A yw hynny'n gwneud synnwyr? 1299 01:09:23,430 --> 01:09:30,250 >> Felly, pan fyddaf yn gwneud int array 3, yr hyn yr wyf i'n yn ei wneud, yn y bôn, yn creu tair 1300 01:09:30,250 --> 01:09:31,479 slotiau mewn cof. 1301 01:09:31,479 --> 01:09:33,899 Felly, Fi jyst dod o hyd tri slotiau mewn cof. 1302 01:09:33,899 --> 01:09:38,810 Felly os wyf yn ei wneud, yna, amrywiaeth seren, mae'n yn y bôn yn golygu cynnwys amrywiaeth, 1303 01:09:38,810 --> 01:09:46,180 sy'n golygu fy mod yn dileu y pwyntydd, yr wyf yn mynd i'r lle hwnnw ei fod yn pwyntio at, 1304 01:09:46,180 --> 01:09:47,939 ac yr wyf yn rhoi y rhif un. 1305 01:09:47,939 --> 01:09:53,729 >> Ac yna, os wyf yn gwneud amrywiaeth seren plws 1, dyna yr un peth â gwneud array 1306 01:09:53,729 --> 01:09:59,690 cromfachau un, a dim ond yn golygu fy mod yn mynd i y lle ei fod yn pwyntio at. 1307 01:09:59,690 --> 01:10:03,000 Ac yna y plws 1 wneuthuriadau mi symud un sefyllfa. 1308 01:10:03,000 --> 01:10:06,510 Felly, yr wyf yn mynd i'r swydd hon, mewn gwirionedd, a rhowch y rhif dau. 1309 01:10:06,510 --> 01:10:10,900 >> Ac yna, yn olaf, pan fyddaf yn ei wneud amrywiaeth ynghyd â 2, yr wyf yn mynd i ble 1310 01:10:10,900 --> 01:10:11,825 pwyntio array ar. 1311 01:10:11,825 --> 01:10:14,690 Ac yna yr wyf yn symud i flociau cof. 1312 01:10:14,690 --> 01:10:16,240 Ac yna yr wyf yn rhoi y rhif tri yma. 1313 01:10:16,240 --> 01:10:16,600 Yeah? 1314 01:10:16,600 --> 01:10:21,400 >> CYNULLEIDFA: arae Felly seren yn syml gan ddweud y pwynt cyntaf un. 1315 01:10:21,400 --> 01:10:25,090 A gallwch ychwanegu 1, dim ond oherwydd rydym yn unig mewn gwirionedd 1316 01:10:25,090 --> 01:10:27,295 gyfeirio at y cyfeiriad cyntaf. 1317 01:10:27,295 --> 01:10:28,545 >> LUCAS: Yeah. 1318 01:10:28,545 --> 01:10:32,720 1319 01:10:32,720 --> 01:10:36,020 Pam rydym yn, er enghraifft, yn dweud array 0, array 1, ac amrywiaeth 2? 1320 01:10:36,020 --> 01:10:38,970 1321 01:10:38,970 --> 01:10:42,790 I ddim yn dweud, pam yr ydych chi'n ei wneud 0, 1, 2, 3 yn lle 1, 2, 3? 1322 01:10:42,790 --> 01:10:46,550 Un o'r rhesymau yw, un, cyfrifiadur Mae'n well gan rhaglenwyr i ddechrau 1323 01:10:46,550 --> 01:10:47,750 cyfrif o 0. 1324 01:10:47,750 --> 01:10:52,370 Ddau yw oherwydd pan fyddwch yn gwneud amrywiaeth 0, 'i' yr un peth â gwneud array 1325 01:10:52,370 --> 01:10:56,330 ynghyd â 0, sy'n golygu fy mod yn mynd i y sefyllfa honno, ac nid wyf yn ei wneud 1326 01:10:56,330 --> 01:10:59,320 skip unrhyw blociau cof. 1327 01:10:59,320 --> 01:11:01,750 Felly, nid wyf yn symud unrhyw blociau cof. 1328 01:11:01,750 --> 01:11:02,015 Yeah? 1329 01:11:02,015 --> 01:11:03,265 >> CYNULLEIDFA: [Anghlywadwy]? 1330 01:11:03,265 --> 01:11:05,928 1331 01:11:05,928 --> 01:11:12,670 >> LUCAS: Felly mae hi wedi gofyn beth yw y gwahaniaeth rhwng gwneud 1332 01:11:12,670 --> 01:11:14,000 hwn neu wneud malloc. 1333 01:11:14,000 --> 01:11:17,550 Un o'r gwahaniaethau yw bod int array 3 yn creu 1334 01:11:17,550 --> 01:11:19,260 amrywiaeth ar y pentwr. 1335 01:11:19,260 --> 01:11:23,080 A phan wyf yn ei wneud malloc, mae'n creu ar y domen. 1336 01:11:23,080 --> 01:11:25,250 A yw hynny'n gwneud synnwyr? 1337 01:11:25,250 --> 01:11:28,870 >> Felly sut mae malloc yn gweithio mewn gwirionedd? 1338 01:11:28,870 --> 01:11:32,245 Felly pam hyd yn oed oes angen i ni ddefnyddio malloc? 1339 01:11:32,245 --> 01:11:35,730 1340 01:11:35,730 --> 01:11:39,700 Eich compiler fath o ffigurau allan bob y newidynnau yr ydych yn datgan. 1341 01:11:39,700 --> 01:11:44,040 Ac mae'n creu lle ar gyfer yr holl Ohonynt yn y pentwr. 1342 01:11:44,040 --> 01:11:47,180 Felly eich holl newidynnau yn mynd i fod yn rhywle yn y pentwr. 1343 01:11:47,180 --> 01:11:49,460 Felly dyma yw'r newidynnau amgylchedd. 1344 01:11:49,460 --> 01:11:53,850 >> Felly y bôn, lle ar gyfer newidynnau hynny mewn cof ei ddyrannu ar 1345 01:11:53,850 --> 01:11:55,080 llunio amser. 1346 01:11:55,080 --> 01:11:58,790 Felly, mae'n golygu bod eich cyfrifiadur wedi i adnabod pob un o'r newidynnau hynny 1347 01:11:58,790 --> 01:11:59,790 ymlaen llaw. 1348 01:11:59,790 --> 01:12:02,500 Nid oes angen i ni wybod pa werth ydych yn mynd i roi ynddynt. 1349 01:12:02,500 --> 01:12:05,490 Ond mae angen iddo wybod sut llawer o gof sydd ei angen arnoch. 1350 01:12:05,490 --> 01:12:09,380 >> Ond yn awr gadewch i ni ddweud hynny, er enghraifft, eich bod yn creu amrywiaeth neu gymryd 1351 01:12:09,380 --> 01:12:13,430 llinyn eich bod yn cymryd oddi wrth y defnyddiwr. 1352 01:12:13,430 --> 01:12:17,300 Dydych chi ddim yn gwybod pa mor hir y llinyn yn mynd i fod, er enghraifft. 1353 01:12:17,300 --> 01:12:20,600 Felly, nad ydych yn gwybod faint yn union blociau cof yr ydych yn dyrannu, dde? 1354 01:12:20,600 --> 01:12:24,120 >> Felly, nid yw'n wir yn gwneud synnwyr i chi ddweud roi 100 o nodau. 1355 01:12:24,120 --> 01:12:26,420 Ac yna beth os bydd y defnyddiwr yn ysgrifennu 150? 1356 01:12:26,420 --> 01:12:27,670 Rydych yn mynd i gael ei sgriwio. 1357 01:12:27,670 --> 01:12:30,160 1358 01:12:30,160 --> 01:12:34,620 >> Felly y bôn, ni allwch fod yn sicr o sut llawer o gof angen i chi ei ddyrannu 1359 01:12:34,620 --> 01:12:35,960 pan fyddwch yn llunio rhaglen. 1360 01:12:35,960 --> 01:12:38,240 'Ch jyst yn gwybod bod ar amser rhedeg. 1361 01:12:38,240 --> 01:12:39,950 Felly dyna pam yr ydych yn cael y domen. 1362 01:12:39,950 --> 01:12:47,610 Felly mae'r domen yn mynd i gael cof eich bod yn dyrannu yn ystod y 1363 01:12:47,610 --> 01:12:50,810 hyd y rhedeg rhaglen. 1364 01:12:50,810 --> 01:12:55,780 >> Felly y bôn, pan fyddwch yn gwneud malloc, beth rydych chi'n ei wneud yn dyrannu cof ar 1365 01:12:55,780 --> 01:13:00,160 Rhedeg, sy'n golygu eich bod yn penderfynu dde ar y hyn o bryd yr ydych 1366 01:13:00,160 --> 01:13:02,670 Dylai gael y cof. 1367 01:13:02,670 --> 01:13:04,210 Felly dyna pan fyddwch yn dyrannu iddo. 1368 01:13:04,210 --> 01:13:06,430 A yw hynny'n gwneud synnwyr? 1369 01:13:06,430 --> 01:13:11,690 >> Felly cofiwch, mae gan y das newidynnau sy'n cael eu creu ar amser Llunio. 1370 01:13:11,690 --> 01:13:14,560 Ac yna mae gan y domen newidynnau sy'n cael eu creu wrth i chi fynd 1371 01:13:14,560 --> 01:13:15,600 gyda malloc, er enghraifft. 1372 01:13:15,600 --> 01:13:16,850 >> CYNULLEIDFA: [Anghlywadwy]? 1373 01:13:16,850 --> 01:13:19,179 1374 01:13:19,179 --> 01:13:24,340 >> LUCAS: Felly GetString yn mynd i alw malloc. 1375 01:13:24,340 --> 01:13:26,710 Gadewch i mi siarad am malloc, ac 'N annhymerus' yn esbonio GetString. 1376 01:13:26,710 --> 01:13:32,000 Felly malloc yw yr un peth fel dyraniad cof. 1377 01:13:32,000 --> 01:13:34,600 Felly, mae'n mynd i ddyrannu cof ar y domen. 1378 01:13:34,600 --> 01:13:40,010 Ac mae'n mynd i ddychwelyd pwyntydd i lle y cof yn cael ei ddyrannu ar. 1379 01:13:40,010 --> 01:13:43,090 >> Felly pan fyddwch yn do-- 1380 01:13:43,090 --> 01:13:44,910 yma am example-- 1381 01:13:44,910 --> 01:13:45,830 seren pwyntydd n. 1382 01:13:45,830 --> 01:13:50,520 Ac yna pwyntydd hafal malloc faint o amser modfedd 10. 1383 01:13:50,520 --> 01:13:52,110 Rydw i'n creu pwyntydd. 1384 01:13:52,110 --> 01:13:59,020 Ac yna i ddim yn aseinio y pwyntydd i gwerth y pwyntydd y malloc 1385 01:13:59,020 --> 01:13:59,680 yn ei rhoi i mi. 1386 01:13:59,680 --> 01:14:04,150 >> Felly rwy'n gofyn i malloc gallwch ddyrannu lle ar gyfer 10 o gyfanrifau. 1387 01:14:04,150 --> 01:14:05,390 Dyna beth y mae'n ei ddweud. 1388 01:14:05,390 --> 01:14:09,020 A malloc yn rhoi i mi yn ôl i pwyntydd i'r lle hwnnw. 1389 01:14:09,020 --> 01:14:11,460 Gwneud synnwyr? 1390 01:14:11,460 --> 01:14:12,270 OK. 1391 01:14:12,270 --> 01:14:17,940 Rwy'n Ac GetString yw, yn y bôn, gwneud ffonio i malloc er mwyn i chi ddyrannu 1392 01:14:17,940 --> 01:14:21,680 cof yn ystod Rhedeg. 1393 01:14:21,680 --> 01:14:26,460 >> Cofiwch bob amser i wirio am null oherwydd bod malloc yn mynd i ddychwelyd null 1394 01:14:26,460 --> 01:14:28,200 os na ellir ei ddyrannu cof. 1395 01:14:28,200 --> 01:14:31,660 Dewch i ddweud eich bod yn gofyn am chwerthinllyd faint o gof. 1396 01:14:31,660 --> 01:14:33,950 Nid yw eich cyfrifiadur yn mynd i fod gallu dyrannu bod llawer. 1397 01:14:33,950 --> 01:14:36,410 >> Felly malloc yn unig yn mynd i ddychwelyd null. 1398 01:14:36,410 --> 01:14:42,210 Felly, bob amser yn cofio i wirio a yw'r pwyntydd eich bod chi gan malloc yw 1399 01:14:42,210 --> 01:14:45,640 null ai peidio oherwydd, os ydyw, gallech chi ei dereferencing pwyntydd a 1400 01:14:45,640 --> 01:14:48,340 gan achosi namau ochr. 1401 01:14:48,340 --> 01:14:50,930 Ac yn olaf, peidiwch ag anghofio eich cof rhad ac am ddim. 1402 01:14:50,930 --> 01:14:57,800 1403 01:14:57,800 --> 01:15:00,560 >> Malloc yn creu cof yn y domen. 1404 01:15:00,560 --> 01:15:03,436 Ac mae'n rhaid i chi i ryddhau y cof cyn i'r rhaglen ddod i ben. 1405 01:15:03,436 --> 01:15:05,370 OK, dyna i gyd i mi. 1406 01:15:05,370 --> 01:15:07,900 Mae'n ddrwg gennym, Rob. 1407 01:15:07,900 --> 01:15:07,950 Diolch. 1408 01:15:07,950 --> 01:15:09,878 >> [Cymeradwyaeth] 1409 01:15:09,878 --> 01:15:12,679 >> LUCAS: Unrhyw gwestiynau ddiwethaf cyn i Rob yn dod? 1410 01:15:12,679 --> 01:15:13,138 Na? 1411 01:15:13,138 --> 01:15:13,597 Yeah? 1412 01:15:13,597 --> 01:15:15,892 >> CYNULLEIDFA: Doeddwn i ddim yn gweld hyn yn un ar-lein. 1413 01:15:15,892 --> 01:15:17,269 Ydych chi wedi llwytho i fyny eto? 1414 01:15:17,269 --> 01:15:19,106 >> LUCAS: Yr wyf yn meddwl Dave yn llwytho i fyny yn fuan. 1415 01:15:19,106 --> 01:15:19,880 >> DAVE: Bydd yn cael eu postio. 1416 01:15:19,880 --> 01:15:20,310 >> LUCAS: Bydd yn ar-lein. 1417 01:15:20,310 --> 01:15:21,175 >> CYNULLEIDFA: Mae i fyny. 1418 01:15:21,175 --> 01:15:22,090 >> LUCAS: Mae i fyny? 1419 01:15:22,090 --> 01:15:23,157 OK. 1420 01:15:23,157 --> 01:15:23,644 Yeah? 1421 01:15:23,644 --> 01:15:27,053 >> CYNULLEIDFA: [Anghlywadwy]? 1422 01:15:27,053 --> 01:15:30,285 >> LUCAS: Ie, dylech rhad ac am ddim yr holl cof sy'n cael ei roi yn y domen. 1423 01:15:30,285 --> 01:15:31,535 >> CYNULLEIDFA: [Anghlywadwy]? 1424 01:15:31,535 --> 01:15:34,518 1425 01:15:34,518 --> 01:15:36,160 >> LUCAS: Ydw. 1426 01:15:36,160 --> 01:15:39,980 Unrhyw bryd bod gennych malloc ddiwylliant, dylai fod gennych ddiwylliant rhad ac am ddim 1427 01:15:39,980 --> 01:15:42,640 ar ôl i chi roi'r gorau i ddefnyddio y newidyn. 1428 01:15:42,640 --> 01:15:44,800 Felly malloc ac am ddim ar bob amser gyda'i gilydd. 1429 01:15:44,800 --> 01:15:45,410 Mae eu ffrindiau gorau. 1430 01:15:45,410 --> 01:15:46,720 Yeah. 1431 01:15:46,720 --> 01:15:47,970 Rob? 1432 01:15:47,970 --> 01:15:55,595 1433 01:15:55,595 --> 01:15:56,850 >> ROB: 'n annhymerus' yn mynd yn gyflym. 1434 01:15:56,850 --> 01:16:00,466 A hefyd bydd y fideo yn cael ei rhoi i fyny. 1435 01:16:00,466 --> 01:16:01,716 Mae gennyf y mic ar. 1436 01:16:01,716 --> 01:16:24,060 1437 01:16:24,060 --> 01:16:26,230 >> Iawn, felly wythnos pum stwff. 1438 01:16:26,230 --> 01:16:27,970 Y peth cyntaf sydd gennym yw y pentwr. 1439 01:16:27,970 --> 01:16:33,390 Felly cofiwch mai dim ond un pentwr ffrâm fesul swyddogaeth galwadau gweithredol. 1440 01:16:33,390 --> 01:16:34,710 Byddwn yn gweld hynny mewn eiliad. 1441 01:16:34,710 --> 01:16:37,850 A hefyd yn cofio beth sy'n mynd mewn gwirionedd ym mhob ffrâm pentwr yn mynd i fod 1442 01:16:37,850 --> 01:16:41,880 y newidynnau lleol ein swyddogaethau, y dadleuon sy'n cael eu pasio i mewn i'n 1443 01:16:41,880 --> 01:16:43,880 swyddogaethau, ynghyd ag un neu ddau bethau eraill nad ydych yn wir yn 1444 01:16:43,880 --> 01:16:45,260 Mae angen i chi boeni am. 1445 01:16:45,260 --> 01:16:50,950 >> Felly dyma rhaglen enghraifft os, rhybudd, prif yn printfing y ffurflen 1446 01:16:50,950 --> 01:16:52,830 gwerth y foo 4. 1447 01:16:52,830 --> 01:16:57,930 foo yn unig yn mynd i ddychwelyd y gwerth y bar 4 coma 6. 1448 01:16:57,930 --> 01:17:02,380 A bar yn mynd i osod rhai lleol amrywiol n gyfartal i 4 gwaith 6. 1449 01:17:02,380 --> 01:17:03,920 Ac yna dychwelyd n. 1450 01:17:03,920 --> 01:17:09,130 >> Felly gadewch i ni edrych ar y pentwr drwy gydol iteriad gwirioneddol y rhaglen hon. 1451 01:17:09,130 --> 01:17:10,500 Felly mae y waelod ein pentwr. 1452 01:17:10,500 --> 01:17:12,620 Cofiwch fod y pentwr yn tyfu i fyny. 1453 01:17:12,620 --> 01:17:15,370 Felly, ar waelod ein pentwr, rydym yn fod â ffrâm pentwr ar gyfer y prif. 1454 01:17:15,370 --> 01:17:17,000 Pan fydd y rhaglen yn dechrau, prif mae bob amser yn mynd i fod yn y 1455 01:17:17,000 --> 01:17:18,560 waelod ein pentwr. 1456 01:17:18,560 --> 01:17:20,880 >> A beth sydd y tu mewn i'n stacio ffrâm ar gyfer y prif? 1457 01:17:20,880 --> 01:17:23,810 Felly hyd yn oed er nad oes unrhyw leol newidynnau i'r prif, fel y dywedais o'r blaen, 1458 01:17:23,810 --> 01:17:29,670 rydym wedi argc a rgv cymryd lle tu mewn prif ffrâm pentwr. 1459 01:17:29,670 --> 01:17:33,260 Felly prif yn awr yn mynd i ffoniwch y foo swyddogaeth. 1460 01:17:33,260 --> 01:17:35,125 Ac mae hynny'n golygu foo yn mynd i cael ei ffrâm pentwr hun. 1461 01:17:35,125 --> 01:17:36,970 >> Felly nawr rydym yn tu mewn y foo swyddogaeth. 1462 01:17:36,970 --> 01:17:38,610 A beth sydd angen i fynd i mewn ffrâm stac foo yn? 1463 01:17:38,610 --> 01:17:41,100 Wel, foo mae dadl n. 1464 01:17:41,100 --> 01:17:45,440 Ac n yn hafal i 4 gan fod dyna beth main yn pasio fel dadl foo yn. 1465 01:17:45,440 --> 01:17:48,490 >> Felly nawr foo yn mynd i alw bar. 1466 01:17:48,490 --> 01:17:52,070 Beth sy'n cael bar mynd i gael y tu mewn o'i 'ffrâm pentwr? 1467 01:17:52,070 --> 01:17:55,610 Mae ganddo x yn hafal i 4 y gyfartal i chwech. 1468 01:17:55,610 --> 01:17:58,540 Nid dyna'r cyfan yr ydym yn mynd i gael yn y ffrâm pentwr oherwydd bar 1469 01:17:58,540 --> 01:18:00,580 Mae gan newidyn n lleol. 1470 01:18:00,580 --> 01:18:03,370 Ac n rydym yn mynd i osod hafal i 24. 1471 01:18:03,370 --> 01:18:05,750 >> Bar Felly nawr yn mynd i ddychwelyd n. 1472 01:18:05,750 --> 01:18:09,300 Felly bar yn dychwelyd 24 i y foo ffrâm pentwr. 1473 01:18:09,300 --> 01:18:12,560 Ac oherwydd bod y bar yn awr yn dychwelyd, y golygu ein bod popping y ffrâm pentwr 1474 01:18:12,560 --> 01:18:14,250 ar gyfer bar i ffwrdd o'r pentwr. 1475 01:18:14,250 --> 01:18:18,430 Felly yr holl cof bod y bar wedi bod ddefnyddio yn awr oddi ar y pentwr. 1476 01:18:18,430 --> 01:18:21,550 >> Yn awr, foo hefyd yn mynd i ddychwelyd 24 i brif. 1477 01:18:21,550 --> 01:18:25,470 Felly, yn awr y foo yn dychwelyd, mae'r cof y foo yn defnyddio yn ei ' 1478 01:18:25,470 --> 01:18:27,550 ffrâm pentwr wedi mynd hefyd. 1479 01:18:27,550 --> 01:18:29,660 Ac yn awr, prif yn mynd i alw printf. 1480 01:18:29,660 --> 01:18:31,660 Felly printf yn unig yw swyddogaeth arall. 1481 01:18:31,660 --> 01:18:35,320 Pan fyddwn yn galw printf, mae'n mynd i fod yn ffrâm pentwr arall ar gyfer y printf 1482 01:18:35,320 --> 01:18:36,470 swyddogaeth alwad. 1483 01:18:36,470 --> 01:18:37,990 >> Beth ydym yn pasio printf? 1484 01:18:37,990 --> 01:18:40,090 Dyna beth sy'n mynd i fynd ar ei ffrâm pentwr. 1485 01:18:40,090 --> 01:18:44,970 Ar y lleiaf, rydym yn pasio y cant i slaes n ac 1486 01:18:44,970 --> 01:18:47,180 y ddadl 24. 1487 01:18:47,180 --> 01:18:50,370 Gallai fod wedi mwy yn ei ffrâm stac os printf digwydd bod yn defnyddio rhai 1488 01:18:50,370 --> 01:18:51,200 newidynnau lleol. 1489 01:18:51,200 --> 01:18:51,920 Nid ydym yn gwybod. 1490 01:18:51,920 --> 01:18:53,810 >> Ond yr holl sy'n mynd mewn printf yn stacio ffrâm. 1491 01:18:53,810 --> 01:18:55,740 Mae'n mynd i gyflawni'r printf. 1492 01:18:55,740 --> 01:18:56,830 Yna printf ei wneud. 1493 01:18:56,830 --> 01:18:57,820 Bydd yn dychwelyd. 1494 01:18:57,820 --> 01:18:58,960 Yn olaf, prif yn cael ei wneud. 1495 01:18:58,960 --> 01:18:59,860 Bydd prif dychwelyd. 1496 01:18:59,860 --> 01:19:02,020 Ac yna mae ein rhaglen yn cael ei wneud. 1497 01:19:02,020 --> 01:19:02,480 Yeah? 1498 01:19:02,480 --> 01:19:04,505 >> CYNULLEIDFA: A ydych yn gweld [Anghlywadwy] 1499 01:19:04,505 --> 01:19:05,900 dadleuon [Anghlywadwy] 1500 01:19:05,900 --> 01:19:06,830 paramedrau? 1501 01:19:06,830 --> 01:19:09,970 >> ROB: Felly, mae gwahaniaeth cynnil rhwng dadleuon a paramedrau. 1502 01:19:09,970 --> 01:19:14,400 Ac yn wir, yn siarad yn gyffredin, mae pobl yn tueddu i ddim ond cymysgu i fyny drwy'r amser. 1503 01:19:14,400 --> 01:19:17,550 Ond paramedrau yw'r ffurfiol enwi o'r pethau. 1504 01:19:17,550 --> 01:19:20,180 >> Felly argc a argv yw'r paramedrau i'r prif. 1505 01:19:20,180 --> 01:19:23,440 Dadleuon yn y byddwch yn ei pasio i mewn fel paramedrau hynny. 1506 01:19:23,440 --> 01:19:28,340 Felly yno pan fyddaf yn galw foo o 4, 4 yw'r ddadl dw i'n pasio mewn. 1507 01:19:28,340 --> 01:19:31,460 A'r n paramedr, tu mewn foo, yn cymryd ar werth 4 1508 01:19:31,460 --> 01:19:32,880 ers 4 oedd y ddadl. 1509 01:19:32,880 --> 01:19:35,826 >> CYNULLEIDFA: [Anghlywadwy]? 1510 01:19:35,826 --> 01:19:37,880 >> ROB: n yn newidyn lleol i wahardd. 1511 01:19:37,880 --> 01:19:41,420 1512 01:19:41,420 --> 01:19:44,960 n yn dal yn lleol i foo, ond mae'n paramedr i foo. 1513 01:19:44,960 --> 01:19:48,190 Dyw hi ddim yn newidyn lleol. 1514 01:19:48,190 --> 01:19:48,546 Yeah? 1515 01:19:48,546 --> 01:19:51,180 >> CYNULLEIDFA: [Anghlywadwy]? 1516 01:19:51,180 --> 01:19:55,400 >> ROB: foo yn unig yw galw bar a dychwelyd beth bynnag ffurflenni bar. 1517 01:19:55,400 --> 01:19:56,786 >> CYNULLEIDFA: [Anghlywadwy]? 1518 01:19:56,786 --> 01:19:59,591 >> ROB: Yeah, dim ond i weld lluosog stac fframiau. 1519 01:19:59,591 --> 01:20:00,082 Yeah? 1520 01:20:00,082 --> 01:20:03,519 >> CYNULLEIDFA: Pam oedd foo o'r enw cyn printf? 1521 01:20:03,519 --> 01:20:05,920 >> ROB: Pam oedd foo alw cyn printf? 1522 01:20:05,920 --> 01:20:10,740 Er mwyn i mi gael, yn lle hynny, gwneud rhywbeth yn fel int x hafal foo o 4 1523 01:20:10,740 --> 01:20:12,980 ac yna x hargraffu. 1524 01:20:12,980 --> 01:20:17,900 Ond yn lle hynny, yr wyf yn cyfuno y swyddogaeth galwch i mewn i'r ddadl printf. 1525 01:20:17,900 --> 01:20:23,670 >> Ond sylwi na allwn mewn gwirionedd gweithredu yr alwad i printf hyd nes y byddwn 1526 01:20:23,670 --> 01:20:25,610 chyfrif i maes beth foo o 4 yw. 1527 01:20:25,610 --> 01:20:27,480 Felly, rydym yn mynd i werthuso hyn. 1528 01:20:27,480 --> 01:20:32,504 A dim ond unwaith y bydd hynny wedi ei wneud yn mynd i ddod yn ôl a gwerthuso'r hyn. 1529 01:20:32,504 --> 01:20:32,990 Yeah? 1530 01:20:32,990 --> 01:20:37,364 >> CYNULLEIDFA: Gan fod y ddau bar [Anghlywadwy] 1531 01:20:37,364 --> 01:20:41,738 gwerth, pam nad oes gennym ni [Anghlywadwy]? 1532 01:20:41,738 --> 01:20:44,400 >> ROB: Maent yn llwyr y dylai fod yn int. 1533 01:20:44,400 --> 01:20:46,260 Nid yw ei ddal dros tocynnau lluosog. 1534 01:20:46,260 --> 01:20:49,010 Felly, dylai fod yn bar int a int foo gan fod y ddau o'r rhai 1535 01:20:49,010 --> 01:20:50,460 yn dychwelyd cyfanrifau. 1536 01:20:50,460 --> 01:20:54,214 Ddi-rym dim ond os nad ydynt yn mynd i ddychwelyd gwerthoedd gwirioneddol. 1537 01:20:54,214 --> 01:20:54,692 Yeah? 1538 01:20:54,692 --> 01:20:58,038 >> CYNULLEIDFA: Os oedd gennych linell uwchben dychwelyd, [Anghlywadwy]? 1539 01:20:58,038 --> 01:21:01,862 1540 01:21:01,862 --> 01:21:03,730 >> ROB: Mae llinell uwchben y ffurflen? 1541 01:21:03,730 --> 01:21:04,410 >> CYNULLEIDFA: Yeah. 1542 01:21:04,410 --> 01:21:10,780 Fel pe baech yn gwneud printf a [Anghlywadwy], byddai'n argraffu ddwywaith? 1543 01:21:10,780 --> 01:21:12,992 >> ROB: Felly, tu mewn foo? 1544 01:21:12,992 --> 01:21:15,945 Pe bai gennym printf dde yma? 1545 01:21:15,945 --> 01:21:16,750 >> CYNULLEIDFA: Yeah. 1546 01:21:16,750 --> 01:21:19,510 >> ROB: Felly, os oedd gennym hawl printf yma, byddai'n argraffu unwaith. 1547 01:21:19,510 --> 01:21:23,400 Gan ein bod yn galw foo unwaith i'r dde yma, yna byddwn yn cyrraedd y printf. 1548 01:21:23,400 --> 01:21:24,620 Yna byddwn yn galw bar. 1549 01:21:24,620 --> 01:21:25,710 Ac yna bydd foo dychwelyd. 1550 01:21:25,710 --> 01:21:26,275 A dyna ni. 1551 01:21:26,275 --> 01:21:30,985 Byddwn ond byth yn dod ar draws y printf unwaith. 1552 01:21:30,985 --> 01:21:31,482 Yeah? 1553 01:21:31,482 --> 01:21:32,973 >> CYNULLEIDFA: [Anghlywadwy] 1554 01:21:32,973 --> 01:21:37,950 printf galw foo oherwydd ein bod yn gyntaf galw printf ac yna rydym yn pasio 1555 01:21:37,950 --> 01:21:38,580 y dadleuon. 1556 01:21:38,580 --> 01:21:40,960 >> ROB: Felly, mewn theori, nid yw printf galw foo? 1557 01:21:40,960 --> 01:21:42,220 Felly dim. 1558 01:21:42,220 --> 01:21:47,360 Dim ond y drefn y c yn mynd i gyflawni pethau hyn yw, cyn i gallwn 1559 01:21:47,360 --> 01:21:49,800 yn galw swyddogaeth, yr holl ddadleuon i'r swyddogaeth rhaid i 1560 01:21:49,800 --> 01:21:51,600 cael ei werthuso yn gyfan gwbl. 1561 01:21:51,600 --> 01:21:53,540 Felly, mae hyn yn ei werthuso yn gyfan gwbl? 1562 01:21:53,540 --> 01:21:54,610 Ie, dim ond llinyn. 1563 01:21:54,610 --> 01:21:55,480 Mai dim ond gwerth. 1564 01:21:55,480 --> 01:21:57,200 >> Yna, mae'n rhaid i ni yn llwyr gwerthuso'r hyn. 1565 01:21:57,200 --> 01:21:59,720 Ar ôl gwneud hyn, erbyn hyn i gyd o ei ddadleuon yn cael eu gwerthuso. 1566 01:21:59,720 --> 01:22:01,982 Ac yn awr gallwn wneud y ffonio i printf. 1567 01:22:01,982 --> 01:22:02,478 Yeah? 1568 01:22:02,478 --> 01:22:03,966 >> CYNULLEIDFA: Un cwestiwn. 1569 01:22:03,966 --> 01:22:06,942 Os oes gennych swyddogaeth ddi-rym, rhaid gennych chi hanner colon dychwelyd? 1570 01:22:06,942 --> 01:22:09,910 >> ROB: Nid ydych yn gwneud hanner colon dychwelyd os oes gennych swyddogaeth ddi-rym. 1571 01:22:09,910 --> 01:22:13,370 1572 01:22:13,370 --> 01:22:14,780 OK. 1573 01:22:14,780 --> 01:22:15,830 Felly nawr mae rhai pethau domen. 1574 01:22:15,830 --> 01:22:19,640 Felly domen yw sut yr ydym yn mynd i ddelio gyda rheolaeth cof deinamig. 1575 01:22:19,640 --> 01:22:23,100 Ac mae hyn yn cyferbynnu yn uniongyrchol gyda'r stac y byddem yn galw awtomatig 1576 01:22:23,100 --> 01:22:24,100 rheoli cof. 1577 01:22:24,100 --> 01:22:27,140 >> Felly, ar y pentwr, byddwch byth yn cael i ymdrin â sut y mae'r newidynnau lleol 1578 01:22:27,140 --> 01:22:30,400 yn cael eu gwthio a popped oddi ar bob fframiau hyn stac a'r holl bethau hynny. 1579 01:22:30,400 --> 01:22:31,070 Nid oes rhaid i chi boeni am y peth. 1580 01:22:31,070 --> 01:22:32,070 Mae'n awtomatig. 1581 01:22:32,070 --> 01:22:36,990 Felly mae'r domen yn llaw. 1582 01:22:36,990 --> 01:22:38,070 Ac mae'r [Anghlywadwy] 1583 01:22:38,070 --> 01:22:41,260 dod o swyddogaethau hyn malloc ac am ddim. 1584 01:22:41,260 --> 01:22:43,550 >> Felly dyma rhaglen arall. 1585 01:22:43,550 --> 01:22:47,145 Yr unig beth rydym yn ei wneud yn mallocing yn gyfanrif. 1586 01:22:47,145 --> 01:22:49,360 Rydym yn storio mewn seren x. 1587 01:22:49,360 --> 01:22:52,520 Wrth gwrs, mae'n rhaid i ni wirio i weld os yw x yn null. 1588 01:22:52,520 --> 01:22:56,400 Yna, rydym yn mynd i jyst yn gosod yr hyn x yn pwyntio at i 50. 1589 01:22:56,400 --> 01:23:00,350 1590 01:23:00,350 --> 01:23:03,260 Argraffu pa x yn pwyntio at, print x, ac yna am ddim x. 1591 01:23:03,260 --> 01:23:08,920 >> Felly, sut mae hyn mewn gwirionedd yn mynd i edrych os edrychwn ar ein pentwr a domen? 1592 01:23:08,920 --> 01:23:10,950 Fe wnawn ni gychwyn eto. 1593 01:23:10,950 --> 01:23:12,580 Mae'r waelod ein pentwr fel o'r blaen. 1594 01:23:12,580 --> 01:23:15,930 Cofiwch fod ti bentyrru yn uniongyrchol gwrthwynebu'r pentwr? 1595 01:23:15,930 --> 01:23:18,850 Felly, rydym yn mynd i gael y ben ein domen i fyny yno. 1596 01:23:18,850 --> 01:23:22,590 >> Felly waelod ein pentwr, rydym wedi ein ffrâm pentwr ar gyfer y prif. 1597 01:23:22,590 --> 01:23:28,000 Mae wedi y lle ar gyfer argc, argv, ac yr ydym Bellach mae gan newidyn x lleol, sy'n 1598 01:23:28,000 --> 01:23:30,030 yn seren int. 1599 01:23:30,030 --> 01:23:32,240 Felly, rydym yn mynd i ailadrodd drwy'r rhaglen hon. 1600 01:23:32,240 --> 01:23:34,420 Y peth cyntaf sydd gennym yw alwad i malloc. 1601 01:23:34,420 --> 01:23:36,250 >> Felly rydym yn gwneud galwad i malloc. 1602 01:23:36,250 --> 01:23:37,100 Malloc yn swyddogaeth. 1603 01:23:37,100 --> 01:23:38,770 Mae'n mynd i gael ffrâm pentwr. 1604 01:23:38,770 --> 01:23:40,180 Beth rydym yn mynd heibio i malloc? 1605 01:23:40,180 --> 01:23:41,610 Mae hynny'n mynd i fynd y tu mewn y ffrâm pentwr. 1606 01:23:41,610 --> 01:23:45,130 Rydym yn pasio maint y n, sydd 4. 1607 01:23:45,130 --> 01:23:49,700 Felly mae hynny'n ei drosglwyddo i malloc. 1608 01:23:49,700 --> 01:23:50,910 >> Beth mae malloc yn ei wneud? 1609 01:23:50,910 --> 01:23:53,820 Mae'n cydio ni ychydig o le ar y domen. 1610 01:23:53,820 --> 01:23:55,320 Felly, rydyn ni'n mynd i fynd i'r domen. 1611 01:23:55,320 --> 01:23:57,990 Ac rydym yn mynd i chrafangia 4 bytes o'r domen. 1612 01:23:57,990 --> 01:24:01,500 Felly gadewch i ni jyst roi y cyfeiriad mympwyol. 1613 01:24:01,500 --> 01:24:06,680 0x123 Dim ond esgus bod yn cyfeiriad sydd ar y domen. 1614 01:24:06,680 --> 01:24:12,300 >> Felly beth mewn gwirionedd y tu mewn o hynny ranbarth o gof yn y cyfeiriad Ox123? 1615 01:24:12,300 --> 01:24:13,080 Garbage. 1616 01:24:13,080 --> 01:24:15,270 Felly, nid ydym wedi ei storio unrhyw beth ynddo. 1617 01:24:15,270 --> 01:24:18,830 Hyd cyn belled ag y gwyddom, mae'n Gallai fod yn unrhyw beth. 1618 01:24:18,830 --> 01:24:20,560 Ni ddylech gymryd yn ganiataol ei fod yn sero. 1619 01:24:20,560 --> 01:24:23,870 Mae'n fwyaf tebygol o beidio sero. 1620 01:24:23,870 --> 01:24:26,260 >> Ffurflenni Felly nawr malloc. 1621 01:24:26,260 --> 01:24:28,020 A beth ydym yn ei wneud pan fydd malloc dychwelyd? 1622 01:24:28,020 --> 01:24:29,800 Rydym yn gosod yr hyn y mae'n dychwelyd. 1623 01:24:29,800 --> 01:24:32,290 Rydym yn gosod x hafal i'r hyn ei fod yn dychwelyd. 1624 01:24:32,290 --> 01:24:33,690 Felly beth sy'n ei dychwelyd? 1625 01:24:33,690 --> 01:24:38,150 Mae'n 0x123 dychwelyd ers hynny yw'r gyfeiriad y bloc o gof ei fod yn 1626 01:24:38,150 --> 01:24:40,850 dim ond eu dyrannu yn y domen. 1627 01:24:40,850 --> 01:24:47,160 >> Felly dychwelyd 0x123 x yn awr yn mynd i gael eu gosod cyfartal i 0x123 sydd, ar ffurf lluniau, 1628 01:24:47,160 --> 01:24:52,940 rydym yn aml yn tynnu fel x cael go iawn saeth yn pwyntio at y bloc. 1629 01:24:52,940 --> 01:24:55,820 Ond mae x yn unig yw storio y cyfeiriad hwnnw. 1630 01:24:55,820 --> 01:24:58,670 Felly, yn awr mae'n rhaid i ni wirio os yw x yn null. 1631 01:24:58,670 --> 01:24:59,120 Dyw hi ddim yn null. 1632 01:24:59,120 --> 01:25:02,170 Rydym yn esgus bod y malloc llwyddo. 1633 01:25:02,170 --> 01:25:04,950 >> Felly nawr seren x yn hafal i 50. 1634 01:25:04,950 --> 01:25:08,450 Felly seren yn cofio mae'n golygu mynd i'r cyfeiriad hwnnw. 1635 01:25:08,450 --> 01:25:12,700 Felly 0x123 Rydym yn mynd i mynd i'r cyfeiriad hwnnw. 1636 01:25:12,700 --> 01:25:14,660 Felly mae hynny'n dod â ni i fyny yno. 1637 01:25:14,660 --> 01:25:16,310 Beth ydym yn ei wneud yn y cyfeiriad hwnnw? 1638 01:25:16,310 --> 01:25:19,020 Rydym yn storio 50. 1639 01:25:19,020 --> 01:25:22,500 >> Felly, ar ôl y llinell hon, dyna beth mae pethau yn mynd i edrych fel. 1640 01:25:22,500 --> 01:25:24,640 Felly, yn awr bellach mae'n garbage i fyny yno. 1641 01:25:24,640 --> 01:25:28,910 Nawr rydym yn gwybod bod 50 yn y gyfeiriad penodol oherwydd 1642 01:25:28,910 --> 01:25:32,410 rydym osod i hynny. 1643 01:25:32,410 --> 01:25:32,790 OK? 1644 01:25:32,790 --> 01:25:34,370 Felly nawr rydym yn mynd i argraffu f. 1645 01:25:34,370 --> 01:25:38,490 >> Felly, yn gyntaf rydym yn mynd i argraffu seren x. 1646 01:25:38,490 --> 01:25:39,640 Felly beth yw seren x? 1647 01:25:39,640 --> 01:25:44,300 Unwaith eto, seren x yn golygu mynd i'r peth bod x yn pwyntio i. 1648 01:25:44,300 --> 01:25:47,140 Felly mae x yn storio 0x123 Ewch i hynny. 1649 01:25:47,140 --> 01:25:48,490 Rydym yn cael 50. 1650 01:25:48,490 --> 01:25:50,540 Felly argraffu f hynny. 1651 01:25:50,540 --> 01:25:54,900 Ac mae hynny'n golygu ei fod yn mynd i argraffu 50. 1652 01:25:54,900 --> 01:25:56,850 Ac yna sy'n dychwelyd. 1653 01:25:56,850 --> 01:25:58,340 >> Ac yna mae gennym yr ail printf. 1654 01:25:58,340 --> 01:25:59,370 Rydym yn awr yn y cant t. 1655 01:25:59,370 --> 01:26:01,680 Os nad ydych wedi ei weld, dyna yn union sut yr ydych yn argraffu pwyntydd. 1656 01:26:01,680 --> 01:26:04,960 Felly mae gennym fi cant, cant f, a phawb o'r rhai sydd eisoes. 1657 01:26:04,960 --> 01:26:07,160 Felly cant p, argraffu pwyntydd. 1658 01:26:07,160 --> 01:26:08,920 >> Felly mae x yn pwyntydd. 1659 01:26:08,920 --> 01:26:13,440 Felly, os ydym yn mynd i argraffu x ei hun, rydym yn argraffu hyn sydd mewn gwirionedd y tu mewn 1660 01:26:13,440 --> 01:26:19,220 x, sef 0x123 Felly, y cyntaf print f yn mynd i argraffu 50. 1661 01:26:19,220 --> 01:26:23,620 Mae'r ail print f yn mynd i argraffu 0x123 Yeah? 1662 01:26:23,620 --> 01:26:27,460 >> CYNULLEIDFA: Ydych chi'n defnyddio y cant x i argraffu pwyntydd? 1663 01:26:27,460 --> 01:26:31,200 >> ROB: Felly, ydych chi'n defnyddio y cant x i argraffu pwyntydd? 1664 01:26:31,200 --> 01:26:38,350 Felly gallwch ond cant x yn unig, yn gyffredinol, at ei debyg os oes gennych rai 1665 01:26:38,350 --> 01:26:40,325 cyfanrif ac rydych eisiau argraffu fel hecsadegol. 1666 01:26:40,325 --> 01:26:43,250 1667 01:26:43,250 --> 01:26:44,880 Dyna dim ond sut yr ydych yn gwneud hynny. 1668 01:26:44,880 --> 01:26:47,160 >> Tra, byddai cant d argraffu fel degol. 1669 01:26:47,160 --> 01:26:50,310 Dyna yr oeddem yn cael y cant d. fi yn unig gyfanrif. 1670 01:26:50,310 --> 01:26:52,690 cant p yn benodol am awgrymiadau. 1671 01:26:52,690 --> 01:26:54,060 >> Felly mae x yn pwyntydd. 1672 01:26:54,060 --> 01:26:56,360 Rydym eisiau defnyddio cant t. 1673 01:26:56,360 --> 01:26:57,937 Ond gallai cant x weithio. 1674 01:26:57,937 --> 01:26:58,414 Yeah? 1675 01:26:58,414 --> 01:26:59,664 >> CYNULLEIDFA: [Anghlywadwy]? 1676 01:26:59,664 --> 01:27:04,138 1677 01:27:04,138 --> 01:27:05,388 >> ROB: Yeah. 1678 01:27:05,388 --> 01:27:07,870 1679 01:27:07,870 --> 01:27:13,440 O leiaf ar gyfer hyn call-- felly rwy'n nid oedd yn cynnwys ei fod yn fan hyn. 1680 01:27:13,440 --> 01:27:19,850 Ond y ddau dadleuon o reidrwydd tu mewn ffrâm pentwr hwn 1681 01:27:19,850 --> 01:27:23,040 ynghyd ag unrhyw newidynnau lleol printf digwydd i gael ei defnyddio. 1682 01:27:23,040 --> 01:27:27,020 Ac yna yr alwad nesaf i printf nawr tu mewn printf ffrâm pentwr yn 1683 01:27:27,020 --> 01:27:33,960 cant p slaes n a beth bynnag mae'r werth x yw, sef 0x123. 1684 01:27:33,960 --> 01:27:34,425 Yeah? 1685 01:27:34,425 --> 01:27:35,675 >> CYNULLEIDFA: [Anghlywadwy]? 1686 01:27:35,675 --> 01:27:38,145 1687 01:27:38,145 --> 01:27:40,880 >> ROB: Bydd yn argraffu rhywbeth sy'n edrych fel hyn. 1688 01:27:40,880 --> 01:27:41,846 >> CYNULLEIDFA: [Anghlywadwy]. 1689 01:27:41,846 --> 01:27:44,510 >> ROB: Felly mae'n printiau ar ffurf cyfeiriad. 1690 01:27:44,510 --> 01:27:47,003 Mae'n edrych fel cyfeiriad. 1691 01:27:47,003 --> 01:27:47,494 Yeah? 1692 01:27:47,494 --> 01:27:49,458 >> CYNULLEIDFA: [Anghlywadwy]? 1693 01:27:49,458 --> 01:27:51,075 >> ROB: Pam yw beth? 1694 01:27:51,075 --> 01:27:52,920 >> CYNULLEIDFA: [Anghlywadwy]? 1695 01:27:52,920 --> 01:27:55,240 >> ROB: Pam mae pwyntydd hon 4 bytes? 1696 01:27:55,240 --> 01:27:58,500 Felly, mae criw cyfan o 0 o flaen hyn. 1697 01:27:58,500 --> 01:28:03,740 Felly mae'n wirioneddol 0x0000000123. 1698 01:28:03,740 --> 01:28:06,510 Ar system 64-bit, byddai criw cyfan o fwy o sero. 1699 01:28:06,510 --> 01:28:11,410 1700 01:28:11,410 --> 01:28:11,900 Yeah? 1701 01:28:11,900 --> 01:28:13,150 >> CYNULLEIDFA: [Anghlywadwy]. 1702 01:28:13,150 --> 01:28:17,290 1703 01:28:17,290 --> 01:28:21,130 >> ROB: Felly, y printf cyntaf yn mynd i print-- 1704 01:28:21,130 --> 01:28:21,980 >> CYNULLEIDFA: [Anghlywadwy]. 1705 01:28:21,980 --> 01:28:24,420 >> ROB: Ie, mae'n mynd i argraffu pa x yn pwyntio at. 1706 01:28:24,420 --> 01:28:27,030 1707 01:28:27,030 --> 01:28:29,070 Seren yn dweud beth yw hyn beth bwyntio at. 1708 01:28:29,070 --> 01:28:30,300 Chrafangia '. 1709 01:28:30,300 --> 01:28:31,455 Felly beth sy'n ei pwyntio i? 1710 01:28:31,455 --> 01:28:31,850 50. 1711 01:28:31,850 --> 01:28:32,410 Chrafangia '. 1712 01:28:32,410 --> 01:28:33,390 Dyna beth yr ydym yn mynd i argraffu. 1713 01:28:33,390 --> 01:28:37,020 Tra, yr un nesaf, rydym yn dim ond argraffu x ei hun. 1714 01:28:37,020 --> 01:28:38,850 Beth yw tu mewn f? 1715 01:28:38,850 --> 01:28:43,710 0x123. 1716 01:28:43,710 --> 01:28:44,500 OK. 1717 01:28:44,500 --> 01:28:46,620 >> Ac yna, yn olaf, mae gennym y rhad ac am ddim. 1718 01:28:46,620 --> 01:28:48,040 Beth rydym yn pasio am ddim? 1719 01:28:48,040 --> 01:28:49,470 Rydym yn pasio x. 1720 01:28:49,470 --> 01:28:52,380 Bod tro rwy'n ei arddangos mewn gwirionedd ei fod yn y ffrâm pentwr. 1721 01:28:52,380 --> 01:28:56,370 >> Felly, rydym yn mynd heibio i'r gwerth 0x123 am ddim. 1722 01:28:56,370 --> 01:28:59,070 Felly nawr ddim yn gwybod, i gyd yn iawn, Rhaid i mi fynd i fyny at y domen 1723 01:28:59,070 --> 01:29:00,050 a bod y cof am ddim. 1724 01:29:00,050 --> 01:29:03,920 Nid yw bellach yn ei ddefnyddio beth ar gyfeiriad 0x123. 1725 01:29:03,920 --> 01:29:07,010 >> Felly, rhad ac am ddim yn mynd i ryddhau hynny gan y domen. 1726 01:29:07,010 --> 01:29:09,490 Nawr ein tomen yn wag eto. 1727 01:29:09,490 --> 01:29:11,120 Nid oes gennym unrhyw gollwng cof. 1728 01:29:11,120 --> 01:29:12,940 Yn awr bydd yn rhad ac am ddim yn dychwelyd. 1729 01:29:12,940 --> 01:29:16,130 Hysbysiad bod x yn dal 0x123. 1730 01:29:16,130 --> 01:29:18,240 Ond nid yw hynny bellach yn atgof dilys. 1731 01:29:18,240 --> 01:29:21,220 1732 01:29:21,220 --> 01:29:23,986 Dylem bellach Dadgyfeirio x. 1733 01:29:23,986 --> 01:29:24,440 Yeah? 1734 01:29:24,440 --> 01:29:27,240 >> CYNULLEIDFA: Ydy dychwelyd 0 yn ddi-waith? 1735 01:29:27,240 --> 01:29:28,290 >> ROB: A yw returen 0 yn ddi-waith? 1736 01:29:28,290 --> 01:29:31,110 Ydw. 1737 01:29:31,110 --> 01:29:33,950 Rydym yn unig yn rhoi hynny yno oherwydd mae gennym dychwelyd un ar gyfer yr awyr. 1738 01:29:33,950 --> 01:29:36,830 Felly, mae fel, ie, yn gadael cynnwys y ffurflen 0. 1739 01:29:36,830 --> 01:29:37,310 Yeah? 1740 01:29:37,310 --> 01:29:38,560 >> CYNULLEIDFA: [Anghlywadwy]? 1741 01:29:38,560 --> 01:29:42,110 1742 01:29:42,110 --> 01:29:45,580 >> ROB: Felly, ar ôl x rhad ac am ddim, beth sy'n digwydd os rydym yn ceisio Dadgyfeirio pwyntydd? 1743 01:29:45,580 --> 01:29:47,240 Mae'n bosibl nad oes unrhyw beth yn mynd o'i le. 1744 01:29:47,240 --> 01:29:49,330 Mae'n bosibl y byddwn yn dal i gael 50. 1745 01:29:49,330 --> 01:29:53,590 >> Mae'n bosib, hefyd, fod y cof yn cael ei ddefnyddio yn awr ar gyfer rhywbeth arall. 1746 01:29:53,590 --> 01:29:57,140 Felly mae'n ymddygiad anniffiniedig. 1747 01:29:57,140 --> 01:30:00,772 Ac mae undefined golygu unrhyw beth Gall ddigwydd. 1748 01:30:00,772 --> 01:30:01,250 Yeah? 1749 01:30:01,250 --> 01:30:02,500 >> CYNULLEIDFA: [Anghlywadwy]? 1750 01:30:02,500 --> 01:30:07,942 1751 01:30:07,942 --> 01:30:10,830 >> ROB: Na, felly os ydych yn aseinio x i rywbeth arall. 1752 01:30:10,830 --> 01:30:15,870 Felly os dde yma dywedasom x yn hafal i rhywbeth malloc else-- 1753 01:30:15,870 --> 01:30:17,100 Maint y malloc event-- 1754 01:30:17,100 --> 01:30:20,180 Yna y bloc gwreiddiol o gof yn cael ei rhyddhau. 1755 01:30:20,180 --> 01:30:21,490 Ac rydym wedi ei golli yn swyddogol. 1756 01:30:21,490 --> 01:30:23,150 Mae hynny'n gollwng cof. 1757 01:30:23,150 --> 01:30:25,090 Rydyn ni wedi colli pob cyfeiriad at y bloc o cof. 1758 01:30:25,090 --> 01:30:26,827 Felly does dim ffordd y gallwn ni byth ei ryddhau. 1759 01:30:26,827 --> 01:30:32,074 1760 01:30:32,074 --> 01:30:36,630 Iawn, felly yna dychwelyd 0 dull wneud. 1761 01:30:36,630 --> 01:30:37,900 >> Mae pob gorlif iawn, felly stac. 1762 01:30:37,900 --> 01:30:39,320 Beth yw'r syniad yma? 1763 01:30:39,320 --> 01:30:41,210 Felly cofiwch, domen yn mynd i lawr. 1764 01:30:41,210 --> 01:30:43,480 Stack yn mynd i fyny. 1765 01:30:43,480 --> 01:30:48,000 Felly, roedd hyn yn yr enghraifft o ddarlith, Yr wyf yn meddwl, lle y prif yn unig yn mynd i 1766 01:30:48,000 --> 01:30:51,380 ffoniwch foo swyddogaeth hon, sy'n mynd i alw ei hun yn recursively drosodd a 1767 01:30:51,380 --> 01:30:52,320 ar ôl tro. 1768 01:30:52,320 --> 01:30:55,370 >> Felly stacio fframiau yn mynd i yn gweithio yn union yr un fath. 1769 01:30:55,370 --> 01:30:58,130 Felly, rydym yn mynd i ddechrau gyda phrif gan fod y ffrâm pentwr gwaelod. 1770 01:30:58,130 --> 01:31:02,000 Yna brif yn mynd i alw foo, sy'n yn mynd i gael ffrâm pentwr. 1771 01:31:02,000 --> 01:31:04,260 >> Yna foo yn mynd i alw foo unwaith eto, sydd yn mynd i gael 1772 01:31:04,260 --> 01:31:05,500 ffrâm pentwr arall. 1773 01:31:05,500 --> 01:31:08,270 Ac yna eto, ac unwaith eto, ac unwaith eto, ac eto nes, yn y pen draw, rydym yn rhedeg 1774 01:31:08,270 --> 01:31:09,190 i mewn i'r domen. 1775 01:31:09,190 --> 01:31:11,990 Felly, mae hyn yw sut yr ydym yn cael gorlif pentwr. 1776 01:31:11,990 --> 01:31:14,910 Ac yn y fan hon, byddwch yn SEG fai. 1777 01:31:14,910 --> 01:31:17,335 Neu byddech chi wir fai seg cyn y pwynt hwn ond yeah. 1778 01:31:17,335 --> 01:31:19,660 >> CYNULLEIDFA: A yw craidd daflu i lawr y un fath â fai seg? 1779 01:31:19,660 --> 01:31:26,140 >> ROB: Felly, byddwch yn gweld segmentu ddympio craidd fai. 1780 01:31:26,140 --> 01:31:28,760 Byddwch yn cael tomen craidd pan rydych SEG fai. 1781 01:31:28,760 --> 01:31:32,580 Ac mae'n debyg i daflu i lawr o bob un o'r cynnwys eich cof presennol fel 1782 01:31:32,580 --> 01:31:36,670 y gallwch geisio nodi pam eich SEG ffawtio. 1783 01:31:36,670 --> 01:31:37,135 Yeah? 1784 01:31:37,135 --> 01:31:38,385 >> CYNULLEIDFA: [Anghlywadwy]? 1785 01:31:38,385 --> 01:31:40,855 1786 01:31:40,855 --> 01:31:45,460 >> ROB: Felly nam segmentu modd mae 'na gorlif pentwr. 1787 01:31:45,460 --> 01:31:47,060 Felly, nid o reidrwydd. 1788 01:31:47,060 --> 01:31:49,880 Mae nam segmentu yn golygu eich bod chi'n cof cyffwrdd mewn ffordd 1789 01:31:49,880 --> 01:31:50,880 Ni ddylech fod. 1790 01:31:50,880 --> 01:31:54,750 Felly, un ffordd o hynny'n digwydd yw, pan byddwch dal dŵr gorlif, rydym yn dechrau cyffwrdd 1791 01:31:54,750 --> 01:31:58,736 cof mewn ffordd na ddylem fod. 1792 01:31:58,736 --> 01:31:59,208 Yeah? 1793 01:31:59,208 --> 01:32:00,458 >> CYNULLEIDFA: [Anghlywadwy]? 1794 01:32:00,458 --> 01:32:03,456 1795 01:32:03,456 --> 01:32:05,830 >> ROB: Felly, tu mewn dolen ddiddiwedd. 1796 01:32:05,830 --> 01:32:08,770 Fel, mae hyn yn debyg i ddiddiwedd ailadroddus dolen ac felly rydym yn cael un arall 1797 01:32:08,770 --> 01:32:09,770 stac ffrâm bob tro. 1798 01:32:09,770 --> 01:32:13,540 Ond dim ond tu mewn rheolaidd ddiddiwedd tra one-- 1799 01:32:13,540 --> 01:32:16,390 yn dda, gadewch i ni beidio hyd yn oed argraffu f-- 1800 01:32:16,390 --> 01:32:17,040 gwneud rhywbeth. 1801 01:32:17,040 --> 01:32:18,390 Beth bynnag. 1802 01:32:18,390 --> 01:32:20,610 >> Nid ydym yn mynd i fod yn mynd ffrâm pentwr arall. 1803 01:32:20,610 --> 01:32:22,530 Rydym yn jyst yn mynd i gadw dolennu dros y cyfarwyddyd sengl. 1804 01:32:22,530 --> 01:32:23,920 Nid yw'r pentwr yn tyfu. 1805 01:32:23,920 --> 01:32:27,290 Mae'n ffaith bod pob recursive alwad yn rhoi ffrâm pentwr ni. 1806 01:32:27,290 --> 01:32:31,231 Dyna pam yr ydym yn cael gorlif pentwr. 1807 01:32:31,231 --> 01:32:31,728 Yeah? 1808 01:32:31,728 --> 01:32:38,189 >> CYNULLEIDFA: Felly, os ydych yn dweud i gael y tra dolen ac yna [Anghlywadwy]? 1809 01:32:38,189 --> 01:32:42,000 >> ROB: Felly os tu mewn i'r ddolen tra roedd printf, byddwch yn dal y byddai 1810 01:32:42,000 --> 01:32:42,790 Nid fai seg. 1811 01:32:42,790 --> 01:32:46,090 Rwy'n nid yn unig oedd eisiau drysu pethau. 1812 01:32:46,090 --> 01:32:46,610 Byddai'n dolen. 1813 01:32:46,610 --> 01:32:48,225 Byddech yn cael stac sengl ffrâm ar gyfer y printf. 1814 01:32:48,225 --> 01:32:49,580 >> Yna byddai printf dychwelyd. 1815 01:32:49,580 --> 01:32:50,280 Yna byddwch Id dolen eto. 1816 01:32:50,280 --> 01:32:51,460 Byddech yn cael stac sengl ffrâm ar gyfer y printf. 1817 01:32:51,460 --> 01:32:52,850 Byddai'n dychwelyd. 1818 01:32:52,850 --> 01:32:54,060 Ffrâm pentwr Sengl. 1819 01:32:54,060 --> 01:33:00,215 Felly, nad ydych yn cael hyn yn ddiddiwedd pentyrru fframiau stac. 1820 01:33:00,215 --> 01:33:03,185 >> CYNULLEIDFA: [Anghlywadwy]? 1821 01:33:03,185 --> 01:33:04,040 >> ROB: Ydw. 1822 01:33:04,040 --> 01:33:09,360 Felly, mae hyn yn digwydd gorlif pentwr gan fod dim un o'r rhain 1823 01:33:09,360 --> 01:33:11,600 galwadau i foo yn dychwelyd. 1824 01:33:11,600 --> 01:33:15,250 Felly os byddwn yn dychwelyd, yna byddem dechrau colli fframiau stac. 1825 01:33:15,250 --> 01:33:17,870 Ac yna ni fyddem yn dal dŵr gorlif. 1826 01:33:17,870 --> 01:33:20,070 A dyna pam y bydd angen achos sylfaenol ar gyfer eich swyddogaethau personol. 1827 01:33:20,070 --> 01:33:22,992 1828 01:33:22,992 --> 01:33:23,479 Yeah? 1829 01:33:23,479 --> 01:33:27,375 >> CYNULLEIDFA: A yw'r maint posibl a'r stac gyfer y domen yr un fath ar gyfer 1830 01:33:27,375 --> 01:33:29,880 pob rhaglen? 1831 01:33:29,880 --> 01:33:31,910 >> ROB: Yn fras. 1832 01:33:31,910 --> 01:33:35,090 Yw maint posibl y pentwr a y domen yr un fath ar gyfer pob rhaglen? 1833 01:33:35,090 --> 01:33:37,180 Fras. 1834 01:33:37,180 --> 01:33:40,080 Mae rhywfaint o randomization i lle y das yn dechrau ac 1835 01:33:40,080 --> 01:33:42,400 lle mae'r domen yn dechrau. 1836 01:33:42,400 --> 01:33:45,870 Os ydych yn digwydd i gael llawer gyfan o newidynnau byd-eang a phethau, gallech chi 1837 01:33:45,870 --> 01:33:49,520 cymryd i ffwrdd oddi wrth rai o le ar gyfer eich tomen. 1838 01:33:49,520 --> 01:33:54,060 >> Ar system 64-bit, rydych bron cael cof ddiddiwedd. 1839 01:33:54,060 --> 01:33:55,820 Does dim ond cymaint. 1840 01:33:55,820 --> 01:33:59,250 Rhwng 32 a 64 darnau darnau, bod gwahaniaeth sylweddol. 1841 01:33:59,250 --> 01:34:02,350 >> Rydych yn mynd i gael llawer iawn mwy stacio a gofod domen ar 64-bit 1842 01:34:02,350 --> 01:34:05,810 system oherwydd bod dim ond yn fwy yn mynd i'r afael y gallant eu defnyddio. 1843 01:34:05,810 --> 01:34:09,360 Ond ar system unigol, bydd yn fod yn fwy neu lai yr un faint o stac 1844 01:34:09,360 --> 01:34:10,785 a gofod domen. 1845 01:34:10,785 --> 01:34:13,635 1846 01:34:13,635 --> 01:34:15,530 Mae pob hawl. 1847 01:34:15,530 --> 01:34:18,220 >> Felly peth olaf yw casglu. 1848 01:34:18,220 --> 01:34:19,810 Felly, dylech wybod y broses hon. 1849 01:34:19,810 --> 01:34:22,240 Mae pedwar cam mawr. 1850 01:34:22,240 --> 01:34:24,400 Felly, dylai'r un cyntaf fod yn hawdd i'w gofio. 1851 01:34:24,400 --> 01:34:25,085 Cyn-brosesu. 1852 01:34:25,085 --> 01:34:28,390 Mae wedi y rhagddodiad cyn ynddo. 1853 01:34:28,390 --> 01:34:32,080 Felly, mae'n dod cyn popeth arall. 1854 01:34:32,080 --> 01:34:34,000 >> Y peth i'w gofio yw y hash. 1855 01:34:34,000 --> 01:34:37,250 Felly hash yn diffinio a hash yn cynnwys ym mhob un o'r rheiny. 1856 01:34:37,250 --> 01:34:39,560 Mae'r rheini i gyd cyn-brosesydd cyfarwyddebau. 1857 01:34:39,560 --> 01:34:42,030 Mae'r rhain yn y pethau y mae'r cyn-prosesydd yn gofalu am. 1858 01:34:42,030 --> 01:34:43,680 >> Felly beth mae cyn-prosesydd yn ei wneud? 1859 01:34:43,680 --> 01:34:44,850 Mae'n beth 'n sylweddol' n fud. 1860 01:34:44,850 --> 01:34:49,380 Mae pob mae'n gallu mae pob un o'r rhain copi, a thorri, a gludo gweithrediadau. 1861 01:34:49,380 --> 01:34:51,790 >> Felly hash yn cynnwys safonol I0 dot h. 1862 01:34:51,790 --> 01:34:52,990 Beth yw bod yn ei wneud? 1863 01:34:52,990 --> 01:34:56,610 Mae'n grabbing y dot I0 safonol h ffeilio a gludo i mewn i'r top 1864 01:34:56,610 --> 01:34:58,960 lle bynnag mae'n dweud hash yn cynnwys dot I0 safonol h. 1865 01:34:58,960 --> 01:35:02,480 >> Ac unrhyw hash diffinio ein bod i wedi gweld, beth sy'n bod gwneud? 1866 01:35:02,480 --> 01:35:06,730 Mae ei copïo y gwerth y mae'r hash eu diffinio ei ddiffinio fel a gludo sy'n 1867 01:35:06,730 --> 01:35:08,500 lle bynnag y byddwch yn defnyddio'r gwerth. 1868 01:35:08,500 --> 01:35:13,400 Felly mae'r Preprocessor yn unig yn ei wneud mewn gwirionedd gweithrediadau sy'n seiliedig ar destun syml. 1869 01:35:13,400 --> 01:35:15,870 Nid yw'n gwneud dim smart. 1870 01:35:15,870 --> 01:35:18,920 Felly mae popeth arall yn yn fwy cymhleth. 1871 01:35:18,920 --> 01:35:22,970 >> Felly nawr bod Preprocessor yn gwneud, yr ydym mewn gwirionedd yn llunio. 1872 01:35:22,970 --> 01:35:24,320 Felly beth mae llunio yn ei olygu? 1873 01:35:24,320 --> 01:35:27,310 Rydym yn awr yn mynd o c cod i cod cynulliad. 1874 01:35:27,310 --> 01:35:27,570 Yeah? 1875 01:35:27,570 --> 01:35:28,820 >> CYNULLEIDFA: [Anghlywadwy]? 1876 01:35:28,820 --> 01:35:32,390 1877 01:35:32,390 --> 01:35:34,220 >> ROB: Yeah, rydym yn dal hynny. 1878 01:35:34,220 --> 01:35:36,880 1879 01:35:36,880 --> 01:35:38,660 Felly llunio. 1880 01:35:38,660 --> 01:35:40,310 Rydym yn mynd o c i ymgynnull. 1881 01:35:40,310 --> 01:35:42,470 Felly mae hwn yn newid iaith go iawn. 1882 01:35:42,470 --> 01:35:45,240 Llunio ei hun yn golygu mynd o iaith ar lefel uwch i 1883 01:35:45,240 --> 01:35:47,340 iaith lefel is. 1884 01:35:47,340 --> 01:35:50,720 >> Ac c yn iaith lefel uchel o'i gymharu â cynulliad. 1885 01:35:50,720 --> 01:35:52,320 Beth yw cynulliad? 1886 01:35:52,320 --> 01:35:56,440 Mae ei cyfarwyddiadau sydd, 'n bert lawer, a wnaed ar gyfer eich CPU. 1887 01:35:56,440 --> 01:35:59,130 Ond mae eich cyfrifiadur yn dal i wneud ydynt yn deall cynulliad. 1888 01:35:59,130 --> 01:36:01,570 Dim ond yn deall rhai a sero. 1889 01:36:01,570 --> 01:36:06,160 Felly, y cam nesaf yn cydosod, a oedd yn dod â ni oddi wrth y cyfarwyddiadau hyn sy'n 1890 01:36:06,160 --> 01:36:08,760 eich CPU yn deall ac mewn gwirionedd yn cyfieithu hwy, i 1891 01:36:08,760 --> 01:36:10,820 y rhai a sero. 1892 01:36:10,820 --> 01:36:13,570 >> Felly, C i cynulliad i deuaidd. 1893 01:36:13,570 --> 01:36:15,870 Ond nid oes gennyf gweithredadwy eto. 1894 01:36:15,870 --> 01:36:19,550 Felly meddyliwch am y llyfrgell cs50. 1895 01:36:19,550 --> 01:36:23,070 Yr ydym wedi darparu chi gyda deuaidd ar gyfer llyfrgell cs50 hwn, sydd wedi GetString 1896 01:36:23,070 --> 01:36:24,400 a GetInt a hynny i gyd. 1897 01:36:24,400 --> 01:36:25,700 >> Ond mae'r cs50 library-- 1898 01:36:25,700 --> 01:36:27,650 mewn ac o itself-- nid yn weithredadwy. 1899 01:36:27,650 --> 01:36:29,570 Nid oes ganddo prif swyddogaeth. 1900 01:36:29,570 --> 01:36:32,230 Dim ond bagad o deuaidd y gallwch eu defnyddio. 1901 01:36:32,230 --> 01:36:41,730 Felly cysylltu yw sut yr ydym yn dod â'r holl o'r rhain gwahanol ffeiliau deuaidd 1902 01:36:41,730 --> 01:36:43,110 i mewn i gweithredadwy gwirioneddol. 1903 01:36:43,110 --> 01:36:45,900 Un y gallwch deipio dot dot slaes allan. 1904 01:36:45,900 --> 01:36:51,660 >> Felly, mae hyn yn debyg y ffeil yr ydych Ysgrifennodd, - beth bynnag yw eich rhaglen yw-- 1905 01:36:51,660 --> 01:36:53,620 Ceaser dot c. 1906 01:36:53,620 --> 01:36:55,100 Ond erbyn hyn mae wedi cael ei lunio i lawr i deuaidd. 1907 01:36:55,100 --> 01:36:56,480 Felly Ceaser dot o. 1908 01:36:56,480 --> 01:36:59,620 Ac mae hyn yn ein cs50 llyfrgelloedd deuaidd. 1909 01:36:59,620 --> 01:37:02,284 Ac maen nhw'n cael eu cyfuno i mewn i cyflawnadwy sengl. 1910 01:37:02,284 --> 01:37:02,758 Yeah? 1911 01:37:02,758 --> 01:37:04,008 >> CYNULLEIDFA: [Anghlywadwy]? 1912 01:37:04,008 --> 01:37:08,800 1913 01:37:08,800 --> 01:37:12,710 >> ROB: Felly cyntaf yn cynnwys, cofiwch, y hash yn cynnwys mewn gwirionedd yn 1914 01:37:12,710 --> 01:37:13,810 cam cyn-brosesydd. 1915 01:37:13,810 --> 01:37:14,750 Ond dyna wahân. 1916 01:37:14,750 --> 01:37:20,730 Os nad ydych chi'n defnyddio unrhyw swyddogaethau sy'n y tu allan o'ch ffeil sengl, yna, 1917 01:37:20,730 --> 01:37:26,100 na, nid oes angen i chi gysylltu unrhyw beth ers i chi wedi popeth. 1918 01:37:26,100 --> 01:37:30,310 >> Wedi dweud hynny, printf yn cael ei gysylltu i mewn. 1919 01:37:30,310 --> 01:37:32,820 Os ydych chi erioed wedi defnyddio printf, mae hynny'n rhywbeth y mae angen i fod yn gysylltiedig yn 1920 01:37:32,820 --> 01:37:35,740 oherwydd nad oeddech yn ysgrifennu hynny. 1921 01:37:35,740 --> 01:37:39,530 Ac, yn wir, printf yn awtomatig gysylltiedig mewn. 1922 01:37:39,530 --> 01:37:42,760 Rydych yn gwybod sut yn y llinell orchymyn neu pan fydd r math hwn yn gwneud i chi, byddwch yn gweld ei fod yn cael 1923 01:37:42,760 --> 01:37:46,690 dash l cs50, sydd â dolen yn y llyfrgell cs50? 1924 01:37:46,690 --> 01:37:49,070 Printf, a phethau fel 'na, yn mynd i fod yn gysylltiedig yn awtomatig. 1925 01:37:49,070 --> 01:37:51,730 1926 01:37:51,730 --> 01:37:53,930 Unrhyw gwestiynau eraill ar unrhyw beth? 1927 01:37:53,930 --> 01:37:56,280 >> CYNULLEIDFA: [Anghlywadwy]? 1928 01:37:56,280 --> 01:37:58,300 >> ROB: Cysylltu? 1929 01:37:58,300 --> 01:38:03,450 Mae gennym criw cyfan o gwahanol ffeiliau deuaidd. 1930 01:38:03,450 --> 01:38:06,410 Dyma'r enghraifft canonaidd ein bod yn defnyddio ei llyfrgell cs50. 1931 01:38:06,410 --> 01:38:09,960 Rydym wedi casglu ac yn rhoi i chi y deuaidd ar gyfer y llyfrgell cs50 hwn. 1932 01:38:09,960 --> 01:38:12,410 >> Byddwch am ddefnyddio GetString yn eich rhaglen. 1933 01:38:12,410 --> 01:38:14,750 Felly, byddwch yn mynd ac yn defnyddio GetString. 1934 01:38:14,750 --> 01:38:19,700 Ond heb fy cod deuaidd ar gyfer GetString, pan fyddwch yn llunio eich cod 1935 01:38:19,700 --> 01:38:23,140 i lawr, ni allwch redeg mewn gwirionedd yn eich rhaglen oherwydd bod GetString Llinynnol yn 1936 01:38:23,140 --> 01:38:25,080 heb eu diffinio yn gyfan gwbl eto. 1937 01:38:25,080 --> 01:38:29,220 >> Dim ond pan fyddwch yn cysylltu yn fy deuaidd sy'n cynnwys GetString yn awr, i gyd 1938 01:38:29,220 --> 01:38:31,130 dde, gallaf mewn gwirionedd gweithredu GetString. 1939 01:38:31,130 --> 01:38:32,330 Mae fy ffeil yn gyflawn. 1940 01:38:32,330 --> 01:38:34,208 A gallaf redeg hyn. 1941 01:38:34,208 --> 01:38:34,697 Yeah? 1942 01:38:34,697 --> 01:38:37,631 >> CYNULLEIDFA: A oes gan gysylltu drosi y deuaidd i weithredadwy? 1943 01:38:37,631 --> 01:38:42,032 Felly hyd yn oed os nad oes gan eraill yr ydych llyfrgelloedd, fyddai nid yw'n dal i fod 1944 01:38:42,032 --> 01:38:44,477 angenrheidiol i gyfieithu y [Anghlywadwy]? 1945 01:38:44,477 --> 01:38:48,640 >> ROB: Felly weithredadwy yn dal i fod yn ddeuaidd. 1946 01:38:48,640 --> 01:38:51,750 'I' jyst cyfuno yn ei gyfanrwydd criw o binaries. 1947 01:38:51,750 --> 01:38:55,124 1948 01:38:55,124 --> 01:38:56,591 >> CYNULLEIDFA: Diolch yn fawr i chi. 1949 01:38:56,591 --> 01:38:58,560 >> ROB: Dim problem. 1950 01:38:58,560 --> 01:38:59,540 Unrhyw gwestiynau eraill? 1951 01:38:59,540 --> 01:39:02,001 Fel arall, rydym ni i gyd yn gosod. 1952 01:39:02,001 --> 01:39:02,690 Mae pob hawl. 1953 01:39:02,690 --> 01:39:02,990 Diolch. 1954 01:39:02,990 --> 01:39:03,590 >> [Cymeradwyaeth] 1955 01:39:03,590 --> 01:39:04,490 >> CYNULLEIDFA: Diolch yn fawr. 1956 01:39:04,490 --> 01:39:05,740 >> ROB: Yeah. 1957 01:39:05,740 --> 01:39:06,582