[Powered by Google Translate] [Seachtain 4] [David J. MALAN] [Ollscoil Harvard] [Tá sé seo CS50.] [CS50.TV] Ceart go leor, is é seo CS50, agus is é seo tús na seachtaine 4, agus tá sé seo ar cheann de na halgartaim a shórtáil slowest is féidir. A bhí ar cheann go faire againn ach ann? Ba é sin saghas mboilgeog, d'fhonn mór O (n ^ 2) tsuim +, agus go deimhin nach bhfuil muid na cinn amháin sa domhan a bhfuil cuma ar an eolas cén saghas mboilgeog, nó a chuid ama ag rith. Go deimhin, ba é seo agallamh le Eric Schmidt de Google agus iar-seanadóir Barack Obama ach cúpla bliain ó shin. Anois, Seanadóir, tá tú anseo ag Google, agus is maith liom chun smaoineamh ar an uachtaránacht mar agallaimh poist. Anois, tá sé deacair post a fháil mar uachtarán, agus go bhfuil tú ag dul tríd an rigors anois. Tá sé freisin deacair post a fháil ag Google. Táimid ceisteanna agat, agus iarraimid ar ár gceisteanna iarrthóirí, agus tá an ceann seo ó Larry Schwimmer. Cheapann tú guys mé ag kidding? Tá sé ceart anseo. Cad é an bealach is éifeachtaí a shórtáil milliún 32-giotán slánuimhreacha? [Gáire] Well- Tá brón orm. >> No, no, no, no. Sílim go mbeadh an saghas mboilgeog a bheith ar an bealach mícheart chun dul. Come on, a dúirt leis seo? An tseachtain seo caite cuimhne thóg muid sos ó cód, ar a laghad ar feadh lae, agus thosaigh sé ag díriú ar roinnt smaointe leibhéal níos airde agus fadhbanna a réiteach níos ginearálta i gcomhthéacs an cuardach agus ag sórtáil, agus thugamar isteach rud éigin nach raibh againn Lí an t-ainm ar an tseachtain seo caite, ach nodaireacht asymptotic, an O Big, an Omega Mór, agus uaireanta bhí na Big Téite nodaireacht, agus tá siad seo ach ar bhealaí cur síos ar an am a reáchtáil halgartaim, cé mhéad ama a thógann sé chun algartaim a rith. Agus is féidir leat chun cuimhne go bhfuil labhair tú faoin am a reáchtáil i dtéarmaí an méid an ionchur, a dtugaimid go ginearálta n, cuma cad is féidir an fhadhb a bheith, áit a bhfuil n líon na ndaoine sa seomra, líon na leathanach i leabhar teileafóin, agus táimid thosaigh rudaí a scríobh amach cosúil O (n ^ 2) nó O (n) nó O (n log n), agus fiú nuair nach raibh an mata ag obair go leor amach go breá agus bhí sé n ² - n / 2 nó rud éigin mar sin ba mhaith linn a ionad caith díreach amach roinnt de na téarmaí d'ord níos ísle, agus an spreagadh is go ba mhaith linn i ndáiríre ar saghas slí d'fhonn meastóireacht a ar fheidhmíocht na gclár nó i gcomhlíonadh halgartaim go bhfuil ag deireadh an lae aon rud a dhéanamh, mar shampla, leis an luas ar do ríomhaire sa lá atá inniu. Mar shampla, má tá tú i bhfeidhm saghas mboilgeog, nó is féidir leat i bhfeidhm merge sórtáil nó roghnú saghas ar an lae inniu ríomhaire, ar 2 GHz ríomhaire, agus ritheann tú é, agus tógann sé roinnt ar líon na soicind, an bhliain seo chugainn níl GHz 3 nó a d'fhéadfadh a 4 GHz ríomhaire, agus tú éileamh ansin go "Wow, mo algartam anois dhá uair chomh tapa, "nuair a chuirtear an ní go léir an cás. Tá sé díreach tar éis na crua-earraí gotten níos tapúla, ach do ríomhaire nach bhfuil, agus mar sin ba mhaith linn i ndáiríre le caith amach rudaí cosúil le iolraithe de 2 nó iolraithe de 3 nuair a thagann sé síos cé chomh tapa nó conas mall é algartam agus i ndáiríre ach ag díriú ar n nó roinnt fachtóir de, roinnt cumhachta sin mar atá i gcás na cineál ón tseachtain seo caite. Agus cuimhne go le cabhair ó saghas merge bhí muid in ann sin a dhéanamh i bhfad níos fearr ná mar a shórtáil mboilgeog agus sórtáil roghnú agus sórtáil isteach fiú. Fuair ​​muid síos go dtí n logáil n, agus arís, thabhairt chun cuimhne go dtagraíonn log n go ginearálta le rud éigin a fhásann níos moille ansin n, agus mar sin n logáil n dá bhrí sin bhí i bhfad maith toisc go raibh sé níos lú ná ² n. Ach a bhaint amach n logáil n le saghas merge cad a bhí an só bunúsach de smaoineamh go raibh muid a ghiaráil go giaráilte againn chomh maith ar ais i seachtain 0? Conas a raibh muid ag dul i ngleic leis an bhfadhb sórtáil cleverly le saghas merge? Cad é an léargas eochair, b'fhéidir? Duine ar bith ar chor ar bith. Maith go leor, a ligean ar ghlacadh le céim siar. Déan cur síos ar merge sórtáil i do chuid focal féin. Conas a raibh sé ag obair? Maith go leor, beidh orainn a rámhaigh ar ais go dtí 0 seachtain. Maith go leor, yeah. [Inaudible-mac léinn] Maith go leor, maith, mar sin roinnte againn ar an sraith de uimhreacha i 2 píosaí. In eagar againn gach ceann de na píosaí, agus ansin chumasc againn orthu, agus atá feicthe againn an smaoineamh seo roimh ag cur le fadhb go bhfuil an mór agus chopping sé suas i fadhb é seo mór nó mór seo. Glaoch ar ais ar an sampla leabhar teileafóin. Glaoch ar ais an t-algartam féin-comhaireamh ó seachtain ó shin, Tugadh achoimre saghas sin a chumasadh leis an pseudocode anseo. Nuair atá tú a tugadh eilimintí n, an chéad go raibh sé sanity sheiceáil. Más rud é n <2 ní sin a dhéanamh aon ní a dhéanamh ar chor ar bith mar má tá n <2 n ansin, ar ndóigh 0 nó 1, agus mar sin má tá sé ceachtar 0 nó 1 níl aon rud a shórtáil. Tá tú ag déanamh. Tá do liosta sórtáilte cheana trivially. Ach a mhalairt má tá tú bhí 2 nó níos mó eilimintí dul ar aghaidh agus iad a roinnt i 2 leatha, chlé agus ar dheis. Sórtáil gach ceann de na leatha, agus ansin an leath curtha in eagar merge. Ach tá an fhadhb anseo go bhfuil ag an gcéad amharc mothaíonn seo cosúil tá muid ag punting. Is é seo an sainmhíniú ciorclach sa mhéid is go má tá mé d'iarr tú a shórtáil na heilimintí n agus tá tú ag insint dom "Ceart go leor, fíneáil, beidh orainn a shórtáil na heilimintí sin a n / 2 agus iad siúd a n / 2," ansin tá mo cheist eile ag dul a bheith "Fine, conas a dhéanann tú a shórtáil na n / 2 eilimintí?" Ach mar gheall ar struchtúr an chláir seo, toisc go bhfuil an cás seo bonn, mar a déarfá, chás seo speisialta a deir más rud é go n > Sara, ceart go leor. Kelly. >> Kelly agus? Willy. >> Willy, Sara, Kelly, agus Willy. Ceart anois mé ag iarradh ar an gceist ag duine cé mhéad duine atá suas ar an stáitse, agus tá mé aon smaoineamh. Is liosta é seo i ndáiríre fada, agus mar sin in ionad mé ag dul chun é seo a trick. Tá mé ag dul a iarraidh ar an duine in aice liom a dhéanamh an chuid is mó den obair, agus nuair a bhfuil sí déanta ag déanamh an chuid is mó den obair Tá mé ag dul a dhéanamh ar an méid oibre a laghad is féidir agus díreach cuir 1 le cibé a fhreagairt, mar sin tá anseo a théann muid. Tá mé ag iarradh ar cé mhéad duine atá ar an stáitse. Cé mhéad duine atá ar an stáitse ar an taobh clé tú? An taobh clé de dom? >> Maith go leor, ach ná déan an salachar. Sin maith, go bhfuil ceart, ach más mian linn leanúint leis an loighic a ligean ar glacadh leis gur mian leat dul céanna, Punt an fhadhb seo ar an taobh clé de tú, mar sin seachas freagra díreach ar aghaidh agus díreach an buck pas a fháil. Oh, conas a mhéad duine atá ar an taobh clé de dom? Cá mhéad duine atá ar an taobh clé? 1. [Gáire] Maith go leor, mar sin 0, mar sin cad anois tá Willy déanta Tá tá tú ar ais do fhreagra treo seo ag rá 0. Anois, cad ba cheart duit a dhéanamh? >> 1. Maith go leor, mar sin tá tú ar an 1, agus mar sin a rá leat, "Ceart go leor, tá mé ag dul a chur 1 le cibé líon Willy a bhí, "mar sin 1 + 0. Tá tú anois 1 mar sin tá do fhreagra ar an gceart anois- 1. Bheadh ​​>> Agus mianach 2. Dea-, mar sin tá tú ag cur an freagra roimhe sin 1, chur leis an méid íosta oibre mian leat a dhéanamh, a bhfuil 1. Tá tú anois 2, agus tú ar láimh ansin dom a luach? 3, ciallóidh mé, tá brón orainn, 2. Dea-. Bhuel, bhí againn 0 ar an taobh clé. Ansin bhí againn 1, agus ansin dúinn a chur 2, agus anois tá tú ag handing dom an uimhir 2, agus mar sin mé ag rá, maith go leor, 1, 3. Níl go deimhin 3 daoine ina seasamh in aice liom ar an stáitse, ionas gur féidir linn a dhéanamh ar ndóigh seo an-líneach, go mór sa bhealach soiléir, ach cad a rinne a dhéanann muid i ndáiríre? Chuir muid fadhb de mhéid 3 dtús. Bhris muid ansin sé síos i fadhb de mhéid 2, ansin fadhb ar mhéid 1, agus ansin ar deireadh an cás bonn bhí i ndáiríre, ó, níl aon duine ann, ag a sheoladh ar ais pointe Willy go héifeachtach freagra crua-códaithe cúpla uair, agus an dara ceann a bhí bubbled ansin, bubbled suas, bubbled suas, agus ansin trí seo 1 amháin breise againn i bhfeidhm an smaoineamh bunúsach de athchúrsáil. Anois, sa chás seo ní raibh sé a réiteach i ndáiríre ar fhadhb aon bhealach níos éifeachtaí ansin atá feicthe againn go dtí seo. Ach smaoineamh ar na halgartaim againn atá déanta ar an stáitse go dtí seo. Bhí orainn 8 píosaí páipéir ar an gclár dubh, ar fhíseán nuair a bhí Seán ag lorg ar an uimhir 7, agus cad a rinne sé i ndáiríre? Bhuel, ní raibh sé a dhéanamh de chineál ar bith scoilt agus conquer. Ní raibh sé a dhéanamh de chineál ar bith athchúrsáil. Ina áit sin rinne sé díreach tar éis an algartam líneach. Ach nuair a thugamar isteach an smaoineamh na n-uimhreacha curtha in eagar ar an stáitse beo an tseachtain seo caite ansin bhí againn an instinct dul go dtí an lár, ag an bpointe sin bhí againn le liosta níos lú de mhéid 4 nó eile liosta de na méid 4, agus ansin bhí againn an fhadhb ceannann céanna, mar sin arís agus arís eile againn, arís agus arís eile, arís agus arís eile. I bhfocail eile, recursed againn. Go raibh míle maith agat go mór chun ár 3 oibrithe deonacha anseo le haghaidh a léiriú athchúrsáil a dhéanamh linn. Ligean ar a fheiceáil más rud é nach féidir linn seo a dhéanamh anois nithiúla beagán níos mó, fadhb a réiteach go arís féidir linn a dhéanamh go leor go héasca, ach beidh orainn é a úsáid mar cloch stepping chun cur chun feidhme an smaoineamh bunúsach. Más mian liom a ríomh an suimiú a bunch na n-uimhreacha, mar shampla, má éiríonn tú ar an uimhir 3, Ba mhaith liom a thabhairt duit ar an luach sigme 3, mar sin suim 3 + 2 + 1 + 0. Ba mhaith liom a fháil ar ais an freagra 6, mar sin beidh orainn a chur i bhfeidhm an fheidhm seo sigme, an fheidhm shuimiú sin, arís, glacann i ionchur, agus ansin filleann an tsuimithe an líon sin go léir ar an mbealach síos go dtí 0. D'fhéadfadh muid a dhéanamh go leor go simplí, ceart? D'fhéadfadh muid é seo a dhéanamh le roinnt de chineál ar struchtúr looping, sin in iúl dom dul ar aghaidh agus a fháil tosaithe. Cuir stdio.h. Lig dom a fháil ar mé féin isteach is mó a bheith ag obair leis anseo. A ligean ar seo a shábháil mar sigma.c. Ansin mé ag dul chun dul i anseo, agus mé ag dul a fhógairt n slánuimhir, agus mé ag dul a dhéanamh ar an méid seo a leanas cé nach bhfuil an t-úsáideoir comhoibriú le chéile. Cé nach bhfuil an t-úsáideoir a tugadh dom uimhir dheimhneach lig dom dul ar aghaidh agus iad a spreagadh le haghaidh n GetInt =, agus lig dom a thabhairt dóibh roinnt treoracha maidir le cad atá le déanamh, mar sin printf ("slánuimhir Positive le do thoil"). Just a rud éigin réasúnta simplí mar seo ionas go mbeidh ag an am a bhuail muid ag teacht 14 ní mór dúinn anois slánuimhir dearfach dócha i n. Anois, a ligean rud éigin a dhéanamh leis. Lig dom dul ar aghaidh agus an tsuimithe a ríomh, agus mar sin o suim = sigme (n). Sigma bhfuil ach tsuimithe chuige sin, mar sin tá mé ag scríobh díreach tar éis é ar an mbealach fancier. Beidh muid ach glaoch sigme sé ann. Sin an tsuim, agus anois tá mé ag dul a phriontáil amach an toradh, printf ("Is é an tsuim% d \ n", suim). Agus ansin beidh mé ar ais 0 haghaidh dea-bheart. Táimid tar éis gach rud a dhéanamh go n-éilíonn an clár seo ach amháin an chuid suimiúil, a chur i bhfeidhm iarbhír an fheidhm sigme. Lig dom dul síos anseo chun an bun, agus lig dom a dhearbhú feidhm sigme. Tá sé fuair a ghlacadh athróg sin de slánuimhir cineál, agus cad iad na sonraí de chineál ar mhaith liom a thabhairt ar ais dócha as sigme? Int, mar ba mhaith liom é a mheaitseáil mo ionchais ar líne 15. I anseo lig dom dul ar aghaidh agus an chur i bhfeidhm ar bhealach deas simplí. Lig dul ar aghaidh agus a rá = 0 suim slánuimhir, agus anois tá mé ag dul chun dul go bhfuil beagán le haghaidh lúb anseo go ag dul a rá rud éigin mar seo, do (slánuimhir i = 0; I <= uimhir; i + +) suim + = i. Agus ansin tá mé ag dul suim a thabhairt ar ais. Raibh mé in ann a bheith i bhfeidhm seo in aon roinnt bealaí. Raibh mé in ann úsáid lúb tamaill. Raibh mé in ann a bheith ndearna ag baint úsáide as an athróg suim dá mba mhaith liom i ndáiríre do, ach i mbeagán focal, ní mór dúinn ach feidhm más rud é nach raibh mé Dearbhaíonn goof tsuim 0. Ansin béim arís ar sé ó 0 ar suas tríd an líon, agus ar gach leagan cuireann sé luach reatha suim agus ansin ar ais suim. Anois, níl leas iomlán a bhaint beag anseo. Tá sé seo is dócha go bhfuil céim amú, ach mar sin go mbeadh sé. Go breá le haghaidh anois. Táimid ar a laghad a bheith críochnúil agus ag dul 0 léir ar an mbealach ar suas. Ní deacair an-agus go leor simplí, ach casadh sé amach go bhfuil an fheidhm sigme ní mór dúinn an deis chéanna mar a rinne muid anseo ar an stáitse. Ar stáitse chomhaireamh againn go díreach cé mhéad duine a bhí in aice liom, ach ina ionad sin má bhíomar ag iarraidh ag comhaireamh an uimhir 3 + 2 + 1 ar síos go dtí 0 d'fhéadfadh muid dul céanna, punt le feidhm go mbainfidh mé cur síos a dhéanamh in ionad a bheith recursive. Seo a ligean ar a dhéanamh ar sanity mear a sheiceáil agus a dhéanamh cinnte nach raibh mé goof. Tá a fhios agam níl ar a laghad rud amháin sa chlár seo go raibh mé ag déanamh mícheart. Nuair a bhuail mé isteach mé ag dul a fháil de chineál ar bith yelling ag dom? Cad tá mé ag dul a bheith yelled ag thart ar? Yeah, Rinne mé dearmad ar an fhréamhshamhail, agus mar sin tá mé ag baint úsáide as feidhm ar a dtugtar sigme ar líne 15, ach nach bhfuil sé dearbhaithe go dtí an líne 22, mar sin mé is fearr go réamhghníomhach dul suas anseo agus á dhearbhú fréamhshamhail, agus beidh a rá slánuimhir sigme (slánuimhir uimhir) mé, agus go bhfuil sé. Tá sé seo i bhfeidhm ag bun an leathanaigh. Nó ar bhealach eile raibh mé in ann an fhadhb seo, Raibh mé in ann bogadh an fheidhm suas ann, nach bhfuil olc, ach ar a laghad nuair a thosaíonn do chláir a fháil ar fad, frankly, I mo thuairimse, níl roinnt luach i gcónaí ar a bhfuil is mó ag an mbarr ionas gur féidir leat ar an léitheoir an comhad a oscailt agus ansin a fheiceáil láithreach cad é an clár a dhéanamh gan a bheith chun cuardach a dhéanamh tríd ag lorg feidhme sin is mó. A ligean ar dul síos go dtí mo fhuinneog críochfort anseo, déan iarracht a dhéanamh sigme dhéanamh sigme, agus screwed mé suas anseo freisin. Ciallaíonn dearbhú intuigthe de GetInt fheidhm mé dearmad a dhéanamh ar cad eile? [Inaudible-mac léinn] Dea-, mar sin cosúil botún coitianta, mar sin a ligean seo a chur suas anseo, cs50.h, agus lig anois ar dul ar ais go dtí mo fhuinneog teirminéil. Feicfidh mé soiléir ar an scáileán, agus beidh mé rerun a dhéanamh sigme. Dealraíonn sé go bhfuil thiomsú. Lig dom a reáchtáil anois sigme. Feicfidh mé cineál ar an uimhir 3, agus rinne mé 6 a fháil, mar sin ní seiceáil dian, ach ar a laghad is cosúil a bheith ag obair ar an gcéad amharc, ach anois ligean ar sracadh sé amach, agus a ghiaráil a ligean ar iarbhír an smaoineamh athchúrsáil, arís, i gcomhthéacs an-simplí ionas gur i cúpla seachtain 'am nuair a thosaíonn muid iniúchadh struchtúir sonraí fancier ná arrays ní mór dúinn uirlis eile san fhoireann uirlisí a cheapadh chun a ionramháil na struchtúir sonraí mar beidh orainn a fheiceáil. Is é seo an cur chuige atriallach, an cur chuige lúb-bhunaithe. Lig dom ionad anois é seo a dhéanamh. Lig dom in ionad a rá go bhfuil an suimiú líon ar síos go dtí 0 i ndáiríre an rud céanna mar Uimhir + sigme (uimhir - 1). I bhfocail eile, díreach cosúil ar an stáitse punted mé gach ceann de na daoine in aice liom, agus tá siad ar a seal choinnigh punting go dtí go bottomed againn ar deireadh amach ag Willy, a raibh a thabhairt ar ais freagra crua-códaithe mar 0. Anseo anois táimid ag punting dul céanna, sigme an fheidhm chéanna bhí ar a dtugtar mar ar dtús, ach an léargas eochair anseo is é sin nach bhfuil muid ag iarraidh sigme identically. Níl muid ag dul i n. Táimid ag dul go soiléir i líon - 1, sin fadhb beagán níos lú, fadhb beagán níos lú. Ar an drochuair, nach bhfuil sé seo go leor le réiteach go fóill, agus roimh muid a shocrú d'fhéadfadh a bheith léim amach chomh soiléir ar roinnt de tú lig dom dul ar aghaidh agus rerun a dhéanamh. Dealraíonn sé a thiomsú ceart go leor. Lig dom a rerun sigme le 6. Whoops, lig dom rerun sigme le 6. Againn atá le feiceáil roimh seo, cé go ham de thaisme is déanaí chomh maith. Cén fáth go raibh mé seo a fháil locht deighilte cryptic? Yeah. [Inaudible-mac léinn] Níl aon chás bonn, agus níos mó go sonrach, an méid a tharla is dócha? Is é seo a symptom de rud iompar? Abair sé beagán níos airde. [Inaudible-mac léinn] Tá sé an lúb gan teorainn go héifeachtach, agus an fhadhb le lúb gan teorainn nuair baint ag athchúrsáil sa chás seo, feidhm ag glaoch féin, cad a tharlaíonn gach uair a ghlaonn tú ar fheidhm? Bhuel, smaoineamh ar ais leis an gcaoi atá leagtha amach againn ar an gcuimhne i ríomhaire. Dúirt muid go níl an smután de chuimhne ar a dtugtar an chairn go ag an mbun, agus faigheann gach uair a ghlaonn tú feidhm chuimhne beagán níos mó a chur ar an chairn mar a thugtar air a bhfuil an fheidhm ar athróga áitiúil nó paraiméadar, mar sin má iarrann sigme glaonna sigme glaonna sigme sigme  glaonna sigme nuair a dhéanann an deireadh scéal? Bhuel, tá sé thar sprioc ar deireadh thiar an méid iomlán cuimhne go bhfuil tú ar fáil ar do ríomhaire. Tá tú overrun an deighleog go bhfuil tú ag ceaptha chun fanacht laistigh de, agus a fhaigheann tú an locht deighilt, dumped croí, agus cad croí ciallaíonn dumpáilte go bhfuil mé anois comhad a dtugtar croí atá ina comhad ina bhfuil nialais agus cinn go mbeidh iarbhír sa todhchaí a bheith diagnostically úsáideach. Más rud é nach bhfuil sé soiléir a thabhairt duit nuair a bhfuil do bug Is féidir leat a dhéanamh i ndáiríre le beagán de anailís fhóiréinseach, sin a labhairt, ar an gcomhad seo Dumpáil lárnach, a bhfuil, arís, ach a bunch iomlán de nialais agus cinn gur ionann go bunúsach an staid do chlár i gcuimhne i láthair na huaire crashed sé ar an mbealach seo. Is é an shocrú anseo nach féidir linn ach ar ais blindly sigme, an líon + sigme ar fhadhb beagán níos lú. Ní mór dúinn go bhfuil roinnt de chineál ar chás bonn anseo, agus cad ba chóir an cás bonn is dócha? [Inaudible-mac léinn] Maith go leor, mar sin fad a bheidh an uimhir dheimhneach ba chóir dúinn ar ais i ndáiríre seo, nó a chur ar bhealach eile, má tá líon, a rá, <= chun 0 Tá a fhios agat cad, beidh mé dul ar aghaidh agus ar ais 0, i bhfad mar a rinne Willy, agus eile, tá mé ag dul chun dul ar aghaidh agus seol ar ais seo, agus mar sin nach bhfuil sé go bhfuil i bhfad níos giorra ná an leagan atriallach go bhuailtí muid suas an chéad ag baint úsáide as do lúb, ach faoi deara go níl an saghas elegance leis. In ionad filleadh le huimhir éigin agus feidhmiúil seo go léir math agus rudaí a chur suas le hathróga áitiúla bhfuil tú ag rá in ionad "Maith go leor, má tá sé seo fadhb Super éasca, cosúil go bhfuil an líon <0, lig dom ar ais láithreach 0. " Ní táimid ag dul chun bac uimhreacha tacaíochta diúltach, mar sin tá mé ag dul go dtí cód crua ar luach 0. Ach a mhalairt, a chur i bhfeidhm an smaoineamh seo de achoimre gach ceann de na huimhreacha le chéile is féidir leat go héifeachtach le greim beag amach as an fhadhb, i bhfad mar a rinne muid anseo ar an stáitse, ansin punt an chuid eile den fhadhb leis an duine eile, ach tá sa chás seo an duine eile duit féin. Tá sé mar fheidhm identically ainmnithe. Just a sé ar aghaidh fadhb níos lú agus níos lú agus níos lú gach uair, agus cé ní mór dúinn rudaí go leor foirmiúil i gcód anseo is é seo go díreach cad a bhí ar siúl i seachtain 0 leis an leabhar teileafóin. Seo go díreach cad a bhí ar siúl i seachtainí anuas le Sean agus lenár taispeántais an cuardach le haghaidh uimhreacha. Tá sé seo ag cur le fadhb agus tríd sé arís agus arís eile. I bhfocail eile, níl ar bhealach anois a aistriú seo thógáil saol fíor, an thógáil ag leibhéal níos airde de roinnt agus conquer agus ag déanamh rud éigin arís agus arís i gcód, mar sin tá sé seo rud éigin beidh muid a fheiceáil arís le himeacht ama. Anois, mar leataobh, má tá tú nua chun cuardach ar chóir duit ar a laghad a thuiscint anois cén fáth go bhfuil sé seo greannmhar. Tá mé ag dul chun dul go dtí google.com, agus mé ag dul a chuardach le haghaidh roinnt leideanna agus cleasanna ar athchúrsáil, dul isteach. Abair leis an duine in aice leat más rud é nach raibh ag gáire siad díreach anois. An raibh i gceist agat athchúrsáil? An raibh tú i gceist-ah, tá muid ag dul. Maith go leor, tá anois go bhfuil an chuid eile den gach duine. Is beag Cásca ubh leabaithe áit éigin ann i Google. Mar leataobh, ar cheann de na naisc a chur againn ar an gcúrsa ar shuíomh gréasáin don lá atá inniu ach an eangach na halgartaim sórtáil éagsúla, cuid acu a d'fhéachamar ar an tseachtain seo caite, ach cad deas faoi seo léirshamhlú mar iarracht tú a wrap d'intinn ar fud rudaí éagsúla a bhaineann le halgartaim fhios agat gur féidir leat an-éasca tosú anois le cineálacha éagsúla na n-ionchur. Na hionchuir droim ar ais go léir, na hionchuir in eagar chuid is mó, na hionchuir randamach agus mar sin de. Mar iarracht tú a, arís, idirdhealú a dhéanamh na rudaí i d'intinn a thuiscint go URL seo ar an gcúrsa ar shuíomh gréasáin ar an leathanach Léachtaí a d'fhéadfadh cabhrú leat mar gheall trí roinnt de na. Sa lá atá inniu a fháil againn ar deireadh thiar chun an fhadhb seo a réiteach ó tamall ó shin, a bhí go bhfuil an fheidhm babhtála ní raibh ag obair, agus cad a bhí an fhadhb bhunúsach leis an babhtála feidhm, an sprioc a bhí, arís, a mhalartú luach anseo agus anseo den sórt sin a tharlaíonn sé seo? Ní raibh an obair seo i ndáiríre. Cén fáth? Yeah. [Inaudible-mac léinn] Go díreach, an míniú ar an bugginess ach a bhí mar gheall nuair a ghlaonn tú feidhmeanna i C agus na feidhmeanna sin hargóintí a ghlacadh, mar a agus b anseo, bhfuil tú ag dul i cóipeanna de cibé luach a bhíonn tú ag fáil leis an fheidhm. Nach bhfuil tú ag fáil na luachanna bunaidh féin, mar sin chonaic muid seo i gcomhthéacs na buggyc, buggy3.c, a bhreathnaigh rud beag mar seo. Glaoch ar ais a bhí againn x agus y initialized le 1 agus 2, faoi seach. Clóite muid ansin amach cad a bhí siad. D'éiligh mé ansin go raibh swapping mé iad trí ghlaoch a babhtála x, y. Ach bhí an fhadhb gur oibrigh an swapping, ach amháin i raon feidhme an babhtála fheidhm féin. Chomh luath agus bhuail muid ag teacht 40 na luachanna sin mhalartú Bhí thrown away, agus mar sin de rud ar bith san fheidhm bunaidh príomh athraíodh iarbhír ar chor ar bith, mar sin má cheapann tú ar ais ansin i dtaobh cad Breathnaíonn seo cosúil ó thaobh ár gcuimhne más rud é go léiríonn an-thaobh na láimhe clé den bhord agus beidh mé mo dhícheall do gach duine a fheiceáil seo más rud é-seo thaobh na láimhe clé den bhord ionann, a rá, do RAM, agus tá an chairn ag dul chun fás ar suas ar an mbealach seo, agus tugaimid feidhm mhaith is mó, agus is mó Tá 2 athróg áitiúla, x agus y, a ligean ar cur síos a dhéanamh dóibh siúd le x anseo, agus a ligean ar na cur síos a dhéanamh mar y anseo, agus a ligean ar chur ar an 1 luachanna agus 2, agus mar sin tá sé seo anseo is mó, agus nuair a iarrann na príomh-fheidhm babhtála an córas oibriúcháin Tugann an fheidhm babhtála a swath féin de chuimhne ar an chruach, a fráma féin ar an chruach, mar a déarfá. Leithdháileann sé 32 giotán do na ints. Tarlaíonn sé chun glaoch orthu a agus b, ach sin go hiomlán treallach. D'fhéadfadh sé a bheith ar a dtugtar iad is cuma cad is mian leis, ach cad a tharlaíonn nuair is mó Tá glaonna babhtála a thógann sé seo a 1, cuireann cóip ann, cuireann cóip ann. Tá 1 athróg áitiúla eile i babhtála, áfach, ar a dtugtar cad é? Tmp >>. Tmp, in iúl dom a thabhairt mé féin eile 32 giotán anseo, agus cad a rinne mé i an fheidhm seo? Dúirt mé Faigheann tmp slánuimhir a, mar sin tá 1, mar sin rinne mé seo nuair a bhí muid go deireanach le sampla seo. Ansin faigheann b, agus mar sin b Is é 2, mar sin anois a bheidh sé sin 2, agus anois faigheann b teocht, mar sin teocht is 1, mar sin anois thiocfaidh chun bheith b seo. Sin iontach. D'oibrigh sé. Ach ansin chomh luath agus is na tuairisceáin fheidhm babhtála a chuimhne imíonn go héifeachtach ionas gur féidir é a athúsáid ag roinnt feidhm eile amach anseo, agus is é is mó ar ndóigh gan athrú go hiomlán. Ní mór dúinn ar bhealach bunúsach fhadhb seo a réiteach, agus sa lá atá inniu beidh orainn ar deireadh ar bhealach seo a dhéanamh ina is féidir linn a thabhairt isteach rud éigin a dtugtar pointeoir. Casadh sé amach gur féidir linn a fhadhb seo a réiteach ní ag dul i cóipeanna de x agus y ach ina ionad sin ag dul thar i cad, is dóigh leat, chun an fheidhm babhtála? Yeah, cad mar gheall ar an seoladh? Ní Tá Labhair i ndáiríre faoi seoltaí go mion i bhfad, ach má léiríonn an gclár dubh mo ríomhaire a chuimhne d'fhéadfadh muid tús a chur cinnte uimhir na bearta i mo RAM agus a rá tá sé seo beart # 1, is é seo beart # 2, beart # 3, beart # 4, beart # ... 2 billiún má tá mé 2 ghigibheart de RAM, mar sin d'fhéadfadh muid ag teacht cinnte suas le roinnt scéim uimhriú treallach do na bearta aonair i mo ríomhaire a chuimhne. Cad a tharlaíonn má in ionad nuair a ghlaonn mé babhtála seachas pas i cóipeanna de x agus y cén fáth nach bhfuil mé pas a ionad i an seoladh de x anseo, an seoladh y anseo, go bunúsach an seoladh poist x agus y mar gheall ar babhtála ansin, má tá sé in iúl an seoladh i gcuimhne ar x agus y, ansin babhtála, más rud é oilte againn air le beagán, d'fhéadfadh sé a thiomáint d'fhéadfadh a bheith leis an seoladh sin, sin a labhairt, x, agus athrú ar líon ann, tiomáint ansin chuig an seoladh y, athrú ar líon ann, fiú cé nach bhfuil ag fáil i ndáiríre cóipeanna de na luachanna féin, mar sin cé go labhair muid faoi seo mar chuimhne is mó ar agus an babhtála mar a chuimhne ar an chumhachtach agus an chuid contúirteacha de C Is é gur féidir le haon fheidhm teagmháil cuimhne áit ar bith sa ríomhaire, agus tá sé seo cumhachtach i gur féidir leat a dhéanamh rudaí an-mhaisiúil le cláir ríomhaireachta i C. Tá sé seo contúirteach mar is féidir leat scriú freisin an-éasca. Go deimhin, ar cheann de na bealaí is coitianta do chláir na laethanta a shaothrú fós nach bhfuil ar Ríomhchláraitheoir a bhaint amach go bhfuil sé nó sí ligean sonraí a bheith scríofa i suíomh i gcuimhne nach raibh sé i gceist. Mar shampla, Dearbhaíonn sé nó sí le sraith de mhéid 10 ach iarracht ansin thaisme a chur ar 11 bytes isteach sraith de chuimhne, agus a thosaíonn tú ag touching codanna de chuimhne nach bhfuil bailí a thuilleadh. Just a comhthéacsúla seo, d'fhéadfadh roinnt de fhios agat go bogearraí leideanna minic tú do sraithuimhreacha nó eochracha clárúcháin, Photoshop agus Word agus cláir mar seo. Tá scoilteanna ann, mar atá a fhios roinnt de tú, líne áit ar féidir leat a rith le clár beag, agus voila, aon iarraidh níos mó le haghaidh sraithuimhir. Cén chaoi a bhfuil ag obair? In a lán cásanna tá na rudaí a aimsiú ach i ríomhairí deighleáin téacs sa ríomhaire nialais agus cinn iarbhír i gcás gur feidhm ina bhfuil an líon sraitheach a iarrtar, agus tú scríobh an spás, nó cé go bhfuil an clár ag rith Is féidir leat an figiúr amach cén áit a bhfuil an eochair a stóráil i ndáiríre ag baint úsáide as rud ar a dtugtar a dífhabhtóir, agus is féidir leat a crack bogearraí sin ar bhealach. Ní hé seo a rá go bhfuil sé seo ár gcuspóir chun an lánúin eile den lá, ach tá sé an-fíor-domhan ramifications. Sin a tharlaíonn amháin chun páirt a goid bogearraí, ach níl freisin comhréiteach de mheaisíní ar fad. Go deimhin, nuair a láithreáin ghréasáin na laethanta seo a shaothrú agus isteach agus sonraí atá leaked agus focal faire a goideadh baineann sé seo go minic chun bhainistíocht lag de do chuimhne, nó, i gcás bunachar sonraí, teip a réamh-mheas ionchur sáraíochta, mar sin níos mó ar sin sna seachtainí atá le teacht, ach do anois ach réamhamharc sneak de an saghas damáiste gur féidir leat a dhéanamh más rud é nach thuiscint go leor conas a oibríonn rudaí thíos an cochall. A ligean ar dul faoi thuiscint cén fáth go bhfuil sé seo briste le uirlis a bheith níos mó agus níos úsáidí mar a fháil ar ár gcláir níos casta. Go dtí seo nuair atá tú go raibh fabht i do chlár conas a bhfuil siad imithe tú faoi debugging é? Cad do teicnící a bhí go dtí seo, cibé acu múinte ag do TF nó díreach féin-mhúinte? [Mac Léinn] printf. Printf, mar sin tá printf is dócha do chara i go más mian leat a fheiceáil cad atá ar siúl taobh istigh de do chlár chuir tú díreach printf anseo, printf anseo, printf anseo. Ansin leat a rith sé, agus a fhaigheann tú a bunch iomlán de stuif ar an scáileán gur féidir leat úsáid a rianú ansin cad atá ar siúl i ndáiríre mícheart i do chlár. Printf claonadh a bheith ina rud an-chumhachtach, ach tá sé le próiseas an-láimhe. Tá tú a chur printf anseo, anseo printf, agus má chuir tú é taobh istigh de lúb dtiocfadh leat a fháil 100 lines d'aschur go bhfuil tú ansin a scagadh tríd. Níl sé meicníocht an-éasca le húsáid nó idirghníomhach do chláir debugging, ach buíochas le Dia ann roghanna eile. Níl clár, mar shampla, ar a dtugtar GDB, an Debugger GNU, atá ina arcane beag conas a úsáideann tú é. Tá sé casta beag, ach frankly, Tá sé seo ar cheann de na rudaí ina má chuir tú i an tseachtain seo agus seo chugainn an uair an chloig breise chun tuiscint a fháil rud éigin cosúil le GDB beidh sé a shábháil tú is dócha na mílte agus na n-uaireanta san fhadtréimhse, amhlaidh leis sin, lig dom a thabhairt duit teaser ar conas a oibríonn an rud. Tá mé i mo fhuinneog teirminéil. Lig dom dul ar aghaidh agus an clár seo, buggy3 thiomsú. Tá sé cheana féin suas chun dáta. Lig dom a rith sé díreach mar a rinne muid ar ais tamaill, agus go deimhin, tá sé briste. Ach é sin an fáth é seo? B'fhéidir go screwed mé suas an fheidhm babhtála. B'fhéidir go bhfuil sé a agus b. Níl mé ag bogadh go leor acu timpeall i gceart. Lig dom dul ar aghaidh agus é seo a dhéanamh. Seachas reáchtáil díreach buggy3 in iúl dom a reáchtáil ina ionad sin an GDB clár, agus tá mé ag dul a insint dó a rith buggy3, agus tá mé ag dul a chur san áireamh argóint ar an líne ordaithe,-TUI, agus beidh muid a chur i fadhbanna sa todhchaí ag spec a chur i gcuimhne. Agus anois popped an comhéadan dubh agus bán suas go, arís, Is beag mór ar dtús mar níl seo go léir faisnéis bharántas síos anseo, ach ar a laghad a bhfuil rud éigin ar an eolas. I barr na fuinneoige é mo cód iarbhír, agus má scrollbharra mé suas anseo a ligean scrollú dom go dtí an barr an-an mo chomhad, agus go deimhin, níl buggy3.c, agus fógra ag bun an fhuinneog seo Tá mé an pras GDB. Ní hé seo an rud céanna le mo ghnáth-John Harvard go pras. Is é seo an pras go dul ar a ligean dom a rialú GDB. Is GDB a dífhabhtóir. Tá dífhabhtóir clár a ligeann duit siúl tríd i gcrích do líne clár líne ar líne, feadh na slí ag déanamh aon rud is mian leat leis an gclár, fiú feidhmeanna a iarraidh, nó ag lorg, níos tábhachtaí fós, ag athróg éagsúla luachanna. Lig dul ar aghaidh agus é seo a dhéanamh. Tá mé ag dul chun dul ar aghaidh agus cineál i rith ag pras GDB, an mar sin faoi deara ag bun na láimhe clé den scáileán mé chlóscríobh rith, agus tá mé bhuail isteach, agus cad a rinne a dhéanamh? Rith sé literally mo chlár, ach ní fhaca mé i ndáiríre i bhfad dul ar anseo toisc nach bhfuil mé in iúl i ndáiríre an dífhabhtóir chun sos ag am ar leith in am. Just a chlóscríobh reáchtáil ritheann an chláir. Ní féidir liom a fheiceáil i ndáiríre rud ar bith. Ní féidir liom ionramháil. Ina áit sin lig dom an. Ag an pras GDB in iúl dom a cineál ionad sos, dul isteach. Ní sin cad atá i gceist agam de réir cineáil. A ligean ar ionad cineál sos is mó. I bhfocail eile, ba mhaith liom a shocrú rud ar a dtugtar a brisphointe, a bhfuil ainmnithe aptly mar go mbeidh sé sos nó sos i gcrích do chlár ag an áit áirithe. Is é Príomh-an t-ainm na feidhme atá agam. Fógra go bhfuil GDB go leor cliste. Figured sé amach go dtarlaíonn is mó chun tús a chur thart ar líne 18 de buggy3.c, agus fógra ansin anseo ag barr ar clé b + Is ceart in aice le líne 18. Sin i gcuimhne dom go bhfuil mé a shocrú le brisphointe ag líne 18. An uair seo nuair a chlóscríobh mé rith, tá mé ag dul a rith mo chlár suas go dtí amas sé go brisphointe, mar sin beidh an clár sos dom ag líne 18. Anseo théann muid, rith. Ní dhéanfaidh aon ní cosúil gur tharla, ach fógra ag bun na láimhe clé clár ag tosú, buggy3, brisphointe 1 i is mó ar líne buggy3.c 18. Cad is féidir liom a dhéanamh anois? Fógra féidir liom tosú ag clóscríobh rudaí cosúil le cló, Ní printf, x cló, agus anois go aisteach. An $ 1 Is ach fiosracht, mar beidh orainn a fheiceáil gach uair a phriontáil duit rud éigin a fhaigheann tú nua $ luach. Sin ionas gur féidir leat a tharchur ar ais chuig luachanna roimhe seo ar eagla na heagla, ach do anois cad a phriontáil é ag insint dom go bhfuil an luach ar x ag an bpointe seo sa scéal Is cosúil 134,514,032. Cad é? I gcás ina raibh a thagann fiú ó? [Inaudible-mac léinn] Go deimhin, tá an scéal seo beidh muid ag glaoch luach truflais, agus ní againn Labhair faoi seo go fóill, ach ar an gcúis go bhfuil tú athróg a thúsú Is léir mar sin go bhfuil siad roinnt luach gur mhaith leat iad a bheith acu. Ach tá an ghabháil cuimhne gur féidir leat athróg a dhearbhú mar a rinne mé nóiméad ó shin i mo sampla sigme gan iarbhír a thabhairt dóibh luach. Glaoch ar ais cad a rinne mé thar anseo i sigme. Dhearbhú mé n, ach cad a luach raibh mé a thabhairt dó? Níl, mar a fhios agam gur i línte romhainn Ba mhaith GetInt cúram a ghlacadh ar an bhfadhb a chur ar luach taobh istigh de n. Ach ag an bpointe seo sa scéal ar líne 11 12 líne agus agus líne 13 agus líne 14 Is ar fud na línte éagsúla cad é an luach n? I C tú ní hamháin bhfuil a fhios. Tá sé go ginearálta ar roinnt luach truflais, le huimhir éigin go hiomlán randamach go fágtha thar bunúsach ó roinnt fheidhm roimhe seo a bheith ar siúl, mar sin ritheann do chlár cuimhne go bhfaigheann fheidhm fheidhm, feidhm, feidhm. Gach na frámaí a fháil a chur ar chuimhne, agus ansin iad siúd ar ais feidhmeanna, agus díreach mar a mhol mé leis an scriosán bhfuil a n-cuimhne athúsáid deireadh thiar. Bhuel, a tharlaíonn sé ach ionas go mbeidh an x ​​athróg sa chlár seo cosúil go bhfuil fáil ar roinnt luach truflais mhaith 134514032 ó roinnt fheidhm roimhe seo, ní amháin gur scríobh mé. D'fhéadfadh sé a bheith rud a thagann go héifeachtach leis an gcóras oibriúcháin, roinnt feidhm thíos an cochall. Maith go leor, tá go maith, ach ligean ar anois roimh ré leis an chéad líne eile. Má mé cineál "eile" ar mo GDB pras agus bhuail mé isteach, faoi ​​deara go mbogann an béim síos go dtí líne 19, ach tá an impleacht loighciúil an líne 18 Tá críochnaithe anois forghníomhaitheach, mar sin má mé cineál arís "cló x" Ba chóir dom a fheiceáil anois 1, agus go deimhin, is féidir liom. Arís, tá an stuif $ bhealach GDB i gcuimhne duit cad iad na staire de phriontaí go atá déanta agat. Anois, lig dom dul ar aghaidh agus a phriontáil y amach, agus go deimhin, tá roinnt luach y mire chomh maith, ach gan aon déileáil go mór mar gheall ar aon dul 19 tá muid ar tí é a shannadh dó an luach 2, in iúl dom cineál "eile" arís. Agus anois tá muid ar an líne printf. Lig dom a dhéanamh x phriontáil. Lig dom a dhéanamh y phriontáil. Frankly, tá mé ag dul a tuirseach beag clódóireachta seo. Lig dom cineál ionad "x taispeáint" agus "taispeáint y," agus anois gach uair a chlóscríobh mé i gceannas ar an todhchaí Beidh mé i gcuimhne ar cad x agus y, cad x agus y, cad x agus y. I Is féidir freisin, mar chineál leataobh, i "muintir na háite info." Is Eolas ordú speisialta. Muintir na háite ciallaíonn Léiríonn sé dom ar na hathróga áitiúil. Díreach i gcás mé dearmad nó is dÚsachtach, feidhm casta gur scríobh mé nó duine éigin eile a bheidh muintir na háite info insint duit cad iad na hathróga áitiúil taobh istigh an fheidhm áitiúil go mb'fhéidir go mbeadh tú cúram faoi más mian leat a poke timpeall. Anois, tá printf ar tí é a fhorghníomhú, agus mar sin in iúl dom dul ar aghaidh agus ach cineál "seo chugainn." Toisc go bhfuil muid sa timpeallacht seo nach bhfuil muid ag feiceáil i ndáiríre é fhorghníomhú síos anseo, ach faoi deara é a fháil beag coscartha anseo. Ach faoi deara é a sáraitheach an scáileán ann, mar sin ní tá sé ina clár iontach anseo, ach sin ceart go leor toisc nach féidir liom a poke i gcónaí ar fud ag baint úsáide as cló más mian liom. Lig dom cineál seo chugainn arís, agus anois tá anseo an chuid suimiúil. Ag an bpointe seo sa scéal é y 2, agus x 1, mar a mhol anseo, agus arís, Is é an chúis seo a thaispeánann go huathoibríoch anois mar gheall ar úsáid mé an t-ordú taispeáint x agus taispeáint y, mar sin i láthair na huaire cineál an chéad chéim eile Ba chóir go teoiriciúil x agus y bheith swapped. Anois, tá a fhios againn cheana féin ní ar sin ag dul a bheith ar an gcás, ach beidh orainn a fheiceáil i láthair conas is féidir linn Léim níos doimhne chun an figiúr amach cén fáth go bhfuil fíor. Next, agus ar an drochuair, tá y fós 2 agus x fós 1, agus is féidir liom a dhearbhú oiread. Priontáil x, cló y. Go deimhin, níl aon swapping a tharla i ndáiríre, mar sin a ligean tús a chur leis os a chionn. Is léir go bhfuil babhtála briste. A ligean ar chineál in ionad "rith" arís. Lig dom a rá yes, ba mhaith liom a atosú ón tús, dul isteach. Anois tá mé ar ais suas ar líne 18. Anois, fógra x agus y Is iad na luachanna truflais arís. Next, seo chugainn, seo chugainn, seo chugainn. Má rachaidh mé leamh féidir liom freisin cineál ach n = chugainn. Is féidir leat é a abbreviate leis an t-ord is giorra is féidir de charachtair. Babhtáil briste anois. A ligean ar Léim i, mar sin in ionad clóscríobh seo chugainn, anois tá mé ag dul céim le cineál ionas go mbeidh mé ag stepping taobh istigh den fheidhm ionas gur féidir liom siúl tríd é, mar sin bhuail mé céim agus ansin dul isteach. Fógra go bhfuil na jumps béim níos ísle síos i mo chlár go dtí an líne 36. Anois, cad iad na hathróga áitiúil? Muintir na háite Info. Ní dhéanfaidh aon ní ach go fóill toisc nach tá muid gotten leis an líne, mar sin a ligean le dul ar aghaidh agus a rá "seo chugainn." Anois, is cosúil go bhfuil tmp tmp cló,. Luach Dramhaíl, ceart? I mo thuairimse, mar sin. Conas a phriontáil faoi, cló b, 1 agus 2? I láthair na huaire, a luaithe is mé cineál seo chugainn arís tmp ag dul a ghlacadh ar luach 1, táthar ag súil, toisc go bhfuil tmp ag dul a bheith sannta an luach. Anois, a ligean a dhéanann a phriontáil, a phriontáil b, ach a phriontáil anois tmp, agus tá sé go deimhin 1. Lig dom a dhéanamh amach romhainn. Lig dom a dhéanamh amach romhainn. Tá mé críochnaithe an fheidhm babhtála. Tá mé fós taobh istigh de sé ag teacht 40, in iúl dom a phriontáil, Ní cló b, agus liom cúram cad is tmp. Breathnaíonn sé cosúil go bhfuil babhtála ceart nuair a thagann sé swapping a b agus. Ach má tá mé cineál anois chugainn, léim mé ar ais go dtí an líne 25, agus, ar ndóigh, más rud é cineál mé in x agus y cló tá siad fós gan athrú, mar sin ní mór dúinn a shocrú ar an bhfadhb. Ach diagnostically b'fhéidir anois leis an gclár GDB againn ar a laghad gotten céim amháin níos gaire do thuiscint cad atá ar siúl mícheart gan a bheith a bruscar ár gcód trí chur printf anseo, printf anseo, printf anseo agus ansin rith sé arís agus arís iarraidh a dhéanamh amach cad atá ar siúl mícheart. Tá mé ag dul chun dul ar aghaidh agus éirí as an tobac amach as an fad le scor. Tá sé seo ag dul a rá ansin, "Scoir mar sin féin?" Tá. Anois, tá mé ar ais ar mo pras gnáth, agus mé ag déanamh úsáid a bhaint as GDB. Mar leataobh, ní gá duit seo a úsáid-TUI bhratach. Go deimhin, má fhágáil ar lár tú é a gheobhaidh tú go bunúsach ar an leath bun an scáileáin. Má tá mé cineál ansin sos is mó agus ansin rith Féidir liom a reáchtáil go fóill mo chlár, ach cad a bheidh sé a dhéanamh níos mó textually ach a thaispeáint dom an líne amháin atá ann faoi láthair ag an am. Tá an TUI-, comhéadan úsáideora téacsúil, ach léiríonn tú níos mó ar an gclár ag an am céanna, is dócha beagán níos éasca choincheapa. Ach go deimhin, is féidir liom a dhéanamh ach seo chugainn, seo chugainn, seo chugainn, agus tá mé ag dul a fheiceáil ar líne amháin ag an am, agus más mian liom a fheiceáil cad atá ar siúl Is féidir liom cineál liosta agus a bunch iomlán de línte comharsanachta a fheiceáil. Níl físeán go atá againn d'iarr go bhfuil tú ag breathnú ar Leagann fhadhb 3 in a chlúdaíonn Nate roinnt de na intricacies GDB, agus tá sé seo ar cheann de na rudaí sin, go hionraic, i gcás roinnt céatadán neamh-fánach de tú ní bheidh teagmháil GDB, agus a bheidh droch-rud mar literally beidh tú deireadh suas caitheamh níos mó ama níos déanaí seimeastar chasing síos bugs ansin bheadh ​​agat má chuir tú i go leath uair an chloig / uair an chloig an tseachtain seo chugainn agus foghlaim a fháil compordach le GDB. Printf bhí do chara. Ba chóir go GDB a bheith anois do chara. Ceisteanna ar bith ar GDB? Agus anseo liosta tapa ar roinnt de na horduithe is cumhachtaí agus úsáideach. Yeah féidir. >> Leat a phriontáil ar shraith? An féidir leat a phriontáil ar shraith? Cinnte. Ní chuireann sé a bheith díreach slánuimhreacha. Má tá s athraitheach teaghrán ach cineál i s gcló. Beidh sé a thaispeáint duit cad é go bhfuil athróg teaghrán. [Inaudible-mac léinn] Beidh sé a thabhairt duit an seoladh agus an teaghrán féin. Beidh sé a thaispeáint duit an dá cheann. Agus rud amháin anuas, ach toisc go bhfuil na maith a fhios freisin. Cúl-lorg agus fráma, lig dom a Léim isteach an am seo ceann deireanach, clár cruinn céanna le GDB. Lig dom dul ar aghaidh agus an leagan comhéadan úsáideora téacsach rith, briseadh is mó. Lig dom dul ar aghaidh agus a reáchtáil arís. Anseo mé. Anois, lig dom dul amach romhainn, seo chugainn, seo chugainn, seo chugainn, seo chugainn, céim, dul isteach. Agus is dócha anois tá mé anois i babhtála d'aon ghnó, ach tá mé ar nós "Diabhal, cad a bhí an luach x?" Ní féidir liom a dhéanamh x níos mó. Ní féidir liom a dhéanamh y toisc nach bhfuil siad i raon feidhme. Nach bhfuil siad i gcomhthéacs, ach gan aon fhadhb. Is féidir liom cineál cúl-lorg. Go léiríonn dom go léir de na feidhmeanna a fhorghníomhú suas go dtí an bpointe seo in am. Fógra go bhfuil an ceann ar an mbun, is mó, línte suas le príomh- a bheith ar bun ár pictiúr anseo. An fíoras go bhfuil babhtála os a chionn línte suas le babhtáil a bheith os a chionn i gcuimhne anseo, agus más mian liom a fháil ar ais go dtí príomh sealadach féidir liom a rá "fráma". Cén uimhir? Is é Príomh fráma # 1. Tá mé ag dul chun dul ar aghaidh agus a rá "fráma 1." Anois, tá mé ar ais i is mó, agus is féidir liom a phriontáil x, agus is féidir liom a phriontáil y, ach ní féidir liom a phriontáil b nó. Ach is féidir liom a rá má mé, "Maith go leor, fan nóiméad. Nuair a bhí an babhtála?" Lig dom dul ar aghaidh agus a rá "fráma 0." Anois tá mé ar ais áit ar mhaith liom a bheith, agus mar chur ar ceal, níl orduithe eile freisin, cosúil le más rud é go bhfuil tú ag fáil i ndáiríre clóscríobh leamh seo chugainn, seo chugainn, seo chugainn, seo chugainn, féidir leat a rá go ginearálta rudaí ar nós "10 seo chugainn," agus go mbeidh céim tríd an 10 línte seo chugainn. Is féidir leat scríobh freisin "ar aghaidh" nuair tú bréan i ndáiríre suas leis stepping tríd. Leanfaidh sé ar aghaidh á reáchtáil do chlár gan staonadh, go dtí amas sé eile brisphointe, cibé acu i lúb nó níos ísle síos i do chlár. Sa chás seo leanamar ag an deireadh, agus an clár sendmail de ghnáth. Is é seo ar bhealach sainiúil, próiseas inferior. Just a sendmail do chlár de ghnáth. Níos mó ar an sa físeán agus i seisiúin debugging atá le teacht. Ba é sin go leor. A ligean ar chur ar ár 5 nóiméad sos anseo, agus beidh orainn ar ais le structs agus comhaid. Má tá tú dived isteach na seachtaine seo pset cheana beidh a fhios agat go n-úsáideann muid sa chód dáilte, an fhoinse cód a chuirimid ar fáil duit mar phointe tosaigh, roinnt teicníochtaí nua. Go háirithe, thugamar isteach an eochairfhocal nua ar a dtugtar struct, do struchtúr, ionas gur féidir linn a chruthú athróg saincheaptha de shaghas. Isteach againn chomh maith ar an nóisean de ionchur comhad comhad I / O, agus aschur, agus tá sé seo ionas gur féidir linn a shábháil ar staid de do bhord Scramble le comhad ar dhiosca ionas gur féidir na comhaltaí teagaisc agus tuigim cad atá ar siúl taobh istigh de do chlár gan a bheith a imirt láimh mórán de na cluichí Scramble. Is féidir linn é seo níos automatedly. Réitíonn an smaoineamh struct fadhb cothrom láidre. Má ghlactar leis go ba mhaith linn a chur i bhfeidhm roinnt clár go gcoinníonn bhealach rian eolais ar mhic léinn, agus a d'fhéadfadh mic léinn a bheith acu, mar shampla, ar ID, ainm agus teach in áit cosúil le Harvard, mar sin tá na 3 phíosa eolais ba mhaith linn a choinneáil thart, in iúl dom dul ar aghaidh agus tús a scríobh le clár beag anseo, I measc stdio.h. Lig dom a áireamh cs50.h. Agus ansin tosú mé ag feidhmiú is mó. Ní bheidh mé bodhraigh le haon argóintí, agus anseo Ba mhaith liom go mbeadh mac léinn, mar sin mé ag dul a rá Tá mac léinn ainm, mar sin mé ag dul a rá "ainm teaghrán." Ansin mé ag dul a rá le mac léinn chomh maith, le ID, id sin int, agus tá mac léinn teach, mar sin tá mé ag dul freisin a rá "teach teaghrán." Ansin, beidh mé a ordú na beag níos cleanly mar seo. Maith go leor, anois tá mé 3 athróg lena chun ionadaíocht a dhéanamh ar mhac léinn, agus mar sin "mac léinn". Agus anois ba mhaith liom a phobalú na luachanna, in iúl dom dul ar aghaidh agus a rá rud éigin cosúil le "Id = 123." Ainm bhfuil ag dul a fháil David. Ligean le rá teach ag dul a fháil Mather, agus ansin tá mé ag dul rud éigin a dhéanamh treallach cosúil le printf ("% s, a bhfuil ID tá% d, ina cónaí i% s. Agus anois, cad ba mhaith liom a breiseán i anseo, i ndiaidh a chéile? Ainm, id, teach; ais 0. Maith go leor, ach amháin má screwed mé suas áit éigin anseo I mo thuairimse, ní mór dúinn clár maith go leor go siopaí mac léinn amháin. Ar ndóigh, nach é seo go léir go suimiúil. Cad a tharlaíonn má ba mhaith liom a bheith 2 mic léinn? Sin aon déileáil mór. Is féidir liom tacaíocht a thabhairt 2 daoine. Lig dom dul ar aghaidh agus an aird a tharraingt ar dul síos anseo, agus is féidir liom a rá "id = 456" do dhuine cosúil le Rob atá ina chónaí i Kirkland. Maith go leor, go fóill, ach ní féidir liom glaoch ar na an rud céanna, agus tá sé cosúil Tá mé ag dul go bhfuil a chóipeáil seo, mar sin lig dom a rá go mbeidh siad seo athróg David, agus lig dom a fháil ar roinnt cóipeanna de na do Rob. Beidh muid glaoch ar na s Rob ach nach bhfuil sé seo ag dul ag obair anois mar gheall mé-fanacht, a ligean ar dom a athrú go id1, name1 agus house1. Beidh Rob 2, 2. Tá mé a athrú seo anseo, anseo, anseo, anseo, anseo, anseo. Fan, cad faoi Tommy? A ligean ar é seo a dhéanamh arís. Ndóigh, má cheapann tú go fóill é seo ar bhealach maith é seo a dhéanamh, nach bhfuil sé, sin a chóipeáil / greamaigh dona. Ach a réiteach againn seo in aghaidh na seachtaine ó shin. Cad a bhí ár réiteach nuair a bhíomar ag iarraidh a bheith cásanna iolracha den chineál céanna sonraí? [Mic Léinn] An eagar. Eagar, in iúl dom iarracht a ghlanadh suas seo. Lig dom a dhéanamh ar roinnt seomra le haghaidh féin ag an mbarr, agus lig dom in ionad an anseo. Beidh muid glaoch na daoine, agus ina ionad sin mé ag dul a rá "ids o," agus tá mé ag dul chun tacú le 3 den linn le haghaidh anois. Tá mé ag dul a rá "ainmneacha teaghrán," agus beidh tacaíocht 3 de dúinn mé, agus ansin tá mé ag dul a rá "tithe téad," agus mé ag dul chun tacú le 3 de dúinn. Anois i anseo in ionad David ag fáil a n-athróg áitiúil féin is féidir linn a fháil haitheantas coibhneasta de na. Go mothaíonn maith go bhfuil muid ag glanadh suas seo. Is féidir liom a rá ansin David ag dul a bheith [0] agus ainmneacha [0] agus tithe [0]. Agus Rob ansin is féidir linn a shábháil céanna ar seo. A ligean ar seo a chur anseo síos, agus mar sin tá sé ag dul a bheith treallach ids [1]. Tá sé ag dul a bheith ainmneacha [1], agus ansin ar deireadh, tithe [1]. Fós a tedious beag, agus anois tá mé a figiúr seo amach, mar sin a ligean le rá "ainmneacha [0], id [0], tithe [0], agus a ligean ar pluralize seo. Ids, ids, ids. Agus arís, tá mé a dhéanamh air, agus mar sin arís, tá mé ag dul cheana féin a chóipeáil / greamaigh arís, mar sin tá odds níl réiteach eile anseo. Is féidir liom a ghlanadh seo is dócha suas a thuilleadh le lúb nó rud éigin mar sin, sin i mbeagán focal, tá sé ina beagán níos fearr ach fós mothaíonn mhaith Tá mé ag dul a chóipeáil / greamaigh, ach fiú sin, éileamh mé, nach bhfuil i ndáiríre go bunúsach an réiteach ceart mar gheall ar cad más rud é am éigin cinneadh a dhéanamh linn a fhios agat cad é? Táimid Ba chóir a bheith i ndáiríre a stóráil seoltaí ríomhphoist do David agus Rob agus gach duine eile sa chlár seo. Ba cheart dúinn a stóráil freisin uimhreacha teileafóin. Ba cheart dúinn a stóráil freisin uimhreacha teagmhála éigeandála. Tá gach na píosaí de shonraí a ba mhaith linn a stóráil, mar sin conas a dhéanann tú dul faoi á dhéanamh sin? Dearbhaím eile agat eagar ag an mbarr, agus ansin cuir tú de láimh seoladh ríomhphoist [0], seoladh ríomhphoist [1] do David agus Rob agus mar sin de. Ach níl i ndáiríre ach ag glacadh taobh thiar den dearadh go bhfuil mé ag baint úsáide as an gcóras onóir a fhios go [I] i ngach ceann de na arrays roinnt ach a tharlaíonn sin a tharchur chuig an duine céanna, mar sin [0] i ids uimhir 123, agus tá mé ag dul chun glacadh leis go ainmneacha [0] Is é an duine céanna a ainm agus tithe [0] Is é an duine céanna ar theach agus mar sin de do gach ceann de na arrays éagsúla go bhfuil mé a chruthú. Ach faoi deara go níl aon nasc bunúsach i measc iad siúd 3 phíosa eolais, ainm id, agus teach, cé nach bhfuil an t-eintiteas táimid ag iarraidh a samhail sa chlár seo arrays. Tá arrays ach an mbealach seo cláir seo a dhéanamh. Cad é ba mhaith linn i ndáiríre a mhúnlú i ár gclár duine cosúil le David, duine cosúil Rob taobh istigh de nó imchochlú ainm agus ID agus teach. An féidir linn in iúl ar bhealach an smaoineamh seo de chineál trína bhfuil leas ag duine ID, ainm agus teach agus nach dul ar iontaoibh i ndáiríre seo a hack trína againn ach muinín go bhfuil rud éigin scriosaidh Tagraíonn an t-eintiteas céanna an duine i ngach ceann de na arrays difriúla? Is féidir linn a dhéanamh i ndáiríre seo. Lig dom dul thuas is mó le haghaidh anois, agus lig dom a chruthú mo chuid féin sonraí de chineál do i ndáiríre an chéad uair. Úsáid againn an teicníc i Scramble, ach anseo tá mé ag dul chun dul ar aghaidh agus i ndáil le cineál sonraí a chruthú, agus tá a fhios agat cad, tá mé ag dul a ghlaoch air mac léinn nó an duine, agus tá mé ag dul a úsáid Rialú an chomhbheartais eachtraigh i ndáil le cineál. Tá mé ag dul a rá go bhfuil an struchtúr, agus tá sé ansin an struchtúr seo ag dul a bheith de chineál mac léinn, beidh orainn a rá, cé tá sé ina beagán dar dáta anois le haghaidh dom. Beidh muid a rá "slánuimhir id." Beidh muid a rá "ainm teaghrán." Ansin, beidh muid ag rá "teaghrán teach," mar sin anois faoi dheireadh na cúpla líne de chód Tá mé díreach tar éis a mhúintear clang go bhfuil ann i ndáil le cineál sonraí a seachas ints, seachas teaghráin, doubles sa bhreis, sa bhreis ar flótaí. Mar an nóiméad seo i 11 líne ama, tá anois sonraí nua ar a dtugtar chineál mic léinn, agus anois is féidir liom a dhearbhú go bhfuil athróg mac léinn áit ar bith ba mhaith liom, sin in iúl dom scrollú síos anseo do dhaoine. Anois is féidir liom a fháil haitheantas coibhneasta de sin, agus is féidir liom dul ar ais síos go dtí David anseo, agus le haghaidh David féidir liom a rá i ndáiríre go David, is féidir linn a ainm literally an athróg tar éis mé féin, ag dul a bheith de chineál mac léinn. D'fhéadfadh sé seo cuma aisteach beag, ach nach bhfuil sé seo go léir difriúil ó dhearbhú rud éigin mar slánuimhir nó ar theaghrán nó snámhphointe. Tharlaíonn sé ach ionas go bheith ar a dtugtar mac léinn anois, agus más mian liom rud éigin a chur taobh istigh an struchtúir seo Tá mé anois úsáid a bhaint as píosa nua chomhréir, ach tá sé deas simplí, david.id = 123, david.name = "David" i gcaipiteal D, agus david.house = "Mather," agus anois is féidir liom a fháil haitheantas coibhneasta de stuif seo anseo. Fógra againn athdhearadh anois ar ár gclár ar bhealach i ndáiríre i bhfad níos fearr sa mhéid is go scátháin anois ar ár gclár ar an saol fíor. Níl coincheap fíor-domhan ag duine nó mac léinn. Anseo atá againn anois ar leagan C den duine nó níos mó go sonrach mac léinn. Inside an duine sin go bhfuil na saintréithe ábhartha, ID, ainm agus teach, mar sin bíonn Rob go bunúsach an rud céanna síos anseo, mar sin mac léinn Rob, agus anois rob.id = 456, rob.name = "Rob". Is é an fíric go bhfuil an athróg ar a dtugtar Rob saghas meaningless. D'fhéadfadh muid a d'iarr sé ar x nó y nó z. Ainmnithe againn ach Rob é a bheith semantically comhsheasmhach, ach tá i ndáiríre an t-ainm taobh istigh de réimse sin féin, mar sin anois tá mé é seo. Sé seo nach bhfuil ró-bhraitheann cosúil leis an dearadh is fearr sa mhéid is go bhfuil mé códaithe crua David. Tá mé códaithe crua Rob. Agus tá mé fós dul i muinín roinnt cóip agus gach uair is mian liom athróg nua a ghreamú. Thairis sin, tá mé a thabhairt cosúil gach ceann de na hathróga a ainm, cé gur mhaith liom i bhfad in áit cur síos ar na hathróga  níos mó mac léinn cineálach mar. Anois is féidir linn a chumasc na smaointe a bhí ag obair go maith dúinn agus a rá ina ionad sin, "Tá a fhios agat cad, a thabhairt dom mic léinn athróg ar a dtugtar, agus a ligean ar a bheith sé a bheith de mhéid 3, "mar sin anois is féidir liom a fheabhsú a thuilleadh, fáil réidh leis an David láimh dearbhaithe, agus is féidir liom a rá in ionad rud éigin cosúil le mic léinn [0] anseo. Féidir liom a rá ansin mic léinn [0] anseo, féidir le mic léinn [0] anseo, agus mar sin de, agus mé dul timpeall agus glan go raibh suas le Rob. Raibh mé in ann dul chomh maith mar gheall anois ag cur b'fhéidir lúb agus ag baint úsáide GetString agus GetInt a fháil ar iarbhír na luachanna ón úsáideoir. Raibh mé in ann dul faoi chur tairiseach mar is é seo go ginearálta droch-chleachtas chun cód crua le huimhir éigin treallach cosúil le 3 ar dheis anseo agus ansin cuimhnigh go díreach gur chóir duit a chur ar níos mó ná 3 mac léinn ann. Bheadh ​​sé níos fearr is dócha a úsáid # shainmhíniú ar bharr mo chomhad agus fachtóir go amach, mar sin go deimhin, lig dom dul ar aghaidh agus a ghinearálú. Lig dom a oscailt suas sampla go bhfuil i measc an lae inniu samplaí roimh ré, structs1. Is clár níos iomláine a úsáideann # shainmhíniú suas anseo agus deir táimid ag dul a bheith acu 3 mac léinn de réir réamhshocraithe. Anseo tá mé á dhearbhú fiú ranga na mac léinn, mar sin sa seomra ranga na mac léinn, agus anois tá mé ag baint úsáide as lúb ach a dhéanamh ar an gcód beagán níos galánta, populate an rang leis an úsáideora ionchur, abair leo sin as i = 0 ar suas do mhic léinn, a bhfuil 3. Agus ansin mé pras an t-úsáideoir sa leagan seo  cad é an mac léinn ID, agus a fháil liom é le GetInt. Cad é an mhic léinn ainm, agus ansin mé é a fháil le GetString. Cad é an mhic léinn teach? A fháil liom é le GetString. Agus ansin ag bun anseo chinn mé díreach tar éis a athrú conas a bhfuil mé ag priontáil na amach agus úsáid a bhaint as i ndáiríre lúb, agus a táim priontáil mé? Dar leis an comment mé priontáil duine ar bith i Mather, agus tá go bhfuil sé sin Rob agus Tommy agus mar sin de-i ndáiríre Tommy i Mather. Ba mhaith Tommy agus David a phriontáil sa chás seo, ach conas é seo ag obair? Nach bhfuil feicthe againn an fheidhm seo sula, ach a ghlacadh le buille faoi thuairim maidir le cad a dhéanann seo. Teaghráin i gcomparáid. Tá sé beagán neamh-soiléir conas i gcomparáid teaghráin mar casadh sé amach má fhilleann sé 0 chiallaíonn go bhfuil an teaghráin comhionann. Má fhilleann sé -1 Ciallaíonn sé sin go dtagann ceann ord aibítre roimh an taobh eile, agus tagann má fhilleann sé 1 go ciallaíonn an focal eile in ord aibítre os comhair an eile, agus is féidir leat breathnú ar líne nó ar an leathanach fear a fheiceáil go díreach cén bealach a bhfuil, ach seo go léir ag déanamh anois tá sé ag rá má tá an [i]. tí is comhionann leis "Mather" ansin dul ar aghaidh agus a phriontáil amach leis sin, agus mar sin tá i Mather. Ach anseo rud éigin nach bhfuil feicthe againn roimh, agus beidh muid ag teacht ar ais leis seo. Ní féidir liom a aisghlaoch riamh a bhfuil seo a dhéanamh in aon cheann de mo chlár. Saor in Aisce Tá tagairt cosúil le cuimhne, freeing chuimhne, ach cad cuimhne orm freeing mé cosúil sa lúb ag bun an chlár seo? Breathnaíonn sé cosúil Tá mé ag freeing ainm duine agus an duine teach, ach cén fáth é sin? Casadh sé amach go léir na seachtaine sin tá tú ag baint úsáide as GetString tá muid de chineál ar cuireadh isteach a bug isteach i ngach ceann de do chlár. GetString ag dearadh cuimhne leithdháileann ionas gur féidir é a chur ar ais chugat ar shraith, Is féidir cosúil le David, nó Rob, agus tú a dhéanamh ansin is cuma cad ba mhaith leat leis an téad i do chlár mar gheall ar againn in áirithe ar an gcuimhne ar do shon. Is é an fhadhb seo go léir am gach uair a ghlaonn tú GetString againn, an údair GetString, a bheith ag iarraidh ar an córas oibriúcháin a thabhairt dúinn le beagán de RAM as an teaghrán. Tabhair dúinn le beagán de RAM as an teaghrán seo chugainn. Tabhair dúinn RAM roinnt níos mó le haghaidh an teaghrán seo chugainn. Cad a dhéanfaidh tú, an Ríomhchláraitheoir riamh, ag déanamh é a thabhairt ar ais dúinn go cuimhne, mar sin do na roinnt seachtainí gach ceann de na cláir atá tú i scríbhinn go raibh rud ar a dtugtar de léim cuimhne ina choimeád siad ag baint úsáide as cuimhne níos mó agus níos mó gach uair a ghlaonn tú GetString, agus go bhfuil fíneáil. Déanann muid d'aon ghnó go sa chéad seachtain toisc nach bhfuil sé go suimiúil a bheith acu a bheith buartha faoi ina bhfuil an teaghrán ag teacht as. Gach mian leat go bhfuil an focal Rob chun teacht ar ais nuair an t-úsáideoir cineálacha sé isteach Ach ag bogadh ar aghaidh ní mór dúinn anois chun tosú ag fáil níos sofaisticiúla faoi seo. Am ar bith a dháileadh againn cuimhne againn níos fearr a lámh ar deireadh thiar ar ais. Seachas sin ar fud an domhain fíor ar do Mac nó ríomhaire a bheadh ​​agat ó am go ham taithí comharthaí áit a bhfuil do ríomhaire meilt ar deireadh ndeireadh na dála nó go bhfuil an liathróid trá dúr sníomh occupying ach an ríomhaire Ní féidir aird ar fad agus tú rudaí a dhéanamh. Is féidir sin a mhíniú trí líon ar bith de bugs, ach i measc na bugs is féidir go bhfuil rudaí ar a dtugtar leaks cuimhne ina duine éigin a scríobh go píosa bogearraí bhfuil tú ag baint úsáide as nach raibh dearmad cuimhne saor in aisce gur iarr sé nó sí ar an gcóras oibriúcháin, nach n-úsáideann GetString, toisc go bhfuil rud CS50, ach úsáid a bhaint as feidhmeanna den chineál céanna a iarraidh an córas oibriúcháin do chuimhne. Má tá tú nó scriú siad suas agus ar ais riamh i ndáiríre go bhfuil cuimhne a symptom de is féidir a bheith go slows clár slows agus agus slows síos mura cuimhin leat glaoch saor in aisce. Beidh muid teacht ar ais chuig cathain agus cén fáth go mbeadh leat glaoch saor in aisce, ach a ligean ar dul ar aghaidh ach le haghaidh dea-bheart agus iarracht a reáchtáil an clár ar leith. Bhí ar a dtugtar an structs1, dul isteach. Lig dom dul ar aghaidh agus structs1 rith, 123, David Mather, 456, Rob Kirkland, 789, Tommy Mather, agus a fheiceann muid David i Mather, Tommy i Mather. Is é seo ach seiceáil sanity beag go bhfuil an clár oibre. Anois, ar an drochuair, tá an clár beag frustrating sa mhéid is go Rinne mé go léir an obair sin, chlóscríobh mé i 9 teaghráin éagsúla, brúigh Iontráil, Dúradh a bhí i Mather, ach is léir go raibh a fhios agam a bhí i Mather cheana féin mar gheall ar chlóscríobh mé é. Bheadh ​​sé ar a laghad deas má tá an clár níos mó cosúil le bunachar sonraí agus is cuimhin sé i ndáiríre cad tá mé clóscríofa i mar sin riamh mé arís leis an ionchur na taifid mac léinn. B'fhéidir go bhfuil sé cosúil le córas registrarial. Is féidir linn é seo a baint úsáide as an teicníc ar a dtugtar mar ionchur comhad comhad I / O, agus aschur, ar bhealach an-cineálach rá aon am is mian leat comhaid a léamh nó comhaid a scríobh is féidir leat é seo a dhéanamh le sraith áirithe de feidhmeanna. Lig dom dul ar aghaidh agus an structs2.c sampla a oscailt, atá beagnach mar an gcéanna, ach ligean ar a fheiceáil cad a dhéanann sé anois. Ag barr an chomhaid Dearbhaím rang de scoláirí. I populate ansin an rang leis an úsáideoir ionchur, mar sin na línte de chód atá díreach cosúil roimh. Ansin, más scrollaigh mé síos anseo phriontáil liom gach duine atá i Mather mhaith treallach roimh, ach tá sé seo ina ghné suimiúil nua. Tá na línte cód nua, agus a thabhairt isteach siad rud éigin anseo, COMHAD, gach caipíní, agus tá sé * i anseo chomh maith. Lig dom seo a bhogadh thar anseo, a * thar anseo chomh maith. An fheidhm seo nach bhfuil feicthe againn roimh, fopen, ach ciallaíonn sé comhad a oscailt, mar sin a ligean skim trí na, agus is é an rud beidh muid ag teacht ar ais i psets amach anseo, ach osclaíonn an líne seo anseo go bunúsach comhad a dtugtar bunachar sonraí, agus osclaíonn sé go sonrach air sa chaoi is gur féidir é a dhéanamh cad é? [Inaudible-mac léinn] Ceart, mar sin "w" ciallaíonn ach tá sé ag insint an córas oibriúcháin comhad seo a oscailt sa chaoi is gur féidir liom a scríobh dó. Níl mé ag iarraidh é a léamh. Níl mé ag iarraidh chun breathnú díreach ar sé. Ba mhaith liom a athrú agus rudaí a chur d'fhéadfadh a bheith leis, agus tá an comhad ag dul a bheith ar a dtugtar bunachar sonraí. Fhéadfaí é seo a dtugtar rud ar bith. D'fhéadfadh sé seo a bheith database.txt. D'fhéadfadh sé seo. Db. D'fhéadfadh seo a bheith ina focal cosúil le foo, ach roghnaigh mé treallach a ainm ar an mbunachar sonraí comhad. Is é seo a sheiceáil sanity beag go beidh orainn teacht ar ais go dtí go mion mór le himeacht ama, más rud é FP, do pointeoir comhaid nach, NULLComment comhionann a chiallaíonn go léir atá go maith. Fada scéal gearr, feidhmeanna cosúil le fopen theipeann uaireanta. B'fhéidir nach bhfuil an comhad ann. B'fhéidir go bhfuil tú amach as an spás diosca. B'fhéidir nach bhfuil tú cead a ghabhann leis an fillteán, mar sin má fhilleann fopen rud éigin null a tharla dona. Os a choinne sin, más rud é nach fopen ar ais null go léir go maith agus is féidir liom tosú ag scríobh chuig an gcomhad seo. Seo a trick nua. Is é seo an lúb don tá iterating thar gach ceann de mo mhic léinn, agus tá sé seo amhlaidh cosúil leis an méid atá déanta againn roimh, ach tá an fheidhm seo a col ceathrar de printf ar a dtugtar fprintf le haghaidh comhaid printf, agus fógra go bhfuil sé difriúil ach i 2 bealaí. One, a thosaíonn sé le f ionad p, ach ansin a chéad argóint cosúil cad é? [Mic Léinn] File. >> Tá sé ina comhad. Seo rud ar a dtugtar FP, a beidh orainn a tease sa deireadh amach cad is pointeoir comhaid, ach do anois ionann FP ach an comhad go bhfuil mé oscail, mar sin fprintf bhfuil anseo ag rá taispeáin an t-úsáideoir ID ar an gcomhad, nach bhfuil ar an scáileán. Priontáil an úsáideora ainm an comhad, gan an scáileán, an teach chun an comhad, gan an scáileán, agus ansin síos anseo, ar ndóigh, an comhad a dhúnadh, agus ansin síos anseo saor in aisce leis an chuimhne. An difríocht amháin idir an leagan 2 agus leagan 1 Is é a thabhairt isteach fopen agus COMHAD le * agus an coincheap de fprintf, mar sin a ligean ar a fheiceáil cad é an toradh deiridh. Lig dom dul isteach i mo fhuinneog teirminéil. Lig dom a reáchtáil structs2, dul isteach. Breathnaíonn cosúil go bhfuil gach maith. A ligean ar rerun structs2. 123, David Mather, 456, Rob Kirkland, 789, Tommy Mather, dul isteach. Breathnaíonn mhaith behaved sé mar an gcéanna, ach má dhéanann mé anois LS faoi ​​deara cad comhad i anseo i measc mo cód go léir, bunachar sonraí, mar sin a ligean ar oscailt go, gedit de bhunachar sonraí, agus táim ag an. Níl sé an sexiest formáidí comhaid. Tá sé i ndáiríre píosa amháin de líne sonraí in aghaidh gach líne in aghaidh an líne, ach sin de tú a bhaineann úsáid as comhaid Excel nó CSV, le camóga luachanna scartha, Raibh mé in ann a úsáid cinnte fprintf chun ionad b'fhéidir rud éigin a dhéanamh mar seo ionas go bhféadfaí mé a chruthú i ndáiríre atá comhionann le comhad Excel trí rudaí a scaradh leis an ní camóga, ach línte nua. Sa chás seo más rud é go raibh úsáid mé in ionad camóga in ionad línte nua Raibh mé in ann a oscailt literally an comhad bunachar sonraí i Excel má rinne mé in ionad é a breathnú mar seo. I mbeagán focal, anois go bhfuil an chumhacht a scríobh chun comhaid is féidir linn tosú anois sonraí fós ann, é a choinneáil thart ar dhiosca ionas gur féidir linn faisnéis a choinneáil ar fud arís agus arís. Fógra cúpla rudaí eile atá anois le beagán níos mó ar an eolas. Ag barr an comhad seo C ní mór dúinn a Rialú an mar gheall ar bhíomar ag iarraidh a chruthú i ndáil le cineál sonraí a léiríonn focal, mar sin tá an cineál ar a dtugtar focal, agus taobh istigh den struchtúr tá sé ina beagán fancier anois. Cén fáth go bhfuil focal déanta suas de sraith cosúil le? Cad is focal amháin intuitively? Tá sé le sraith de charachtair. Tá sé sraith de charachtair droim le droim le droim. LITREACHA i ngach caipíní tharlaíonn a bheith deirimid treallach an fad is mó ar aon fhocal san fhoclóir go bhfuil muid ag baint úsáide as Scramble. Cén fáth a bhfuil mé ag 1? An carachtar nialasach. Glaoch ar ais nuair a rinne muid ar an sampla Bananagrams is gá dúinn a luach speisialta ag deireadh an fhocail d'fhonn súil a choinneáil ar an áit ina bhfuil focail dar críoch i ndáiríre, agus mar a deir an tsonraíocht atá leagtha fhadhb anseo tá muid ag chomhlachú leis an focal a thugtar ar luach Boole, bratach, mar a déarfá, fíor nó bréagach. An bhfuil fuair tú an focal cheana féin, mar gheall ar a bhaint amach againn ní mór dúinn i ndáiríre ar bhealach cuimhneamh nach bhfuil ach cad a focal i Scramble ach cibé acu atá nó nach bhfuil tú, an duine, a fuair sé ionas go má dhéanann tú teacht ar an bhfocal "an" Ní féidir leat cineál ach an, dul isteach, an, dul isteach, an, dul isteach agus a fháil ar 3 phointe, 3 pointe, 3 pointe, 3 phointe. Is mian linn a bheith in ann a blacklist an focal sin ag leagan síos bool go fíor má tá tú ag fáil cheana féin é, agus mar sin tá sin an fáth againn cuimsithe aige sa struchtúr. Anois, síos anseo i Scramble níl an struct eile ar a dtugtar foclóir. Is as láthair anseo an focal mar gheall ar Rialú an sa chás seo is gá dúinn a Cuach an smaoineamh maidir le foclóir, agus tá foclóir a bunch iomlán de na focail, mar atá intuigthe ón eagar, agus cé mhéad de na focail atá ann? Bhuel, is cuma cad a deir an méid athróg ar a dtugtar. Ach ní mór dúinn ach amháin foclóir. Ní gá dúinn i ndáil le cineál sonraí a dtugtar foclóir. Ní mór dúinn ach duine amháin acu, mar sin casadh sé amach i C más rud é nach bhfuil tú a rá Rialú an, a rá leat ach struct, ansin laistigh den braces gcuach chuir tú do athróga, agus ansin chuir tú an t-ainm. Tá sé seo á dhearbhú amháin foclóir a dtugtar athróg go Breathnaíonn mar seo. Gcodarsnacht leis sin, tá na línte a chruthú struchtúr sonraí ath-inúsáidte ar a dtugtar focal gur féidir leat a chruthú cóipeanna iolraí de, díreach mar cruthaithe againn iliomad cóipeanna de mhic léinn. Cad a dhéanann sé seo deis ar deireadh thiar dúinn a dhéanamh? Lig dom dul ar ais isteach, a ligean le rá, mar shampla simplí ó aimsir níos simplí, agus lig dom a oscailt suas, a ligean le rá, compare1.c. Is é an fhadhb anseo ar láimh a iarbhír craiceann ar ais an ciseal de théad agus tús a cur as na rothaí oiliúna mar gheall ar casadh sé amach go teaghrán ar fad an am seo mar atá geallta againn i seachtain 1 i ndáiríre ach leasainm, a synonym ón leabharlann CS50 as rud éigin go Breathnaíonn beagán níos mó cryptic, * Char, agus atá feicthe againn an réalta roimh. Chonaic muid é i gcomhthéacs na comhaid. A ligean ar a fheiceáil cén fáth go anois tá muid ag dul i bhfolach ar an mion le tamall anois. Seo comhad a dtugtar compare1.c, agus iarrann sé cosúil leis an t-úsáideoir ar feadh 2 teaghráin, s agus t, agus ansin déanann sé a chur i gcomparáid leis na teaghráin do chomhionannas ag teacht 26, agus má tá siad comhionann a deir sé, "chlóscríobh tú an rud céanna," agus más rud é nach bhfuil siad comhionann a deir sé, "chlóscríobh tú rudaí éagsúla." Lig dom dul ar aghaidh agus an clár a reáchtáil. Lig dom dul isteach i mo eolaire foinse, a dhéanamh compare1. Le chéile é ceart go leor. Lig dom a reáchtáil compare1. Beidh mé zúmáil isteach, dul isteach. Abair rud éigin. Hello. Beidh mé a rá rud éigin arís. Hello. Agam nach raibh cinnte cineál rudaí éagsúla. Lig dom iarracht seo arís. Slán, slán. Cinnte nach bhfuil éagsúil, mar sin cad atá ar siúl anseo? Bhuel, cad atá á i gcomparáid i ndáiríre ag teacht 26? [Inaudible-mac léinn] Sea, mar sin casadh sé amach go bhfuil teaghrán, sonraí cineál, cineál a bheidh bán. Tá téad * ruabhreac, ach cad is * Char? A * Char é, mar a deir siad, a pointeoir, agus is pointeoir go héifeachtach seoladh, suíomh suim i gcuimhne, agus má tharlaíonn tú a bheith clóscríofa i bhfocal ar nós Dia duit, aisghlaoch ó plé anuas teaghráin tá sé seo cosúil leis an focal hello. Cuimhnigh gur féidir le focal ar nós DIA DUIT ionadaíocht a mar le sraith de charachtair mar seo agus ansin le carachtar speisialta ag an deireadh ar a dtugtar an carachtar nialasach, mar seasann \. Cad é i ndáiríre ar shraith? Fógra go bhfuil an smután iolraí de chuimhne, agus go deimhin, tá an deireadh sé ar eolas ach aon uair amháin tú ag féachaint tríd an teaghrán iomlán lorg an carachtar nialasach speisialta. Ach má tá sé seo le smután de chuimhne ó mo ríomhaire a chuimhne, ligean le rá treallach go bhfuair an teaghrán seo ach t-ádh, agus fuair chuir sé ag an tús mo ríomhaire RAM. Is é seo an mbeart 0, 1, 2, 3, 4, 5, 6 ... Nuair a rá liom rud éigin cosúil le GetString agus is féidir liom teaghrán s = GetString cad atá ar ais i ndáiríre? Ar na seachtainí anuas roinnt, tá an méid atá á stóráil i ndáiríre i s nach bhfuil an teaghrán per se, ach sa chás seo go bhfuil cad atá á stóráil an 0 líon mar gheall ar cad a dhéanann GetString iarbhír Is é nach ndéanann sé ar ais go fisiciúil ar shraith. Ní sin a dhéanamh fiú i ndáiríre chiall coincheapúil. Cad a dhéanann sé ar ais é uimhir. Is é sin líon an seoladh DIA DUIT i gcuimhne, agus téad s ansin, má táimid ar ais craiceann an ciseal, ní teaghrán ann i ndáiríre. Tá sé ach gur simpliú sa leabharlann CS50. Tá sé seo i ndáiríre rud ar a dtugtar * Char. Char ciall toisc go bhfuil an méid focal, cosúil le Dia duit? Bhuel, tá sé sraith de carachtair, sraith de charachtair. Ciallaíonn * Char an seoladh de chineál, mar sin cad a chiallaíonn sé a thabhairt ar ais ar shraith? A deas, ar bhealach simplí ar ais ar shraith Is seachas iarracht a dhéanamh an figiúr amach conas mé ar ais go dtí 5 nó 6 bytes éagsúla lig dom ar ais go dtí an seoladh seo a bheart? An chéad cheann. I bhfocail eile, lig dom a thabhairt duit an seoladh de chineál i gcuimhne. Sin an méid a léiríonn * ruabhreac, seoladh amháin charachtar aonair i gcuimhne. Cuir glaoch ar an s athraitheach. Stóráil i s go bhfuil seoladh go háirithe, a dúirt mé treallach 0, ach a choinneáil ar rudaí simplí, ach i ndáiríre tá sé de ghnáth roinnt níos mó. Fan nóiméad. Má tá tú ag tabhairt ach dom an seoladh an chéad charachtar, cén chaoi a fhios agam cad é an seoladh de charachtar an dara, an tríú, an ceathrú agus an cúigiú? [Inaudible-mac léinn] A fhios agat ach amháin nuair atá deireadh an teaghrán trí seo a trick handy, mar sin nuair a úsáideann tú rud éigin cosúil le printf, a thógann printf literally mar a argóint, cuimhne go n-úsáideann muid an% s placeholder, agus ansin tú pas a fháil i an athróg a tá a stóráil ar shraith. Cad é go bhfuil tú ag dul i ndáiríre an seoladh an chéad charachtar den teaghrán. Printf úsáid ansin le haghaidh lúb nó lúb agus nuair a fhaigheann an seoladh sin, mar shampla, 0, lig sin a dhéanamh dom an anois, printf ("% s \ n," s); Nuair a ghlaonn mé printf ("% s \ n" s); cad mé ag fáil i ndáiríre printf le Is é an seoladh an chéad charachtar i s, a bhfuil sa chás seo treallach H. Cén chaoi a fhios printf cad go díreach a chur ar taispeáint ar an scáileán? An duine a chur chun feidhme i bhfeidhm printf lúb fad nó le haghaidh lúb a deir go bhfuil carachtar seo cothrom leis an carachtar nialasach speisialta? Mura bhfuil, é a phriontáil. Cad é faoi an ceann seo? Más rud é nach é a phriontáil, é a phriontáil, é a phriontáil, é a phriontáil. Ó, an ceann seo speisialta. Stop a phriontáil agus a sheoladh ar ais chuig an úsáideoir. Agus sin literally gach a bhí ar siúl thíos an cochall, agus tá go bhfuil a lán a díolama ar an gcéad lá d'aicme, ach anois tá sé i ndáiríre an bloc tógála de gach rud thuiscint a bhí ar siúl taobh istigh dár ríomhaire a chuimhne, agus ar deireadh thiar beidh muid ag tease seo amach le beagán cabhrach ó cheann de na ár gcairde ag Stanford. An tOllamh Nick Parlante ag Stanford déanta an seicheamh seo físeán iontach ó gach cineál na teangacha éagsúla a tugadh isteach seo Binky carachtar beag Claymation. An guth bhfuil tú ar tí a chloisteáil i réamhamharc ach sneak cúpla dara is é sin le ollamh Stanford, agus tú ag fáil ach 5 nó 6 soicind an ceart seo anois, ach is é seo an nóta ar a beidh orainn a thabhairt i gcrích sa lá atá inniu agus tús a chur ar an gCéadaoin. A thabhairt liom tú Spraoi phointeora le Binky, an réamhamharc. [♪ Ceol ♪] [tOllamh Parlante] Hey, Binky. Wake suas. Tá sé in am don spraoi pointeoir. [Binky] Cad é sin? Foghlaim faoi leideanna? Oh, goody! Beidh muid a fheiceann tú ar an gCéadaoin. [CS50.TV]