1 00:00:07,360 --> 00:00:09,360 [Powered by Google Translate] Se pou nou pale sou ranje. 2 00:00:09,360 --> 00:00:12,780 Se konsa, poukisa nou ta janm vle itilize ranje? 3 00:00:12,780 --> 00:00:17,210 Oke kite a di ou gen yon pwogram ki bezwen nan magazen 5 idantifikasyon elèv yo. 4 00:00:17,210 --> 00:00:21,270 Li ta ka sanble rezonab gen 5 varyab apa. 5 00:00:21,270 --> 00:00:24,240 Pou rezon nou pral wè nan yon ti jan, nou pral kòmanse konte soti nan 0. 6 00:00:24,240 --> 00:00:30,700 Varyab yo n ap gen yo pral int id0, id1 Int, ak sou sa. 7 00:00:30,700 --> 00:00:34,870 Nenpòt lojik nou vle fè sou yon ID elèv pral bezwen dwe kopye ak kole 8 00:00:34,870 --> 00:00:36,870 pou chak nan sa yo idantifikasyon elèv yo. 9 00:00:36,870 --> 00:00:39,710 Si nou vle tcheke pou ki elèv yo rive yo dwe nan CS50, 10 00:00:39,710 --> 00:00:43,910 nou pral premye bezwen tcheke si id0 reprezante elèv la nan kou a. 11 00:00:43,910 --> 00:00:48,070 Lè sa a, fè menm bagay la pou elèv la vini yo, nou pral bezwen yon kopi ak keratin kòd la pou id0 12 00:00:48,070 --> 00:00:54,430 epi ranplase tout evènman nan id0 ak id1 yo ak sou sa pou id2 3,, ak 4. 13 00:00:54,430 --> 00:00:57,560 >> Osito ke ou tande ke nou bezwen yon kopi ak keratin, 14 00:00:57,560 --> 00:01:00,440 ou ta dwe kòmanse panse ke gen se yon solisyon pi byen. 15 00:01:00,440 --> 00:01:05,360 Kounye a ki sa si ou reyalize ou pa bezwen 5 idantifikasyon elèv men pito 7 la? 16 00:01:05,360 --> 00:01:09,570 Ou bezwen ale tounen nan kòd sous ou a epi ajoute nan yon id5, yon id6, 17 00:01:09,570 --> 00:01:14,260 ak fè kopi ak keratin lojik la pou tcheke si idantite yo apatni a klas la pou sa yo 2 idantite nouvo. 18 00:01:14,260 --> 00:01:19,600 Pa gen anyen ki konekte tout bagay sa yo idantifikasyon ansanm, epi kidonk pa genyen okenn fason pou mande 19 00:01:19,600 --> 00:01:22,040 pwogram lan fè sa pou idantifikasyon 0 jiska 6. 20 00:01:22,040 --> 00:01:26,120 Oke kounye a ou reyalize ou gen 100 idantifikasyon elèv yo. 21 00:01:26,120 --> 00:01:30,770 Li nan kòmanse sanble mwens pase ideyal yo bezwen separeman deklare chak nan sa yo idantifikasyon, 22 00:01:30,770 --> 00:01:33,760 ak fè kopi ak keratin nenpòt lojik pou moun idantite nouvo. 23 00:01:33,760 --> 00:01:38,380 Men, petèt nou yo detèmine, epi nou fè li pou 100 tout elèv yo. 24 00:01:38,380 --> 00:01:42,240 Men, sa ki si ou pa konnen konbyen elèv ki gen aktyèlman yo? 25 00:01:42,240 --> 00:01:47,320 Gen yo se jis kèk elèv n ak pwogram ou a gen mande itilizatè a ki sa sa n se. 26 00:01:47,320 --> 00:01:50,250 Uh oh. Sa a pa pral travay trè byen. 27 00:01:50,250 --> 00:01:53,820 Pwogram ou an travay sèlman pou kèk nimewo konstan nan elèv yo. 28 00:01:53,820 --> 00:01:57,520 >> Kouman pou Rezoud tout nan pwoblèm sa yo se bote nan ranje. 29 00:01:57,520 --> 00:01:59,930 Se konsa, sa a se yon etalaj? 30 00:01:59,930 --> 00:02:04,480 Nan kèk lang programmation yon lòt kalite etalaj ka kapab fè yon ti jan pi plis, 31 00:02:04,480 --> 00:02:09,960 men isit la nou pral konsantre sou estrikti nan etalaj de baz done jis kòm ou pral wè l 'nan C. 32 00:02:09,960 --> 00:02:14,030 Yon etalaj se jis yon blòk gwo memwa. Sa a li. 33 00:02:14,030 --> 00:02:17,770 Lè nou di nou gen yon etalaj de 10 nonm antye yo, ki jis vle di nou gen kèk blòk 34 00:02:17,770 --> 00:02:20,740 nan memwa ki se gwo ase yo kenbe 10 nonm antye relatif ki apa a. 35 00:02:29,930 --> 00:02:33,410 Nou asime ke yon nonb antye relatif se 4 bytes, sa a vle di ke yon etalaj de 10 nonm antye relatif 36 00:02:33,410 --> 00:02:37,180 se yon blòk kontinyèl nan 40 bytes nan memwa. 37 00:02:42,660 --> 00:02:46,280 Menm lè w itilize ranje pluridimansyonèl, ki nou pa pral antre al isit la, 38 00:02:46,280 --> 00:02:49,200 li la toujou jis yon blòk gwo memwa. 39 00:02:49,200 --> 00:02:51,840 Notasyon a pluridimansyonèl se jis yon konvenyans. 40 00:02:51,840 --> 00:02:55,640 Si ou gen yon 3 pa 3 etalaj pluridimansyonèl nan nonm antye yo, 41 00:02:55,640 --> 00:03:00,650 Lè sa a, pwogram ou an pral reyèlman jis konsidere sa tankou yon blòk gwo 36 bytes. 42 00:03:00,650 --> 00:03:05,460 Kantite total nonm antye relatif se 3 fwa 3, epi chak nonb antye relatif pran moute 4 bytes. 43 00:03:05,460 --> 00:03:07,750 >> Se pou nou pran yon gade nan yon egzanp de baz yo. 44 00:03:07,750 --> 00:03:10,660 Nou ka wè isit la 2 diferan fason pou deklare ranje. 45 00:03:15,660 --> 00:03:18,580 Nou pwal genyen fè kòmantè 1 nan yo soti pou pwogram lan te rekeyi 46 00:03:18,580 --> 00:03:20,900 depi nou deklare x de fwa. 47 00:03:20,900 --> 00:03:25,140 Nou pral pran yon gade nan kèk nan diferans ki genyen ant 2 sa yo kalite deklarasyon nan yon ti jan. 48 00:03:25,140 --> 00:03:28,560 Tou de nan liy sa yo deklare yon etalaj la N gwosè, 49 00:03:28,560 --> 00:03:30,740 kote nou te # defini N kòm 10. 50 00:03:30,740 --> 00:03:34,460 Nou te ka menm jan fasil te mande itilizatè a pou yon nonb antye relatif pozitif 51 00:03:34,460 --> 00:03:37,250 ak itilize ke nonb antye relatif kòm yon nimewo eleman nan yon etalaj nou an. 52 00:03:37,250 --> 00:03:41,960 Renmen egzanp elèv ID nou an avan, sa a se kalite tankou deklare 10 konplètman separe 53 00:03:41,960 --> 00:03:49,000 varyab imajinè; x0, x1, x2, ak sou sa jiska ksen 1-. 54 00:03:57,270 --> 00:04:00,840 Inyore liy ki kote nou deklare etalaj la, remake parantèz yo kare entak 55 00:04:00,840 --> 00:04:02,090 andedan an pou pasan. 56 00:04:02,090 --> 00:04:09,660 Lè nou ekri yon bagay tankou x [3], ki mwen pral jis li kòm x bracket 3, 57 00:04:09,660 --> 00:04:13,090 ou ka panse a li renmen mande pou imajinè x3 la. 58 00:04:13,090 --> 00:04:17,519 Avi pase ak yon etalaj de N gwosè, sa vle di nimewo a anndan nan parantèz yo, 59 00:04:17,519 --> 00:04:22,630 ki nou ap rele endèks la, yo ka anyen ki ant 0 a 1-N, 60 00:04:22,630 --> 00:04:25,660 ki se yon total de N endis. 61 00:04:25,660 --> 00:04:28,260 >> Panse osijè de ki jan sa sa a aktyèlman ap travay 62 00:04:28,260 --> 00:04:31,260 sonje ke etalaj la se yon blòk gwo memwa. 63 00:04:31,260 --> 00:04:37,460 Nou asime ke yon nonb antye relatif se 4 bytes, x nan etalaj tout se yon blòk 40 multiple nan memwa. 64 00:04:37,460 --> 00:04:41,360 Se konsa, x0 refere a bytes yo trè premye 4 nan blòk la. 65 00:04:45,810 --> 00:04:49,230 X [1] refere a bytes kap vini yo 4 ak sou sa. 66 00:04:49,230 --> 00:04:53,760 Sa vle di ke nan kòmansman an pou x se tout pwogram nan janm bezwen nan kenbe tras nan. 67 00:04:55,660 --> 00:04:59,840 Si ou vle sèvi ak x [400], Lè sa a, pwogram lan konnen ke sa a se ekivalan 68 00:04:59,840 --> 00:05:03,460 jis 1,600 bytes apre kòmansman an pou x. 69 00:05:03,460 --> 00:05:08,780 Where'd nou jwenn 1,600 bytes soti nan? Se jis nan 400 fwa 4 bytes pou chak antye ki pè. 70 00:05:08,780 --> 00:05:13,170 >> Anvan ou deplase sou li a, li trè enpòtan reyalize ke nan C 71 00:05:13,170 --> 00:05:17,080 pa gen okenn aplikasyon nan endèks la ke nou itilize nan etalaj la. 72 00:05:17,080 --> 00:05:23,180 Blòk gwo nou an se sèlman 10 nonm antye relatif ki long, men pa gen anyen ap rele nan nou si nou ekri x [20] 73 00:05:23,180 --> 00:05:26,060 oswa menm x [-5]. 74 00:05:26,060 --> 00:05:28,240 Endèks la pa menm gen yo dwe yon nimewo. 75 00:05:28,240 --> 00:05:30,630 Li kapab gen nenpòt ki ekspresyon abitrè. 76 00:05:30,630 --> 00:05:34,800 Nan pwogram nan nou itilize mwen an soti nan varyab la pou riban endèks nan etalaj la. 77 00:05:34,800 --> 00:05:40,340 Sa a se yon modèl komen anpil, loupin soti nan mwen 0 = longè nan etalaj la, 78 00:05:40,340 --> 00:05:43,350 ak Lè sa a, lè l sèvi avèk mwen kòm endèks la pou etalaj la. 79 00:05:43,350 --> 00:05:46,160 Nan fason sa a ou efektivman riban sou etalaj la an antye, 80 00:05:46,160 --> 00:05:50,600 epi ou ka swa bay chak plas nan etalaj la oswa sèvi ak li pou kèk kalkil. 81 00:05:50,600 --> 00:05:53,920 >> Nan premye a pou riban, mwen kòmanse nan 0, 82 00:05:53,920 --> 00:05:58,680 ak konsa li pral transfere bay plas la 0 nan etalaj la, valè 0 fwa 2. 83 00:05:58,680 --> 00:06:04,370 Lè sa a, mwen ogmantasyon yo, epi nou bay plas la an premye nan etalaj la, valè a 1 fwa 2. 84 00:06:04,370 --> 00:06:10,170 Lè sa a, mwen ogmantasyon ankò ak sou sa moute jiskaske nou bay nan pozisyon N-1 nan etalaj la 85 00:06:10,170 --> 00:06:13,370 valè a N-1 fwa 2. 86 00:06:13,370 --> 00:06:17,810 Se konsa, nou te kreye yon etalaj ak 10 premye chif yo menm. 87 00:06:17,810 --> 00:06:21,970 Petèt Evens ta gen yon non ti jan pi bon pou varyab la pase x, 88 00:06:21,970 --> 00:06:24,760 men sa ki ta ba bagay sa yo ale. 89 00:06:24,760 --> 00:06:30,210 Dezyèm lan pou riban Lè sa a, jis simagri valè sa yo ke nou te deja estoke andedan nan etalaj la. 90 00:06:30,210 --> 00:06:33,600 >> Ann eseye kouri pwogram nan ak tou de kalite deklarasyon etalaj 91 00:06:33,600 --> 00:06:36,330 ak pran yon gade nan pwodiksyon an nan pwogram nan. 92 00:06:51,450 --> 00:06:57,020 Osi lwen ke nou ka wè, pwogram nan konpòte li yo menm jan an pou tou de kalite deklarasyon. 93 00:06:57,020 --> 00:07:02,230 Se pou nou tou pran yon gade nan ki sa ki rive si nou chanje riban an premye pa kanpe nan N 94 00:07:02,230 --> 00:07:05,040 men pito di 10,000. 95 00:07:05,040 --> 00:07:07,430 Fason pi lwen pase nan fen etalaj la. 96 00:07:14,700 --> 00:07:17,210 Wouch. Petèt ou te wè sa a anvan. 97 00:07:17,210 --> 00:07:20,440 Yon fay segmentation vle di pwogram ou an te fè aksidan te. 98 00:07:20,440 --> 00:07:24,430 Ou kòmanse wè sa yo lè w manyen zòn nan memwa ou pa ta dwe manyen. 99 00:07:24,430 --> 00:07:27,870 Isit la nou yo manyen 10,000 kote pi lwen pase nan kòmansman an nan x, 100 00:07:27,870 --> 00:07:31,920 ki aparamman se yon kote nan memwa nou pa ta dwe manyen. 101 00:07:31,920 --> 00:07:37,690 Se konsa, pifò nan nou pwobableman pa ta aksidantèlman mete 10,000 olye pou yo N, 102 00:07:37,690 --> 00:07:42,930 men ki sa si nou fè yon bagay plis sibtil tankou di ekri mwens pase oswa egal N 103 00:07:42,930 --> 00:07:46,830 nan yon kondisyon pou riban pou kòm opoze a pi piti pase N. 104 00:07:46,830 --> 00:07:50,100 Sonje ke yon etalaj sèlman gen endis ki ant 0 N 1-, 105 00:07:50,100 --> 00:07:54,510 ki vle di ke N endèks ale pi lwen nan fen etalaj la. 106 00:07:54,510 --> 00:07:58,050 Pwogram nan pa ta ka aksidan nan ka sa a, men li la toujou yon erè. 107 00:07:58,050 --> 00:08:01,950 An reyalite, sa a erè se konsa komen ke li gen pwòp non li a, 108 00:08:01,950 --> 00:08:03,970 yon koupe pa 1 erè. 109 00:08:03,970 --> 00:08:05,970 >> Sa a se li pou Basics yo. 110 00:08:05,970 --> 00:08:09,960 Se konsa, sa yo se diferans ki genyen pi gwo ant 2 ki kalite deklarasyon etalaj? 111 00:08:09,960 --> 00:08:13,960 Yon diferans ki genyen se kote blòk an gwo nan memwa ale. 112 00:08:13,960 --> 00:08:17,660 Nan deklarasyon a an premye, ki m ap rele kalite nan bracket-etalaj, 113 00:08:17,660 --> 00:08:20,300 menm si sa a se pa pa gen okenn vle di yon non konvansyonèl yo, 114 00:08:20,300 --> 00:08:22,480 li pral ale sou pil la. 115 00:08:22,480 --> 00:08:27,450 Lè nou konsidere ke nan dezyèm lan, ki m ap rele kalite nan konsèy-etalaj, li pral ale sou pil la. 116 00:08:27,450 --> 00:08:32,480 Sa vle di lè retounen yo fonksyon, yo pral etalaj la bracket otomatikman dwe deallocated, 117 00:08:32,480 --> 00:08:36,419 Lè nou konsidere ke kòm ou dwe explicitily rele gratis sou etalaj la konsèy 118 00:08:36,419 --> 00:08:38,010 oswa lòt moun ou gen yon fwit memwa. 119 00:08:38,010 --> 00:08:42,750 Anplis de sa, etalaj la bracket se pa aktyèlman yon varyab. 120 00:08:42,750 --> 00:08:45,490 Sa a se enpòtan. Se jis nan yon senbòl. 121 00:08:45,490 --> 00:08:49,160 Ou ka panse a li kòm yon konstan ki du a chwazi pou ou. 122 00:08:49,160 --> 00:08:52,970 Sa vle di ke nou pa kapab fè yon bagay tankou x + + ak kalite a bracket, 123 00:08:52,970 --> 00:08:56,240 menm si sa se yon bagay ki valab ak kalite a konsèy. 124 00:08:56,240 --> 00:08:58,270 >> Kalite nan konsèy se yon varyab. 125 00:08:58,270 --> 00:09:01,510 Pou di ki kalite a konsèy, nou gen 2 plizye memwa. 126 00:09:01,510 --> 00:09:06,060 X nan varyab li menm ap estoke nan chemine a ak se jis yon konsèy sèl, 127 00:09:06,060 --> 00:09:08,620 men se blòk an gwo nan memwa ki estoke sou pil la. 128 00:09:08,620 --> 00:09:11,010 X nan varyab sou pil la jis estoke adrès la 129 00:09:11,010 --> 00:09:14,010 nan blòk la gwo nan memwa sou pil la. 130 00:09:14,010 --> 00:09:17,370 Youn nan enplikasyon nan sa a se ak gwosè a nan operatè. 131 00:09:17,370 --> 00:09:22,480 Si w mande pou gwosè a nan etalaj la bracket, li pral ba ou gwosè a nan blòk la gwo nan memwa, 132 00:09:22,480 --> 00:09:24,620 yon bagay tankou 40 bytes, 133 00:09:24,620 --> 00:09:26,920 Men, si ou mande pou ou gwosè a nan kalite a konsèy nan etalaj, 134 00:09:26,920 --> 00:09:32,740 li pral ba ou gwosè a nan x la varyab tèt li, ki sou aparèy la gen anpil chans jis 4 bytes. 135 00:09:32,740 --> 00:09:36,530 Lè l sèvi avèk kalite nan konsèy-etalaj, li enposib dirèkteman mande pou 136 00:09:36,530 --> 00:09:38,530 gwosè a nan blòk la gwo nan memwa. 137 00:09:38,530 --> 00:09:42,530 Sa a se pa anjeneral anpil nan yon restriksyon depi nou trè raman vle gwosè a 138 00:09:42,530 --> 00:09:46,980 nan blòk la gwo nan memwa, epi nou ka anjeneral kalkile li si nou bezwen li. 139 00:09:46,980 --> 00:09:51,490 >> Finalman, etalaj la bracket k ap pase nan ba nou yon chemen kout pou inisyalizin yon etalaj. 140 00:09:51,490 --> 00:09:56,130 Ann gade pou wè ki jan nou ta ka ekri premye 10 nonm antye relatif yo menm lè l sèvi avèk initilization a rakoursi. 141 00:10:11,220 --> 00:10:14,470 Avèk etalaj nan konsèy, gen se pa yon fason yo fè yon chemen kout tankou sa a. 142 00:10:14,470 --> 00:10:18,120 Sa a se jis yon entwodiksyon sou sa ou kapab fè avèk ranje. 143 00:10:18,120 --> 00:10:20,990 Yo montre moute nan prèske chak pwogram w ekri. 144 00:10:20,990 --> 00:10:24,390 Èspere ke ou ka wè koulye a yon pi bon fason pou fè elèv idantifikasyon egzanp lan 145 00:10:24,390 --> 00:10:26,710 depi nan konmansman an nan videyo a. 146 00:10:26,710 --> 00:10:29,960 >> Non mwen se Rob Bowden, ak sa a se CS50.