1 00:00:07,360 --> 00:00:09,360 [Powered by Google Translate] Ligean ar labhairt faoi arrays. 2 00:00:09,360 --> 00:00:12,780 Bheadh ​​sin, cén fáth ba mhaith linn riamh a arrays úsáid? 3 00:00:12,780 --> 00:00:17,210 Bhuel a ligean le rá go bhfuil tú clár a bhfuil gá lena stóráil 5 IDs mac léinn. 4 00:00:17,210 --> 00:00:21,270 D'fhéadfadh sé réasúnach a bheith 5 athróg ar leith. 5 00:00:21,270 --> 00:00:24,240 Ar chúiseanna beidh orainn a fheiceáil i beagán, beidh muid tús a chur comhaireamh ó 0. 6 00:00:24,240 --> 00:00:30,700 Beidh na hathróga beidh orainn id0 slánuimhir, id1 o, agus mar sin de. 7 00:00:30,700 --> 00:00:34,870 Beidh aon loighic ba mhaith linn a dhéanamh ar Uimhir le haitheantas ar mhic léinn gá a chóipeáil agus a ghreamú 8 00:00:34,870 --> 00:00:36,870 do gach ceann de na IDs mac léinn. 9 00:00:36,870 --> 00:00:39,710 Má theastaíonn uainn a sheiceáil a tharlaíonn mic léinn a bheith i CS50, 10 00:00:39,710 --> 00:00:43,910 beidh orainn gá ar dtús féachaint an léiríonn id0 an mac léinn ar an gcúrsa. 11 00:00:43,910 --> 00:00:48,070 Ansin a dhéanamh mar an gcéanna do na mac léinn eile, beidh orainn gá a chóipeáil agus a ghreamú an cód le haghaidh id0 12 00:00:48,070 --> 00:00:54,430 agus in ionad gach tarluithe de id0 le id1 agus mar sin do id2, 3, agus 4. 13 00:00:54,430 --> 00:00:57,560 >> Chomh luath agus a éisteacht leat gur gá dúinn a chóipeáil agus a ghreamú, 14 00:00:57,560 --> 00:01:00,440 ba chóir duit tosú ag smaoineamh go bhfuil réiteach níos fearr. 15 00:01:00,440 --> 00:01:05,360 Anois, cad más rud é tuigeann tú ní gá duit 5 IDs mac léinn ach 7? 16 00:01:05,360 --> 00:01:09,570 Ní mór duit dul ar ais i do cód foinse agus cuir i id5, ar id6, 17 00:01:09,570 --> 00:01:14,260 agus cóipeáil agus greamaigh an loighic le seiceáil a dhéanamh más rud é go mbaineann na IDs don rang do na 2 IDs nua. 18 00:01:14,260 --> 00:01:19,600 Níl aon rud a nascadh go léir na IDs le chéile, agus mar sin níl aon bhealach ar iarraidh 19 00:01:19,600 --> 00:01:22,040 an clár seo a dhéanamh le haghaidh IDs 0 trí 6. 20 00:01:22,040 --> 00:01:26,120 Bhuel anois tuigeann tú go bhfuil tú 100 IDs mac léinn. 21 00:01:26,120 --> 00:01:30,770 Tá sé seo ag tosú a bhfuil cuma níos lú ná idéalach chun a dhearbhú go leithleach gach ceann de na IDs, 22 00:01:30,770 --> 00:01:33,760 agus cóipeáil agus greamaigh aon loighic do na IDs nua. 23 00:01:33,760 --> 00:01:38,380 Ach b'fhéidir tá rún daingean againn, agus a dhéanaimid é do gach 100 mac léinn. 24 00:01:38,380 --> 00:01:42,240 Ach cad más rud é nach bhfuil a fhios agat cé mhéad mac léinn ann i ndáiríre? 25 00:01:42,240 --> 00:01:47,320 Tá ach roinnt mac léinn n agus tá do chlár a iarraidh ar an úsáideoir cad é n. 26 00:01:47,320 --> 00:01:50,250 Uh OH. Ní hé seo an dul ag obair go han-mhaith. 27 00:01:50,250 --> 00:01:53,820 Do chlár oibreacha ach maidir le roinnt ar líon de shíor mac léinn. 28 00:01:53,820 --> 00:01:57,520 >> Is é Réiteach gach ceann de na fadhbanna ar an áilleacht na arrays. 29 00:01:57,520 --> 00:01:59,930 Mar sin, cad eagar? 30 00:01:59,930 --> 00:02:04,480 I roinnt teangacha cláir a d'fhéadfadh cineál sraith a bheith in ann a dhéanamh le beagán níos mó, 31 00:02:04,480 --> 00:02:09,960 ach anseo beidh muid ag díriú ar struchtúr an sraith bunúsach sonraí a díreach mar a mbainfidh tú é a fheiceáil i C. 32 00:02:09,960 --> 00:02:14,030 Tá sraith amháin bloc mór de chuimhne. Sin é. 33 00:02:14,030 --> 00:02:17,770 Nuair a rá linn a bheith againn le sraith de 10 slánuimhreacha, ciallaíonn sé ach tá roinnt bloc 34 00:02:17,770 --> 00:02:20,740 de chuimhne go mór go leor chun a shealbhú 10 slánuimhreacha ar leith. 35 00:02:29,930 --> 00:02:33,410 Ag glacadh leis go bhfuil slánuimhir 4 bytes, ciallaíonn sé seo go le sraith de 10 slánuimhreacha 36 00:02:33,410 --> 00:02:37,180 Is thréimhse leanúnach de 40 bytes i gcuimhne. 37 00:02:42,660 --> 00:02:46,280 Fiú nuair a úsáideann tú arrays iltoiseacha, ach ní bheidh muid ag dul isteach agus a anseo, 38 00:02:46,280 --> 00:02:49,200 tá sé fós ach bloc mór de chuimhne. 39 00:02:49,200 --> 00:02:51,840 Is é an nodaireacht iltoiseach ach áisiúil. 40 00:02:51,840 --> 00:02:55,640 Má tá tú 3 de 3 sraith iltoiseach na slánuimhreacha, 41 00:02:55,640 --> 00:03:00,650 ansin beidh do chlár i ndáiríre a chóireáil ach seo mar bhloc mór de 36 bytes. 42 00:03:00,650 --> 00:03:05,460 Is é an líon iomlán na slánuimhreacha 3 huaire 3, agus tógann gach slánuimhir suas 4 bytes. 43 00:03:05,460 --> 00:03:07,750 >> A ligean ar ghlacadh le breathnú ar sampla bunúsach. 44 00:03:07,750 --> 00:03:10,660 Is féidir linn a fheiceáil anseo 2 bealaí éagsúla arrays dhearbhú. 45 00:03:15,660 --> 00:03:18,580 Beidh muid ag trácht 1 de iad amach as an gclár a thiomsú 46 00:03:18,580 --> 00:03:20,900 ó againn a dhearbhú x dhó. 47 00:03:20,900 --> 00:03:25,140 Beidh muid a ghlacadh le breathnú ar roinnt de na difríochtaí idir na 2 cineálacha dearbhuithe i giotán. 48 00:03:25,140 --> 00:03:28,560 Tá an dá na línte seo a dhearbhú le sraith de N méid, 49 00:03:28,560 --> 00:03:30,740 áit a bhfuil muid shainiú # N mar 10. 50 00:03:30,740 --> 00:03:34,460 D'fhéadfadh muid díreach mar a d'iarr go héasca an t-úsáideoir le haghaidh slánuimhir dearfach 51 00:03:34,460 --> 00:03:37,250 agus a úsáid go slánuimhir le roinnt gnéithe inár eagar. 52 00:03:37,250 --> 00:03:41,960 Cosúil ár shampla aitheantais mic léinn roimh, is é seo cineál cosúil dhearbhú 10 go hiomlán ar leith 53 00:03:41,960 --> 00:03:49,000 athróga samhailfhadú; x0, x1, x2, agus mar sin de suas go dtí Xn-1. 54 00:03:57,270 --> 00:04:00,840 Neamhaird na línte ina dhearbhú againn ar an raon, faoi deara na lúibíní cearnacha slán 55 00:04:00,840 --> 00:04:02,090 taobh istigh den haghaidh lúb. 56 00:04:02,090 --> 00:04:09,660 Nuair a scríobh rud éigin cosúil le x [3], a beidh mé a léamh díreach mar x scriosaidh 3, 57 00:04:09,660 --> 00:04:13,090 Is féidir leat smaoineamh ar sé cosúil ag iarraidh an x3 samhailfhadú. 58 00:04:13,090 --> 00:04:17,519 Fógra ná le sraith de mhéid N, ciallaíonn sé seo go bhfuil líon taobh istigh de na lúibíní, 59 00:04:17,519 --> 00:04:22,630 a beidh muid ag glaoch ar an innéacs is féidir a bheith, rud ar bith ó 0 go N-1, 60 00:04:22,630 --> 00:04:25,660 a bhfuil iomlán de innéacsanna N. 61 00:04:25,660 --> 00:04:28,260 >> Smaoineamh ar conas a oibríonn seo i ndáiríre 62 00:04:28,260 --> 00:04:31,260 cuimhnigh go bhfuil an sraith bloc mór de chuimhne. 63 00:04:31,260 --> 00:04:37,460 Ag glacadh leis go bhfuil slánuimhir 4 bytes, is é an x ​​sraith iomlán bloc 40 beart de chuimhne. 64 00:04:37,460 --> 00:04:41,360 Mar sin, tagraíonn x0 do na 4 an chéad bytes an bhloic. 65 00:04:45,810 --> 00:04:49,230 X [1] Tagraíonn an 4 eile bytes agus mar sin de. 66 00:04:49,230 --> 00:04:53,760 Ciallaíonn sé seo go bhfuil an tús x fad an chláir riamh ní mór súil a choinneáil ar. 67 00:04:55,660 --> 00:04:59,840 Más mian leat úsáid a bhaint as x [400] a fhios, ansin ar an gclár go bhfuil sé seo comhionann 68 00:04:59,840 --> 00:05:03,460 go dtí díreach 1,600 bytes tar éis thús x. 69 00:05:03,460 --> 00:05:08,780 Where'd a fháil againn 1,600 bytes ó? Tá sé díreach 400 uair 4 bytes an gceann. 70 00:05:08,780 --> 00:05:13,170 >> Sula ag bogadh ar aghaidh, tá sé an-tábhachtach a thuiscint go i C 71 00:05:13,170 --> 00:05:17,080 níl aon forfheidhmiú an t-innéacs a úsáid againn ar an eagar. 72 00:05:17,080 --> 00:05:23,180 Is é ár bloc mór ach 10 slánuimhreacha fada, ach beidh aon rud yell ag dúinn má scríobh againn x [20] 73 00:05:23,180 --> 00:05:26,060 nó fiú x [-5]. 74 00:05:26,060 --> 00:05:28,240 Ní dhéanann an innéacs fiú a bheith ina uimhir. 75 00:05:28,240 --> 00:05:30,630 Is féidir é a aon léiriú treallach. 76 00:05:30,630 --> 00:05:34,800 Sa chlár úsáidimid an i athróg ón haghaidh lúb ar innéacs ar an eagar. 77 00:05:34,800 --> 00:05:40,340 Is é seo an patrún an-choitianta, looping as i = 0 le fad an eagar, 78 00:05:40,340 --> 00:05:43,350 agus ag baint úsáide as i mar an t-innéacs le haghaidh eagar. 79 00:05:43,350 --> 00:05:46,160 Ar an mbealach seo lúb tú go héifeachtach thar an eagar ar fad, 80 00:05:46,160 --> 00:05:50,600 agus is féidir leat a shannadh ceachtar do gach láthair i sraith nó í a úsáid le haghaidh roinnt ríomh. 81 00:05:50,600 --> 00:05:53,920 >> Sa chéad lúb, a thosaíonn mé ag 0, 82 00:05:53,920 --> 00:05:58,680 agus mar sin beidh sé a shannadh go dtí an láthair 0 sa eagar, an luach 0 amanna 2. 83 00:05:58,680 --> 00:06:04,370 Ansin a shannadh i incrimintí, agus táimid ag an láthair den chéad uair sa réimse an luach 1 uair 2. 84 00:06:04,370 --> 00:06:10,170 Ansin incrimintí i arís agus mar sin de suas go dtí linn a shannadh chun seasamh N-1 i raon 85 00:06:10,170 --> 00:06:13,370 an luach N-1 uair 2. 86 00:06:13,370 --> 00:06:17,810 Mar sin, tá cruthaithe againn le sraith leis an 10 uimhreacha chéad fiú. 87 00:06:17,810 --> 00:06:21,970 Bheadh ​​B'fhéidir go evens a bheith ina ainm beagán níos fearr don athróg ná x, 88 00:06:21,970 --> 00:06:24,760 ach bheadh ​​rudaí a thabhairt ar shiúl. 89 00:06:24,760 --> 00:06:30,210 An dara lúb priontaí ansin ach na luachanna atá againn cheana féin a stóráil taobh istigh den eagar. 90 00:06:30,210 --> 00:06:33,600 >> A ligean ar iarracht a reáchtáil an clár leis an dá chineál dearbhuithe eagar 91 00:06:33,600 --> 00:06:36,330 agus chur le breathnú ar an t-aschur an chláir. 92 00:06:51,450 --> 00:06:57,020 Chomh fada agus is féidir linn a fheiceáil behaves, an clár ar an mbealach céanna le haghaidh an dá chineál dearbhuithe. 93 00:06:57,020 --> 00:07:02,230 Ligean ar ghlacadh freisin le breathnú ar cad a tharlaíonn má athraíonn muid an lúb chéad nach stopann ag N 94 00:07:02,230 --> 00:07:05,040 ach a rá in áit 10,000. 95 00:07:05,040 --> 00:07:07,430 Bealach thar dheireadh na eagar. 96 00:07:14,700 --> 00:07:17,210 Oops. B'fhéidir tá tú ag feiceáil roimh seo. 97 00:07:17,210 --> 00:07:20,440 Ciallaíonn locht deighilt tá do chlár crashed. 98 00:07:20,440 --> 00:07:24,430 Tosaíonn tú ag féachaint ar na nuair dteagmháil leat réimsí chuimhne ní ba chóir duit a bheith touching. 99 00:07:24,430 --> 00:07:27,870 Anseo tá muid ag touching 10,000 áiteanna níos faide ná tús an x, 100 00:07:27,870 --> 00:07:31,920 atá evidently áit i gcuimhne nár cheart dúinn a bheith touching. 101 00:07:31,920 --> 00:07:37,690 Mar sin, an chuid is mó de dúinn nach mbeadh dócha a chur thaisme 10,000 ionad N, 102 00:07:37,690 --> 00:07:42,930 ach cad má dhéanann muid rud éigin níos subtle cosúil le rá scríobh níos lú ná nó cothrom le N 103 00:07:42,930 --> 00:07:46,830 sa riocht lúb le haghaidh seachas níos lú ná N. 104 00:07:46,830 --> 00:07:50,100 Cuimhnigh go bhfuil eagar ach innéacsanna ó 0 go N-1, 105 00:07:50,100 --> 00:07:54,510 rud a chiallaíonn go bhfuil innéacs N thar dheireadh na eagar. 106 00:07:54,510 --> 00:07:58,050 Ní fhéadfadh an clár tuairteála sa chás seo, ach tá sé fós earráid. 107 00:07:58,050 --> 00:08:01,950 Go deimhin, tá an earráid seo chomh coitianta go bhfuil sé ainm féin, 108 00:08:01,950 --> 00:08:03,970 eis faoi 1 earráid. 109 00:08:03,970 --> 00:08:05,970 >> Sin é an Basics. 110 00:08:05,970 --> 00:08:09,960 Mar sin, cad iad na difríochtaí móra idir an 2 cineálacha dearbhuithe eagar? 111 00:08:09,960 --> 00:08:13,960 Is é ceann difríocht nuair a théann an bloc mór de chuimhne. 112 00:08:13,960 --> 00:08:17,660 Sa dearbhú chéad, a beidh mé ag glaoch ar an cineál lúibín-eagar, 113 00:08:17,660 --> 00:08:20,300 cé go bhfuil sé seo trí aon mhodh ainm traidisiúnta, 114 00:08:20,300 --> 00:08:22,480 beidh sé dul ar an chruach. 115 00:08:22,480 --> 00:08:27,450 De bharr an méid sa dara fomhír, a beidh mé ag glaoch ar an cineál pointeoir-eagar, beidh sé dul ar an gcarn. 116 00:08:27,450 --> 00:08:32,480 Ciallaíonn sé seo nuair na tuairisceáin feidhme, beidh an sraith lúibín a deallocated go huathoibríoch, 117 00:08:32,480 --> 00:08:36,419 ach mar ní mór duit glaoch explicitily saor in aisce ar an raon pointeoir 118 00:08:36,419 --> 00:08:38,010 nó eile a bhfuil tú ar sceitheadh ​​cuimhne. 119 00:08:38,010 --> 00:08:42,750 Ina theannta sin, nach bhfuil an eagar lúibín iarbhír athróg. 120 00:08:42,750 --> 00:08:45,490 Tá sé seo tábhachtach. Tá sé ach siombail. 121 00:08:45,490 --> 00:08:49,160 Is féidir leat smaoineamh ar é mar leanúnach go roghnaíonn an Tiomsaitheoir ar do shon. 122 00:08:49,160 --> 00:08:52,970 Ciallaíonn sé seo nach féidir linn a dhéanamh rud éigin cosúil le x + + leis an gcineál lúibín, 123 00:08:52,970 --> 00:08:56,240 cé go bhfuil sé seo breá bailí leis an gcineál pointeoir. 124 00:08:56,240 --> 00:08:58,270 >> Is é an cineál pointeoir athróg. 125 00:08:58,270 --> 00:09:01,510 Maidir leis an chineál pointeoir, ní mór dúinn 2 mbloic ar leithligh de chuimhne. 126 00:09:01,510 --> 00:09:06,060 Tá an x ​​athróg féin atá stóráilte i an chairn agus tá sé ach pointeoir amháin, 127 00:09:06,060 --> 00:09:08,620 ach tá an bloc mór de chuimhne atá stóráilte ar an gcarn. 128 00:09:08,620 --> 00:09:11,010 An x athróg ar an chruach siopaí ach an seoladh 129 00:09:11,010 --> 00:09:14,010 den bhloc mór de chuimhne ar an gcarn. 130 00:09:14,010 --> 00:09:17,370 Is é ceann impleacht seo leis an méid an oibreora. 131 00:09:17,370 --> 00:09:22,480 Má iarraidh ort le haghaidh an méid de na eagar lúibín, beidh sé a thabhairt duit an méid de na bloic mór de chuimhne, 132 00:09:22,480 --> 00:09:24,620 rud éigin cosúil le 40 bytes, 133 00:09:24,620 --> 00:09:26,920 ach má iarrann tú an méid de na chineál pointeoir de eagar, 134 00:09:26,920 --> 00:09:32,740 beidh sé a thabhairt duit an méid de na x athróg féin, atá ar an fearas is dócha ach 4 bytes. 135 00:09:32,740 --> 00:09:36,530 Ag baint úsáide as an cineál pointeoir-eagar, tá sé dodhéanta a iarraidh go díreach le haghaidh 136 00:09:36,530 --> 00:09:38,530 an méid de na bloic mór de chuimhne. 137 00:09:38,530 --> 00:09:42,530 Níl sé seo de ghnáth i bhfad de srian ó againn go han-annamh a iarraidh ar an méid 138 00:09:42,530 --> 00:09:46,980 den bhloc mór de chuimhne, agus is féidir linn a ríomh de ghnáth é más gá dúinn é. 139 00:09:46,980 --> 00:09:51,490 >> Ar deireadh a tharlaíonn, an sraith scriosaidh a chur ar fáil dúinn le aicearra chun initializing eagar. 140 00:09:51,490 --> 00:09:56,130 A ligean ar a fheiceáil conas a d'fhéadfadh muid a scríobh an chéad 10 slánuimhreacha fiú ag baint úsáide as an initilization aicearra. 141 00:10:11,220 --> 00:10:14,470 Leis an sraith pointeoir, nach bhfuil ann ar bhealach a dhéanamh aicearra mar seo. 142 00:10:14,470 --> 00:10:18,120 Is é seo ach a thabhairt isteach chun an méid is féidir leat a dhéanamh le arrays. 143 00:10:18,120 --> 00:10:20,990 Léiríonn siad suas i gclár beagnach gach scríobh tú. 144 00:10:20,990 --> 00:10:24,390 Súil go dtosnódh is féidir leat a fheiceáil anois ar bhealach níos fearr a dhéanamh leis an mac léinn IDs mar shampla 145 00:10:24,390 --> 00:10:26,710 ó thús na físeáin. 146 00:10:26,710 --> 00:10:29,960 >> Is é mo ainm Rob Bowden, agus tá sé seo CS50.