[Ag seinm ceoil] DOUG LLOYD: Ceart go. Ag obair le singil Is athróga go leor spraoi. Ach cad más mian linn a bheith ag obair le go leor de na hathróga, ach nach bhfuil muid ag iarraidh a bheith acu a bunch de ainmneacha éagsúla ag eitilt timpeall ár cód? Sa chás seo, tá arrays ag dul go dtí teacht i ndáiríre handy. Tá arrays sonraí ndáiríre bunúsacha Struchtúr le haghaidh aon teanga cláir go mbeidh tú úsáid. Agus tá siad i ndáiríre, i ndáiríre úsáideach, go háirithe, mar beidh orainn a fheiceáil, i CS 50. Bainimid úsáid as arrays de bheith i seilbh Luachanna den chineál sonraí céanna ag láithreacha cuimhne tadhlach. Is é sin le rá, tá sé ina bhealach gur féidir linn a ghrúpa a bunch de slánuimhreacha le chéile i cuimhne nó a bunch de charachtair nó snámhann i gcuimhne i ndáiríre gar dá chéile agus obair leo gan a bheith a thabhairt do gach amháin a ainm ar leith féin, ar féidir fháil cumbersome tar éis tamaill beag. Anois, bealach amháin chun arrays analogize is é sin le smaoineamh ar do phost áitiúil oifige ar feadh an dara. Mar sin, céim amach as cláir agus díreach gar do chuid súl agus visualize i d'intinn d'oifig poist áitiúil. De ghnáth, sa chuid is mó post oifigí, níl banc mór boscaí oifig an phoist ar an mballa. Is sraith bloc ollmhór de chuimhne tadhlach, ar an mbealach céanna go bhfuil phost bainc i d'oifig poist Tá spás mór ar an balla an oifig an phoist. Arrays curtha dheighilt i beag, identically bloic meánmhéide de spás, gach ceann acu ar a dtugtar gné, i ar an mbealach céanna go bhfuil an balla an phoist Tá oifig curtha dheighilt isteach beag, identically bloic meánmhéide de spás, a tugaimid bosca uimhir. Gach eilimint den eagar is féidir a stóráil méid áirithe de na sonraí, díreach mar a bhfuil gach bosca oifig an phoist ann a shealbhú méid áirithe phoist. Cad is féidir a stóráil i ngach gné de Is é an sraith athróg na sonraí céanna cineál, cosúil le slánuimhir nó ruabhric, ach cosúil i do bhosca oifig phoist, féidir leat oiriúnach ach rudaí de chineál comhchosúil, ar nós litreacha nó pacáistí beaga. Ar deireadh, is féidir linn a rochtain a fháil ar gach gné de an sraith go díreach ag treoir-uimhir, díreach mar is féidir linn a rochtain a fháil ar ár n-oifig an phoist bosca ag a fhios agam a uimhir bosca poist. Súil go dtosnódh, analaí sin Cuidíonn gheobhaidh tú do cheann ar fud an smaoineamh ag arrays analogizing le rud éigin eile go bhfuil tú is dócha eolas cheana féin leis. I C, is iad na gnéithe de eagar innéacsaithe ag tosú ó 0, ní ó 1. Agus is é seo i ndáiríre tábhachtach. Agus go deimhin, is é seo an fáth againn, i CS 50, agus cén fáth eolaithe ríomhaireachta go minic Beidh comhaireamh ó 0 Tá, mar gheall ar an eagar C innéacsú, a thosaíonn i gcónaí ag 0. Mar sin, más éard sraith de ghnéithe n, an chéad eilimint den eagar suite ag innéacs 0, agus an ghné dheireanach den eagar suite ag innéacs n lúide 1. Arís, má tá eilimintí n inár eagar, is é an t-innéacs seo caite n lúide 1. Mar sin, má tá 50 eilimintí, an ár sraith Tá an chéad eilimint lonnaithe ag innéacs 0, agus an ghné dheireanach suite ag innéacs 49. Ar an drochuair, nó fortunately, ag brath ar do dhearcadh, Tá C an-trócaireach anseo. Ní bheidh sé cosc ​​ort ó ag dul amach as bounds de do eagar. D'fhéadfá teacht ar an lúide 3 eilimint de do eagar nó an eilimint 59ú de do eagar, má tá do eagar ach 50 heilimintí. Ní bheidh sé stop a do chlár ó a thiomsú, ach ag am a reáchtáil, d'fhéadfá teacht ar a locht deighilt dreaded má thosaíonn tú cuimhne rochtain a is é sin lasmuigh de theorainneacha cad D'iarr tú do chlár a thabhairt duit. Mar sin, ná a bheith cúramach. Cad a dhéanann sraith dearbhú cuma mhaith? Conas is féidir linn a chódú le sraith ar an saol cosúil linn a chódú aon athróg eile? Tá trí chuid le sraith declaration-- le cineál, ainm, agus a méid. Tá sé seo an-chosúil le dearbhú athróg, a ach le cineál agus ainm, an eilimint méid á an cás speisialta do eagar, mar go bhfuil muid ag fáil a bunch acu ag an am céanna. Dá bhrí sin tá an cineál cén cineál athróg tú Ba mhaith gach gné de na eagar a bheith. An bhfuil sé ag iarraidh a le sraith de slánuimhreacha? Ansin, ba chóir do chineál sonraí int. Ar mhaith leat é a bheith ina sraith de doubles nó flótaí? Ba chóir go mbeadh an cineál sonraí a bheith dúbailte nó snámh. Is é an t-ainm a bhfuil tú ag iarraidh a glaoch ar do eagar. Cad ba mhaith leat a ainm ar an fathach bainc na slánuimhreacha nó floats nó carachtair nó doubles, nó cibé atá agat? Cad ba mhaith leat a ghlaoch air? Féin míniúcháin Pretty. Ar deireadh, méid, a théann taobh istigh de lúibíní cearnacha, é an chaoi go leor gnéithe a bheadh ​​agat cosúil le do eagar a bhfuil. Cé mhéad slánuimhreacha bhfuil tú ag iarraidh? Cé mhéad flótaí bhfuil tú ag iarraidh? Mar sin, mar shampla, int grád mac léinn 40. Dearbhaíonn sé seo le sraith a dtugtar Mac Léinn grád, atá comhdhéanta de 40 slánuimhreacha. Féin míniúcháin Pretty, tá súil agam. Seo sampla eile. Praghsanna roghchlár dúbailte 8. Cruthaíonn sé seo le sraith a dtugtar Praghsanna roghchlár, atá comhdhéanta de seomra i gcuimhne ar feadh ocht doubles. Má cheapann tú de gach gné de sraith de chineál sonraí-cineál, mar sin mar shampla, gné amháin de le sraith de chineál slánuimhir, ar an mbealach céanna tú Bheadh ​​smaoineamh ar aon eile athróg den chineál slánuimhir, na hoibríochtaí ar an eolas go bhfuil muid pléadh roimhe seo sa Oibríochtaí Beidh físeáin ciall. Mar sin anseo, d'fhéadfadh muid a dhearbhú le sraith de booleans dtugtar Truthtable, atá comhdhéanta de tseomra ar feadh 10 booleans. Agus ansin, díreach cosúil gur féidir linn a shannadh go díreach luach d'aon athróg eile de chineál Boole, d'fhéadfadh muid a rá rud éigin cosúil le Truthtable lúibín cearnach 2, a bhfuil conas a léiríonn muid, a gné den tábla fírinne? An tríú eilimint den tábla fírinne, mar gheall ar cuimhnigh, táimid ag comhaireamh ó 0. Mar sin, go bhfuil ar conas léiríonn muid an tríú gné den tábla fírinne. Truthtable 2éseo bréagach, díreach cosúil le d'fhéadfadh muid a declare-- nó d'fhéadfadh muid a shannadh, in áit, aon Athróg cineál Boole a bheith bréagach. Is féidir linn a úsáid freisin é i gcoinníollacha. más rud é (== truthtable 7 fíor), atá le rá, má tá an eilimint ochtú de Truthtable Is fíor, b'fhéidir ba mhaith linn a phriontáil teachtaireacht don úsáideoir, printf ("TRUE! n") ;. Is cúis dúinn a rá Truthtable 10 ionann fíor, ceart? Bhuel, is féidir liom, ach tá sé deas contúirteacha, cuimhnigh mar gheall ar, ní mór dúinn le sraith de 10 booleans. Mar sin, an t-innéacs is airde go bhfuil an Tá tiomsaitheoir thabhairt dúinn 9. Beidh an clár seo a chur le chéile, ach más rud éigin eile i gcuimhne ann i gcás ina rinne muid ag súil Truthtable 10 chun dul, d'fhéadfadh muid ag fulaingt locht deighilt. Táimid ag D'fhéadfadh a fháil amach le sé, ach go ginearálta, deas contúirteach. Mar sin, cad Tá mé ag déanamh anseo é C dlíthiúil, ach ní gá go an t-aistriú is fearr. Anois, nuair a dhearbhú tú, agus thúsú le sraith ag an am céanna, níl i ndáiríre deas error speisialta go bhfuil tú Is féidir úsáid a bhaint as a líonadh suas an eagar lena luachanna tosú. Is féidir é a fháil cumbersome a a dhearbhú le sraith de mhéid 100, agus ansin a rá, eilimint 0 is ionann seo; eilimint 1 is ionann seo; eilimint 2éseo sin. Cad é an pointe, ceart? Má tá sé ina sraith beag, tú D'fhéadfadh rud éigin mar seo a dhéanamh. Bool truthtable 3 ionann oscailte brace curly agus ansin camóg ar leith ar an liosta na n-eilimintí gur mian leat a chur i an eagar. Ansin dhúnadh leathstad guailleán curly. Cruthaíonn sé seo le sraith de Méid trí dtugtar Truthtable, le heilimintí bréagach, fíor, agus fíor. Agus go deimhin, an instantiation Tá error Tá mé anseo díreach mar an gcéanna leis ag déanamh an error eilimint aonair thíos. Tá an dá bealaí códaithe bheadh aird ar an sraith ceannann céanna. Mar an gcéanna, d'fhéadfadh muid a iterate thar gach ceann de na heilimintí de sraith ag baint úsáide as lúb, a, i Go deimhin, tá molta go láidir an- ar-bhaile a fheidhmiú. Conas a dhéanann tú a chruthú le sraith de 100 slánuimhreacha, i gcás ina tá gach gné den eagar a innéacs? Mar sin, mar shampla, ní mór dúinn sraith de 100 slánuimhreacha, agus sa chéad eilimint, ba mhaith linn a chur ar 0. Sa dara gné, ba mhaith linn a chur ar 1. Sa tríú eilimint, ba mhaith linn a chur 2; agus mar sin de agus mar sin de. Sin maith i ndáiríre ar-bhaile a fheidhmiú a dhéanamh sin. Anseo, ní chuireann sé cuma cosúil tá athrú i bhfad an iomarca. Ach faoi deara go i idir an lúibíní cearnacha, an uair seo, Tá mé ar lár i ndáiríre an uimhir. Má tá tú ag baint úsáide as an chuid is instantiation speisialta error a chruthú eagar, tá tú nach bhfuil i ndáiríre Ní mór a chur in iúl an méid an eagar roimh ré. Is é an tiomsaitheoir cliste go leor go mbeadh a fhios go bhfuil tú i ndáiríre Ba mhaith le sraith de mhéid 3, toisc go chuir tú trí ghné do cheart an comhartha comhionann. Má chuir tú ceithre, bheadh ​​sé thug tú tábla fírinne de mhéid ceithre; agus mar sin de agus mar sin de. Ní arrays teoranta amháin gné, a bhfuil deas fionnuar. Is féidir leat a bheith mar go leor i ndáiríre sonraitheoirí taobh mar is mian leat. Mar sin, mar shampla, más mian leat a chruthú bord chun an cluiche Battleship, a bhfuil, má bhí tú riamh é, cluiche go bhfuil bhí leis pionnaí ar an 10 de 10 greille, d'fhéadfaí tú a chruthú le sraith mar seo. D'fhéadfá a rá bool Battleship lúibín cearnach 10 dúnta cearnach lúibín cearnach lúibín 10 dúnta lúibín cearnach. Agus ansin, is féidir leat a roghnú chun léirmhíniú seo i d'intinn mar 10 10 greille na cealla. Anois, i ndáiríre, i gcuimhne, a dhéanann sé i ndáiríre ach fanacht ina gné 100, eagar tríthoiseach amháin. Agus seo, go deimhin téann, do má tá tú tá trí thoise nó ceithre nó cúig. Sé i ndáiríre ní hamháin iolrú gach ceann de na indices-- nó gach ceann de na méid specifiers-- le chéile, agus tú a fháil ach aon-tríthoiseach sraith de sin méid. Ach i gcás an eagrúcháin agus léirshamhlú agus dearcadh an duine, Is féidir é a bheith i bhfad níos éasca a bheith ag obair le greille má tá tú ag obair ar cluiche cosúil le Tic-tac-ladhar nó Battleship, nó rud éigin mar sin. Tá sé ina astarraingt mór, in ionad a bheith smaoineamh ar a Tic-tac-ladhar bord mar líne de naoi cearnóga nó bord Battleship mar líne de 100 cearnóga. A 10 10 greille nó trí ag trí Tá greille dócha a lán níos éasca a bhrath. Anois, rud éigin i ndáiríre tábhachtach faoi arrays. Is féidir linn déileáil le gach duine aonair eilimint an eagar mar athróg. Chonaic muid go bhfuil níos luaithe nuair a bhí muid shannadh an luach Fíor a booleans áirithe nó iad a thástáil i conditionals. Ach ní féidir linn a chóireáil ar fad Eagair féin mar athróg. Is féidir linn a ní, mar shampla, a shannadh sraith amháin go eagar eile a mbeidh an tasc oibreoir. Níl sé C. dlíthiúil Más mian linn a, as example-- cad ba mhaith linn a bheith ag déanamh sa sampla bheadh ​​a chóipeáil eagar amháin isteach i gceann eile. Más mian linn a dhéanamh sin, againn i ndáiríre Ní mór úsáid a bhaint as lúb a chóipeáil thar gach eilimint ar leith amháin ag an am. Tá a fhios agam tá sé ina Tógann am beag. Mar sin, mar shampla, má bhí againn ar na lánúin de línte de chód bheadh ​​an obair seo,? Bhuel, ní hea, ní bheadh ​​sé, ceart? Mar gheall orainn ag iarraidh bia a shannadh do bar. Ní sin ag dul ar obair, mar tá sé le sraith, agus cur síos muid díreach sin nach é sin C. dlíthiúil Ina áit sin, más mian linn a chóipeáil an t-ábhar bia i barra, a bhfuil cad táimid ag iarraidh a dhéanamh anseo, ba mhaith linn gá error mar seo. Ní mór dúinn a d'lúb a théann ó J cothrom le 0 suas go dtí 5, agus incrimint táimid ag J ar gach atriall de an lúb agus eilimintí a shannadh mar sin. Bheadh ​​sé seo mar thoradh ar bharra chomh maith a bheith ar cheann, dhá, trí, ceithre, cúig, ach ní mór dúinn é a dhéanamh seo an- mall eilimint-ar-eilimint bhealach, seachas ag díreach cóipeáil an eagar ar fad. I cláir eile teangacha, na cinn níos nua-aimseartha, is féidir leat, i ndáiríre, a dhéanamh ach gur ionann simplí error. Ach C, ar an drochuair, tá muid nach bhfuil cead a dhéanamh. Anois, níl aon eile rud is mian liom a lua faoi ​​arrays féidir a bheith beagán giotán tricky an chéad uair tú obair leo. Phléigh muid i físeán faoi ​​raon feidhme athróg, go athróg mó i C, nuair a ghlaonn tú iad i bhfeidhmeanna, tá a rith ag luach. An cuimhin leat cad a chiallaíonn sé rud éigin de réir luacha chun pas a fháil? Ciallaíonn sé sin táimid ag déanamh cóip den athróg go bhfuil á chur ar aghaidh i. An fheidhm callee, an fheidhm go ag fáil an athróg, Ní chuireann a fháil ar an athróg féin. Faigheann sé a áitiúil féin cóip de a bheith ag obair leis. Arrays, ar ndóigh, an bhfuil ní leanann an riail seo. Ina ionad sin, cad tugaimid seo Tá dul trí thagairt. An callee iarbhír dhéanann a fháil ar an eagar. Ní chuireann sé a fháil ar a cóip áitiúil féin de. Agus má cheapann tú faoi sé, a dhéanann an chiall. Má tá arrays ndáiríre mór, sé Bíonn an oiread sin ama agus iarrachta chun cóip de le sraith de 100 nó 1,000 nó 10,000 heilimintí, nach bhfuil sé fiú é ar feadh feidhmiú a fháil cóip de, roinnt oibre a bhfuil sé, agus ansin ach a dhéanamh leis an chóip; nach gá é a bheith crochta é thart ar níos mó. Toisc go bhfuil arrays áirithe bulky agus cumbersome, linn a pas a fháil ach iad trí thagairt. Táimid ag muinín go díreach fheidhm chun, ná aon rud a bhriseadh. Mar sin, a dhéanann sé a fháil i ndáiríre an eagar. Ní chuireann sé a fháil a chóip áitiúil féin de. Mar sin, cad a chiallaíonn sé seo, ansin, nuair a bheidh an callee ionramhálann gnéithe den eagar? Cad a tharlaíonn? Chun anois, beidh orainn snasta níos mó ná cén fáth go díreach seo a tharlaíonn, cén fáth arrays ar aghaidh trí thagairt agus tá gach rud eile a rith ag luach. Ach geallaim duit, déanfaimid ar ais agus a thabhairt duit an freagra leis seo i físeán níos déanaí. Seo a fheidhmiú amháin níos mó ar do shon roimh muid a wrap suas rudaí ar arrays. An bunch cód anseo, go bhfuil Ní háirithe stíl maith, ach beidh mé a dhéanamh go caveat. Níl aon tuairimí i anseo, a bhfuil foirm dona go leor. Ach tá sé ach mar bhí mé a bheith in ann gach rud a d'oirfeadh ar an scáileán. Ag barr, is féidir leat a fheiceáil go bhfuil mé dhá dhearbhú fheidhm chun sraith eagar agus atá leagtha slánuimhir. Bíonn Socraigh eagar cosúil le sraith de cheithre slánuimhreacha mar ionchur. Agus tógann slánuimhir leagtha cosúil slánuimhir amháin mar a ionchur. Ach an mbeirt acu nach bhfuil aschur. An t-aschur, an tuairisceán cineál, de go bhfuil gach ceann neamhní. I Main, ní mór dúinn a cúpla línte de chód. Dearbhaímid an athróg slánuimhir ar a dtugtar A agus a shannadh sé an luach 10. Dearbhaímid le sraith de cheithre slánuimhreacha ar a dtugtar B agus na heilimintí 0, 1 shannadh, 2, agus 3, faoi seach. Ansin, ní mór dúinn glaoch a chur ar bun int agus glao eagar a chur ar bun. Na sainmhínithe ar eagar a leagan síos agus a leagtar slánuimhir iad síos anseo thíos, ar an bun an leathanaigh. Agus mar sin, arís, iarr mé tú an cheist. Cad Faigheann chló amach anseo ag deireadh Príomh? Níl a col asphrionta. Tá mé priontáil amach dhá slánuimhreacha. Tá mé ag priontáil amach an t-ábhar A agus an t-ábhar B lúibín cearnach 0. Sos an físeán anseo agus nóiméad a ghlacadh. An féidir leat a dhéanamh amach cad seo Beidh feidhm phriontáil ag an deireadh? Súil go dtosnódh, má tá tú chun cuimhne an idirdhealú idir a rith de réir luacha agus a rith trí thagairt, seo Ní raibh fadhb ró-tricky ar do shon. Agus an freagra a bheadh ​​agat Is fuair seo. Mura bhfuil tú i ndáiríre cinnte maidir le cén fáth go bhfuil an cás, chur ar an dara, dul ar ais, athbhreithniú a dhéanamh ar an méid a bhí mé díreach tar éis plé faoi arrays rith trí thagairt, i gcomparáid le rith athróga eile de réir luacha, agus tá súil againn, beidh sé a dhéanamh ciall le beagán níos mó. Tá mé Doug Lloyd, agus tá sé seo CS50.