1 00:00:00,000 --> 00:00:03,388 >> [CHWARAE CERDDORIAETH] 2 00:00:03,388 --> 00:00:05,104 3 00:00:05,104 --> 00:00:06,020 DOUG LLOYD: Pob hawl. 4 00:00:06,020 --> 00:00:07,680 Gweithio gyda sengl newidynnau yn hwyl 'n bert. 5 00:00:07,680 --> 00:00:09,500 Ond beth os ydym am weithio gyda llawer o newidynnau, 6 00:00:09,500 --> 00:00:12,760 ond nid ydym am gael criw o enwau gwahanol yn hedfan o gwmpas ein cod? 7 00:00:12,760 --> 00:00:15,980 Yn yr achos hwn, araeau yn mynd i ddod i mewn 'n sylweddol' n hylaw. 8 00:00:15,980 --> 00:00:19,510 Araeau yn ddata gwirioneddol sylfaenol strwythur ar gyfer unrhyw iaith raglennu 9 00:00:19,510 --> 00:00:20,260 y byddwch yn eu defnyddio. 10 00:00:20,260 --> 00:00:24,450 Ac maent yn wirioneddol, yn ddefnyddiol iawn, yn enwedig, fel y byddwn yn gweld, yn CS 50. 11 00:00:24,450 --> 00:00:27,870 >> Rydym yn defnyddio araeau i ddal gwerthoedd yr un math data 12 00:00:27,870 --> 00:00:29,830 mewn lleoliadau cof cyffiniol. 13 00:00:29,830 --> 00:00:32,430 Hynny yw, ei fod yn ffordd y gallwn grŵp 14 00:00:32,430 --> 00:00:35,430 criw o gyfanrifau gyda'i gilydd mewn cof neu griw o gymeriadau 15 00:00:35,430 --> 00:00:38,270 neu'n arnofio mewn cof n sylweddol agos at ei gilydd ac yn gweithio 16 00:00:38,270 --> 00:00:41,930 gyda hwy heb orfod rhoi pob un ei enw unigryw ei hun, a all 17 00:00:41,930 --> 00:00:44,500 cael feichus ar ôl ychydig. 18 00:00:44,500 --> 00:00:48,130 >> Yn awr, un ffordd o analogize arrays yw meddwl am eich post lleol 19 00:00:48,130 --> 00:00:49,000 swyddfa am eiliad. 20 00:00:49,000 --> 00:00:51,820 Felly cam i ffwrdd o raglennu a dim ond caewch eich llygaid 21 00:00:51,820 --> 00:00:54,120 a delweddu yn eich meddwl eich swyddfa bost leol. 22 00:00:54,120 --> 00:00:57,160 Fel arfer, yn y rhan fwyaf post swyddfeydd, mae 'na fanc mawr 23 00:00:57,160 --> 00:01:00,490 blychau swyddfa bost ar y wal. 24 00:01:00,490 --> 00:01:03,510 >> Amrywiaeth yn floc mawr o gof cyffiniol, 25 00:01:03,510 --> 00:01:06,120 yr un ffordd ag y mae post banc yn eich swyddfa bost 26 00:01:06,120 --> 00:01:11,230 yn lle mawr ar y wal y swyddfa bost. 27 00:01:11,230 --> 00:01:15,750 Araeau wedi cael eu rhannu i mewn i bach, yn union blociau o faint o le, 28 00:01:15,750 --> 00:01:19,930 Gelwir pob un ohonynt yn elfen, yn yr un ffordd ag y wal y swydd 29 00:01:19,930 --> 00:01:23,840 swyddfa wedi ei rhannu i mewn i bach, yn union blociau o faint o le, 30 00:01:23,840 --> 00:01:27,560 yr ydym yn galw blwch PO. 31 00:01:27,560 --> 00:01:31,650 Mae pob elfen y rhesi yn gallu storio rhywfaint o ddata, 32 00:01:31,650 --> 00:01:37,540 yn union fel pob blwch swyddfa'r post yn gallu i ddal rhywfaint o bost. 33 00:01:37,540 --> 00:01:41,540 >> Beth ellir ei storio ym mhob elfen o yr amrywiaeth yn newidynnau o'r un data 34 00:01:41,540 --> 00:01:45,300 math, megis int neu torgoch, dim ond fel ym mlwch eich swyddfa bost, 35 00:01:45,300 --> 00:01:47,300 gallwch ond cyd-fynd pethau o fath tebyg, 36 00:01:47,300 --> 00:01:50,430 megis llythyrau neu becynnau bach. 37 00:01:50,430 --> 00:01:55,050 Yn olaf, gallwn gael gafael ar bob elfen o'r yr amrywiaeth yn uniongyrchol gan rif mynegai, 38 00:01:55,050 --> 00:01:59,770 yn union fel y gallwn gael mynediad i'n swyddfa bost blwch trwy wybod ei rif blwch post. 39 00:01:59,770 --> 00:02:02,750 Gobeithio, bod cyfatebiaeth yn eich helpu i gael eich pen 40 00:02:02,750 --> 00:02:05,540 ar y syniad o araeau gan analogizing i rywbeth arall 41 00:02:05,540 --> 00:02:08,400 eich bod yn ôl pob tebyg eisoes yn gyfarwydd â. 42 00:02:08,400 --> 00:02:13,182 >> Yn C, yr elfennau o amrywiaeth yn mynegeio gan ddechrau o 0, nid o 1. 43 00:02:13,182 --> 00:02:14,390 Ac mae hyn yn wirioneddol bwysig. 44 00:02:14,390 --> 00:02:18,530 Ac yn wir, dyma pam yr ydym ni, yn CS 50, a pham y cyfrifiadur gwyddonwyr yn aml 45 00:02:18,530 --> 00:02:22,150 fydd yn cyfrif o 0, yw oherwydd amrywiaeth C 46 00:02:22,150 --> 00:02:24,660 mynegeio, a oedd bob amser yn dechrau ar 0. 47 00:02:24,660 --> 00:02:28,730 Felly os amrywiaeth yn cynnwys elfennau n, elfen gyntaf y array 48 00:02:28,730 --> 00:02:32,960 wedi ei lleoli yn mynegai 0, ac yr elfen olaf y rhesi 49 00:02:32,960 --> 00:02:36,610 wedi ei leoli yn mynegai n minws 1. 50 00:02:36,610 --> 00:02:43,160 Unwaith eto, os oes elfennau n yn ein array, y mynegai ddiwethaf yn n minws 1. 51 00:02:43,160 --> 00:02:46,820 >> Felly, os oes gan ein array 50 elfen, mae'r elfen gyntaf wedi ei lleoli yn mynegai 0, 52 00:02:46,820 --> 00:02:51,060 a'r elfen olaf wedi ei leoli yn fynegai 49. 53 00:02:51,060 --> 00:02:53,940 Yn anffodus, neu yn ffodus, yn dibynnu ar eich safbwynt, 54 00:02:53,940 --> 00:02:56,170 C yn drugarog iawn yma. 55 00:02:56,170 --> 00:02:59,480 Ni fydd yn eich atal rhag mynd allan waharddedig o'ch arae. 56 00:02:59,480 --> 00:03:03,080 Gallech gael mynediad i'r minws 3 elfen o'ch array 57 00:03:03,080 --> 00:03:07,400 neu elfen 59fed eich array, os mai dim ond gan eich array 50 elfen. 58 00:03:07,400 --> 00:03:11,060 Ni fydd yn atal eich rhaglen o lunio, ond ar adeg ei redeg, 59 00:03:11,060 --> 00:03:14,350 efallai y byddwch yn dod ar draws fai segmentu bondigrybwyll 60 00:03:14,350 --> 00:03:17,460 os byddwch yn dechrau cael mynediad cof sydd y tu allan ffiniau'r hyn 61 00:03:17,460 --> 00:03:19,260 gwnaethoch ofyn eich rhaglen i roi i chi. 62 00:03:19,260 --> 00:03:21,250 Felly byddwch yn ofalus. 63 00:03:21,250 --> 00:03:23,120 >> Beth mae amrywiaeth datganiad yn edrych? 64 00:03:23,120 --> 00:03:26,940 Sut ydym ni'n cod amrywiaeth i fodolaeth fel rydym cod unrhyw newidyn arall? 65 00:03:26,940 --> 00:03:31,250 Mae tair rhan i'r amrywiaeth declaration-- math, enw, 66 00:03:31,250 --> 00:03:31,880 ac o faint. 67 00:03:31,880 --> 00:03:34,088 Mae hyn yn debyg iawn i datganiad amrywiol, a oedd yn 68 00:03:34,088 --> 00:03:36,970 yn unig yw math a enw, yr elfen maint yn 69 00:03:36,970 --> 00:03:39,860 yr achos arbennig dros arae, oherwydd ein bod yn cael criw ohonynt 70 00:03:39,860 --> 00:03:41,830 ar yr un amser. 71 00:03:41,830 --> 00:03:45,560 >> Felly y math yw pa fath o newidyn chi am pob elfen y rhesi fod. 72 00:03:45,560 --> 00:03:47,150 Peidiwch am iddo amrywiaeth o gyfanrifau? 73 00:03:47,150 --> 00:03:49,010 Yna, dylai eich math data fod yn int. 74 00:03:49,010 --> 00:03:51,760 Ydych chi am iddo fod yn amrywiaeth o dyblau neu arnofion? 75 00:03:51,760 --> 00:03:54,545 Dylai math data fod yn dwbl neu arnofio. 76 00:03:54,545 --> 00:03:56,420 Mae'r enw yn yr hyn yr ydych eisiau ffonio eich arae. 77 00:03:56,420 --> 00:04:00,970 Beth ydych chi eisiau ei enwi cawr hwn banc o gyfanrifau neu fflotiau neu chars 78 00:04:00,970 --> 00:04:03,250 neu yn dyblu, neu beth bynnag sydd gennych? 79 00:04:03,250 --> 00:04:04,700 Beth ydych chi am ei alw? 80 00:04:04,700 --> 00:04:06,110 Hunanesboniadol Pretty. 81 00:04:06,110 --> 00:04:08,610 >> Yn olaf, maint, sy'n mynd tu mewn cromfachau sgwâr, 82 00:04:08,610 --> 00:04:12,180 yw sut llawer o elfennau y byddech fel eich amrywiaeth o gynnwys. 83 00:04:12,180 --> 00:04:13,530 Faint o gyfanrifau ydych chi eisiau? 84 00:04:13,530 --> 00:04:15,570 Faint o fflotiau ydych chi eisiau? 85 00:04:15,570 --> 00:04:19,070 >> Felly, er enghraifft, int graddau i fyfyrwyr 40. 86 00:04:19,070 --> 00:04:26,020 Mae hyn yn datgan amrywiaeth o'r enw Fyfyrwyr graddau, sy'n cynnwys 40 o gyfanrifau. 87 00:04:26,020 --> 00:04:28,180 Hunanesboniadol Pretty, yr wyf yn gobeithio. 88 00:04:28,180 --> 00:04:29,330 Dyma enghraifft arall. 89 00:04:29,330 --> 00:04:31,560 Prisiau dewislen Dwbl 8. 90 00:04:31,560 --> 00:04:34,610 Mae hyn yn creu amrywiaeth o'r enw Prisiau Dewislen, sy'n cynnwys 91 00:04:34,610 --> 00:04:38,300 o le er cof am wyth dyblau. 92 00:04:38,300 --> 00:04:42,000 93 00:04:42,000 --> 00:04:45,750 >> Os ydych yn meddwl am bob elfen o amrywiaeth o fath data-math, 94 00:04:45,750 --> 00:04:49,860 felly er enghraifft, yn elfen unigol o amrywiaeth o'r math int, yr un modd i chi 95 00:04:49,860 --> 00:04:52,770 Byddai meddwl am unrhyw un arall amrywiol o fath int, 96 00:04:52,770 --> 00:04:56,440 yr holl weithrediadau cyfarwydd ein bod yn a drafodwyd yn flaenorol yn y Gweithrediadau 97 00:04:56,440 --> 00:04:58,270 Bydd fideo yn gwneud synnwyr. 98 00:04:58,270 --> 00:05:01,620 Felly dyma, gallem ddatgan amrywiaeth o Booleans elwir Truthtable, 99 00:05:01,620 --> 00:05:05,590 sy'n cynnwys lle i 10 o Booleans. 100 00:05:05,590 --> 00:05:09,650 >> Ac yna, yn union fel y gallem jyst aseinio gwerth at unrhyw newidyn arall o'r math 101 00:05:09,650 --> 00:05:13,470 Boole, gallem ddweud rhywbeth fel Truthtable braced sgwâr 102 00:05:13,470 --> 00:05:18,040 2, a dyna sut yr ydym yn nodi, pa elfen o'r tabl gwir? 103 00:05:18,040 --> 00:05:20,350 Y drydedd elfen yn y tabl gwirionedd, gan fod yn cofio, 104 00:05:20,350 --> 00:05:21,800 rydym yn cyfrif o 0. 105 00:05:21,800 --> 00:05:25,690 Felly dyna sut yr ydym yn dangos yr trydedd elfen o'r tabl gwirionedd. 106 00:05:25,690 --> 00:05:28,680 Truthtable 2 yn dychwelyd ffug, yn union fel y gallem declare-- 107 00:05:28,680 --> 00:05:33,560 neu gallem neilltuo, yn hytrach, unrhyw Newidyn math Boole bod yn ffug. 108 00:05:33,560 --> 00:05:35,050 >> Gallwn hefyd ddefnyddio mewn amodau. 109 00:05:35,050 --> 00:05:39,000 os (truthtable 7 == yn wir), sef ei ddweud, 110 00:05:39,000 --> 00:05:42,370 os bydd yr elfen wythfed o Truthtable yn wir, 111 00:05:42,370 --> 00:05:46,760 efallai rydym eisiau argraffu neges i'r defnyddiwr, printf ("n WIR!") ;. 112 00:05:46,760 --> 00:05:50,290 Mae hynny'n ein peri i ddweud Truthtable 10 yn dychwelyd yn wir, dde? 113 00:05:50,290 --> 00:05:53,590 Wel, yr wyf yn gallu, ond mae'n eithaf beryglus, gan fod yn cofio, 114 00:05:53,590 --> 00:05:56,260 mae gennym amrywiaeth o 10 o Booleans. 115 00:05:56,260 --> 00:06:02,340 Felly mae'r mynegai uchaf y mae'r compiler wedi rhoi i ni yw 9. 116 00:06:02,340 --> 00:06:06,010 >> Bydd y rhaglen hon yn llunio, ond os rhywbeth arall er cof 117 00:06:06,010 --> 00:06:09,110 yn bodoli lle byddem yn disgwyl i Truthtable 10 i fynd, 118 00:06:09,110 --> 00:06:13,980 gallem ddioddef nam segmentu. Rydym yn Gallai gael i ffwrdd ag ef, ond yn gyffredinol, 119 00:06:13,980 --> 00:06:14,710 'n bert beryglus. 120 00:06:14,710 --> 00:06:19,759 Felly, yr hyn yr wyf i'n ei wneud yma yw C cyfreithiol, ond nid o reidrwydd y symud gorau. 121 00:06:19,759 --> 00:06:22,300 Nawr, pan fyddwch yn datgan a ymgychwyn amrywiaeth yr un pryd, 122 00:06:22,300 --> 00:06:23,960 mae mewn gwirionedd yn 'n bert cystrawen arbennig sy'n eich 123 00:06:23,960 --> 00:06:26,250 Gall eu defnyddio i lenwi y rhesi gyda'i werthoedd cychwyn. 124 00:06:26,250 --> 00:06:30,130 Gall fynd yn feichus i yn datgan amrywiaeth o faint 100, 125 00:06:30,130 --> 00:06:33,430 ac mae'n rhaid wedyn i ddweud, elfen 0 yn dychwelyd hwn; Elfen 1 yn dychwelyd hwn; 126 00:06:33,430 --> 00:06:34,850 Elfen 2 yn dychwelyd hynny. 127 00:06:34,850 --> 00:06:36,370 Beth yw'r pwynt, dde? 128 00:06:36,370 --> 00:06:39,470 >> Os yw'n amrywiaeth bach, yr ydych Gallai gwneud rhywbeth fel hyn. 129 00:06:39,470 --> 00:06:44,360 Bool truthtable 3 yn dychwelyd agored Brace cyrliog ac yna atalnod 130 00:06:44,360 --> 00:06:48,060 gwahanu y rhestr o elfennau eich bod am roi yn y rhesi. 131 00:06:48,060 --> 00:06:50,520 Yna cau hanner colon Brace cyrliog. 132 00:06:50,520 --> 00:06:53,910 Mae hyn yn creu amrywiaeth o Maint y tri enw Truthtable, 133 00:06:53,910 --> 00:06:56,090 gydag elfennau ffug, yn wir, ac yn wir. 134 00:06:56,090 --> 00:06:59,270 Ac yn wir, y instantiation cystrawen gennyf yma yw 135 00:06:59,270 --> 00:07:03,350 yn union yr un fath â gwneud y Elfen cystrawen unigol isod. 136 00:07:03,350 --> 00:07:09,380 Mae'r ddwy ffordd o godio fyddai cynhyrchu'r un casgliad union. 137 00:07:09,380 --> 00:07:11,740 >> Yn yr un modd, gallem ailadrodd dros yr holl elfennau 138 00:07:11,740 --> 00:07:15,400 o amrywiaeth ddefnyddio dolen, sydd, yn gwirionedd, yn argymhellir yn gryf iawn 139 00:07:15,400 --> 00:07:16,790 yn y cartref ymarfer corff. 140 00:07:16,790 --> 00:07:20,720 Sut ydych chi'n creu amrywiaeth o 100 o cyfanrifau, lle 141 00:07:20,720 --> 00:07:23,477 pob elfen y rhesi yw ei mynegai? 142 00:07:23,477 --> 00:07:26,560 Felly, er enghraifft, mae gennym amrywiaeth o 100 cyfanrifau, ac yn yr elfen gyntaf, 143 00:07:26,560 --> 00:07:27,790 rydym eisiau rhoi 0. 144 00:07:27,790 --> 00:07:29,810 Yn yr ail elfen, rydym eisiau rhoi 1. 145 00:07:29,810 --> 00:07:33,319 Yn y drydedd elfen, rydym am i roi 2; ac yn y blaen ac yn y blaen. 146 00:07:33,319 --> 00:07:35,360 Mae hynny'n wirioneddol dda yn-y cartref ymarfer corff i wneud hynny. 147 00:07:35,360 --> 00:07:38,190 148 00:07:38,190 --> 00:07:40,220 >> Yma, nid yw'n edrych fel gormod wedi newid. 149 00:07:40,220 --> 00:07:44,170 Ond yn sylwi bod mewn rhwng yr cromfachau sgwâr, y tro hwn, 150 00:07:44,170 --> 00:07:45,830 Fi 'n weithredol wedi hepgor y rhif. 151 00:07:45,830 --> 00:07:48,000 Os ydych yn defnyddio hyn yn iawn instantiation arbennig 152 00:07:48,000 --> 00:07:50,380 cystrawen i greu array, rydych nid yn ei wneud 153 00:07:50,380 --> 00:07:53,491 Mae angen i ddangos faint y rhesi o flaen llaw. 154 00:07:53,491 --> 00:07:55,740 Mae'r compiler yn ddigon craff i wybod bod chi mewn gwirionedd 155 00:07:55,740 --> 00:07:58,980 eisiau amrywiaeth o faint 3, oherwydd eich bod yn rhoi tair elfen 156 00:07:58,980 --> 00:08:00,640 ar y dde o'r arwydd cyfartal. 157 00:08:00,640 --> 00:08:04,140 Os byddwch wedi rhoi pedwar, byddai'n cael Rhoddir tabl gwirionedd o faint pedwar chi; 158 00:08:04,140 --> 00:08:06,270 ac yn y blaen ac yn y blaen. 159 00:08:06,270 --> 00:08:09,380 >> Nid yw Araeau yn cael eu cyfyngu i un dimensiwn, sydd yn eithaf oer. 160 00:08:09,380 --> 00:08:12,000 Gallwch chi mewn gwirionedd yn cael cymaint o rhagnodwyr ochr fel y dymunwch. 161 00:08:12,000 --> 00:08:16,470 Felly er enghraifft, os ydych am greu bwrdd ar gyfer y gêm Llong Ryfel, a oedd, 162 00:08:16,470 --> 00:08:20,910 os ydych chi erioed wedi chwarae, yn gêm sy'n chwarae gyda pegiau ar 10 o 10 grid, 163 00:08:20,910 --> 00:08:22,450 gallech greu amrywiaeth fel hyn. 164 00:08:22,450 --> 00:08:26,030 Fe allech chi ddweud Bool ryfel braced sgwâr 10 165 00:08:26,030 --> 00:08:29,590 ar gau sgwâr braced sgwâr braced 10 gau braced sgwâr. 166 00:08:29,590 --> 00:08:32,710 >> Ac yna, gallwch ddewis dehongli hyn yn eich meddwl fel 10 167 00:08:32,710 --> 00:08:35,576 10 grid o gelloedd. 168 00:08:35,576 --> 00:08:37,409 Yn awr, mewn gwirionedd, er cof, mae'n wir yn unig 169 00:08:37,409 --> 00:08:42,440 parhau i fod yn elfen 100, amrywiaeth sengl dimensiwn. 170 00:08:42,440 --> 00:08:46,070 Ac mae hyn, mewn gwirionedd, yn mynd am os ydych yn wedi tri dimensiwn neu bedwar neu bump. 171 00:08:46,070 --> 00:08:49,420 Mae wir yn unig yn lluosi pob un o'r indices-- 172 00:08:49,420 --> 00:08:51,130 neu bob un o'r maint specifiers-- gyda'i gilydd, 173 00:08:51,130 --> 00:08:53,480 a 'ch jyst cael un-dimensiwn amrywiaeth o'r maint hwnnw. 174 00:08:53,480 --> 00:08:57,090 >> Ond o ran trefniadaeth a delweddu a chanfyddiad dynol, 175 00:08:57,090 --> 00:08:59,240 gall fod yn llawer haws i weithio gyda grid 176 00:08:59,240 --> 00:09:02,980 os ydych yn gweithio ar gêm fel Tic-tac-blaen neu Llong Ryfel, 177 00:09:02,980 --> 00:09:05,179 neu rywbeth fel 'na. 178 00:09:05,179 --> 00:09:06,970 Mae'n tynnu mawr, yn lle cael 179 00:09:06,970 --> 00:09:09,340 i feddwl am Tic-tac-blaen bwrdd fel llinell o naw 180 00:09:09,340 --> 00:09:13,810 sgwariau neu fwrdd Llong Ryfel fel llinell o 100 sgwariau. 181 00:09:13,810 --> 00:09:16,010 Mae 10 o 10 grid neu dri gan dri grid yn ôl pob tebyg 182 00:09:16,010 --> 00:09:17,225 llawer mwy hawdd i'w gweld. 183 00:09:17,225 --> 00:09:19,820 184 00:09:19,820 --> 00:09:22,280 >> Yn awr, rhywbeth gwirioneddol bwysig am araeau. 185 00:09:22,280 --> 00:09:25,950 Gallwn drin pob unigolyn elfen y rhesi fel newidyn. 186 00:09:25,950 --> 00:09:27,700 Gwelsom fod cynharach pan oeddem yn aseinio 187 00:09:27,700 --> 00:09:32,240 mae'r gwerth Gwir i rai Booleans neu eu profi mewn conditionals. 188 00:09:32,240 --> 00:09:35,960 Ond ni allwn drin cyfan Araeau eu hunain fel newidynnau. 189 00:09:35,960 --> 00:09:41,760 Ni allwn, er enghraifft, yn aseinio un array i amrywiaeth arall gan ddefnyddio aseiniad 190 00:09:41,760 --> 00:09:42,930 gweithredwr. 191 00:09:42,930 --> 00:09:44,640 Nid yw'n C. cyfreithiol 192 00:09:44,640 --> 00:09:47,920 >> Os ydym am, er example-- beth byddem yn ei wneud yn yr enghraifft honno 193 00:09:47,920 --> 00:09:50,200 fyddai i gopïo un amrywiaeth mewn i un arall. 194 00:09:50,200 --> 00:09:53,810 Os ydym am wneud hynny, rydym mewn gwirionedd angen defnyddio dolen i gopïo drosodd 195 00:09:53,810 --> 00:09:56,550 bob elfen unigol un ar y tro. 196 00:09:56,550 --> 00:09:58,700 Dwi'n gwybod ei fod ychydig cymryd llawer o amser. 197 00:09:58,700 --> 00:10:04,022 >> Felly, er enghraifft, pe bai gennym y cwpl o linellau o god, byddai hyn yn gweithio? 198 00:10:04,022 --> 00:10:05,230 Wel, na, na fyddai, dde? 199 00:10:05,230 --> 00:10:07,860 Oherwydd ein bod yn ceisio i neilltuo bwyd bar. 200 00:10:07,860 --> 00:10:09,860 Dyw hynny ddim yn mynd i weithio, am ei fod yn amrywiaeth, 201 00:10:09,860 --> 00:10:13,130 ac yr ydym newydd ei ddisgrifio nad yw hynny'n C. cyfreithiol 202 00:10:13,130 --> 00:10:15,580 >> Yn lle hynny, os ydym am copïo cynnwys y bwyd 203 00:10:15,580 --> 00:10:18,070 i mewn i far, sef yr hyn ydym yn ceisio ei wneud yma, 204 00:10:18,070 --> 00:10:19,970 byddai angen i cystrawen fel hyn arnom. 205 00:10:19,970 --> 00:10:24,170 Mae gennym dros ddolen sy'n mynd o J yn hafal i 0 hyd at 5, 206 00:10:24,170 --> 00:10:28,390 ac yr ydym yn cynyddiad J ar bob fersiwn o y ddolen ac elfennau aseinio fel 'na. 207 00:10:28,390 --> 00:10:33,360 Byddai hyn yn arwain at bar hefyd bod yn un, dau, tri, pedwar, pump, 208 00:10:33,360 --> 00:10:36,730 ond mae'n rhaid i wneud ei hyn iawn ffordd araf elfen-wrth-elfen, 209 00:10:36,730 --> 00:10:40,009 yn hytrach na gan ddim ond copïo yr amrywiaeth cyfan. 210 00:10:40,009 --> 00:10:42,050 Mewn rhaglenni eraill ieithoedd, rhai mwy modern, 211 00:10:42,050 --> 00:10:45,610 gallwch chi, mewn gwirionedd, yn gwneud dim ond mor syml â hynny hafal cystrawen. 212 00:10:45,610 --> 00:10:49,620 Ond yn C, yn anffodus, rydym yn Ni chaniateir i wneud hynny. 213 00:10:49,620 --> 00:10:52,026 >> Yn awr, mae un arall beth yr wyf am sôn am 214 00:10:52,026 --> 00:10:54,650 am araeau a all fod ychydig ychydig yn anodd y tro cyntaf y byddwch yn 215 00:10:54,650 --> 00:10:55,990 gweithio gyda nhw. 216 00:10:55,990 --> 00:10:59,860 Buom yn trafod mewn fideo am cwmpas amrywiol, 217 00:10:59,860 --> 00:11:04,940 bod y rhan fwyaf newidynnau yn C, pan fyddwch yn ffonio iddynt mewn swyddogaethau, yn cael eu pasio gan werth. 218 00:11:04,940 --> 00:11:08,620 Ydych chi'n cofio beth mae'n ei olygu i basio rhywbeth yn ôl gwerth? 219 00:11:08,620 --> 00:11:12,570 Mae'n golygu ein bod yn gwneud copi o'r newidyn sy'n cael ei basio i mewn. 220 00:11:12,570 --> 00:11:16,290 Mae'r swyddogaeth callee, y swyddogaeth sy'n derbyn y newidyn, 221 00:11:16,290 --> 00:11:17,730 nid yw'n cael y newidyn ei hun. 222 00:11:17,730 --> 00:11:20,850 Mae'n cael ei lleol eu hunain copi ohono i weithio gyda nhw. 223 00:11:20,850 --> 00:11:24,070 >> Araeau, wrth gwrs, yn gwneud Nid yw dilyn y rheol hon. 224 00:11:24,070 --> 00:11:27,600 Yn hytrach, yr hyn yr ydym yn galw hyn yn mynd heibio drwy gyfeirio. 225 00:11:27,600 --> 00:11:31,360 Mae'r callee mewn gwirionedd yn derbyn y rhesi. 226 00:11:31,360 --> 00:11:34,207 Nid yw'n cael ei copi lleol eu hunain ohono. 227 00:11:34,207 --> 00:11:36,040 Ac os ydych yn meddwl am hynny, mae hyn yn gwneud synnwyr. 228 00:11:36,040 --> 00:11:39,750 Os araeau yn wirioneddol fawr, mae'n yn cymryd cymaint o amser ac ymdrech 229 00:11:39,750 --> 00:11:44,470 i wneud copi o amrywiaeth o 100 neu 1,000 neu 10,000 o elfennau, 230 00:11:44,470 --> 00:11:48,290 nad yw'n werth ei gyfer swyddogaeth i dderbyn copi ohono, 231 00:11:48,290 --> 00:11:51,037 wneud rhywfaint o waith gydag ef, ac yna dim ond yn cael ei wneud gyda'r copi; 232 00:11:51,037 --> 00:11:53,120 Nid oes angen iddo gael mae'n hongian o gwmpas anymore. 233 00:11:53,120 --> 00:11:54,710 >> Oherwydd bod araeau rai swmpus ac yn feichus, 234 00:11:54,710 --> 00:11:56,001 rydym yn unig yn eu pasio drwy gyfeirio. 235 00:11:56,001 --> 00:12:01,210 Rydym yn unig yn ymddiried yn y swyddogaeth honno i, nid yn torri unrhyw beth. 236 00:12:01,210 --> 00:12:03,010 Felly yw'n mewn gwirionedd yn cael y rhesi. 237 00:12:03,010 --> 00:12:05,290 Nid yw'n cael ei chopi lleol eu hunain ohono. 238 00:12:05,290 --> 00:12:07,170 >> Felly beth mae hyn yn ei olygu, Yna, pan fydd y callee 239 00:12:07,170 --> 00:12:08,970 yn trin elfennau o'r arae? 240 00:12:08,970 --> 00:12:10,780 Beth sy'n Digwydd? 241 00:12:10,780 --> 00:12:13,210 Am y tro, byddwn yn sglein dros pam yn union mae hyn 242 00:12:13,210 --> 00:12:15,320 digwydd, pam araeau yn cael eu trosglwyddo trwy gyfeirio 243 00:12:15,320 --> 00:12:17,810 a phopeth arall yn cael ei basio yn ôl gwerth. 244 00:12:17,810 --> 00:12:20,470 Ond yr wyf yn addo i chi, byddwn yn dychwelyd a rhoi'r ateb i chi 245 00:12:20,470 --> 00:12:23,750 at hyn mewn fideo diweddarach. 246 00:12:23,750 --> 00:12:28,110 >> Dyma un ymarfer mwy i chi cyn i ni lapio fyny pethau ar araeau. 247 00:12:28,110 --> 00:12:31,400 Mae criw o cod yma, dyna Nid yw yn arbennig o arddull da, 248 00:12:31,400 --> 00:12:33,400 dim ond byddaf yn gwneud hynny cafeat. 249 00:12:33,400 --> 00:12:36,660 Does dim sylwadau yn fan hyn, sydd yn ffurf eithaf gwael. 250 00:12:36,660 --> 00:12:39,750 Ond dim ond am fy mod i eisiau bod gallu ffitio popeth ar y sgrin. 251 00:12:39,750 --> 00:12:44,360 >> Ar y brig, gallwch weld bod gen i dau ddatganiad swyddogaeth ar gyfer amrywiaeth penodol 252 00:12:44,360 --> 00:12:45,820 a gosod int. 253 00:12:45,820 --> 00:12:49,680 Array Set ôl pob golwg yn cymryd amrywiaeth o bedwar gyfanrifau fel ei fewnbwn. 254 00:12:49,680 --> 00:12:52,767 Ac int set yn ôl pob golwg yn cymryd cyfanrif unigol fel ei fewnbwn. 255 00:12:52,767 --> 00:12:54,350 Ond nid oes rhaid i allbwn ddau ohonynt. 256 00:12:54,350 --> 00:12:57,689 Mae'r allbwn, y ffurflen teipio, bob un yn ddi-rym. 257 00:12:57,689 --> 00:12:59,480 Yn Main, mae gennym cwpl o linellau o god. 258 00:12:59,480 --> 00:13:02,730 Rydym yn datgan newidyn cyfanrif Gelwir a benodi ei werth 10. 259 00:13:02,730 --> 00:13:07,080 Rydym yn datgan amrywiaeth o bedwar gyfanrifau Gelwir B ac aseinio'r elfennau 0, 1, 260 00:13:07,080 --> 00:13:08,730 2, a 3, yn y drefn honno. 261 00:13:08,730 --> 00:13:12,190 Yna, mae gennym galwad i osod int a galwad i osod amrywiaeth. 262 00:13:12,190 --> 00:13:15,910 Mae diffiniadau o amrywiaeth set a set int i lawr isod, ar y gwaelod. 263 00:13:15,910 --> 00:13:17,640 >> Ac felly, unwaith eto, yr wyf yn gofyn y cwestiwn i chi. 264 00:13:17,640 --> 00:13:20,770 Hyn sy'n cael ei argraffu yma ar ddiwedd Main? 265 00:13:20,770 --> 00:13:23,020 Mae 'na col allbrint. Rwy'n argraffu dau rif cyfan. 266 00:13:23,020 --> 00:13:28,010 Dw i'n argraffu'r cynnwys A ac cynnwys y B braced sgwâr 0. 267 00:13:28,010 --> 00:13:29,880 Oedi y fideo yma ac gymryd munud. 268 00:13:29,880 --> 00:13:35,482 Allwch chi chyfrif i maes beth mae hyn Bydd swyddogaeth argraffu ar y diwedd? 269 00:13:35,482 --> 00:13:38,190 Gobeithio, os ydych yn cofio y gwahaniaethu rhwng pasio yn ôl gwerth 270 00:13:38,190 --> 00:13:41,680 ac yn pasio drwy gyfeirio, mae hyn yn Nid problem yn rhy anodd i chi. 271 00:13:41,680 --> 00:13:44,130 A'r ateb y byddech wedi dod o hyd yn hyn. 272 00:13:44,130 --> 00:13:47,660 Os nad ydych yn siŵr ynglŷn â pam yw hynny'n wir, gymryd ail, 273 00:13:47,660 --> 00:13:50,620 mynd yn ôl, yn adolygu'r hyn yr wyf yn unig oedd trafod am pasio araeau 274 00:13:50,620 --> 00:13:53,450 drwy gyfeirio, yn erbyn pasio newidynnau eraill yn ôl gwerth, 275 00:13:53,450 --> 00:13:56,680 a gobeithio, bydd yn gwneud ychydig bach mwy o synnwyr. 276 00:13:56,680 --> 00:13:59,760 >> Rwy'n Doug Lloyd, ac mae hyn yn CS50. 277 00:13:59,760 --> 00:14:01,467