1 00:00:00,000 --> 00:00:00,980 2 00:00:00,980 --> 00:00:04,410 >> [CHWARAE CERDDORIAETH] 3 00:00:04,410 --> 00:00:11,147 4 00:00:11,147 --> 00:00:12,230 DAVID J. Malan: pob hawl. 5 00:00:12,230 --> 00:00:16,440 Mae hyn yn CS50, ac mae hyn yw diwedd Wythnos 2. 6 00:00:16,440 --> 00:00:18,480 Felly heddiw, rydym yn mynd i barhau â'n golwg 7 00:00:18,480 --> 00:00:21,150 ar sut yr ydym yn cynrychioli pethau dan y hood-- symud i ffwrdd 8 00:00:21,150 --> 00:00:23,520 o rhifau fel gyfanrifau ac fel y bo'r angen gwerthoedd phwynt 9 00:00:23,520 --> 00:00:26,810 a chanolbwyntio ar dannau a rhaglenni yn y pen draw yn fwy diddorol. 10 00:00:26,810 --> 00:00:30,140 Ond byddwn hefyd yn edrych ar y cwpl o problems-- parth-benodol 11 00:00:30,140 --> 00:00:33,620 y cyntaf a fydd yn yn cynnwys cryptograffeg, 12 00:00:33,620 --> 00:00:36,570 y grefft o sgrialu gwybodaeth, lle byddwch yn gweld uchod yma 13 00:00:36,570 --> 00:00:41,480 mae llun o Radio Orphan Annie Modrwy decoder gyfrinach rhag fu. 14 00:00:41,480 --> 00:00:46,490 >> Mae hyn mewn gwirionedd ffurf gyntefig iawn a ffurf addas i blant o cryptopgraphy 15 00:00:46,490 --> 00:00:50,590 lle mae gan fodrwy hon ddau disks-- un y tu mewn a thu allan un. 16 00:00:50,590 --> 00:00:54,740 A thrwy gylchdroi un o'r rheiny, byddwch yn gallu hanfod yn llinell i fyny llythrennau fel A 17 00:00:54,740 --> 00:00:59,520 trwy Z gyda llythrennau eraill fel B trwy A. Mewn geiriau eraill, 18 00:00:59,520 --> 00:01:03,730 gallwch llythrennol cylchdroi y wyddor, a thrwy hynny yn dod i fyny gyda mapio gan 19 00:01:03,730 --> 00:01:07,820 llythyrau i lythyrau fel bod, os ydych yn eisiau anfon neges gudd 20 00:01:07,820 --> 00:01:11,820 i rhywun fel Annie, gallech ysgrifennu i lawr eich neges ac yna cylchdroi 21 00:01:11,820 --> 00:01:15,370 y llythyrau, sy'n golygu, os ydych yn golygu i ddweud "A," chi yn hytrach na dweud "B," 22 00:01:15,370 --> 00:01:17,280 ydych yn ei olygu i ddweud "B," chi yn hytrach na dweud "C" - 23 00:01:17,280 --> 00:01:20,240 neu rywbeth ychydig yn fwy clyfar na that-- ac yna, yn y pen draw, 24 00:01:20,240 --> 00:01:24,630 ar yr amod bod Annie wedi decoder hwn modrwy, gall hi decode y neges. 25 00:01:24,630 --> 00:01:28,540 Nawr, efallai y byddwch yn cofio, mewn gwirionedd, bod hyn yn cael ei ddefnyddio mewn ffilm enwog iawn sy'n 26 00:01:28,540 --> 00:01:31,140 chwarae nauseum ad yn ystod tymor y Nadolig. 27 00:01:31,140 --> 00:01:32,650 Gadewch i ni edrych yma. 28 00:01:32,650 --> 00:01:35,294 29 00:01:35,294 --> 00:01:37,210 RALPHIE PARKER: "Byddwch yn ei hysbys i bawb yn y crynodeb 30 00:01:37,210 --> 00:01:41,000 bod Ralph Parker yn cael ei benodi drwy hyn yn aelod o Little Orphan Annie Secret 31 00:01:41,000 --> 00:01:44,860 Cylch ac mae ganddo hawl i holl anrhydedd a budd-daliadau sy'n digwydd iddynt. " 32 00:01:44,860 --> 00:01:47,410 >> RALPHIE PARKER (narrating): Llofnodwyd Little Plant Amddifad Annie. 33 00:01:47,410 --> 00:01:50,070 Gydlofnodi, Pierre Andre! 34 00:01:50,070 --> 00:01:51,490 Mewn inc. 35 00:01:51,490 --> 00:01:55,494 Anrhydeddau a budd-daliadau, eisoes yn oed o naw. 36 00:01:55,494 --> 00:01:57,402 >> [CHWARAE CERDDORIAETH] 37 00:01:57,402 --> 00:02:00,470 >> [Glebran RADIO] 38 00:02:00,470 --> 00:02:01,470 RALPHIE PARKER: Dewch ymlaen. 39 00:02:01,470 --> 00:02:02,344 Gadewch i ni fwrw ymlaen ag ef. 40 00:02:02,344 --> 00:02:06,029 Nid oes angen yr holl jazz fy mod am smyglwyr a môr-ladron. 41 00:02:06,029 --> 00:02:08,820 CYHOEDDWR RADIO: Gwrando yfory nos ar gyfer yr antur i gloi 42 00:02:08,820 --> 00:02:11,060 o The Black Pirate Ship. 43 00:02:11,060 --> 00:02:14,740 Nawr, mae'n amser i Annie Neges Secret i chi aelodau 44 00:02:14,740 --> 00:02:17,110 o'r Cylch Secret. 45 00:02:17,110 --> 00:02:20,700 Cofiwch plant, dim ond aelodau o Secret Cylch Annie 46 00:02:20,700 --> 00:02:23,270 Gall dadgodio neges gyfrinach Annie. 47 00:02:23,270 --> 00:02:27,270 >> Cofiwch, Annie yn dibynnu ar chi. 48 00:02:27,270 --> 00:02:30,060 Gosodwch eich pinnau i B-2. 49 00:02:30,060 --> 00:02:34,004 Dyma'r Message-- 12, 11, 2-- 50 00:02:34,004 --> 00:02:36,503 RALPHIE PARKER (narrating): Yr wyf yn wyf yn fy nghyfarfod cyfrinachol cyntaf. 51 00:02:36,503 --> 00:02:40,041 CYHOEDDWR RADIO: --25, 14, 11, 18, 16-- 52 00:02:40,041 --> 00:02:42,790 RALPHIE PARKER (narrating): O, Roedd Pierre yn llais mawr heno. 53 00:02:42,790 --> 00:02:46,110 Gallwn ddweud bod heno neges yn wirioneddol bwysig. 54 00:02:46,110 --> 00:02:47,930 >> CYHOEDDWR RADIO: --3, 25. 55 00:02:47,930 --> 00:02:49,940 Dyna neges gan Annie ei hun. 56 00:02:49,940 --> 00:02:52,182 Cofiwch, peidiwch â dweud wrth neb. 57 00:02:52,182 --> 00:02:55,077 >> [Panting] 58 00:02:55,077 --> 00:02:57,285 RALPHIE PARKER (narrating): Naw deg eiliad yn ddiweddarach, rwy'n 59 00:02:57,285 --> 00:03:00,090 yn yr unig ystafell yn yr ty lle mae bachgen o naw 60 00:03:00,090 --> 00:03:04,380 Gallai eistedd mewn preifatrwydd a dadgodio. 61 00:03:04,380 --> 00:03:04,990 Ah. 62 00:03:04,990 --> 00:03:05,680 "B." 63 00:03:05,680 --> 00:03:06,524 >> [Chuckles] 64 00:03:06,524 --> 00:03:08,684 >> RALPHIE PARKER (narrating): Es i i'r nesaf. 65 00:03:08,684 --> 00:03:09,610 "E." 66 00:03:09,610 --> 00:03:11,641 Y gair cyntaf yw "fod." 67 00:03:11,641 --> 00:03:12,140 Ie! 68 00:03:12,140 --> 00:03:14,293 Roedd yn dod yn haws nawr. 69 00:03:14,293 --> 00:03:15,259 "U." 70 00:03:15,259 --> 00:03:16,225 >> [Chuckles] 71 00:03:16,225 --> 00:03:18,157 >> Randy PARKER: Aw, yn dod ar, Ralphie. 72 00:03:18,157 --> 00:03:19,606 Yr wyf yn gotta fynd! 73 00:03:19,606 --> 00:03:21,538 >> RALPHIE PARKER: 'n annhymerus' fod yn iawn i lawr, Ma. 74 00:03:21,538 --> 00:03:22,504 Whizz Gee. 75 00:03:22,504 --> 00:03:25,402 76 00:03:25,402 --> 00:03:31,220 "T." "O." "Byddwch yn siwr i. "" Byddwch yn siwr i "beth? 77 00:03:31,220 --> 00:03:33,981 Beth oedd Little Orphan Annie ceisio ei ddweud? "Byddwch yn siwr i" beth? 78 00:03:33,981 --> 00:03:35,522 FAM: Ralphie, Randy wedi mynd i fynd. 79 00:03:35,522 --> 00:03:36,735 A wnewch chi os gwelwch yn dda dod allan? 80 00:03:36,735 --> 00:03:38,190 >> RALPHIE PARKER: pob hawl, Mom! 81 00:03:38,190 --> 00:03:39,787 'N annhymerus' fod allan yn iawn! 82 00:03:39,787 --> 00:03:41,995 RALPHIE PARKER (narrating): Yr oeddwn yn dod yn nes nawr. 83 00:03:41,995 --> 00:03:43,370 Roedd y tensiwn yn ofnadwy. 84 00:03:43,370 --> 00:03:44,794 Beth oedd hi? 85 00:03:44,794 --> 00:03:47,656 Mae tynged y blaned Gall hongian yn y cydbwysedd. 86 00:03:47,656 --> 00:03:50,518 >> Got Ralphie, Randy i fynd: FAM! 87 00:03:50,518 --> 00:03:53,635 >> RALPHIE PARKER: 'n annhymerus' fod yn iawn allan, ar gyfer crio yn uchel! 88 00:03:53,635 --> 00:03:55,343 RALPHIE PARKER (Narrating): Mae bron yno! 89 00:03:55,343 --> 00:03:56,520 Hedfan fy mysedd! 90 00:03:56,520 --> 00:03:58,500 Fy meddwl oedd trap dur. 91 00:03:58,500 --> 00:03:59,850 Mae pob mandwll vibrated. 92 00:03:59,850 --> 00:04:01,806 Yr oedd bron yn amlwg! 93 00:04:01,806 --> 00:04:02,773 Ie! 94 00:04:02,773 --> 00:04:03,273 Ie! 95 00:04:03,273 --> 00:04:03,773 Ie! 96 00:04:03,773 --> 00:04:04,740 Ie! 97 00:04:04,740 --> 00:04:10,250 >> RALPHIE PARKER: "Byddwch yn siwr i yfed eich Ovaltine. " 98 00:04:10,250 --> 00:04:10,750 Ovaltine? 99 00:04:10,750 --> 00:04:14,864 100 00:04:14,864 --> 00:04:17,539 Mae masnachol crummy? 101 00:04:17,539 --> 00:04:19,439 >> [CHWARAE CERDDORIAETH] 102 00:04:19,439 --> 00:04:21,724 >> RALPHIE PARKER: Mab ast. 103 00:04:21,724 --> 00:04:23,460 >> [Chwerthin] 104 00:04:23,460 --> 00:04:27,070 >> DAVID J. Malan: Felly hynny wedyn yn cipolwg ar yr hyn y cryptograffeg 105 00:04:27,070 --> 00:04:29,880 Gall fod ar gyfer this-- yn diod o fu. 106 00:04:29,880 --> 00:04:30,900 Felly cyhoeddiad cyflym. 107 00:04:30,900 --> 00:04:33,410 Os ydych yn rhad ac am ddim hwn Dydd Gwener am 1:15 a byddai 108 00:04:33,410 --> 00:04:36,610 hoffi ymuno â ni ar gyfer CS50 cinio, ewch i'r URL hwn yma. 109 00:04:36,610 --> 00:04:38,080 Yn gyntaf i'r felin caiff falu fel arfer. 110 00:04:38,080 --> 00:04:41,840 Ond dros gyfnod o amser, byddwn yn gwneud yn siŵr bod y rhan fwyaf o unrhyw un a hoffai gymryd rhan 111 00:04:41,840 --> 00:04:43,640 Gall drefnu-ddoeth. 112 00:04:43,640 --> 00:04:45,170 >> Felly llinynnau. 113 00:04:45,170 --> 00:04:47,940 Rydym wedi Zamyla-- bwy ydych yn awr wedi cwrdd fwyaf tebygol 114 00:04:47,940 --> 00:04:50,750 yn Problem Set 1-- y mae eu enw ei sillafu'n felly. 115 00:04:50,750 --> 00:04:53,570 Ac mae'n debyg eich teipio ei henw i mewn i raglen gyfrifiadurol sy'n 116 00:04:53,570 --> 00:04:55,710 defnyddio rhywbeth fel getString. 117 00:04:55,710 --> 00:04:57,890 Er mwyn adfer keystrokes hynny, sut 118 00:04:57,890 --> 00:05:01,620 ydyn ni'n mynd ati i gynrychioli llinyn, gair, mae paragraff, 119 00:05:01,620 --> 00:05:03,960 neu luosog lythyrau fel y rhain fan hyn? 120 00:05:03,960 --> 00:05:06,790 >> Buom yn siarad am y tro olaf cyfanrifau a phroblemau 121 00:05:06,790 --> 00:05:09,960 sy'n codi gyda gorlif cyfanrif ac fel y bo'r angen gwerthoedd phwynt 122 00:05:09,960 --> 00:05:12,190 a phroblemau sy'n codi o fewn trachywiredd. 123 00:05:12,190 --> 00:05:16,080 Gyda llinynnau, yr ydym o leiaf yn cael ychydig mwy o hyblygrwydd 124 00:05:16,080 --> 00:05:17,970 oherwydd strings-- unig yn y world-- go iawn 125 00:05:17,970 --> 00:05:19,790 Gall fod yn hyd eithaf mympwyol. 126 00:05:19,790 --> 00:05:21,055 Pretty fyr, 'n bert hir. 127 00:05:21,055 --> 00:05:23,680 Ond hyd yn oed wedyn, rydym yn mynd i canfod y gall cyfrifiaduron weithiau 128 00:05:23,680 --> 00:05:27,200 rhedeg allan o gof ac nid hyd yn oed yn storio digon llinyn mawr. 129 00:05:27,200 --> 00:05:30,840 >> Ond am nawr, gadewch i ni ddechrau i ddychmygu llinyn fel rhywbeth yn y blychau hyn 130 00:05:30,840 --> 00:05:31,340 yma. 131 00:05:31,340 --> 00:05:36,410 Felly chwe blwch o'r fath, pob un ohonynt yn cynrychioli cymeriad neu "char." 132 00:05:36,410 --> 00:05:40,646 Felly, yn cofio bod "char" - c-h-a-r-- yn un o'r mathau adeiledig mewn data yn C. 133 00:05:40,646 --> 00:05:43,520 A beth braf yw y gallwch ei ddefnyddio y math yna o fel bloc adeiladu, 134 00:05:43,520 --> 00:05:47,880 darn pos, os mynnwch, i ffurfio math mwy o faint o ddata y byddwn yn parhau 135 00:05:47,880 --> 00:05:49,410 i alw yn "llinyn." 136 00:05:49,410 --> 00:05:53,650 >> Nawr, beth sy'n ddefnyddiol am feddwl am bethau fel tannau yn y modd hwn? 137 00:05:53,650 --> 00:05:57,720 Wel, mae'n troi allan y gallwn mewn gwirionedd yn trosoledd strwythur hwn 138 00:05:57,720 --> 00:06:01,420 i mewn gwirionedd yn cael mynediad cymeriadau unigol mewn ffordd eithaf syml. 139 00:06:01,420 --> 00:06:04,099 Rydw i'n mynd i fynd yn ei flaen a chreu ffeil o'r enw "stringzero.c," 140 00:06:04,099 --> 00:06:05,765 ond gallwch ei alw'n beth bynnag yr hoffech. 141 00:06:05,765 --> 00:06:08,500 Ac ar wefan y cwrs yw eisoes yn yr enghraifft hon o flaen llaw, 142 00:06:08,500 --> 00:06:10,430 felly nid oes angen i chi deipio popeth allan. 143 00:06:10,430 --> 00:06:13,820 >> Ac yr wyf i'n mynd i fynd yn ei flaen ac yn gyntaf yn gwneud phrif ddi-rym int. 144 00:06:13,820 --> 00:06:15,980 Ac o fewn ychydig ddyddiau, byddwn yn dechrau mynd at wraidd wahân 145 00:06:15,980 --> 00:06:19,070 pa ddi-rym yn fan hyn, pam ei fod yn int nesaf i'r prif, ac yn y blaen. 146 00:06:19,070 --> 00:06:21,180 Ond am nawr, gadewch i ni barhau i copi past hynny. 147 00:06:21,180 --> 00:06:23,455 >> Rydw i'n mynd i ddatgan llinyn o'r enw s. 148 00:06:23,455 --> 00:06:26,920 Ac yr wyf i'n mynd i ddychwelyd o GetString beth bynnag y mathau o ddefnyddwyr yn. 149 00:06:26,920 --> 00:06:29,170 Mae hyn yn mynd i fod yn syml rhaglen, dim cyfarwyddiadau, 150 00:06:29,170 --> 00:06:31,336 Im 'jyst yn mynd i blindly yn disgwyl bod y defnyddiwr yn gwybod 151 00:06:31,336 --> 00:06:32,600 beth i'w wneud i gadw'n syml. 152 00:06:32,600 --> 00:06:34,220 >> Ac yn awr yr wyf i'n mynd i gael ar gyfer dolen. 153 00:06:34,220 --> 00:06:37,450 Ac tu mewn fy gyfer dolen rwy'n mynd i gael int ff cael sero. 154 00:06:37,450 --> 00:06:40,660 A fi yw, unwaith eto, dim ond confensiwn, newidyn mynegai ar gyfer cyfrif, 155 00:06:40,660 --> 00:06:42,350 ond allwn i alw hyn beth bynnag rwyf eisiau. 156 00:06:42,350 --> 00:06:46,275 Rydw i'n mynd i wneud i yn llai than-- dda Enw Zamyla yw chwe llythyr hir. 157 00:06:46,275 --> 00:06:48,150 Felly dw i'n mynd i galed cod sy'n yno am y tro. 158 00:06:48,150 --> 00:06:49,730 >> Ac yna i ++. 159 00:06:49,730 --> 00:06:53,190 Ac yn awr y tu mewn o'r rhain cyrliog bresys Rydw i'n mynd i wneud printf, 160 00:06:53,190 --> 00:06:55,460 ac yr wyf am i argraffu un cymeriad ar y tro. 161 00:06:55,460 --> 00:06:58,227 Felly dw i'n mynd i ddefnyddio% c ar gyfer efallai y tro cyntaf. 162 00:06:58,227 --> 00:07:00,560 Ac yna yr wyf am i argraffu pob un gymeriad ar ei linell ei hun. 163 00:07:00,560 --> 00:07:02,550 Felly dw i'n mynd i roi Ychydig slaes n yno. 164 00:07:02,550 --> 00:07:03,640 Dyfyniad Close. 165 00:07:03,640 --> 00:07:06,250 >> Ac yn awr yr wyf am wneud rhywbeth yma. 166 00:07:06,250 --> 00:07:10,610 Rwyf am argraffu'r llythyr penodol yn y llinyn, 167 00:07:10,610 --> 00:07:13,670 s, gan fy mod yn ailadrodd o sero ar hyd at chwech. 168 00:07:13,670 --> 00:07:17,150 Mewn geiriau eraill, yr wyf am argraffu'r cymeriad i'th o s. 169 00:07:17,150 --> 00:07:18,420 Nawr, sut y gallaf wneud hyn? 170 00:07:18,420 --> 00:07:21,550 >> Wel yn debyg iawn i'r blychau yn gynrychiolaeth hon yma, 171 00:07:21,550 --> 00:07:25,560 math o, greu'r syniad o bocsio llythyrau yn, gallwch wneud hynny yn yr un modd 172 00:07:25,560 --> 00:07:32,630 syntactically yn C gan syml gan nodi, Rwyf am i argraffu s yn i'th gymeriad. 173 00:07:32,630 --> 00:07:35,640 Defnyddio'r cromfachau sgwâr ar bysellfwrdd eich cyfrifiadur 174 00:07:35,640 --> 00:07:38,910 hynny ar fysellfwrdd Unol Daleithiau yn gyffredinol yn uwch eich allwedd dychwelyd. 175 00:07:38,910 --> 00:07:42,630 >> Felly, nid yw hyn yn hollol iawn eto, gan y gallech fod wedi sylwi. 176 00:07:42,630 --> 00:07:44,780 Ond dw i'n mynd i fath o blindly fwrw ymlaen yma. 177 00:07:44,780 --> 00:07:47,020 Ac yr wyf i'n mynd i wneud gwneud llinyn 0. 178 00:07:47,020 --> 00:07:50,860 Ond cyn i mi wneud hyn, gadewch i ni weld os byddwn yn Ni ellir rhagweld rhai camgymeriadau cyffredin. 179 00:07:50,860 --> 00:07:52,844 A yw hyn yn mynd i lunio? 180 00:07:52,844 --> 00:07:54,510 Nac ydw, dw i'n colli criw cyfan o bethau. 181 00:07:54,510 --> 00:07:55,280 Llyfrgelloedd Clywais. 182 00:07:55,280 --> 00:07:58,480 >> Felly pa header ffeiliau efallai y byddwn eisiau ychwanegu fan hyn? 183 00:07:58,480 --> 00:07:59,205 Yeah. 184 00:07:59,205 --> 00:08:01,580 >> CYNULLEIDFA: Mae angen i chi Rwyf safonol / O [Anghlywadwy] 185 00:08:01,580 --> 00:08:02,663 >> DAVID J. Malan: Ardderchog. 186 00:08:02,663 --> 00:08:06,060 Felly mae angen safon I / O fy mod. Ar gyfer yr hyn pwrpas gwneud Rwyf am fy mod safonol / O? 187 00:08:06,060 --> 00:08:06,670 Ar gyfer printf. 188 00:08:06,670 --> 00:08:09,220 Felly cynnwys stdio.h. 189 00:08:09,220 --> 00:08:13,490 A ydych hefyd yn cynnig fy mod yn cynnwys y llyfrgell CS50 am ba reswm? 190 00:08:13,490 --> 00:08:14,650 I gael llinynnau. 191 00:08:14,650 --> 00:08:17,780 Felly byddwn yn gweld beth Llyfrgell CS50 yn ei wneud 192 00:08:17,780 --> 00:08:19,260 i greu'r syniad hwn o linyn. 193 00:08:19,260 --> 00:08:21,930 Ond am nawr, gallwch chi jyst yn meddwl ohono fel math data gwirioneddol. 194 00:08:21,930 --> 00:08:23,596 >> Felly, mae hynny'n ymddangos i fod ychydig yn glanhau i fyny. 195 00:08:23,596 --> 00:08:27,060 Ac yn awr yr wyf i'n mynd i fynd yn ei flaen ac yn wir yn gwneud llinyn 0. 196 00:08:27,060 --> 00:08:27,700 Lluniwyd. 197 00:08:27,700 --> 00:08:28,370 Felly dyna dda. 198 00:08:28,370 --> 00:08:32,799 Felly, gadewch i mi ./string0 chwyddo i mewn, felly gallwn gweld yn agosach beth sy'n digwydd. 199 00:08:32,799 --> 00:08:33,850 Enter. 200 00:08:33,850 --> 00:08:37,789 Z-A-M-Y-L-A mynd i mewn. 201 00:08:37,789 --> 00:08:39,440 Ac rydym wedi hargraffu allan i enwi Zamyla yn. 202 00:08:39,440 --> 00:08:40,409 >> Felly dyna 'n bert da. 203 00:08:40,409 --> 00:08:43,220 Felly nawr gadewch i ni fynd yn ei flaen a redeg y rhaglen hon eto, 204 00:08:43,220 --> 00:08:45,659 a theipio allan enw llawn Daven yn. 205 00:08:45,659 --> 00:08:46,450 Surprise, syndod. 206 00:08:46,450 --> 00:08:48,021 Enter. 207 00:08:48,021 --> 00:08:48,520 Hmm. 208 00:08:48,520 --> 00:08:51,750 Nid ydym wedi argraffu Daven yn Enw cyntaf llawn yn gywir. 209 00:08:51,750 --> 00:08:54,250 Nawr dylai hyn fod yn amlwg yn adolwg oherwydd yr hyn, 210 00:08:54,250 --> 00:08:57,010 fath o, penderfyniad dylunio dwp? 211 00:08:57,010 --> 00:08:59,590 >> Yeah, yr wyf yn chodio caled y chwech tu mewn fy gyfer dolen. 212 00:08:59,590 --> 00:09:01,610 Nawr rwy'n gwneud hynny dim ond oherwydd Roeddwn i'n gwybod ei enw Zamyla 213 00:09:01,610 --> 00:09:02,776 yn mynd i fod chwe llythyr. 214 00:09:02,776 --> 00:09:04,720 Ond yn sicr nid yw hyn yn ateb cyffredinol. 215 00:09:04,720 --> 00:09:07,720 Felly, mae'n troi allan ein gallu ddeinamig chyfrif i maes hyd llinyn 216 00:09:07,720 --> 00:09:10,440 drwy ffonio swyddogaeth o'r enw strlen. 217 00:09:10,440 --> 00:09:12,840 >> Unwaith eto, yn fwriadol a enwir yn unig gryno 218 00:09:12,840 --> 00:09:14,450 i'w gwneud yn fwy cyfleus i deipio. 219 00:09:14,450 --> 00:09:17,170 Ond mae hynny'n gyfystyr â cael y hyd llinyn. 220 00:09:17,170 --> 00:09:23,190 Rydw i'n mynd i fynd yn ôl i mewn i fy terfynell ffenestri ac ail-redeg y compiler. 221 00:09:23,190 --> 00:09:24,170 Ond mae'n gweiddi arnaf. 222 00:09:24,170 --> 00:09:29,130 Ymhlyg datgan swyddogaeth llyfrgell strlen â'r math heb ei arwyddo int const-- 223 00:09:29,130 --> 00:09:29,780 Rwy'n goll. 224 00:09:29,780 --> 00:09:30,590 Hollol. 225 00:09:30,590 --> 00:09:32,940 >> Felly, yn enwedig gan eich llygaid yn dechrau pylu 226 00:09:32,940 --> 00:09:36,000 gyda negeseuon gwall fel hyn, yn canolbwyntio yn onest ar yr ychydig eiriau cyntaf. 227 00:09:36,000 --> 00:09:38,590 Rydym yn gwybod bod y broblem yn llinell 8, fel y dangosir yma. 228 00:09:38,590 --> 00:09:40,500 Ac mae'n mewn llinyn-0.c. 229 00:09:40,500 --> 00:09:43,580 Ymhlyg datgan strlen swyddogaeth llyfrgell. 230 00:09:43,580 --> 00:09:47,000 Fel bod yn gyffredinol yn mynd i fod yn batrwm o negeseuon gwall. 231 00:09:47,000 --> 00:09:49,190 Ymhlyg datgan rhywbeth. 232 00:09:49,190 --> 00:09:53,250 >> Felly, yn fyr, yr hyn mae'n rhaid i mi yn ymddangos i wedi ei wneud mewn perthynas â llinell 8, yma. 233 00:09:53,250 --> 00:09:56,880 Beth allai fod yr ateb fod hyd yn oed os nad ydych erioed wedi defnyddio strlen chi eich hun? 234 00:09:56,880 --> 00:09:58,907 >> CYNULLEIDFA: Rhan o lyfrgell wahanol? 235 00:09:58,907 --> 00:10:00,740 DAVID J. Malan: Rhan o'r llyfrgell gwahanol. 236 00:10:00,740 --> 00:10:02,400 Felly mae'n ei ddatgan, fel petai. 237 00:10:02,400 --> 00:10:07,510 Mae'n cael ei grybwyll mewn rhai ffeil ac eithrio stdio.h a CS50.h. 238 00:10:07,510 --> 00:10:09,179 Nawr, ble mae'n cael ei diffinio? 239 00:10:09,179 --> 00:10:12,220 I fod yn onest, rhaid i ddim ond naill ai chi gwybod hyn oddi ar frig eich pen, 240 00:10:12,220 --> 00:10:13,640 neu os ydych yn Google hwn a chael gwybod. 241 00:10:13,640 --> 00:10:18,150 Neu yn gwybod hyn, rwyf wedi agor yn y CS50 llosgydd y rhaglen derfynell, a oedd yn 242 00:10:18,150 --> 00:10:22,200 yn unig yw fersiwn mawr, sgrin lawn o beth sydd yn y waelod y ffenestr gedit yn. 243 00:10:22,200 --> 00:10:24,970 >> Ac mae'n ymddangos fod yna gorchymyn yn yr un modd cryno, a elwir yn 244 00:10:24,970 --> 00:10:29,280 dyn am llaw, lle os ydych yn teipio enw swyddogaeth a daro Chofnoda, 245 00:10:29,280 --> 00:10:32,240 byddwch yn mynd yn ôl yn deg dogfennaeth ddirgel. 246 00:10:32,240 --> 00:10:35,299 Dim ond testun sydd ar y cyfan yn edrych yn rhywbeth bach fel hyn. 247 00:10:35,299 --> 00:10:37,090 Mae'n ychydig yn llethol ar yr olwg gyntaf. 248 00:10:37,090 --> 00:10:39,048 Ond dweud y gwir yr wyf i'n mynd i gadael i fy llygaid pylu 249 00:10:39,048 --> 00:10:41,930 a dim ond yn canolbwyntio ar y rhan Rwy'n poeni am am y tro. 250 00:10:41,930 --> 00:10:42,780 >> Pa un yw hyn. 251 00:10:42,780 --> 00:10:45,470 Sy'n edrych yn strwythurol fel rhywbeth rwy'n gyfarwydd â. 252 00:10:45,470 --> 00:10:48,080 Yn wir, mae'r dudalen ddyn, felly i siarad, bydd yn dweud wrthych 253 00:10:48,080 --> 00:10:51,590 yn yr hyn pennawd ffeil swyddogaeth fel strlen ei ddiffinio. 254 00:10:51,590 --> 00:10:54,170 Felly, yr wyf i'n mynd i fynd yn ôl yn awr at gedit. 255 00:10:54,170 --> 00:10:59,070 Ac yr wyf i'n mynd i fynd yn ei flaen a ychwanegu i mewn yma #include 256 00:10:59,070 --> 00:11:00,480 ac arbed y ffeil. 257 00:11:00,480 --> 00:11:04,300 >> Rydw i'n mynd i glir y sgrin gyda Rheoli L Os ydych chi wedi bod yn meddwl. 258 00:11:04,300 --> 00:11:08,210 Ac yr wyf i'n mynd i ail-redeg gwneud string.0, yn llunio y tro hwn. 259 00:11:08,210 --> 00:11:11,790 ./string.0 Zamyla. 260 00:11:11,790 --> 00:11:15,020 Mae hynny'n ymddangos i weithio Gadewch i mi fynd yn ei flaen ac ailgynnal gyda Davenport. 261 00:11:15,020 --> 00:11:15,860 Enter. 262 00:11:15,860 --> 00:11:17,730 Ac mae hynny, hefyd, yn ymddangos i weithio. 263 00:11:17,730 --> 00:11:21,220 >> Felly gallwn wneud ychydig yn well na hyn, fodd bynnag, gallwn ddechrau i bethau daclus 264 00:11:21,220 --> 00:11:23,257 i fyny dim ond ychydig bach. 265 00:11:23,257 --> 00:11:25,590 Ac yr wyf i'n mynd i mewn gwirionedd cyflwyno un peth arall yn awr. 266 00:11:25,590 --> 00:11:28,930 Rydw i'n mynd i fynd yn ei flaen a gadw hyn mewn ffeil gwahanol. 267 00:11:28,930 --> 00:11:31,770 Ac yr wyf i'n mynd i alw y ffeil hon yn unig string1.c 268 00:11:31,770 --> 00:11:34,620 mwyn bod yn gyson â'r cod byddwch yn gallu dod o hyd ar-lein. 269 00:11:34,620 --> 00:11:37,050 >> A gadewch i ni ganolbwyntio ar union yr un cod. 270 00:11:37,050 --> 00:11:39,000 Mae'n ymddangos fy mod i wedi bod yn garedig o gymryd 271 00:11:39,000 --> 00:11:42,600 yn ganiataol y ffaith bod fy laptop, ac yn ei dro, mae'r peiriant CS50 272 00:11:42,600 --> 00:11:47,450 Mae gan lawer o gof, mae llawer o RAM, mae llawer o bytes o le 273 00:11:47,450 --> 00:11:48,920 lle gallaf storio llinynnau. 274 00:11:48,920 --> 00:11:53,560 >> Ond y gwir amdani os byddaf yn teipio hir ddigon, a digon o keystrokes, 275 00:11:53,560 --> 00:11:56,170 Gallwn yn y math theori mewn mwy cymeriadau 276 00:11:56,170 --> 00:11:58,830 na fy chyfrifiadur Mae cof am yn gorfforol. 277 00:11:58,830 --> 00:11:59,830 Ac mae hyn yn broblematig. 278 00:11:59,830 --> 00:12:03,050 Mae llawer yn hoffi y gall i int unig cyfrif mor uchel, yn ddamcaniaethol, 279 00:12:03,050 --> 00:12:06,600 gallwch ond gwasgu cymaint o gymeriadau i mewn i RAM eich cyfrifiadur neu ar hap 280 00:12:06,600 --> 00:12:07,920 Cof Mynediad. 281 00:12:07,920 --> 00:12:11,140 >> Felly, yr wyf yn well wedi rhagweld broblem hon, hyd yn oed 282 00:12:11,140 --> 00:12:13,660 er y gallai fod yn brin achos cornel, fel petai. 283 00:12:13,660 --> 00:12:15,670 Nid yw'n digwydd yn aml, gallai ddigwydd. 284 00:12:15,670 --> 00:12:18,815 Ac os bydd yn digwydd ac nid wyf yn ei wneud rhagweld a rhaglen ar ei gyfer, 285 00:12:18,815 --> 00:12:20,300 Gallai fy rhaglen yn gwneud pwy a ŵyr beth. 286 00:12:20,300 --> 00:12:22,220 Rhewi, hongian, reboot, beth bynnag. 287 00:12:22,220 --> 00:12:24,490 Rhywbeth ragwelir allai ddigwydd. 288 00:12:24,490 --> 00:12:27,120 >> Felly, yr hyn yr wyf i'n mynd i wneud erbyn hyn, o hyn ymlaen mewn gwirionedd, 289 00:12:27,120 --> 00:12:31,630 yw cyn i mi erioed blindly defnyddio newidyn fel s sy'n 290 00:12:31,630 --> 00:12:36,790 wedi cael ei neilltuo i'r gwerth dychwelyd rhyw swyddogaeth eraill fel getstring, 291 00:12:36,790 --> 00:12:40,200 Rydw i'n mynd i wneud yn siŵr bod ei werth yn ddilys. 292 00:12:40,200 --> 00:12:44,280 Felly, yr wyf yn gwybod yn unig o ôl darllen Dogfennaeth CS50 ar gyfer getstring, 293 00:12:44,280 --> 00:12:49,020 yn y pen draw byddwn yn eich pwyntio at, bod getstring dychwelyd symbol arbennig 294 00:12:49,020 --> 00:12:53,610 Gelwir NULL, N-U-L-L ym mhob capiau, os oes rhywbeth yn mynd o'i le. 295 00:12:53,610 --> 00:12:55,650 >> Felly, fel arfer, mae'n dychwelyd llinyn. 296 00:12:55,650 --> 00:12:59,700 Ond fel arall os bydd yn dychwelyd N-U-L-L-- byddwn yn y pen draw yn gweld beth sydd wir yn 297 00:12:59,700 --> 00:13:01,790 yw-- mai dim ond yn golygu rhywbeth ddigwyddodd drwg. 298 00:13:01,790 --> 00:13:05,560 Yn awr mae hyn yn golygu, yn debyg iawn yn Scratch, Gallaf wirio cyflwr yma yn C, 299 00:13:05,560 --> 00:13:08,830 os nad yw'n s NULL cyfartal. 300 00:13:08,830 --> 00:13:11,930 Felly os nad ydych chi wedi gweld hyn o'r blaen, nid yw hyn yn unig yn golygu gwneud gyfartal. 301 00:13:11,930 --> 00:13:15,290 >> Felly mae'n y gwrthwyneb i hafal cyfartal, a oedd, yn galw i gof, 302 00:13:15,290 --> 00:13:18,940 yn wahanol i un yn hafal i, sef aseiniad. 303 00:13:18,940 --> 00:13:23,030 Felly os s nid yw'n gyfartal NULL, dim ond wedyn yn gwneud 304 00:13:23,030 --> 00:13:25,980 Rwyf am i gyflawni y llinellau hyn o god. 305 00:13:25,980 --> 00:13:28,080 Felly, mewn geiriau eraill, cyn i mi plymio yn blindly 306 00:13:28,080 --> 00:13:30,919 a dechrau ailadrodd dros s, a'i drin yn 307 00:13:30,919 --> 00:13:33,710 fel pe ei fod yn dilyniant o cymeriadau, dw i'n mynd i wirio yn gyntaf, 308 00:13:33,710 --> 00:13:37,900 arhoswch funud, mae s bendant nid hafal i'r gwerth hwn arbennig, NULL? 309 00:13:37,900 --> 00:13:40,030 >> Oherwydd os ydyw, gall pethau drwg yn digwydd. 310 00:13:40,030 --> 00:13:43,080 Ac am y tro, yn cymryd yn ganiataol pethau sy'n ddrwg digwydd yn golygu eich dyrfau rhaglen, 311 00:13:43,080 --> 00:13:45,070 ac ni allwch o reidrwydd adennill. 312 00:13:45,070 --> 00:13:46,800 Felly dweud y gwir, mae'n edrych yn uglier. 313 00:13:46,800 --> 00:13:48,660 mae'n fath o ddryslyd nawr i cipolwg ar. 314 00:13:48,660 --> 00:13:50,780 Ond bydd hyn yn dod yn fwy cyfarwydd cyn bo hir. 315 00:13:50,780 --> 00:13:52,920 >> Ond dw i'n mynd i gynnig bellach yn un gwelliant arall. 316 00:13:52,920 --> 00:13:54,660 Dyna welliant i'w chywirdeb. 317 00:13:54,660 --> 00:13:58,800 Mae fy rhaglen yn awr yn fwy cywir, oherwydd yn yr achos prin nad oedd digon o gof 318 00:13:58,800 --> 00:14:01,180 bodoli, byddaf yn ymdrin â hi, a 'n annhymerus' jyst yn gwneud dim. 319 00:14:01,180 --> 00:14:02,680 Yr wyf o leiaf ni fydd damwain. 320 00:14:02,680 --> 00:14:05,000 >> Ond gadewch i ni wneud fersiwn derfynol yma. 321 00:14:05,000 --> 00:14:07,690 Ac mae ffeil o'r enw string2.c. 322 00:14:07,690 --> 00:14:10,190 Rydw i'n mynd i bastio bod un cod am ddim ond ennyd, 323 00:14:10,190 --> 00:14:14,210 ac yr wyf i'n mynd i dynnu sylw at hyn llinell, 11, yma, am ddim ond ennyd. 324 00:14:14,210 --> 00:14:18,179 Nawr bod y realiti yw bod crynoadyddion smart fel y gallai chlang atgyweiria hyn i ni 325 00:14:18,179 --> 00:14:19,970 tu ôl i'r llenni heb ein erioed wybod. 326 00:14:19,970 --> 00:14:24,670 Ond gadewch i ni feddwl am hyn sylfaenol fel dyluniad problemus. 327 00:14:24,670 --> 00:14:29,010 >> Mae'r llinell o god yw, wrth gwrs, gan ddywedyd, ymgychwyn rhyw newidyn fi i 0. 328 00:14:29,010 --> 00:14:30,260 Dyna 'n bert syml. 329 00:14:30,260 --> 00:14:34,691 A beth unwaith eto mae hyn yn datganiad, yma, fi ++, yn ei wneud? 330 00:14:34,691 --> 00:14:37,066 Rydym wedi ei weld o'r blaen, ond yr ydym yn nid oedd yn wir yn siarad am y peth. 331 00:14:37,066 --> 00:14:37,900 >> CYNULLEIDFA: incrementing i. 332 00:14:37,900 --> 00:14:39,191 >> DAVID J. Malan: incrementing i. 333 00:14:39,191 --> 00:14:41,890 Felly, ar bob iteriad drwy dolen hwn, pob cylch, 334 00:14:41,890 --> 00:14:43,570 rydych yn incrementing ff erbyn un. 335 00:14:43,570 --> 00:14:45,740 Felly, mae'n mynd yn fwy, ac yn fwy, a mwy hyd nes y ddolen i ben. 336 00:14:45,740 --> 00:14:46,810 Sut mae'n terfynu? 337 00:14:46,810 --> 00:14:49,430 Wel mae canol hwn cyflwr yr ydym wedi defnyddio o'r blaen. 338 00:14:49,430 --> 00:14:52,500 Rydych chi wedi gweld ac yn walkthroughs yn y P a osodwyd. 339 00:14:52,500 --> 00:14:53,880 >> Ond beth yw yr ymadrodd hwn? 340 00:14:53,880 --> 00:14:58,352 A yw'r ddolen ganlynol fel belled â fi yn llai na beth? 341 00:14:58,352 --> 00:14:59,810 CYNULLEIDFA: Mae hyd y llinyn. 342 00:14:59,810 --> 00:15:01,518 DAVID J. Malan: Y hyd y llinyn. 343 00:15:01,518 --> 00:15:04,300 Felly mae'n eithaf lân cyfieithu i'r Saesneg yn yr ystyr hwnnw. 344 00:15:04,300 --> 00:15:08,810 Nawr bod y broblem yw bod bob tro rwy'n ailadrodd drwy'r ddolen hon mewn theori, 345 00:15:08,810 --> 00:15:10,000 Rwy'n gofyn y cwestiwn hwn. 346 00:15:10,000 --> 00:15:12,250 Yn ff llai na hyd y llinyn s? 347 00:15:12,250 --> 00:15:14,500 Yn ff llai na hyd y llinyn s? 348 00:15:14,500 --> 00:15:18,380 >> Nawr yn ff yn newid ar bob iteriad? 349 00:15:18,380 --> 00:15:18,880 Mae'n. 350 00:15:18,880 --> 00:15:19,629 Oherwydd y ++. 351 00:15:19,629 --> 00:15:21,700 Felly pob iteriad i yn mynd yn fwy. 352 00:15:21,700 --> 00:15:25,411 Ond a yw s mynd yn fwy, neu llai, neu newid o gwbl? 353 00:15:25,411 --> 00:15:25,910 Rhif 354 00:15:25,910 --> 00:15:30,240 Felly, o ran dyluniad, un o'r echelinau ar hyd yr ydym yn ceisio werthuso cod 355 00:15:30,240 --> 00:15:32,610 yn y dosbarth, mae hyn yn teimlo fath o dwp. 356 00:15:32,610 --> 00:15:34,690 >> Fel chi yn llythrennol, ar bob iteriad 357 00:15:34,690 --> 00:15:37,110 y ddolen hon yn gofyn i'r un cwestiwn damn eto, 358 00:15:37,110 --> 00:15:40,770 ac unwaith eto, ac unwaith eto, ac yn llythrennol nid yw byth yn mynd i newid. 359 00:15:40,770 --> 00:15:44,220 O leiaf os nad wyf yn cyffwrdd ac ceisio newid cynnwys y s. 360 00:15:44,220 --> 00:15:46,610 Fel y gallaf ei wneud ychydig yn well na hyn. 361 00:15:46,610 --> 00:15:49,530 >> A hyn yr wyf i'n mynd i wneud nid yw datgan dim ond un ff amrywiol, 362 00:15:49,530 --> 00:15:53,330 ond ail newidyn annhymerus 'fympwyol, ond yn gonfensiynol, alw yn n. 363 00:15:53,330 --> 00:15:55,940 Neilltuo n gyfartal i'r hyd llinyn o s. 364 00:15:55,940 --> 00:15:59,090 Ac yna dros yma, yr wyf i'n mynd i gwneud Optimization bach clyfar, felly 365 00:15:59,090 --> 00:16:03,460 i siarad, bod ar ddiwedd y dydd dim mwy cywir neu ddim llai cywir 366 00:16:03,460 --> 00:16:04,260 nag o'r blaen. 367 00:16:04,260 --> 00:16:05,500 Ond mae'n well dyluniad. 368 00:16:05,500 --> 00:16:09,480 Yn y ffaith fy mod i'n defnyddio llai o amser, llai o gylchoedd CPU, felly 369 00:16:09,480 --> 00:16:14,040 i siarad, ateb yr un cwestiwn, ond dim ond unwaith. 370 00:16:14,040 --> 00:16:17,870 >> Unrhyw gwestiynau am y cyffredinol egwyddor gwella, 371 00:16:17,870 --> 00:16:21,294 dweud, effeithlonrwydd rhaglen yn? 372 00:16:21,294 --> 00:16:21,991 Yeah? 373 00:16:21,991 --> 00:16:23,699 CYNULLEIDFA: Pam ydych chi'n defnyddiwch y [Anghlywadwy]? 374 00:16:23,699 --> 00:16:25,760 375 00:16:25,760 --> 00:16:27,010 DAVID J. Malan: Cwestiwn da. 376 00:16:27,010 --> 00:16:30,690 Felly, pam yr ydym yn rhoi'r ++ ar y diwedd ff yn hytrach na dechrau'r ff? 377 00:16:30,690 --> 00:16:33,070 Yn yr achos hwn, mae wedi dim effaith swyddogaethol. 378 00:16:33,070 --> 00:16:36,670 Ac yn gyffredinol, yr wyf yn tueddu i defnyddio'r gweithredwr Postfix 379 00:16:36,670 --> 00:16:41,750 fel ei bod yn ychydig yn fwy eglur fel i'r adeg y llawdriniaeth yn digwydd. 380 00:16:41,750 --> 00:16:46,670 >> Ar gyfer rhai sy'n anghyfarwydd, mae yna un arall datganiadau lle gallech wneud ++ i. 381 00:16:46,670 --> 00:16:48,747 Mae'r rhain yn swyddogaethol cyfatebol yn yr achos hwn 382 00:16:48,747 --> 00:16:51,080 oherwydd does dim byd arall o gwmpas y incrementation. 383 00:16:51,080 --> 00:16:54,435 Ond gallwch ddod o hyd i achosion a llinellau o god 384 00:16:54,435 --> 00:16:55,810 lle sy'n gwneud gwahaniaeth. 385 00:16:55,810 --> 00:16:57,810 Felly ar y cyfan, nid ydym yn ei wneud hyd yn oed yn siarad am yr un yma. 386 00:16:57,810 --> 00:17:00,690 Oherwydd dweud y gwir, mae'n gwneud eich cod sexier, ac yn fath o fwy slic, 387 00:17:00,690 --> 00:17:01,776 a llai o gymeriadau. 388 00:17:01,776 --> 00:17:04,859 Ond y gwir amdani yw ei fod yn llawer caletach, Rwy'n credu, hyd yn oed i mi i lapio fy meddwl 389 00:17:04,859 --> 00:17:07,319 o'i gwmpas weithiau, trefn y gweithrediadau. 390 00:17:07,319 --> 00:17:09,750 Felly, wrth fynd heibio, os ydych yn ddim wir yn hoffi hyn, 391 00:17:09,750 --> 00:17:14,650 er bod hyn yn fath o sexy edrych, gallwch hefyd wneud i + = 1, 392 00:17:14,650 --> 00:17:18,880 sef y fersiwn uglier y un syniad ar gyfer incrementation Postfix. 393 00:17:18,880 --> 00:17:22,250 >> Yr wyf yn dweud hyn ac rydych Dylid gwneud hwyl am ei fod, 394 00:17:22,250 --> 00:17:25,140 ond byddwch yn dod i weld cod fel rhywbeth prydferth cyn bo hir. 395 00:17:25,140 --> 00:17:27,160 >> [Chwerthin] 396 00:17:27,160 --> 00:17:28,410 >> DAVID J. Malan: Iawn? 397 00:17:28,410 --> 00:17:29,360 Yeah. 398 00:17:29,360 --> 00:17:30,480 Cwestiwn yn y canol. 399 00:17:30,480 --> 00:17:32,146 >> CYNULLEIDFA: A oes angen i chi ddweud int n? 400 00:17:32,146 --> 00:17:34,020 DAVID J. Malan: Yr ydych yn gwneud oes angen i ddweud int n. 401 00:17:34,020 --> 00:17:37,670 Felly, gan ein bod eisoes wedi dweud int, Nid oes angen i chi ei ddweud eto. 402 00:17:37,670 --> 00:17:41,820 Mae'r dal yw bod n rhaid i fod yr un math data ag i. 403 00:17:41,820 --> 00:17:43,310 Felly dyna dim ond cyfleustra yma. 404 00:17:43,310 --> 00:17:44,058 Yeah. 405 00:17:44,058 --> 00:17:47,806 >> CYNULLEIDFA: Allwch chi fynd dros y cymeriad print s braced i eto? 406 00:17:47,806 --> 00:17:48,930 DAVID J. Malan: Yn hollol. 407 00:17:48,930 --> 00:17:52,110 Felly% c, yn cofio o ddiwethaf amser, yn unig yw dalfan. 408 00:17:52,110 --> 00:17:53,930 Mae'n golygu rhoi torgoch yma. 409 00:17:53,930 --> 00:17:56,780 slaes n, wrth gwrs, dim ond modd rhoi toriad llinell yma. 410 00:17:56,780 --> 00:17:59,540 Fel bod dim ond yn gadael, yn awr, darn hwn o gystrawen newydd. 411 00:17:59,540 --> 00:18:03,730 Ac mae hyn yn ei ddweud yn llythrennol, chrafangia y llinyn o'r enw s ac yn mynd yn cael ei 412 00:18:03,730 --> 00:18:06,050 i'th cymeriad, fel petai. 413 00:18:06,050 --> 00:18:10,590 >> Ac yr wyf yn dal i ddweud cymeriad i'th oherwydd ar bob fersiwn o'r ddolen hon 414 00:18:10,590 --> 00:18:14,540 'i' fel petaem yn argraffu allan, s braced cyntaf 0, 415 00:18:14,540 --> 00:18:15,780 fel y gallai rhaglennydd ddweud. 416 00:18:15,780 --> 00:18:18,680 Yna s braced 1, yna s braced 2, yna 3, yna 4. 417 00:18:18,680 --> 00:18:21,610 Ond wrth gwrs ei fod yn amrywiol, felly Fi jyst yn mynegi 'i ag i. 418 00:18:21,610 --> 00:18:23,900 >> Allweddol, fodd bynnag, yw gwireddu, yn enwedig os nad ydych wedi 419 00:18:23,900 --> 00:18:26,358 bod yn acclimating i'r byd hwn o raglennu, lle'r ydym i gyd 420 00:18:26,358 --> 00:18:28,950 ymddangos i gyfrif o sero, gotta dechrau cyfrif o sero nawr. 421 00:18:28,950 --> 00:18:35,130 Gan fod llinynnau, cymeriad gyntaf, mae'r z yn Zamyla yw er gwell neu er gwaeth 422 00:18:35,130 --> 00:18:40,490 mynd i fyw yn rhif lleoliad sero. 423 00:18:40,490 --> 00:18:48,210 >> Mae pob hawl, felly gadewch i mi ddod â ni yn ôl yma i Zamyla 424 00:18:48,210 --> 00:18:50,746 a gweld beth sy'n digwydd mewn gwirionedd ar o dan y cwfl. 425 00:18:50,746 --> 00:18:52,370 Felly mae yna syniad hwn o'r math castio. 426 00:18:52,370 --> 00:18:53,800 Efallai eich bod mewn gwirionedd yn rhaid chwarae â hyn eisoes, 427 00:18:53,800 --> 00:18:55,970 efallai am y haciwr rhifyn o P sefydlu un. 428 00:18:55,970 --> 00:19:00,320 Ond math castio yn unig yn cyfeirio at y gallu mewn C a rhai ieithoedd eraill 429 00:19:00,320 --> 00:19:03,170 i drosi un math ddata i un arall. 430 00:19:03,170 --> 00:19:05,450 >> Nawr sut y gallem yn gweld hyn 'n bert yn ddirwystr? 431 00:19:05,450 --> 00:19:08,530 Felly, mae hyn, galw i gof, yn ddechrau o'r wyddor Saesneg. 432 00:19:08,530 --> 00:19:11,265 A'r cyd-destun, yn galw i gof, o fel wythnos yn ôl yn ASCII. 433 00:19:11,265 --> 00:19:13,790 Mae'r Cod Safonol America gyfer Cyfnewidfa Gwybodaeth. 434 00:19:13,790 --> 00:19:17,080 Sydd ychydig yn ffordd hir iawn o ddweud mapio o lythyrau 435 00:19:17,080 --> 00:19:19,370 i rifau, ac o rifau i lythyrau. 436 00:19:19,370 --> 00:19:22,940 >> Felly A thrwy M yma, dot dot dot, llinellau i fyny gyda, galw i gof, 437 00:19:22,940 --> 00:19:25,582 y nifer degol 65 ar i fyny. 438 00:19:25,582 --> 00:19:27,290 Ac nid oeddem yn siarad am hyn yn benodol, 439 00:19:27,290 --> 00:19:29,850 ond yn sicr mae 'na debyg niferoedd ar gyfer llythrennau bach. 440 00:19:29,850 --> 00:19:30,820 Ac yn wir, mae yna. 441 00:19:30,820 --> 00:19:33,730 Mae'r byd Penderfynodd rhai blynyddoedd yn ôl bod ychydig, llythrennau bach a, 442 00:19:33,730 --> 00:19:35,020 yn mynd i fod 97. 443 00:19:35,020 --> 00:19:38,010 Ac ychydig b yn mynd i fod yn 98, ac yn y blaen. 444 00:19:38,010 --> 00:19:40,200 >> Ac ar gyfer unrhyw allweddol eraill ar eich bysellfwrdd, mae 445 00:19:40,200 --> 00:19:42,190 mynd i fod patrwm tebyg o ddarnau. 446 00:19:42,190 --> 00:19:44,540 Neu equivalently, rhif degol. 447 00:19:44,540 --> 00:19:47,110 Felly, y cwestiwn dan sylw, Yna, yw sut y gallwn 448 00:19:47,110 --> 00:19:49,400 mewn gwirionedd yn gweld hyn o dan y cwfl? 449 00:19:49,400 --> 00:19:51,539 Felly, yr wyf i'n mynd i fynd drosodd i gedit eto. 450 00:19:51,539 --> 00:19:53,330 Ac yn hytrach na math yr un yma o'r dechrau, 451 00:19:53,330 --> 00:19:55,330 Rydw i'n mynd i fynd yn ei flaen a jyst agor i fyny rhywbeth 452 00:19:55,330 --> 00:19:58,350 o cod heddiw o'r enw ASCII sero. 453 00:19:58,350 --> 00:20:01,210 >> A ASCII sero edrych fel hyn. 454 00:20:01,210 --> 00:20:02,710 Felly gadewch i lapio ein meddyliau o gwmpas hyn. 455 00:20:02,710 --> 00:20:04,969 Felly, yn gyntaf, yr wyf wedi gwneud sylwadau y cod, sydd yn braf. 456 00:20:04,969 --> 00:20:07,010 Oherwydd ei fod yn llythrennol yn dweud wrthyf beth i'w ddisgwyl, 457 00:20:07,010 --> 00:20:08,950 arddangos mapio ar gyfer llythyrau priflythyren. 458 00:20:08,950 --> 00:20:13,690 Nawr, nid wyf yn hollol yn gwybod beth yr wyf yn olygu wrth hynny, felly gadewch i ni gasglu. 459 00:20:13,690 --> 00:20:16,870 >> Yn y Saesneg, efallai Saesneg braidd yn techie, 460 00:20:16,870 --> 00:20:20,660 beth mae llinell 18 yn ymddangos i fod yn ei wneud i ni? 461 00:20:20,660 --> 00:20:21,500 Dim ond llinell 18. 462 00:20:21,500 --> 00:20:22,430 Beth sy'n ei ysgogi? 463 00:20:22,430 --> 00:20:25,192 Sut beth yw mynd i gychwyn yma? 464 00:20:25,192 --> 00:20:26,100 >> CYNULLEIDFA: Mae dolen. 465 00:20:26,100 --> 00:20:26,630 >> DAVID J. Malan: Mae dolen. 466 00:20:26,630 --> 00:20:28,463 A sawl gwaith yn bod yn mynd i ailadrodd? 467 00:20:28,463 --> 00:20:31,562 468 00:20:31,562 --> 00:20:33,270 CYNULLEIDFA: [gosod eu hunain yn LLEISIAU] chwe gwaith. 469 00:20:33,270 --> 00:20:34,830 DAVID J. Malan: Heb chwe gwaith. 470 00:20:34,830 --> 00:20:35,840 CYNULLEIDFA: 26 gwaith. 471 00:20:35,840 --> 00:20:36,560 DAVID J. Malan: 26 gwaith. 472 00:20:36,560 --> 00:20:37,060 Yeah, mae'n ddrwg gennyf. 473 00:20:37,060 --> 00:20:37,960 26 gwaith. 474 00:20:37,960 --> 00:20:38,460 Pam? 475 00:20:38,460 --> 00:20:41,590 Wel, mae'n ychydig yn rhyfedd, ond Rydw i wedi dechrau cyfrif o 65. 476 00:20:41,590 --> 00:20:43,300 Pa yn rhyfedd, ond nid yn anghywir. 477 00:20:43,300 --> 00:20:44,610 Dyw hi ddim yn ddrwg fesul dweud. 478 00:20:44,610 --> 00:20:46,980 Ac yr wyf i'n ei wneud mai dim ond oherwydd, er enghraifft hon, 479 00:20:46,980 --> 00:20:50,455 Im 'yn fath o ragweld bod cyfalaf A yn 65 oed. 480 00:20:50,455 --> 00:20:53,330 Yn awr nid yw hyn yw'r mwyaf cain ffordd o wneud hyn, i fath o cod caled 481 00:20:53,330 --> 00:20:56,130 gwerthoedd esoterig nad oes unrhyw un Disgwylir byth i'w gofio. 482 00:20:56,130 --> 00:21:00,155 >> Ond am y tro, yn sylwi fy mod i'n gwneud hyn i fyny trwy 65 plws 26. 483 00:21:00,155 --> 00:21:03,030 Oherwydd mae'n debyg Dydw i ddim hyd yn oed am i wneud y rhifyddeg yn fy mhen. 484 00:21:03,030 --> 00:21:04,440 Felly byddaf yn gadael y compiler wneud hynny. 485 00:21:04,440 --> 00:21:08,600 Ond yna ar bob dolen, pob iteriad y ddolen, rwy'n incrementing i. 486 00:21:08,600 --> 00:21:10,196 >> Felly nawr mae hyn yn edrych ychydig yn cryptig. 487 00:21:10,196 --> 00:21:13,320 Ond dylem gael yr adeilad sylfaenol blociau â hwy i ddeall hyn. 488 00:21:13,320 --> 00:21:15,510 % C yn unig yw placeholder gyfer torgoch. 489 00:21:15,510 --> 00:21:19,010 % Ff yn placeholder gyfer int. 490 00:21:19,010 --> 00:21:23,310 Ac mae'n troi allan bod drwy ddefnyddio'r hyn cystrawen newydd, rhwng cromfachau hwn, felly 491 00:21:23,310 --> 00:21:26,100 i siarad, felly fath ddata y tu mewn cromfachau, 492 00:21:26,100 --> 00:21:32,270 Gallaf orfodi'r compiler i drin ff Nid yn gyfanrif, ond fel torgoch. 493 00:21:32,270 --> 00:21:35,520 >> A thrwy hynny yn dangos cymeriad i mi cyfatebol y nifer hwnnw. 494 00:21:35,520 --> 00:21:37,986 Yn awr i lawr yma, y ​​cod hwn 'n bert lawer yr un fath. 495 00:21:37,986 --> 00:21:39,860 Fi jyst eisiau gwneud super eglur y ffaith 496 00:21:39,860 --> 00:21:42,095 fy mod yn cychwyn am 97, sy'n cael ei llythrennau bach a. 497 00:21:42,095 --> 00:21:44,080 Ar i fyny drwy 26 mwy o lythyrau. 498 00:21:44,080 --> 00:21:46,970 A dwi'n doing-- eto, castio fi, fel petai. 499 00:21:46,970 --> 00:21:49,160 Neu math castio fi, fel petai. 500 00:21:49,160 --> 00:21:51,420 >> O int i torgoch. 501 00:21:51,420 --> 00:21:55,760 Felly, y canlyniad terfynol yn mynd i fod, a dweud y gwir, wybodaeth yr ydym eisoes yn ei wybod. 502 00:21:55,760 --> 00:21:59,411 Rydw i'n mynd i wneud Ni dot-- ascii-0 dot c. 503 00:21:59,411 --> 00:22:02,160 Rhybudd, mae'n debyg ei wneud bod camgymeriad gan fy mod yn unig oedd yn ddamweiniol. 504 00:22:02,160 --> 00:22:03,820 Gwneud ascii-0. 505 00:22:03,820 --> 00:22:06,090 Nawr rwy'n mynd i wneud ./ascii-0. 506 00:22:06,090 --> 00:22:09,050 'N annhymerus' chwyddo i mewn, ac yn anffodus mae'n mynd i sgrolio oddi ar y sgrin. 507 00:22:09,050 --> 00:22:15,060 Ond rydym yn gweld siart gyfan lle mae mapiau i 97, b mapiau i 98, 508 00:22:15,060 --> 00:22:18,931 ac os ydym yn sgrolio i fyny ymhellach A, wrth gwrs, mapiau i 65. 509 00:22:18,931 --> 00:22:21,180 Felly mae hyn yn dim ond i ddweud bod yr hyn yr ydym wedi bod yn pregethu, 510 00:22:21,180 --> 00:22:25,310 mae cywerthedd hwn, yn cael ei mewn gwirionedd yr achos mewn gwirionedd. 511 00:22:25,310 --> 00:22:28,000 Felly addasiad cyflym o hyn. 512 00:22:28,000 --> 00:22:31,220 Gadewch i mi agor i fyny ascii-1.c. 513 00:22:31,220 --> 00:22:38,070 Ac yn sylwi ar hyn yn glyfar, didoli o, eglurhad o hyn. 514 00:22:38,070 --> 00:22:41,770 Mae hyn yn ascii-1.c, a sylwi ar y peth crazy. 515 00:22:41,770 --> 00:22:45,120 >> Ac mae hyn yn wir yn mynd at galon o'r hyn y cyfrifiaduron yn ei wneud. 516 00:22:45,120 --> 00:22:48,150 Hyd yn oed er y byddai i ni bodau dynol Nid yw cyfrif yn nhermau letters-- 517 00:22:48,150 --> 00:22:50,380 Nid wyf yn dechrau meddwl, bob hawl, yna b, 518 00:22:50,380 --> 00:22:52,590 ac yn defnyddio hynny i gyfrif gwrthrychau corfforol. 519 00:22:52,590 --> 00:22:58,680 Gallwch sicr yn dweud fy mod eisiau ymgychwyn rhyw newidyn o'r enw c-- 520 00:22:58,680 --> 00:23:03,220 ond allwn i wedi galw anything-- hwn felly c yn ymgychwyn i gyfalaf A. 521 00:23:03,220 --> 00:23:07,560 >> Gan fod ar ddiwedd y dydd, mae'r cyfrifiadur Nid yw gofal yr hyn yr ydych yn storio, 522 00:23:07,560 --> 00:23:10,170 dim ond yn poeni sut yr ydych am i gyflwyno'r wybodaeth honno. 523 00:23:10,170 --> 00:23:13,560 Sut ydych chi am i'r cyfrifiadur i dehongli bod patrwm o ddarnau? 524 00:23:13,560 --> 00:23:16,320 Felly, nid yw hyn yn rhywbeth yr wyf yn Byddai yn gyffredinol yn argymell yn ei wneud. 525 00:23:16,320 --> 00:23:19,500 Mae'n wir yn unig esiampl i cyfleu eich bod yn gallu gwbl 526 00:23:19,500 --> 00:23:22,049 ymgychwyn yn gyfanrif i torgoch. 527 00:23:22,049 --> 00:23:24,090 Gan fod o dan y cwfl o torgoch, wrth gwrs, 528 00:23:24,090 --> 00:23:26,170 yn unig yw nifer 0-255. 529 00:23:26,170 --> 00:23:28,540 >> Felly, gallwch yn sicr roi y tu mewn o int. 530 00:23:28,540 --> 00:23:30,890 A beth mae hyn hefyd dangos ei bod yn 531 00:23:30,890 --> 00:23:34,040 Gall trosi o un deipio i un arall, yma, 532 00:23:34,040 --> 00:23:36,780 yn y pen draw argraffu yr un peth. 533 00:23:36,780 --> 00:23:44,760 Ac yn wir, mae hyn y byddaf yn atgyweiria online-- oedd i fod i ddweud hyn, unwaith eto, yma. 534 00:23:44,760 --> 00:23:48,610 Gadewch i mi lanhau hyn i fyny ar-lein, ac rydym annhymerus gweld mewn walkthrough ar-lein yn ôl yr angen, 535 00:23:48,610 --> 00:23:50,280 hyn a fwriadwyd yno. 536 00:23:50,280 --> 00:23:50,960 >> OK. 537 00:23:50,960 --> 00:23:53,892 Enghraifft Felly olaf nawr yn cynnwys a a b, ac yna byddwn annhymerus 538 00:23:53,892 --> 00:23:54,850 cymryd pethau i fyny hollt. 539 00:23:54,850 --> 00:23:58,330 Hynny gyda a b, ac c yn y cyfalafu 540 00:23:58,330 --> 00:24:01,560 a'r cywerthedd hynny, gadewch i ni yn edrych ar yr enghraifft hon, yma. 541 00:24:01,560 --> 00:24:02,752 Enghraifft arall cod. 542 00:24:02,752 --> 00:24:04,460 Un sy'n byddwn yn agor a wnaed yn barod, felly rydym 543 00:24:04,460 --> 00:24:06,440 Nid oes rhaid i deipio i gyd allan o'r dechrau. 544 00:24:06,440 --> 00:24:09,420 >> Ac yn sylwi gan ddisgwyl rydym yn defnyddio header lluosog 545 00:24:09,420 --> 00:24:13,240 ffeil, ymhlith sydd yn ein ffrind newydd, string.h. 546 00:24:13,240 --> 00:24:15,597 Yn awr mae hyn yn edrych, ar y dechrau olwg, ychydig yn cryptig. 547 00:24:15,597 --> 00:24:18,180 Ond gadewch i ni weld os na allwn resymu drwy'r hyn sy'n digwydd yma. 548 00:24:18,180 --> 00:24:21,150 Yn gyntaf yr wyf yn cael llinyn gan y defnyddiwr, ac yr wyf yn rhoi y llinyn mewn newidyn 549 00:24:21,150 --> 00:24:22,286 Gelwir s. 550 00:24:22,286 --> 00:24:24,090 Copïwch past o'r blaen. 551 00:24:24,090 --> 00:24:27,250 Yn llinell 22, Im 'yn ôl pob golwg gwneud yn union beth 552 00:24:27,250 --> 00:24:30,760 Fe wnes eiliad yn ôl, rwy'n ailadrodd dros y cymeriadau yn s. 553 00:24:30,760 --> 00:24:34,780 >> Ac y triciau yn newydd yma yn cael eu defnyddio hyd llinyn, mae'r mân Optimization 554 00:24:34,780 --> 00:24:37,930 o storio hyd llinyn yn n, yn hytrach na alwedigaeth strlen eto, 555 00:24:37,930 --> 00:24:38,850 ac unwaith eto, ac unwaith eto. 556 00:24:38,850 --> 00:24:41,120 A dim ond gwirio bod fi yn llai na n. 557 00:24:41,120 --> 00:24:43,330 Nawr dyma, pethau'n mynd yn ychydig yn ddiddorol. 558 00:24:43,330 --> 00:24:45,980 Ond mae'r un cais o hyn un syniad newydd. 559 00:24:45,980 --> 00:24:48,470 Yr hyn yn Saesneg yn ei wneud s braced i gynrychioli? 560 00:24:48,470 --> 00:24:51,772 561 00:24:51,772 --> 00:24:54,260 >> CYNULLEIDFA: Gan gyfrif pob cymeriad [Anghlywadwy]. 562 00:24:54,260 --> 00:24:55,926 >> DAVID J. Malan: Gan gyfrif pob cymeriad. 563 00:24:55,926 --> 00:24:58,680 A hyd yn oed yn fwy cryno, s braced i gynrychioli beth? 564 00:24:58,680 --> 00:25:00,950 A fyddech chi'n dweud. 565 00:25:00,950 --> 00:25:04,084 Peidio â rhoi chi ar y fan a'r lle yma. 566 00:25:04,084 --> 00:25:06,375 >> CYNULLEIDFA: Well-- 567 00:25:06,375 --> 00:25:09,500 DAVID J. Malan: Felly, os y gair yw-- os y llinyn yn Zamyla, sy'n starts-- 568 00:25:09,500 --> 00:25:12,380 CYNULLEIDFA: --you delio â y cymeriadau separately-- 569 00:25:12,380 --> 00:25:13,690 DAVID J. Malan: Da. 570 00:25:13,690 --> 00:25:14,190 Yn union. 571 00:25:14,190 --> 00:25:17,940 Mae'r nodiant braced sgwâr yn caniatáu i chi i gael gafael ar bob cymeriad yn unigol, 572 00:25:17,940 --> 00:25:21,120 felly s braced 0 yn mynd i fod y cymeriad cyntaf yn y llinyn. 573 00:25:21,120 --> 00:25:24,110 s braced 1 yn mynd i fod yr ail, ac yn y blaen. 574 00:25:24,110 --> 00:25:28,050 Felly, y cwestiwn rwy'n gofyn, yma, yn y cyflwr hwn yw beth? 575 00:25:28,050 --> 00:25:33,984 A yw'r cymeriad i'th o s mwy na neu'n hafal i lythrennau bach a? 576 00:25:33,984 --> 00:25:36,400 A beth yw ystyr hyn, fan hyn, gyda'r ampersands dwbl? 577 00:25:36,400 --> 00:25:36,800 CYNULLEIDFA (YNGHYD): Ac. 578 00:25:36,800 --> 00:25:37,210 DAVID J. Malan: A. 579 00:25:37,210 --> 00:25:38,418 Mae'n jyst yn cyfateb i hyn. 580 00:25:38,418 --> 00:25:42,310 Ac nid yw'r gair allweddol yn C, rhaid i chi defnydd, annoyingly, ampersand ampersand. 581 00:25:42,310 --> 00:25:47,520 Ac mae hyn, i'r gwrthwyneb, yn gofyn yn s yn gymeriad i'th llai na neu'n hafal 582 00:25:47,520 --> 00:25:49,030 i lythrennau bach z? 583 00:25:49,030 --> 00:25:52,440 Ac eto, dyma lle deall y sylfaenol 584 00:25:52,440 --> 00:25:54,550 gweithredu cyfrifiadur yn gwneud synnwyr. 585 00:25:54,550 --> 00:25:57,330 Sylwch fod, er bod gen i y dot dot dot dros yno, 586 00:25:57,330 --> 00:26:04,410 edrych fel trwy z mewn llythrennau bach yn cael eu pob gwerth cydgyffwrdd i fyny o 97 ar i fyny. 587 00:26:04,410 --> 00:26:07,820 >> Ac un peth ar gyfer priflythyren yn dechrau am 65. 588 00:26:07,820 --> 00:26:10,410 Felly mae'r tecawê, yna, yw ei fod yn Saesneg, 589 00:26:10,410 --> 00:26:12,760 sut fyddech chi'n disgrifio pa llinell 24 yn ei wneud? 590 00:26:12,760 --> 00:26:15,736 591 00:26:15,736 --> 00:26:16,728 Yeah? 592 00:26:16,728 --> 00:26:21,575 >> CYNULLEIDFA: Ar 24 ei fod yn edrych i weld a yw pob cymeriad yn llythrennau bach. 593 00:26:21,575 --> 00:26:24,700 DAVID J. Malan: Mae'n gwirio a bob cymeriad yn llythyr llythrennau bach. 594 00:26:24,700 --> 00:26:28,590 Felly hyd yn oed yn fwy cryno, yw'r gymeriad i'th o s llythrennau bach? 595 00:26:28,590 --> 00:26:30,690 Dyna'r cyfan rydym yn mynegi yma yn rhesymegol, 596 00:26:30,690 --> 00:26:33,750 ychydig yn gryptig, ond yn y pen draw 'n bert yn ddirwystr. 597 00:26:33,750 --> 00:26:36,480 Yn s yn llythrennau bach i'th gymeriad? 598 00:26:36,480 --> 00:26:40,130 >> Os felly, a dyma lle mae pethau cael plygu ychydig o feddwl 599 00:26:40,130 --> 00:26:44,760 am ddim ond ennyd, os felly, ewch ymlaen ac argraffu gymeriad. 600 00:26:44,760 --> 00:26:47,360 Felly, mae hyn yn unig yw dalfan, ond pa gymeriad? 601 00:26:47,360 --> 00:26:53,710 Pam ydw i'n ei wneud s braced i minws ymadrodd hwn fan hyn? 602 00:26:53,710 --> 00:26:55,110 >> Sylwi ar y patrwm yma yn dda. 603 00:26:55,110 --> 00:26:57,380 Nid yw'r niferoedd gwirioneddol yn bwysig cymaint. 604 00:26:57,380 --> 00:27:02,700 Ond yn sylwi bod 97 yn pa mor bell i ffwrdd o 65? 605 00:27:02,700 --> 00:27:03,560 >> CYNULLEIDFA: 32. 606 00:27:03,560 --> 00:27:04,480 >> DAVID J. Malan: 32. 607 00:27:04,480 --> 00:27:06,890 Pa mor bell yw 98 o 66? 608 00:27:06,890 --> 00:27:07,740 >> CYNULLEIDFA: 32. 609 00:27:07,740 --> 00:27:09,890 >> DAVID J. Malan: Little c oddi C mawr? 610 00:27:09,890 --> 00:27:10,420 32. 611 00:27:10,420 --> 00:27:14,550 Felly mae 'na 32 o hopys o un llythyr i un arall. 612 00:27:14,550 --> 00:27:17,790 Felly, yr wyf yn dweud y gwir, gallai symleiddio'r hyn at hynny. 613 00:27:17,790 --> 00:27:20,400 Ond wedyn dw i'n godio fath o galed ddealltwriaeth hon lefel isel 614 00:27:20,400 --> 00:27:21,740 nad oes unrhyw darllenydd yn byth mynd i'w ddeall. 615 00:27:21,740 --> 00:27:25,080 Felly, yr wyf i'n mynd i cyffredinoli fel, yr wyf yn adnabod y llythrennau bach yn fwy o faint. 616 00:27:25,080 --> 00:27:28,400 Rwy'n gwybod y llythrennau cyfalaf yn gwerthoedd llai, yn eironig. 617 00:27:28,400 --> 00:27:33,216 >> Ond mae hyn yn effeithiol cyfateb i gan ddweud tynnu 32 o s braced i. 618 00:27:33,216 --> 00:27:35,430 Felly, yng nghyd-destun y llythyrau, os bydd y llythyr 619 00:27:35,430 --> 00:27:38,950 digwydd bod yn, llythrennau bach a, ac yr wyf yn tynnu 32, 620 00:27:38,950 --> 00:27:43,442 pa effaith y mae hynny'n ei gael, fathemategol, ar a llythrennau bach? 621 00:27:43,442 --> 00:27:44,400 CYNULLEIDFA: Capitalizes-- 622 00:27:44,400 --> 00:27:45,691 DAVID J. Malan: manteisio arno. 623 00:27:45,691 --> 00:27:48,440 Ac yn wir, dyma pam ein Gelwir rhaglen yn manteisio sero. 624 00:27:48,440 --> 00:27:51,590 Mae'r rhaglen hon naill ai manteisio llythyr, 625 00:27:51,590 --> 00:27:54,580 ar ôl gwirio os yw'n yn wir llythyr llythrennau bach. 626 00:27:54,580 --> 00:27:59,810 Fel arall, yn unol 30, beth ddylwn i ei wneud os nid yw'n llythyr llythrennau bach fy mod yn 627 00:27:59,810 --> 00:28:02,852 edrych ar ar benodol iteriad yn y ddolen. 628 00:28:02,852 --> 00:28:03,890 Dim ond ei hargraffu. 629 00:28:03,890 --> 00:28:07,010 >> Felly peidiwch â newid pethau nid yw hynny'n hyd yn oed yn llythrennau bach. 630 00:28:07,010 --> 00:28:10,790 Cyfyngu eich hun i ychydig trwy ychydig z. 631 00:28:10,790 --> 00:28:12,730 Yn awr mae hyn yn eithaf ddirgel. 632 00:28:12,730 --> 00:28:15,230 Ond ar ddiwedd y dydd, mae hyn yw sut yr ydym, unwaith ar un adeg, 633 00:28:15,230 --> 00:28:16,460 roedd yn rhaid i weithredu pethau. 634 00:28:16,460 --> 00:28:19,780 Os byddaf yn lle agor cyfalafu un, oh diolch i dduw. 635 00:28:19,780 --> 00:28:22,320 Mae swyddogaeth galw i uwch sy'n gallu 636 00:28:22,320 --> 00:28:25,410 gwneud popeth rydym yn unig yn gwneud ar lefel weddol isel. 637 00:28:25,410 --> 00:28:28,752 >> Nawr i uchaf yn ddiddorol oherwydd ei fod yn cael ei ddatgan mewn ffeil, 638 00:28:28,752 --> 00:28:31,210 a byddech yn unig yn gwybod hyn drwy edrych ar y ddogfennaeth, 639 00:28:31,210 --> 00:28:35,730 neu cael gwybod, dyweder, yn y dosbarth, lle ei fod yn bodoli, mewn ffeil o'r enw ctype.h. 640 00:28:35,730 --> 00:28:37,630 Felly mae hyn yn ffrind newydd arall o ein un ni. 641 00:28:37,630 --> 00:28:40,750 Ac i gwneud yn union uchaf beth yw ei enw yn ei awgrymu. 642 00:28:40,750 --> 00:28:44,860 >> Gallwch drosglwyddo mewn, fel dadl, rhwng cromfachau hyn, mae rhai cymeriad. 643 00:28:44,860 --> 00:28:48,390 Rydw i'n mynd i basio yn y cymeriad i'th o s ddefnyddio ein nodiant newydd ffansi 644 00:28:48,390 --> 00:28:49,870 sy'n cynnwys cromfachau sgwâr. 645 00:28:49,870 --> 00:28:53,391 A mynd â dyfalu, beth yw'r ffurflen gwerth i uchaf yn ôl pob golwg yn mynd 646 00:28:53,391 --> 00:28:53,890 i fod? 647 00:28:53,890 --> 00:28:56,460 648 00:28:56,460 --> 00:28:57,770 Mae llythyr cyfalaf. 649 00:28:57,770 --> 00:28:58,620 Mae llythyr cyfalaf. 650 00:28:58,620 --> 00:29:02,330 >> Felly, os wyf yn pasio mewn llythrennau bach a, gobeithio, yn ôl y diffiniad o i'r uchaf, 651 00:29:02,330 --> 00:29:05,600 mae'n mynd i ddychwelyd i priflythyren A. Fel arall, 652 00:29:05,600 --> 00:29:08,590 os nad yw'n llythyr llythrennau bach yn y lle cyntaf, Fi jyst ei hargraffu. 653 00:29:08,590 --> 00:29:10,800 Ac yn wir, yn sylwi ar y ail ffrind yma. 654 00:29:10,800 --> 00:29:13,840 Nid yn unig i uchaf yn bodoli, ond yn is, sef 655 00:29:13,840 --> 00:29:16,200 mewn gwirionedd yn ateb y cwestiwn hwnnw i mi. 656 00:29:16,200 --> 00:29:19,730 >> Nawr pwy bynnag ysgrifennodd y pethau hyn, 10au o flynyddoedd yn ôl, eich bod yn gwybod beth? 657 00:29:19,730 --> 00:29:23,840 Gweithredu i uchaf ac mae'n is ddefnyddio cod fel hyn. 658 00:29:23,840 --> 00:29:27,270 Ond unwaith eto, yn gyson â syniad hwn o tynnu i ffwrdd, 659 00:29:27,270 --> 00:29:29,190 fath o, lefel is Manylion gweithredu. 660 00:29:29,190 --> 00:29:32,600 Ac yn sefyll ar ysgwyddau pobl a ddaeth ger ein bron, gan ddefnyddio swyddogaethau 661 00:29:32,600 --> 00:29:36,300 hoffi i uchaf ac yn is, sef ddigon rhyfeddol yn 'n glws 662 00:29:36,300 --> 00:29:40,190 enwyd i ddweud yr hyn maent yn ei wneud, yn patrwm gwych i fabwysiadu. 663 00:29:40,190 --> 00:29:44,040 >> Yn awr, mae'n ymddangos fod os wyf yn darllen y dudalen dyn am, dyweder, i uwch, 664 00:29:44,040 --> 00:29:45,010 Rwy'n dysgu rhywbeth arall. 665 00:29:45,010 --> 00:29:46,890 Felly dyn toUpper. 666 00:29:46,890 --> 00:29:48,050 Mae'n ychydig yn llethol. 667 00:29:48,050 --> 00:29:51,110 Ond rhybudd, dyma sy'n sôn am y ffeil flaen y dylwn ei ddefnyddio. 668 00:29:51,110 --> 00:29:54,460 Fel o'r neilltu, gan fod hyn yn gamarweiniol, mae'r swyddogaeth 669 00:29:54,460 --> 00:29:59,070 defnyddio ints yn lle chars am resymau o wirio gwall. 670 00:29:59,070 --> 00:30:01,260 Ond byddwn efallai yn dod yn ôl at hynny yn y dyfodol. 671 00:30:01,260 --> 00:30:05,910 >> Ond sylwi, yma, i converts uchaf y llythyr c i priflythyren os yn bosibl. 672 00:30:05,910 --> 00:30:07,674 Felly dyna eithaf syml. 673 00:30:07,674 --> 00:30:09,340 Ac yn awr gadewch i ni fod ychydig yn fwy penodol. 674 00:30:09,340 --> 00:30:12,750 Gadewch i ni edrych ar y rhan o'r tudalen dyn dan werth dychwelyd. 675 00:30:12,750 --> 00:30:15,420 Mae'r gwerth a ddychwelwyd yw bod o'r llythyr wedi'i drosi. 676 00:30:15,420 --> 00:30:18,690 Neu c, os bydd yr addasiad Nid oedd yn bosibl, 677 00:30:18,690 --> 00:30:20,250 lle c yw mewnbwn gwreiddiol. 678 00:30:20,250 --> 00:30:24,140 A gwn oddi yma, o y ddadl i i'r uchaf. 679 00:30:24,140 --> 00:30:25,780 >> Felly beth yw bwyd parod o hyn? 680 00:30:25,780 --> 00:30:28,060 Mae'r gwerth a ddychwelwyd yw bod o'r llythyr a addaswyd, 681 00:30:28,060 --> 00:30:32,110 neu c, y llythyr gwreiddiol, os Nid yw'r trosiad oedd yn bosibl. 682 00:30:32,110 --> 00:30:36,460 Pa gwella gallu i mi, felly, ei wneud i ddylunio fy cod yn? 683 00:30:36,460 --> 00:30:37,146 Yeah? 684 00:30:37,146 --> 00:30:38,810 >> CYNULLEIDFA: Gallwch chi gael gwared ar y arall. 685 00:30:38,810 --> 00:30:40,810 DAVID J. Malan: gallaf cael gwared ar y datganiad arall, 686 00:30:40,810 --> 00:30:42,510 ac nid dim ond y datganiad arall. 687 00:30:42,510 --> 00:30:44,150 >> CYNULLEIDFA: Gallwch dynnu [Anghlywadwy]. 688 00:30:44,150 --> 00:30:46,310 >> DAVID J. Malan: gallaf gwared ar y fforch cyfan 689 00:30:46,310 --> 00:30:48,209 yn y ffordd, mae'r os arall yn gyfan gwbl. 690 00:30:48,209 --> 00:30:50,250 Felly, yn wir, gadewch i mi agor y fersiwn derfynol o hyn, 691 00:30:50,250 --> 00:30:55,540 cyfalafu-2 a sylwi pa mor, os chi fydd, sexy, mae'r cod yn awr yn cael, 692 00:30:55,540 --> 00:31:00,040 yn fy mod wedi gostwng o rai saith neu felly linellau i ddim ond pedwar, 693 00:31:00,040 --> 00:31:03,850 ymarferoldeb yr oeddwn yn bwriadu gan syml yn galw i uchaf, 694 00:31:03,850 --> 00:31:09,410 pasio mewn s braced i, ac argraffu allan, gyda'r dalfan% c, 695 00:31:09,410 --> 00:31:11,090 bod cymeriad arbennig. 696 00:31:11,090 --> 00:31:14,560 >> Yn awr gellir dadlau, mae nam, neu o leiaf y risg o nam, 697 00:31:14,560 --> 00:31:15,350 yn y rhaglen hon. 698 00:31:15,350 --> 00:31:18,200 Felly, dim ond i ddod yn ôl i tecawê cynharach, 699 00:31:18,200 --> 00:31:21,820 beth ddylwn i ei wneud yn ôl pob tebyg hefyd yn rhaglen hon i'w wneud yn fwy cadarn, 700 00:31:21,820 --> 00:31:24,974 fel nad oes dim ffordd y gall damwain, hyd yn oed mewn achosion prin? 701 00:31:24,974 --> 00:31:26,390 CYNULLEIDFA: Gwnewch yn siwr nad yw'n NULL. 702 00:31:26,390 --> 00:31:28,056 DAVID J. Malan: Gwnewch yn siwr nad yw'n NULL. 703 00:31:28,056 --> 00:31:31,030 Felly mewn gwirionedd, i wneud super hwn briodol, dylwn i ei wneud rhywbeth fel, 704 00:31:31,030 --> 00:31:35,300 os nad yw s yn NULL, yna mynd yn ei flaen a gweithredu 705 00:31:35,300 --> 00:31:38,470 llinellau hyn o god, a oedd yn Gallu Yna indent fel 'na, 706 00:31:38,470 --> 00:31:39,870 ac yna ei roi yn fy brês agos. 707 00:31:39,870 --> 00:31:41,550 Mor dda clymu at ei gilydd y ddau syniadau. 708 00:31:41,550 --> 00:31:42,429 Yeah? 709 00:31:42,429 --> 00:31:44,470 CYNULLEIDFA: A allech chi ddefnyddio a wneud tra dolen, yn lle hynny? 710 00:31:44,470 --> 00:31:47,270 DAVID J. Malan: Allai Rwy'n gwneud do tra dolen? 711 00:31:47,270 --> 00:31:50,020 CYNULLEIDFA: --you eisiau gwneud yn siŵr bod chi mewn gwirionedd [Anghlywadwy]. 712 00:31:50,020 --> 00:31:51,728 DAVID J. Malan: Allai chi ddefnyddio do tra? 713 00:31:51,728 --> 00:31:52,450 Yr ateb byr, dim. 714 00:31:52,450 --> 00:31:54,700 Oherwydd eich bod chi ar fin cyflwyno achos cornel arall. 715 00:31:54,700 --> 00:31:56,660 Os yw'r llinyn yn o sero hyd. 716 00:31:56,660 --> 00:31:59,600 Os, er enghraifft, Fi jyst daro Mewnbynnu, heb erioed teipio Zamyla. 717 00:31:59,600 --> 00:32:02,490 Rydw i'n mynd i law yn ôl yn wirioneddol llinyn, gan y byddwn yn y pen draw yn gweld, 718 00:32:02,490 --> 00:32:03,780 sydd â sero cymeriadau. 719 00:32:03,780 --> 00:32:05,630 Mae'n dal i fod yn llinyn, 'i' jyst super fyr. 720 00:32:05,630 --> 00:32:07,960 Ond os ydych yn defnyddio do tra, ydych yn mynd i blindly 721 00:32:07,960 --> 00:32:10,050 ceisio gwneud rhywbeth gyda parchu at y llinyn, 722 00:32:10,050 --> 00:32:12,537 a dim byd yn mynd i fod yno. 723 00:32:12,537 --> 00:32:18,607 >> CYNULLEIDFA: Wel, os wnaethoch chi wneud [Anghlywadwy] tra s-- 724 00:32:18,607 --> 00:32:21,190 DAVID J. Malan: O rwy'n gweld, cadwch cael llinyn gan y defnyddiwr. 725 00:32:21,190 --> 00:32:23,525 Ateb mor fyr, byddwch yn Gallai, a chadw aflonyddu 726 00:32:23,525 --> 00:32:26,150 iddynt roi llinyn dyna i chi yn ddigon byr i ffitio i mewn cof. 727 00:32:26,150 --> 00:32:26,700 Yn hollol. 728 00:32:26,700 --> 00:32:27,630 Fi jyst dewis peidio â. 729 00:32:27,630 --> 00:32:30,505 Os nad ydynt yn rhoi'r wyf llinyn mi eisiau, dw i'n rhoi'r gorau iddi, dw i'n rhoi'r gorau iddi. 730 00:32:30,505 --> 00:32:33,260 Ond yn gwbl, at y diben hwnnw, Gallai chi'n hollol wneud hynny. 731 00:32:33,260 --> 00:32:37,500 >> Felly ffeiliau header y llyfrgell sydd rydym yn awr yn gyfarwydd â hwy yn hyn, yma. 732 00:32:37,500 --> 00:32:41,550 Safon I / O, CS50.h, string.h, ctype.h, ac mae, yn wir, mae eraill. 733 00:32:41,550 --> 00:32:44,460 Mae rhai ohonoch wedi darganfod y llyfrgell mathemateg mewn math.h. 734 00:32:44,460 --> 00:32:48,200 Ond gadewch i mi gyflwyno i chi, yn awr, i adnodd hwn bod staff CS50, Davin, 735 00:32:48,200 --> 00:32:50,630 a Rob, a Gabe arbennig wedi rhoi at ei gilydd. 736 00:32:50,630 --> 00:32:52,630 A fydd yn cysylltu yn fuan ar wefan y cwrs. 737 00:32:52,630 --> 00:32:54,870 Mae'n cael ei alw cyfeirnod CS50. 738 00:32:54,870 --> 00:32:58,230 >> A dim ond i roi i chi yn gyflym blas ohono, yn gweithio fel a ganlyn. 739 00:32:58,230 --> 00:33:00,740 Gadewch i mi fynd i reference.cs50.net. 740 00:33:00,740 --> 00:33:02,990 Byddwch yn gweld ar y llaw chwith ochr rhestr llethol 741 00:33:02,990 --> 00:33:04,595 swyddogaethau sy'n dod gyda c. 742 00:33:04,595 --> 00:33:07,790 Ond os wyf yn gofalu, am y tro, am rywbeth fel strlen, 743 00:33:07,790 --> 00:33:08,746 Gallaf deipio yno. 744 00:33:08,746 --> 00:33:10,870 Mae'n hidlo i lawr y rhestr i ddim ond yr hyn yr wyf yn poeni am. 745 00:33:10,870 --> 00:33:11,940 Rydw i'n mynd i glicio iddo. 746 00:33:11,940 --> 00:33:14,740 Ac yn awr ar y chwith, byddwch yn gweld yr hyn yr ydym yn gobeithio 747 00:33:14,740 --> 00:33:18,290 yn fwy syml, dynol esboniad cyfeillgar o sut 748 00:33:18,290 --> 00:33:19,170 swyddogaeth hon yn gweithio. 749 00:33:19,170 --> 00:33:20,600 >> Dychwelyd y hyd llinyn. 750 00:33:20,600 --> 00:33:24,060 Dyma grynodeb, dyma sut yr ydych ei ddefnyddio o ran y ffeil flaen, 751 00:33:24,060 --> 00:33:27,430 ac o ran yr hyn mae'r swyddogaeth edrych fel o ran ei ddadleuon. 752 00:33:27,430 --> 00:33:30,250 Ac yna yma, ffurflenni hyd y llinyn. 753 00:33:30,250 --> 00:33:34,280 Ond ar gyfer y rhai ohonoch yn fwy cyfforddus, alli 'n weithredol glicio fwy cyfforddus, 754 00:33:34,280 --> 00:33:37,070 a chynnwys hyn dudalen, yn awr, yn newid 755 00:33:37,070 --> 00:33:41,660 i fod y gwerthoedd diofyn o'r hyn a gewch drwy ddefnyddio'r dudalen ddyn. 756 00:33:41,660 --> 00:33:44,100 >> Mewn geiriau eraill, CS50 cyfeirio yn symleiddiad 757 00:33:44,100 --> 00:33:46,220 o dudalennau dyn gan y staff, ar gyfer myfyrwyr. 758 00:33:46,220 --> 00:33:49,320 Yn enwedig, y rhai llai cyfforddus ac yn y canol, er mwyn i chi 759 00:33:49,320 --> 00:33:51,660 nid oes rhaid iddynt geisio lapio eich meddwl o gwmpas, a dweud y gwir, 760 00:33:51,660 --> 00:33:55,030 rhywfaint o gystrawen eithaf cryptig a dogfennaeth rhywbryd. 761 00:33:55,030 --> 00:33:57,650 >> Felly cadwch hynny mewn cof yn y dyddiau i ddod. 762 00:33:57,650 --> 00:33:59,560 Felly yma, unwaith eto, yn Zamyla. 763 00:33:59,560 --> 00:34:03,255 Gadewch i ni yn awr yn gofyn cwestiwn sy'n ychydig yn fwy dynol hygyrch. 764 00:34:03,255 --> 00:34:05,380 Diolch i Chang, sydd wedi bod argraffu mwy o eliffantod 765 00:34:05,380 --> 00:34:07,090 nonstop dros y dyddiau diwethaf. 766 00:34:07,090 --> 00:34:09,730 Mae gennym gyfle i roi o leiaf un ohonynt i ffwrdd. 767 00:34:09,730 --> 00:34:13,239 Pe gallem gael dim ond un gwirfoddolwr i ddod ar hyd i dynnu ar y sgrîn. 768 00:34:13,239 --> 00:34:14,530 Beth am fan hyn? 769 00:34:14,530 --> 00:34:15,340 >> Dewch ar i fyny. 770 00:34:15,340 --> 00:34:16,720 Beth yw eich enw? 771 00:34:16,720 --> 00:34:17,219 ALEX: Alex. 772 00:34:17,219 --> 00:34:17,760 DAVID J. Malan: Alex. 773 00:34:17,760 --> 00:34:18,259 Mae pob hawl. 774 00:34:18,259 --> 00:34:19,388 Alex, yn dod ar i fyny. 775 00:34:19,388 --> 00:34:21,679 Rydym chi ar fin weld eich llawysgrifen ar y sgrin yma. 776 00:34:21,679 --> 00:34:24,325 777 00:34:24,325 --> 00:34:25,570 Mae pob hawl, neis i gwrdd â chi. 778 00:34:25,570 --> 00:34:26,429 >> ALEX: Nice i chi gwrdd â chi. 779 00:34:26,429 --> 00:34:27,512 >> DAVID J. Malan: pob hawl. 780 00:34:27,512 --> 00:34:28,969 Felly, ymarfer corff super syml. 781 00:34:28,969 --> 00:34:31,440 Nid yw bar yn uchel i cael eliffant heddiw. 782 00:34:31,440 --> 00:34:33,439 Rydych yn chwarae rôl getstring. 783 00:34:33,439 --> 00:34:35,980 Ac yr wyf i'n mynd i jyst yn dweud wrthych y llinyn eich bod wedi gotten. 784 00:34:35,980 --> 00:34:38,080 Ac yn debyg eich bod chi, getstring, wedi cael eu galw. 785 00:34:38,080 --> 00:34:42,480 A'r dynol, fel fi, mae gan teipio yn Zamyla, Z-A-M-Y-L-A. 786 00:34:42,480 --> 00:34:45,650 Dim ond yn mynd yn ei flaen ac ysgrifennu Zamyla ar y sgrîn fel pe baech wedi gotten ei 787 00:34:45,650 --> 00:34:47,250 a'i storio yn rhywle yn y cof. 788 00:34:47,250 --> 00:34:52,370 789 00:34:52,370 --> 00:34:55,570 >> Gan adael lle ar gyfer hyn a fydd yn nifer words-- arall mae hynny'n iawn, yn dal i fynd. 790 00:34:55,570 --> 00:34:59,620 >> [Chwerthin] 791 00:34:59,620 --> 00:35:00,800 >> Felly Zamyla, Ardderchog. 792 00:35:00,800 --> 00:35:04,880 Felly nawr mae'n debyg eich bod chi, getstring, a elwir yn cael eu eto. 793 00:35:04,880 --> 00:35:09,350 Ac am hynny, yr wyf yn rhoi i chi, yn y bysellfwrdd, gydag enw arall, Belinda. 794 00:35:09,350 --> 00:35:17,560 795 00:35:17,560 --> 00:35:18,060 Mae pob hawl. 796 00:35:18,060 --> 00:35:22,380 Ac yn awr y tro nesaf getstring yn o'r enw, yr wyf deipio i mewn rhywbeth fel Gabe, 797 00:35:22,380 --> 00:35:27,560 G-A-B-E. Eich bod yn cymryd 'n sylweddol i galon cof mynediad ar hap. 798 00:35:27,560 --> 00:35:29,631 Pa yn tynnu popeth yn gyfan gwbl ar hap. 799 00:35:29,631 --> 00:35:30,130 OK. 800 00:35:30,130 --> 00:35:31,104 >> [Chwerthin] 801 00:35:31,104 --> 00:35:32,520 ALEX: Mae'n ddrwg gennyf fy llawysgrifen yn ddrwg. 802 00:35:32,520 --> 00:35:33,770 DAVID J. Malan: Na, mae hynny'n iawn. 803 00:35:33,770 --> 00:35:40,480 A beth am Rob, R-O-B. OK. 804 00:35:40,480 --> 00:35:41,020 Da. 805 00:35:41,020 --> 00:35:43,853 Felly doeddwn i ddim ydych yn rhagweld y byddai math o osod pethau allan fel hyn. 806 00:35:43,853 --> 00:35:45,020 Ond gallwn wneud y gwaith hwn. 807 00:35:45,020 --> 00:35:48,810 Felly, sut yr aethoch chi ati i osod allan chars hyn mewn cof? 808 00:35:48,810 --> 00:35:51,310 Mewn geiriau eraill, os ydym yn meddwl am y sgrîn du hirsgwar 809 00:35:51,310 --> 00:35:53,550 â chynrychioli RAM, neu gof cyfrifiadur. 810 00:35:53,550 --> 00:35:55,850 >> A dwyn i gof bod RAM yn unig criw cyfan o bytes, 811 00:35:55,850 --> 00:35:57,480 ac bytes yn criw cyfan o ddarnau. 812 00:35:57,480 --> 00:35:59,350 A darnau yn rhywsut rhoi ar waith, ar y cyfan 813 00:35:59,350 --> 00:36:01,119 gyda rhyw fath o trydan mewn caledwedd. 814 00:36:01,119 --> 00:36:03,160 Felly dyna fath o yr haenu rydym wedi trafod 815 00:36:03,160 --> 00:36:04,510 ac yn awr yn gallu cymryd yn ganiataol. 816 00:36:04,510 --> 00:36:07,020 Sut aethoch chi ati i penderfynu ble i ysgrifennu 817 00:36:07,020 --> 00:36:11,634 Rob yn erbyn Gabe yn erbyn Belinda yn erbyn Zamyla? 818 00:36:11,634 --> 00:36:14,020 >> ALEX: Fi jyst yn gwneud hynny yn y gorchymyn eich bod yn dweud wrthyf. 819 00:36:14,020 --> 00:36:15,650 >> DAVID J. Malan: Ac mae hynny'n wir. 820 00:36:15,650 --> 00:36:20,100 Ond beth llywodraethu lle'r ydych yn rhoi Belinda yn enw ac enw'r Gabe yn? 821 00:36:20,100 --> 00:36:20,764 >> ALEX: Dim byd? 822 00:36:20,764 --> 00:36:22,930 DAVID J. Malan: [Chwerthin] Felly mae hynny'n gweithio, mae hynny'n iawn. 823 00:36:22,930 --> 00:36:25,290 Felly cyfrifiaduron yn ychydig yn fwy trefnus na hynny. 824 00:36:25,290 --> 00:36:29,000 Ac felly pan implement-- i ni aros yno am ddim ond mae moment-- pan fyddwn mewn gwirionedd yn 825 00:36:29,000 --> 00:36:31,470 gweithredu rhywbeth fel getstring mewn cyfrifiadur, 826 00:36:31,470 --> 00:36:34,480 Efallai Zamyla cael eu gosod allan 'n bert lawer fel y gwnaethoch ar y sgrin, yno. 827 00:36:34,480 --> 00:36:36,660 >> A beth yn allweddol i hysbysiad yma, yr hyn a wnaeth Alex, 828 00:36:36,660 --> 00:36:40,260 mae yna fath o llinell derfyn ymhlith pob un o'r geiriau hyn, dde? 829 00:36:40,260 --> 00:36:46,580 Doeddech chi ddim yn ysgrifennu Z-A-M-Y-L-A-B-E-L-I-N-D-A-G-A-B-- 830 00:36:46,580 --> 00:36:49,740 mewn geiriau eraill, mae yna rhyw fath o ffiniau sy'n ymddangos i fod, 831 00:36:49,740 --> 00:36:52,370 math o, gofod ar hap rhwng y geiriau gwahanol. 832 00:36:52,370 --> 00:36:54,120 Ond mae hynny'n dda, oherwydd gallwn ni bodau dynol nawr 833 00:36:54,120 --> 00:36:56,470 dychmygu bod y rhain yn pedwar llinynnau gwahanol. 834 00:36:56,470 --> 00:36:59,540 Nid dim ond un dilyniant o lawer o gymeriadau. 835 00:36:59,540 --> 00:37:04,190 Felly cyfrifiadur, yna, yn y cyfamser, Gallai cymryd llinyn fel Zamyla, 836 00:37:04,190 --> 00:37:07,220 rhoi pob un o'r llythyrau hynny tu mewn beit o gof. 837 00:37:07,220 --> 00:37:10,400 Ond y rhif yn fwy o lawer, wrth gwrs, na chwe nod. 838 00:37:10,400 --> 00:37:11,690 >> Mae criw cyfan o RAM. 839 00:37:11,690 --> 00:37:15,330 Ac felly o hyn ymlaen, mae hyn grid o flychau yn mynd 840 00:37:15,330 --> 00:37:17,560 i gynrychioli'r hyn Alex yn unig wnaeth yma ar y sgrin. 841 00:37:17,560 --> 00:37:20,937 Ac yn awr, Alex, gallwn gynnig i chi yn glas neu oren eliffant o Chang. 842 00:37:20,937 --> 00:37:22,270 ALEX: 'n annhymerus' yn cymryd eliffant glas. 843 00:37:22,270 --> 00:37:23,120 DAVID J. Malan: A eliffant glas. 844 00:37:23,120 --> 00:37:25,580 Felly rownd fawr o gymeradwyaeth, pe gallem, ar gyfer Alex yma. 845 00:37:25,580 --> 00:37:26,100 >> [Cymeradwyaeth] 846 00:37:26,100 --> 00:37:26,766 >> ALEX: Diolch yn fawr. 847 00:37:26,766 --> 00:37:28,820 DAVID J. Malan: Diolch yn fawr. 848 00:37:28,820 --> 00:37:36,230 Felly mae'r cludfwyd yw bod, er bod y patrwm fath o newid dros amser, dyma 849 00:37:36,230 --> 00:37:40,430 ar y bwrdd, yr oedd hyn yn llinell derfyn ymhlith y gwahanol llinynnau 850 00:37:40,430 --> 00:37:42,610 bod Alex got i ni. 851 00:37:42,610 --> 00:37:45,230 Nawr cyfrifiaduron, a dweud y gwir, allai wneud yr un peth. 852 00:37:45,230 --> 00:37:48,210 Gallent fath o sw n plopian llinynnau unrhyw le yn RAM. 853 00:37:48,210 --> 00:37:50,710 Hyd yma, dros yma, lawr yma, i lawr yma. 854 00:37:50,710 --> 00:37:52,020 >> Gallent wneud yn union hynny. 855 00:37:52,020 --> 00:37:54,280 Ond, wrth gwrs, mae hynny'n yn ôl pob tebyg nid yw'r cynllunio gorau. 856 00:37:54,280 --> 00:37:54,780 Hawl? 857 00:37:54,780 --> 00:37:57,340 Os byddaf yn cadw gofyn i Alex i cael enwau, yn ôl pob tebyg fe Id 858 00:37:57,340 --> 00:38:01,370 rhoi rhywfaint yn fwy i lawr yma, efallai i fyny yma, dros yma, dros yma, yn y pen draw 859 00:38:01,370 --> 00:38:02,211 dros yma. 860 00:38:02,211 --> 00:38:05,460 Ond gydag ychydig mwy o gynllunio, yn sicr, gallem osod pethau allan yn fwy lân. 861 00:38:05,460 --> 00:38:07,350 Ac yn wir, dyna beth cyfrifiadur yn ei wneud. 862 00:38:07,350 --> 00:38:10,720 >> Ond mae'r dal yw bod os yw'r llinyn nesaf i mi gael 863 00:38:10,720 --> 00:38:14,050 ar ôl Zamyla yn rhywbeth fel y Belinda, 864 00:38:14,050 --> 00:38:17,929 cynnig lle gallem ysgrifennu'r llythyr b mewn perthynas â grid hwn? 865 00:38:17,929 --> 00:38:18,720 Ble fyddech chi'n mynd? 866 00:38:18,720 --> 00:38:21,480 I'r dde o'r a, islaw'r z, islaw'r a? 867 00:38:21,480 --> 00:38:23,204 Beth fyddai eich greddf cyntaf fod? 868 00:38:23,204 --> 00:38:24,120 CYNULLEIDFA: O dan y z. 869 00:38:24,120 --> 00:38:25,100 DAVID J. Malan: Felly, o dan y z. 870 00:38:25,100 --> 00:38:26,530 A dyna 'n bert syml, dde? 871 00:38:26,530 --> 00:38:29,321 Mae'n fath o daclus, 'i' yr hyn rydym yn ei wneud ar fysellfwrdd pan fyddwn daro Enter, 872 00:38:29,321 --> 00:38:31,770 neu e-bost wrth wneud rhestr pwyntiau bwled o bethau. 873 00:38:31,770 --> 00:38:34,310 Ond y gwir amdani yw bod cyfrifiaduron ceisio bod yn fwy effeithlon, 874 00:38:34,310 --> 00:38:37,170 ac yn sicr yn gwthio cymaint data i mewn i RAM ag y bo modd, 875 00:38:37,170 --> 00:38:38,890 fel nad ydych yn gwastraffu unrhyw bytes. 876 00:38:38,890 --> 00:38:41,545 Fel nad ydych yn gwastraffu unrhyw screen ystad go iawn. 877 00:38:41,545 --> 00:38:44,170 Ac mae'r broblem, fodd bynnag, yw bod os ydym yn llythrennol rhoi'r llythyr 878 00:38:44,170 --> 00:38:49,940 b ar ôl, sut ydym yn mynd i gwybod ble enw Zamyla yn dod i ben 879 00:38:49,940 --> 00:38:51,840 ac enw'r Belinda yn dechrau? 880 00:38:51,840 --> 00:38:55,270 Felly rydych mae pobl eu newydd arfaethedig, yn dda, daro 'r Chofnoda agoriad, yn y bôn. 881 00:38:55,270 --> 00:38:56,410 Rhowch ef i lawr isod. 882 00:38:56,410 --> 00:38:59,750 Neu hyd yn oed fel y gwnaeth Alex, dim ond dechrau ysgrifennu yr enw nesaf yn is na'r un blaenorol, 883 00:38:59,750 --> 00:39:01,583 ac yn is na'r hyn un, a wedyn yn is na hynny un. 884 00:39:01,583 --> 00:39:02,510 Dyna ciw gweledol. 885 00:39:02,510 --> 00:39:05,960 >> Cyfrifiaduron wedi ciw gweledol arall, ond mae'n ychydig yn fwy cryno. 886 00:39:05,960 --> 00:39:07,840 Mae'n gymeriad hon ffynci. 887 00:39:07,840 --> 00:39:11,890 Slaes 0, sydd yn bosibl atgoffa rhywun o slaes n, 888 00:39:11,890 --> 00:39:12,640 ac yn y blaen, yn awr. 889 00:39:12,640 --> 00:39:14,120 Mae'r dilyniannau dianc arbennig. 890 00:39:14,120 --> 00:39:19,120 Slaes 0 yw'r ffordd o cynrychioli wyth sero didau yn olynol. 891 00:39:19,120 --> 00:39:22,000 0000 0000. 892 00:39:22,000 --> 00:39:26,130 >> Nid at y ffordd y byddwch yn mynegi hynny yn daro 'r rhif sero ar eich bysellfwrdd, 893 00:39:26,130 --> 00:39:28,140 oherwydd mewn gwirionedd sydd yn torgoch ASCII. 894 00:39:28,140 --> 00:39:30,990 Mae'n edrych yn debyg i rif, ond mewn gwirionedd rhif degol 895 00:39:30,990 --> 00:39:35,910 sy'n cynrychioli'r cylchlythyr glyph, mae'r ffurfdeip cylchlythyr. 896 00:39:35,910 --> 00:39:38,410 Yn y cyfamser, slaes sero yn golygu, yn llythrennol 897 00:39:38,410 --> 00:39:40,700 rhoi wyth sero bytes yma i mi. 898 00:39:40,700 --> 00:39:42,136 >> Felly mae hyn yn braidd yn fympwyol. 899 00:39:42,136 --> 00:39:44,260 Gallai Rydym wedi defnyddio unrhyw batrwm o ddarnau, ond yn y byd 900 00:39:44,260 --> 00:39:46,610 Penderfynodd rhai blynyddoedd ôl, fod i gynrychioli 901 00:39:46,610 --> 00:39:49,710 y pen llinyn mewn cof, rhowch criw cyfan o sero. 902 00:39:49,710 --> 00:39:51,000 Oherwydd gallwn ganfod hynny. 903 00:39:51,000 --> 00:39:54,790 Nawr mae hynny'n golygu nad oes llythyr o'r Gellir wyddor gael ei gynrychioli gyda sero. 904 00:39:54,790 --> 00:39:58,480 >> Ond mae hynny'n iawn, yr ydym wedi gweld yn barod ein bod yn defnyddio 65 ar i fyny yn 97 ar i fyny. 905 00:39:58,480 --> 00:40:00,290 Doedden ni ddim yn cael unrhyw le cau i bob seroau. 906 00:40:00,290 --> 00:40:03,040 907 00:40:03,040 --> 00:40:06,540 Felly Belinda mewn cof cyfrifiadur yn mewn gwirionedd yn mynd i fynd yma. 908 00:40:06,540 --> 00:40:09,764 Rwyf wedi tynnu ei fod mewn melyn yn unig i dynnu ein sylw ato. 909 00:40:09,764 --> 00:40:11,680 A rhybudd, hefyd, mae hyn yn gwbl fympwyol. 910 00:40:11,680 --> 00:40:12,680 Rwyf wedi tynnu fel grid. 911 00:40:12,680 --> 00:40:14,460 Fel, RAM yn unig ryw wrthrych ffisegol. 912 00:40:14,460 --> 00:40:17,300 Nid yw o reidrwydd rhesi a cholofnau, fel y cyfryw. 913 00:40:17,300 --> 00:40:20,490 Jyst 'i' got criw cyfan o bytes rhoi ar waith mewn caledwedd rhywsut. 914 00:40:20,490 --> 00:40:22,817 Ond os ar ôl Belinda wyf teipio yn enw'r Gabe yn, 915 00:40:22,817 --> 00:40:25,650 mae'n mynd i roi diwedd ar i fyny yma mewn cof, ac os byddaf yn teipio yn enw'r Daven yn, 916 00:40:25,650 --> 00:40:27,316 er enghraifft, mae'n mynd i roi diwedd ar i fyny yma. 917 00:40:27,316 --> 00:40:29,310 Ac yr wyf yn gallu parhau i ysgrifennu'n hyd yn oed mwy o enwau. 918 00:40:29,310 --> 00:40:32,100 >> Yn anffodus, os byddaf yn ceisio ysgrifennu enw super hir, 919 00:40:32,100 --> 00:40:33,730 Efallai fy mod yn y pen draw yn rhedeg allan o gof. 920 00:40:33,730 --> 00:40:37,810 Ac os felly, getstring yn mynd i ddychwelyd NULL, wrth i ni ddweud. 921 00:40:37,810 --> 00:40:41,720 Ond diolch byth, o leiaf yn y gweledol yma, ni chawsom yn eithaf mor bell â hynny. 922 00:40:41,720 --> 00:40:45,860 >> Nawr beth braf yw bod hyn syniad cyffredinol o drin pethau 923 00:40:45,860 --> 00:40:49,720 fel rhai sydd mewn blychau yn gynrychioliadol o nodwedd o C 924 00:40:49,720 --> 00:40:52,690 ac mae llawer o ieithoedd, elwir yn arae. 925 00:40:52,690 --> 00:40:55,490 Amrywiaeth yn fath arall o ddata. 926 00:40:55,490 --> 00:40:57,380 Mae'n strwythur data, os mynnwch. 927 00:40:57,380 --> 00:41:01,160 Strwythur yn yr ystyr o 'n sylweddol, math o, yn edrych fel bocs, o leiaf 928 00:41:01,160 --> 00:41:02,320 yn llygad eich meddwl yn. 929 00:41:02,320 --> 00:41:09,680 Arae yn cydgyffwrdd dilyniant o fathau o ddata unfath, 930 00:41:09,680 --> 00:41:11,330 gefn wrth gefn wrth gefn wrth gefn. 931 00:41:11,330 --> 00:41:14,720 >> Felly llinyn, mewn eraill geiriau, yn amrywiaeth o chars. 932 00:41:14,720 --> 00:41:16,120 Amrywiaeth o gymeriadau. 933 00:41:16,120 --> 00:41:19,070 Ond mae'n troi allan y gallwch ei gael araeau o sypiau o bethau. 934 00:41:19,070 --> 00:41:21,870 Yn wir, gallwn roi hyd yn oed niferoedd mewn arae. 935 00:41:21,870 --> 00:41:23,920 Felly y ffurf y rydym yn mynd i ddechrau 936 00:41:23,920 --> 00:41:26,590 datgan data hwn strwythur a elwir yn arae 937 00:41:26,590 --> 00:41:28,250 hefyd yn mynd i ddefnyddio cromfachau sgwâr. 938 00:41:28,250 --> 00:41:31,500 Ond bachau petryal yma yn mynd i ystyr gwahanol yn y cyd-destun hwn. 939 00:41:31,500 --> 00:41:33,450 >> A gadewch i ni weld ei fod fel a ganlyn. 940 00:41:33,450 --> 00:41:36,780 Gadewch i ni dybio fy mod hagor i fyny ffeil newydd yma. 941 00:41:36,780 --> 00:41:38,535 Ac yr wyf yn arbed hyn fel ages.c. 942 00:41:38,535 --> 00:41:41,280 943 00:41:41,280 --> 00:41:43,470 A byddaf yn arbed hyn yn fy ffolder yma. 944 00:41:43,470 --> 00:41:46,130 Ac yn awr yr wyf i'n mynd i fynd yn ei flaen a dechrau teipio rhywbeth 945 00:41:46,130 --> 00:41:53,940 fel cynnwys CS50.h, yn cynnwys stdio.h, int brif ddi-rym. 946 00:41:53,940 --> 00:41:57,370 Ac yna y tu mewn o fan hyn, rwyf am i yn gyntaf gael int o'r enw oedran. 947 00:41:57,370 --> 00:42:01,371 >> Ac yr wyf i'n mynd i ddefnyddio hynny i gael int gan y defnyddiwr ar gyfer ei oedran. 948 00:42:01,371 --> 00:42:04,620 Ond mae'r rhaglen hon i fod i gael ei ddefnyddio gan pobl lluosog, am ba bynnag gyd-destun. 949 00:42:04,620 --> 00:42:05,490 Mae gen i linell o bobl. 950 00:42:05,490 --> 00:42:08,281 Mae'n rhaid i bob un ohonynt i deipio yn eu oedran ar gyfer efallai rai, nid wyf yn gwybod, 951 00:42:08,281 --> 00:42:10,530 cystadleuaeth, neu ddigwyddiad eu bod wedi cyrraedd ar gyfer. 952 00:42:10,530 --> 00:42:13,030 Felly, y person nesaf, yr wyf yn angen newidyn arall. 953 00:42:13,030 --> 00:42:15,790 >> Oherwydd os Fi jyst yn ei wneud oedran yn cael getInt, dyna 954 00:42:15,790 --> 00:42:18,500 mynd i trosysgrifo'r, neu trosysgrifo oedran y person flaenorol. 955 00:42:18,500 --> 00:42:19,760 Felly dyna dda i ddim. 956 00:42:19,760 --> 00:42:21,790 Felly, fy ngreddf gyntaf allai fod, oh, yn iawn, 957 00:42:21,790 --> 00:42:26,260 os ydw i am gael pobl lluosog yn ages-- gadewch i ni yn galw oed1 hwn, 958 00:42:26,260 --> 00:42:31,280 int age2 cael int, int age3 cael getInt. 959 00:42:31,280 --> 00:42:35,340 Ac yn awr yr wyf i'n mynd i ddefnyddio rhywfaint o cod pseudocode yma. 960 00:42:35,340 --> 00:42:37,679 >> Wneud rhywbeth gyda niferoedd hynny. 961 00:42:37,679 --> 00:42:40,470 Byddwn yn gadael ar gyfer diwrnod arall yr hyn rydym yn ei wneud yno, gan mai dim ond 962 00:42:40,470 --> 00:42:44,200 yn gofalu am y tro am oed1, age2, age3. 963 00:42:44,200 --> 00:42:46,450 Yn anffodus, ar ôl i mi llunio rhaglen hon 964 00:42:46,450 --> 00:42:51,140 a'i roi o flaen y defnyddwyr go iawn, beth yw'r dyluniad yn sylfaenol gwael 965 00:42:51,140 --> 00:42:53,890 penderfyniad yr wyf yn ymddangos i fod wedi gwneud? 966 00:42:53,890 --> 00:42:54,624 Yeah? 967 00:42:54,624 --> 00:42:55,499 CYNULLEIDFA: [Anghlywadwy] 968 00:42:55,499 --> 00:42:58,071 969 00:42:58,071 --> 00:42:59,820 DAVID J. Malan: Yeah, Nid wyf wedi rhoi cynnig hyd yn oed yn 970 00:42:59,820 --> 00:43:02,028 at chyfrif i maes faint o oedrannau Nid Fi 'n weithredol yn poeni am? 971 00:43:02,028 --> 00:43:05,380 Os byddaf yn cael llai na thri o bobl yma, ac felly llai na thair oed, 972 00:43:05,380 --> 00:43:07,260 Rwy'n dal blindly ddisgwyl tri. 973 00:43:07,260 --> 00:43:08,720 Duw yn gwahardd pedwar o bobl yn dangos i fyny. 974 00:43:08,720 --> 00:43:10,990 Fy rhaglen, ni fydd dim ond hyd yn oed yn eu cefnogi. 975 00:43:10,990 --> 00:43:13,280 >> Ac felly mae hyn, stori hir byr, nid yw'n arfer da. 976 00:43:13,280 --> 00:43:13,780 Hawl? 977 00:43:13,780 --> 00:43:16,530 Roeddwn yn y bôn copïo a gludo cod a dim ond tweaking 978 00:43:16,530 --> 00:43:17,430 enwau amrywiol. 979 00:43:17,430 --> 00:43:22,410 Ac, fy duw, os oedd gennych, nid yw tri oed, ond 10, neu 100, neu hyd yn oed 6,500 980 00:43:22,410 --> 00:43:23,820 israddedigion, er enghraifft. 981 00:43:23,820 --> 00:43:26,950 Nid yw hyn yn mynd i fod yn arbennig o cod cain, nac yn gynaliadwy. 982 00:43:26,950 --> 00:43:29,200 Rydych yn mynd i gael i ailysgrifennu'r rhaglen bob tro 983 00:43:29,200 --> 00:43:30,760 eich nifer o newidiadau bobl. 984 00:43:30,760 --> 00:43:35,090 >> Felly, diolch byth, yn ein gwir ffeil ages.c ar gyfer heddiw, 985 00:43:35,090 --> 00:43:36,970 mae gennym ateb mwy clyfar. 986 00:43:36,970 --> 00:43:39,800 Yn gyntaf, yr wyf i'n mynd i fenthyg yr adeiladu ein bod wedi defnyddio ychydig o weithiau, 987 00:43:39,800 --> 00:43:43,744 mae hyn yn ei wneud tra dolen, er mwyn cael mae nifer y bobl yn yr ystafell. 988 00:43:43,744 --> 00:43:46,910 Im 'jyst yn mynd i plagio y defnyddiwr, unwaith eto ac unwaith eto, hyd nes y bydd yn rhoi i mi 989 00:43:46,910 --> 00:43:49,260 gwerth o n hynny'n cyfanrif positif. 990 00:43:49,260 --> 00:43:51,590 >> Gallwn fod wedi defnyddio, ddiwethaf amser yn cael int cadarnhaol. 991 00:43:51,590 --> 00:43:53,720 Ond nid ydym yn cael y ar gyfer go iawn, felly yr wyf yn mynd yn ei flaen 992 00:43:53,720 --> 00:43:55,660 ac ail syniad hwn ar waith. 993 00:43:55,660 --> 00:43:58,410 Yn awr i lawr yma, mae hyn yn y gamp newydd. 994 00:43:58,410 --> 00:44:02,260 Yn llinell 27, gan fod y sylwadau yn llinell 26 yn awgrymu, 995 00:44:02,260 --> 00:44:05,180 datgan arae lle i storio oedran pawb. 996 00:44:05,180 --> 00:44:09,320 >> Felly os ydych chi am gael, nid un int, nid dau ints, ond criw cyfan o ints. 997 00:44:09,320 --> 00:44:13,800 Yn benodol n cyfanrifau, n oedd efallai fydd tri, a allai fod yn 100, a allai fod yn 1,000. 998 00:44:13,800 --> 00:44:17,570 Gystrawen, yn syml iawn, yw dyweder, pa fath ddata ydych chi eisiau? 999 00:44:17,570 --> 00:44:19,620 Beth ydych chi eisiau i alw bod darn o gof? 1000 00:44:19,620 --> 00:44:23,530 Beth ydych chi am ei alw i'r grid sy'n edrych fel hyn yn ddarluniadol? 1001 00:44:23,530 --> 00:44:27,700 >> Ac mewn cromfachau yma, yr ydych yn dweud pa mor fawr ydych am i'r casgliad fod. 1002 00:44:27,700 --> 00:44:30,450 Ac felly yn gynharach, pan ddywedais y cystrawen yn ychydig yn wahanol yma, 1003 00:44:30,450 --> 00:44:33,614 rydym yn dal i ddefnyddio cromfachau sgwâr, ond pan dwi'n datgan arae, 1004 00:44:33,614 --> 00:44:35,530 y nifer tu mewn i'r cromfachau sgwâr yn golygu 1005 00:44:35,530 --> 00:44:37,610 pa mor fawr ydych chi am yr amrywiaeth fod. 1006 00:44:37,610 --> 00:44:42,490 >> Ar y llaw arall, pan oeddem yn defnyddio s braced i funud yn ōl, s, llinyn, 1007 00:44:42,490 --> 00:44:46,820 yn wir amrywiaeth o chars, ond pan nad ydych yn datgan newidyn, 1008 00:44:46,820 --> 00:44:49,760 fel gyda gair allweddol hyn yma, eich bod yn cael yn syml 1009 00:44:49,760 --> 00:44:54,280 mynegai benodol, mae benodol elfen o'r arae. 1010 00:44:54,280 --> 00:44:57,090 Unwaith y byddwn yn gwybod bod, mae'r gweddill o hyn yn syml. 1011 00:44:57,090 --> 00:45:00,765 Pe newydd yr wyf i'n mynd yn gyntaf i argraffu beth yw'r oedran rif person i. 1012 00:45:00,765 --> 00:45:03,890 Ble Fi jyst dweud person rhif un, person rhif dau, person rhif tri. 1013 00:45:03,890 --> 00:45:06,306 >> A dwi'n jyst yn gwneud rhifyddeg, fel bod pobl normal yn hoffi, 1014 00:45:06,306 --> 00:45:09,030 rydym yn cyfrif o un ar gyfer hyn rhaglen, ac nid o sero. 1015 00:45:09,030 --> 00:45:13,620 Yna, yr wyf yn galw getint, ond yr wyf yn storio yr ateb mewn braced oedran i. 1016 00:45:13,620 --> 00:45:16,610 Pa un yw'r oedran i'th yn y rhesi. 1017 00:45:16,610 --> 00:45:21,640 Felly, tra tro diwethaf roeddem yn trin blychau hyn fel chars ar gyfer enw Zamyla yn, 1018 00:45:21,640 --> 00:45:22,490 ac eraill. 1019 00:45:22,490 --> 00:45:26,530 Yn awr, y blychau hyn yn cynrychioli 32 darnau, neu bedwar bytes 1020 00:45:26,530 --> 00:45:29,510 y gallwn storio yn int, mae int, mae int. 1021 00:45:29,510 --> 00:45:31,890 Mae pob un sydd, unwaith eto, yr un math data. 1022 00:45:31,890 --> 00:45:33,890 >> Nawr rwy'n gwneud rhywbeth gwirion, fel amser fynd heibio, dim ond 1023 00:45:33,890 --> 00:45:35,510 i gyfiawnhau ysgrifennu rhaglen hon. 1024 00:45:35,510 --> 00:45:40,050 Ac yna i lawr yma, yr wyf unwaith eto ailadrodd dros y casgliad yn dweud y flwyddyn o hyn, 1025 00:45:40,050 --> 00:45:43,090 Rhif person un ewyllys flynyddoedd yn rhywbeth oed. 1026 00:45:43,090 --> 00:45:45,010 Ac i chyfrif i maes bod math-- Yr wyf yn golygu, mae hyn 1027 00:45:45,010 --> 00:45:49,260 Nid yn gymhleth iawn arithmetic-- Fi jyst yn ychwanegu un at eu hoedran. 1028 00:45:49,260 --> 00:45:51,240 Dim ond er mwyn dangos, unwaith eto, mae hyn. 1029 00:45:51,240 --> 00:45:57,910 >> Yn union ag y gallaf mynegai i mewn llinyn, s, felly alla i mynegai i mewn i amrywiaeth o oedrannau, 1030 00:45:57,910 --> 00:45:59,950 fel 'na yno. 1031 00:45:59,950 --> 00:46:03,340 Felly, lle mae hyn yn mynd i fod yn mynd â ni? 1032 00:46:03,340 --> 00:46:07,070 Felly, byddwn yn gweld, yn y pen draw, mae ychydig o bethau yn y dyddiau i ddod. 1033 00:46:07,070 --> 00:46:09,510 Un, yr holl amser hwn, pan ysgrifennu eich rhaglenni eu hunain, 1034 00:46:09,510 --> 00:46:11,239 fel Mario, barus, credyd. 1035 00:46:11,239 --> 00:46:13,780 Rydych chi wedi bod yn teipio enw y rhaglen a'r taro Enter. 1036 00:46:13,780 --> 00:46:15,610 Ac wedyn yn cael mewnbwn y defnyddiwr. 1037 00:46:15,610 --> 00:46:18,137 >> Gyda getString, getInt, getLongLong, neu yn y blaen. 1038 00:46:18,137 --> 00:46:20,720 Ond mae'n troi allan bod yn cefnogi C rhywbeth o'r enw llinell orchymyn 1039 00:46:20,720 --> 00:46:25,740 dadleuon, sydd yn mynd i adael i ni mewn gwirionedd yn cael ar eiriau eich bod yn teipio, 1040 00:46:25,740 --> 00:46:28,570 wrth yr anogwr amrantu, ar ôl enw eich rhaglen. 1041 00:46:28,570 --> 00:46:31,430 >> Felly, yn y dyddiau i ddod, byddwch yn Efallai deipio rhywbeth fel Cesar, 1042 00:46:31,430 --> 00:46:34,950 neu ./caesar rhif 13, ar ôl hynny. 1043 00:46:34,950 --> 00:46:36,070 Byddwn yn gweld sut mae hynny'n gweithio. 1044 00:46:36,070 --> 00:46:37,550 Oherwydd yn wir, yn problem yn gosod dau, rydym yn 1045 00:46:37,550 --> 00:46:39,383 mynd i gyflwyno i chi i rhywbeth bach 1046 00:46:39,383 --> 00:46:42,360 atgoffa rhywun o Ralphie yn herio cynharach o cartograffeg. 1047 00:46:42,360 --> 00:46:43,970 Y grefft o sgrialu gwybodaeth. 1048 00:46:43,970 --> 00:46:46,660 Mae hyn, mewn gwirionedd, yn iawn atgoffa rhywun o'r hyn a wnaeth Ralphie. 1049 00:46:46,660 --> 00:46:51,380 >> Mae hon yn enghraifft o amgryptio o'r enw algorithm rot13, R-O-T 13. 1050 00:46:51,380 --> 00:46:54,910 Sy'n golygu cylchdroi y llythyrau yn yr wyddor 13 o leoedd. 1051 00:46:54,910 --> 00:46:58,309 Ac os ydych yn gwneud hynny, byddwch yn gweld nawr yr hyn sydd, o bosibl, yn ymadrodd cyfarwydd. 1052 00:46:58,309 --> 00:47:01,100 Ond mae'r ffordd yr ydym yn mynd i ddefnyddio hyn, yn y pen draw, yn fwy cyffredinol. 1053 00:47:01,100 --> 00:47:04,390 >> Yn P gosod dau, yn yr argraffiad safonol, byddwch yn gweithredu un neu ddau o seifferau, 1054 00:47:04,390 --> 00:47:06,720 un o'r enw Cesar, un o'r enw Vigenere. 1055 00:47:06,720 --> 00:47:10,090 Mae'r ddau ohonynt yn cylchdro seifferau, yn hynny rywsut chi 1056 00:47:10,090 --> 00:47:11,826 troi un llythyr yn llythyr gwahanol. 1057 00:47:11,826 --> 00:47:12,950 Ac Cesar yn super syml. 1058 00:47:12,950 --> 00:47:16,220 Rydych yn ychwanegu un, byddwch yn ychwanegu 13, neu ryw rhif hyd at 26. 1059 00:47:16,220 --> 00:47:19,570 Vigenere yn gwneud hynny ar sail fesul llythyren. 1060 00:47:19,570 --> 00:47:22,140 Felly Vigenere, fel y byddwch yn gweld yn y fanyleb, yn fwy diogel. 1061 00:47:22,140 --> 00:47:24,973 >> Ond ar ddiwedd y dydd yr hyn byddwch yn gweithredu a P yn gosod dau, 1062 00:47:24,973 --> 00:47:29,050 yw bod allwedd eich bod yn defnyddio i amgryptio a dadgriptio. 1063 00:47:29,050 --> 00:47:32,160 Gan gyfeirio at y broses o droi testun plaen, mae rhai neges wreiddiol, 1064 00:47:32,160 --> 00:47:34,490 i mewn i destun seiffr, sy'n yn rhywbeth amgryptio. 1065 00:47:34,490 --> 00:47:36,220 Ac yna decrypting eto. 1066 00:47:36,220 --> 00:47:38,119 >> Yn y rhifyn haciwr, yn y cyfamser, byddwch yn 1067 00:47:38,119 --> 00:47:40,660 dasg o rywbeth tebyg mewn ysbryd, lle y byddwn yn rhoi i chi 1068 00:47:40,660 --> 00:47:44,610 ffeil, o Linux nodweddiadol, neu Mac, neu Unix Etsy elwir gyfrifiadur 1069 00:47:44,610 --> 00:47:47,800 cyfrinair, sy'n cynnwys ei gyfanrwydd criw o enwau defnyddwyr a chyfrineiriau. 1070 00:47:47,800 --> 00:47:50,932 A chyfrineiriau rheini i gyd wedi wedi'i amgryptio, neu hashed, 1071 00:47:50,932 --> 00:47:53,140 fel petai, yn fwy priodol fel y byddwch yn gweld yn y fanyleb. 1072 00:47:53,140 --> 00:47:57,090 >> A bydd y rhifyn haciwr herio chi gymryd mewnbwn fel hyn, 1073 00:47:57,090 --> 00:47:58,800 ac yn cracio y cyfrinair. 1074 00:47:58,800 --> 00:48:02,590 Hynny yw, figuring allan yr hyn y mae'r cyfrinair dynol mewn gwirionedd oedd. 1075 00:48:02,590 --> 00:48:05,570 Oherwydd, yn wir, cyfrineiriau yn gyffredinol, nid ei storio yn y glir, 1076 00:48:05,570 --> 00:48:08,260 a chyfrineiriau gyffredinol Dylai fod yn anodd dyfalu. 1077 00:48:08,260 --> 00:48:09,610 Nid yw hyn yn aml yn wir. 1078 00:48:09,610 --> 00:48:12,110 >> A hyn yr wyf yn meddwl y bydden ni'n ei wneud yw i ben gyda cwpl o funudau 1079 00:48:12,110 --> 00:48:15,160 cipolwg ar y arbennig Dewis gwael o cyfrineiriau 1080 00:48:15,160 --> 00:48:17,260 o ffilm efallai y byddwch yn cofio annwyl. 1081 00:48:17,260 --> 00:48:18,915 Ac os nad yw, dylech rhentu. 1082 00:48:18,915 --> 00:48:20,070 >> [VIDEO Playback] 1083 00:48:20,070 --> 00:48:22,320 >> -Helmet, Rydych fiend, beth sy'n mynd ymlaen? 1084 00:48:22,320 --> 00:48:24,240 Beth ydych chi'n ei wneud i fy merch? 1085 00:48:24,240 --> 00:48:28,010 >> -Permit Mi gyflwyno i'r llawfeddyg plastig ifanc disglair, 1086 00:48:28,010 --> 00:48:30,010 Doctor Phillip Schlotkin. 1087 00:48:30,010 --> 00:48:35,020 Mae'r trwyn dyn swyddi mwyaf yn y bydysawd cyfan a Beverly Hills. 1088 00:48:35,020 --> 00:48:36,140 >> -Eich Uchelder. 1089 00:48:36,140 --> 00:48:36,820 >> Swydd -Nose? 1090 00:48:36,820 --> 00:48:37,700 Nid wyf yn deall. 1091 00:48:37,700 --> 00:48:39,070 Mae hi eisoes wedi cael swydd trwyn. 1092 00:48:39,070 --> 00:48:40,800 Yr oedd hi melys 16 yn bresennol. 1093 00:48:40,800 --> 00:48:42,590 >> -Dim, Nid yw'n beth yw eich barn. 1094 00:48:42,590 --> 00:48:44,490 Mae'n llawer, llawer gwaeth. 1095 00:48:44,490 --> 00:48:48,160 Os nad ydych yn rhoi 'm' r cyfuniad i'r darian aer, 1096 00:48:48,160 --> 00:48:52,748 Bydd meddyg yn Schlotkin rhoi eich merch yn ôl ei hen trwyn. 1097 00:48:52,748 --> 00:48:53,748 - [Gasps] Nooooooooooooo. 1098 00:48:53,748 --> 00:48:57,684 1099 00:48:57,684 --> 00:48:59,652 Be ydy hynny? 1100 00:48:59,652 --> 00:49:00,640 >> -Mae Pob hawl. 1101 00:49:00,640 --> 00:49:02,506 'N annhymerus' yn dweud, 'n annhymerus' yn dweud. 1102 00:49:02,506 --> 00:49:03,498 >> -Dim, Dad, dim. 1103 00:49:03,498 --> 00:49:04,490 Ni Rhaid i chi. 1104 00:49:04,490 --> 00:49:06,090 >> -You're Iawn fy annwyl. 1105 00:49:06,090 --> 00:49:07,390 'N annhymerus' yn colli eich trwyn newydd. 1106 00:49:07,390 --> 00:49:10,990 Ond ni fyddaf yn dweud wrthynt y cyfuniad waeth beth. 1107 00:49:10,990 --> 00:49:12,450 >> -Very Dda. 1108 00:49:12,450 --> 00:49:14,830 Doctor Schlotkin, gwneud eich gwaethaf. 1109 00:49:14,830 --> 00:49:15,744 >> Pleser -My. 1110 00:49:15,744 --> 00:49:19,860 1111 00:49:19,860 --> 00:49:20,800 >> -Dim! 1112 00:49:20,800 --> 00:49:22,780 Arhoswch, aros. 1113 00:49:22,780 --> 00:49:24,000 'N annhymerus' yn dweud. 1114 00:49:24,000 --> 00:49:25,830 'N annhymerus' yn dweud. 1115 00:49:25,830 --> 00:49:28,270 >> -I Yn gwybod y byddai'n gweithio. 1116 00:49:28,270 --> 00:49:31,390 Mae pob hawl, yn ei roi i mi. 1117 00:49:31,390 --> 00:49:36,220 >> -Y Cyfuniad yn un. 1118 00:49:36,220 --> 00:49:36,740 >> -Un. 1119 00:49:36,740 --> 00:49:37,473 >> -Un. 1120 00:49:37,473 --> 00:49:37,972 -Two. 1121 00:49:37,972 --> 00:49:38,471 -Two. 1122 00:49:38,471 --> 00:49:39,800 -Two. 1123 00:49:39,800 --> 00:49:40,300 -Three. 1124 00:49:40,300 --> 00:49:40,800 -Three. 1125 00:49:40,800 --> 00:49:41,800 -Three. 1126 00:49:41,800 --> 00:49:42,300 -Four. 1127 00:49:42,300 --> 00:49:42,800 -Four. 1128 00:49:42,800 --> 00:49:44,707 -Four. 1129 00:49:44,707 --> 00:49:45,521 -Five. 1130 00:49:45,521 --> 00:49:46,430 -Five. 1131 00:49:46,430 --> 00:49:47,930 -Five. 1132 00:49:47,930 --> 00:49:53,480 -So Mae'r cyfuniad yn un, dau, tri, pedwar, pump. 1133 00:49:53,480 --> 00:49:56,140 Dyna y cyfuniad stupidest Rwy'n clywed erioed yn fy mywyd. 1134 00:49:56,140 --> 00:49:58,640 Dyna'r math o beth Byddai idiot yn ei gael ar ei bagiau. 1135 00:49:58,640 --> 00:50:00,000 >> -Thank Chi, eich uchelder. 1136 00:50:00,000 --> 00:50:01,340 >> [Gliciau BELL] 1137 00:50:01,340 --> 00:50:02,450 >> -Beth Wnaethoch chi? 1138 00:50:02,450 --> 00:50:03,800 >> -I Troi oddi ar y wal. 1139 00:50:03,800 --> 00:50:05,010 >> -Dim, Na wnaethoch chi, byddwch yn troi oddi ar y ffilm gyfan. 1140 00:50:05,010 --> 00:50:06,220 >> Must've -I gwasgu'r botwm anghywir. 1141 00:50:06,220 --> 00:50:07,064 >> -Well, Ei roi yn ôl ar y! 1142 00:50:07,064 --> 00:50:07,910 Rhowch y ffilm yn ôl ar! 1143 00:50:07,910 --> 00:50:08,300 >> -Yes, Syr! 1144 00:50:08,300 --> 00:50:08,799 Oes, syr. 1145 00:50:08,799 --> 00:50:09,660 -Let I ni fynd, Arnold. 1146 00:50:09,660 --> 00:50:10,450 Dewch, Gretchen. 1147 00:50:10,450 --> 00:50:12,533 Wrth gwrs eich bod yn gwybod fy mod chi helpu rhaid i bil atoch am hyn. 1148 00:50:12,533 --> 00:50:16,720 1149 00:50:16,720 --> 00:50:17,220 -Well? 1150 00:50:17,220 --> 00:50:17,802 A oedd yn gweithio? 1151 00:50:17,802 --> 00:50:18,510 Ble mae'r brenin? 1152 00:50:18,510 --> 00:50:20,218 >> -Mae'n Gweithio, syr, yr ydym yn cael y cyfuniad. 1153 00:50:20,218 --> 00:50:20,740 -Great. 1154 00:50:20,740 --> 00:50:24,810 Nawr gallwn gymryd pob anadl olaf o awyr iach o blaned Druidia. 1155 00:50:24,810 --> 00:50:25,890 Beth yw'r cyfuniad? 1156 00:50:25,890 --> 00:50:28,155 >> -Un, dau, tri, pedwar, pump. 1157 00:50:28,155 --> 00:50:29,890 >> -Un, dau, tri, pedwar, pump? 1158 00:50:29,890 --> 00:50:30,390 -Yes. 1159 00:50:30,390 --> 00:50:31,110 -bod Anhygoel. 1160 00:50:31,110 --> 00:50:34,550 Mae gen i'r un cyfuniad ar fy bagiau. 1161 00:50:34,550 --> 00:50:37,160 Paratoi Spaceball 1 ar gyfer ymadael ar unwaith. 1162 00:50:37,160 --> 00:50:38,160 >> -Yes, Syr. 1163 00:50:38,160 --> 00:50:40,745 >> -a'r Newid y cyfuniad ar fy bagiau. 1164 00:50:40,745 --> 00:50:41,578 [SOUND CAU DRWS] 1165 00:50:41,578 --> 00:50:42,064 [Clink DRYSAU taro HELMED] 1166 00:50:42,064 --> 00:50:42,550 -Ahh. 1167 00:50:42,550 --> 00:50:43,383 [DIWEDD Playback VIDEO] 1168 00:50:43,383 --> 00:50:46,700 DAVID J. Malan: Dyna ni am CS50, byddwn yn gweld chi yr wythnos nesaf. 1169 00:50:46,700 --> 00:50:49,883 Adroddwr: Ac yn awr, Deep Meddyliau, gan Daven Farnham. 1170 00:50:49,883 --> 00:50:53,160 1171 00:50:53,160 --> 00:50:55,860 >> DAVEN FARNHAM: Codio yn C yw gymaint yn anoddach nag Scratch. 1172 00:50:55,860 --> 00:50:57,320 printf, Scratch oedd yn gelwydd. 1173 00:50:57,320 --> 00:50:59,930 1174 00:50:59,930 --> 00:51:01,430 >> [Slogan Chwerthin] 1175 00:51:01,430 --> 00:51:02,486