[Powered by Google Translate] [Athbhreithniú] [Tráth na gCeist 0] [Lexi Ros Mhic Thriúin, Tommy MacWilliam, Lucas Freitas, Joseph Ong] [Ollscoil Harvard] [Tá sé seo CS50.] [CS50.TV] Hey, gach duine. Fáilte go dtí an seisiún Léirmheas Tráth na gCeist 0, atá ar siúl an Chéadaoin seo. Cad tá muid ag dul a dhéanamh anocht, tá mé le 3 TFS eile, agus le chéile táimid ag dul chun dul trí athbhreithniú a dhéanamh ar an méid atá déanta againn le linn go dtí seo. Níl sé ag dul a bheith 100% cuimsitheach, ach ba chóir é a thabhairt duit smaoineamh níos fearr ar cad agat cheana féin síos agus an méid is gá duit fós chun staidéar a dhéanamh roimh an gCéadaoin. Agus glaoch a ardú do lámh le ceisteanna mar táimid ag dul chomh maith, ach a choinneáil i gcuimhne go beidh orainn a bheith chomh maith le beagán ama ag an deireadh- má fhaigheann muid trí le cúpla nóiméad chun spártha-a dhéanamh ar cheisteanna ginearálta, mar sin coinnigh sin san áireamh, agus mar sin táimid ag dul chun tús a chur ag an tús le Seachtain 0. [Tráth na gCeist 0 Athbhreithniú!] [Cuid 0] [Lexi Ross] Ach sula dhéanaimid sin a ligean ar labhairt faoi an lóistíochta na tráth na gceist. [Loighistic] [Tráth na gCeist ar siúl ar an gCéadaoin 10/10 in ionad léacht] [(Féach http://cdn.cs50.net/2012/fall/quizzes/0/about0.pdf le haghaidh sonraí)] Is ar DÉ CÉADAOIN, 10 DEIREADH FÓMHAIR. Sin an gCéadaoin, agus má théann tú chuig an URL seo anseo, a bhfuil freisin inrochtana ó CS50.net-'s nasc leis- Is féidir leat a fheiceáil eolas faoi cá háit le dul bunaithe ar d'ainm seo caite nó a mballraíocht scoil chomh maith le Insíonn sé thart ar go díreach cad a bheidh an tráth na gceist a chlúdach agus na cineálacha ceisteanna go bhfuil tú ag dul a fháil. Coinnigh i gcuimhne go mbainfidh tú chomh maith le deis chun athbhreithniú a dhéanamh ar an tráth na gceist in alt, mar sin ba chóir do TFS a bheith ag dul thar roinnt fadhbanna cleachtais, agus sin an seans eile maith a fheiceáil nuair is gá duit fós chun staidéar a dhéanamh suas don cheistiúchán. Let tús ag an tús le Gíotáin 'n' Bytes. Cuimhnigh go bhfuil beagán ach 0 nó 1, agus is beart bailiúchán de 8 de na giotán. Ligean le breathnú ar bhailiúchán seo de giotán ar dheis anseo. Ba cheart dúinn a bheith in ann a figiúr amach cé mhéad giotán ann. Cá comhaireamh níl ach 8 acu, ocht 0 nó 1 aonad. Agus ós rud é níl 8 giotán, go bhfuil 1 beart, agus a ligean ar é a thiontú go heicsidheachúlach. Is heicsidheachúlach bonn 16, agus tá sé éasca go leor a thiontú roinnt i dénártha, a bhfuil cad is é sin, le roinnt i heicsidheachúlach. Gach dhéanaimid é táimid ag ngrúpaí de 4, agus táimid iad a thiontú chuig an dhigit heicsidheachúlach cuí. Tús a chur againn leis an ngrúpa ceart-chuid is mó de 4, mar sin 0011. Sin an dul a bheith ar cheann 1 agus ceann 2, ionas chéile a dhéanann 3. Agus ansin lig ar súil ar an bloc eile de 4. 1101. Sin an dul a bheith ar cheann 1, ceann amháin 4, agus ceann 8. Le chéile ar sin ag dul a bheith 13, a dhéanann D. Agus beidh muid ag cuimhneamh i heicsidheachúlach nach bhfuil muid ag dul díreach trí 0 9. Téimid 0 tríd F, agus mar sin tar éis 9, 10 fhreagraíonn A, 11 go B, et cetera ina bhfuil F 15. Seo 13 D, mar sin é a thiontú go dheachúlach gach a ndéanaimid is againn i ndáiríre déileáil le gach post mar chumhacht de 2. Sin ceann 1, ceann 2, náid 4s, náid 8s, ceann 16, et cetera, agus tá sé ina beag deacair a ríomh i do cheann, ach má théann muid chun an sleamhnán eile is féidir linn a fheiceáil an freagra sin. Go bunúsach, táimid ag dul trasna ó ceart ar ais go dtí clé, agus táimid ag a iolrú gach dhigit an chumhacht chomhfhreagrach de 2. Agus cuimhnigh, heicsidheachúlach, in iúl dúinn na huimhreacha seo le 0x ag an tús mar sin ní féidir linn a chur amú é le roinnt de dheachúlacha. Leanúint ar aghaidh, is é seo an Tábla ASCII, agus cad a úsáid againn ASCII le haghaidh a mhapáil ó charachtair le luachanna uimhriúla. Cuimhnigh ar an pset cripteagrafaíocht a rinne muid úsáid leathan den Tábla ASCII d'fhonn úsáid a bhaint as modhanna éagsúla cripteagrafaíochta, an Caesar agus an cipher Vigenère, a thiontú litreacha éagsúla i teaghrán réir an scála arna dtabhairt ag an úsáideoir. Ligean ar breathnú ar beagán de math ASCII. Ag Breathnú ar an 'P' + 1, i bhfoirm carachtar a bheadh ​​Q, agus cuimhnigh go '5 '≠ 5. Agus ba mhaith conas go díreach linn a thiontú idir na 2 chineál? Níl sé i ndáiríre ró-deacair. D'fhonn a fháil againn a dhealú 5 '0 ' toisc go bhfuil 5 áit idir an '0 'agus '5.' D'fhonn dul an bealach eile againn a chur ach an 0, mar sin tá sé saghas cosúil uimhríochtúil rialta. Just cuimhneamh gur nuair a bhfuil rud éigin Sleachta timpeall air tá sé ina ghné agus dá bhrí sin comhfhreagraíonn le luach sa tábla ASCII. Bogadh isteach i níos mó ábhair ríomhaireachta ginearálta eolaíocht. D'fhoghlaim muid cad is algartam agus conas a úsáidimid cláir le halgartaim a chur i bhfeidhm. Seo roinnt samplaí de halgartaim rud éigin i ndáiríre simplí cosúil le seiceáil an bhfuil roinnt fiú nó corr. Ar an ábhar sin cuimhin linn mod an líon ag 2 agus seiceáil má tá an toradh 0. Más amhlaidh, tá sé fiú. Mura bhfuil, tá sé corr. Agus sin sampla de algartam i ndáiríre bunúsacha. Tá beagán de amháin níos mó i gceist cuardaigh dhénártha, a beidh muid ag dul thar níos déanaí sa seisiún athbhreithnithe. Agus is é an clár an téarma a úsáidimid as algartaim agus is féidir a athrú é a chódú an ríomhaire a léamh. 2 samplaí de chláir atá Scratch, a bhfuil cad a rinne muid i Seachtain 0. Cé nach bhfuil muid cineál iarbhír an cód tá sé ar bhealach a chur i bhfeidhm an algartam, a bhfuil a phriontáil ar líon 1-10, agus anseo a dhéanann muid mar an gcéanna sa teanga cláir C. Is iad seo feidhmiúil comhionann, ach scríofa i dteangacha éagsúla nó chomhréir. D'fhoghlaim muid ansin faoi nathanna Boole, agus is Boole luach go bhfuil ceachtar fíor nó bréagach, agus abairtí anseo Boole oftentimes dul isteach ar choinníollacha, mar sin má (x ≤ 5), go maith, a leag muid cheana x = 5, mar sin tá an coinníoll dul chun meastóireacht a dhéanamh fíor. Agus má tá sé fíor, is cuma cén cód faoi bhun an choinníll ag dul a meastóireacht ar an ríomhaire é, ionas go teaghrán ag dul a bheith i gcló chuig aschur caighdeánach, agus an coinníoll téarma Tagraíonn is cuma cad é an taobh istigh lúibíní an ráiteas más rud é. Cuimhnigh go léir na n-oibreoirí. Cuimhnigh tá sé && agus | | nuair a bhíonn muid ag iarraidh a chur le chéile 2 nó níos mó coinníollacha, == Ní = a sheiceáil cibé an bhfuil 2 rudaí comhionann. Cuimhnigh go bhfuil = a shannadh ach is == oibreoir Boole. ≤, ≥ agus ansin tá an 2 deiridh féin-míniúcháin. Athbhreithniú ginearálta ar loighic Boole anseo. Agus tá téarmaí Boole tábhachtach freisin i lúb, a beidh muid ag dul thar anois. D'fhoghlaim muid faoi 3 cineálacha lúba go dtí seo i CS50, le haghaidh, agus, agus a dhéanamh linn. Agus tá sé tábhachtach go mbeadh a fhios cé go chun críocha an chuid is mó Is féidir linn a úsáid ar aon chineál lúb i gcoitinne tá cineálacha áirithe de chuspóirí nó patrúin coitianta i gcláir go glaoch go sonrach le haghaidh ceann amháin de na lúba go mbeadh sé an. is éifeachtaí nó galánta chun cód é ar an mbealach sin A ligean ar dul thar an méid bíonn gach ceann de na lúb a bheidh le húsáid don chuid is mó go minic. I do lúb againn go ginearálta tá a fhios cheana féin cé mhéad uair ba mhaith linn a iterate. Sin an méid a chuir muid sa riocht. I gcás, i = 0, i <10, mar shampla. Tá a fhios againn cheana féin go bhfuil muid ag iarraidh rud éigin a dhéanamh 10 uair. Anois, le haghaidh lúb agus, go ginearálta nach bhfuil muid ag gá Tá a fhios cé mhéad uair ba mhaith linn an lúb a rith. Ach ná a fhios againn chineál éigin de choinníoll go ba mhaith linn é a i gcónaí a bheith fíor nó i gcónaí a bheith bréagach. Mar shampla, cé go leagtar. Ligean le rá go bhfuil athróg Boole. Cé tá sin fíor, ba mhaith linn an cód a mheas, mar sin le beagán níos extensible, le beagán níos ginearálta ná le haghaidh lúb, ach is féidir aon le haghaidh lúb a thiontú freisin le lúb tamaill. Mar fhocal scoir, a dhéanamh agus lúb, a fhéadfaidh a bheith ar an trickiest a thuiscint ar an bpointe boise, is minic a úsáidtear nuair is mian linn chun meastóireacht a dhéanamh ar an gcód sa chéad roimh an chéad uair dúinn a sheiceáil ar an staid. Cás úsáid go coitianta le haghaidh a dhéanamh agus lúb Is nuair is mian leat a fháil ar ionchur úsáideora, agus a fhios agat gur mian leat a iarraidh ar an úsáideoir ionchur a laghad uair amháin, ach más rud é nach bhfuil siad a thabhairt duit ionchur maith ceart ar shiúl mian leat a choinneáil ag iarraidh orthu go dtí go ngabhfar a thabhairt duit an t-ionchur maith. Sin a dhéanann an úsáid is coitianta ar feadh tamaill lúb, agus a ligean ar breathnú ar an struchtúr iarbhír na lúb. Siad de ghnáth claonadh i gcónaí chun leanúint leis na patrúin. Ar an lúb le haghaidh taobh istigh tá tú 3 comhpháirteanna: initialization, de ghnáth rud éigin cosúil le slánuimhir i = 0 áit a bhfuil mé ar an gcuntar, riocht, áit ar mhaith linn a rá seo a reáchtáil le haghaidh lúb chomh fada agus an coinníoll seo i seilbh go fóill, cosúil i <10, agus ansin ar deireadh, cothrom le dáta, a bhfuil conas incrimint an athróg gcuntar ag gach pointe sa lúb. Is rud coitianta a fheiceáil go díreach i + +, rud a chiallaíonn incrimint i faoin 1 gach uair. D'fhéadfá a dhéanamh freisin rud éigin cosúil le i + = 2, rud a chiallaíonn 2 a chur i gach uair a théann tú tríd an lúb. Agus ansin an é seo a dhéanamh tagraíonn ach ar aon chód a ritheann i ndáiríre mar chuid den lúb. Agus do lúb tamaill, tá an uair seo againn i ndáiríre an initialization lasmuigh den lúb, mar sin, mar shampla, a ligean le rá againn ag iarraidh a dhéanamh ar an gcineál céanna lúb mar a chuirtear síos mé díreach. Ba mhaith linn a rá slánuimhir i = 0 thosaíonn roimh an lúb. Ansin, d'fhéadfadh muid a rá cé i <10 seo a dhéanamh, mar sin an bloc céanna de chód mar roimh, agus an uair seo an chuid suas chun dáta den chód, mar shampla, i + +, iarbhír a théann taobh istigh den lúb. Agus ar deireadh, le haghaidh a dhéanamh agus, tá sé cosúil leis an lúb agus, ach ní mór dúinn cuimhneamh go mbeidh an cód a mheas nuair a sula ndéanfar an coinníoll a sheiceáil, agus mar sin a dhéanann sé ciall a lán níos mó má fhéachann tú ar sé in ord bhun go barr. I, a dhéanamh agus measúnú lúb an cód sula gcuirfidh tú fiú breathnú ar an riocht agus ach lúb agus, seiceálacha ar dtús. Ráitis agus athróga. Nuair a ba mhaith linn a chruthú athróg nua ba mhaith linn an chéad a thúsú é. Mar shampla initializes, barra slánuimhir an mbarra athraitheach, ach ní dhéanann sé a thabhairt dó luach, mar sin cad é luach bar s anois? Níl a fhios againn. D'fhéadfadh sé a bheith roinnt luach truflais go raibh a stóráiltear roimhe seo i gcuimhne ann, agus ní dhéanaimid mian sin a úsáid athróg go dtí a thabhairt dúinn i ndáiríre sé ar luach, mar sin againn a dhearbhú anseo. Ansin againn thúsú sé a bheith 42 thíos. Anois, ar ndóigh, tá a fhios againn gur féidir é seo a dhéanamh ar líne amháin, o bar = 42. Ach amháin a bheidh soiléir ar na céimeanna éagsúla atá ag dul ar aghaidh, an dearbhú agus an initialization ag tarlú ar leithligh anseo. Tarlaíonn sé ar céim amháin, agus an ceann eile, o Baz = bar + 1, an ráiteas thíos, go Baz incrimintí, agus mar sin ag deireadh an bhloic cód más rud é go raibh muid a phriontáil ar luach Baz bheadh ​​sé 44 mar gheall orainn a dhearbhú agus é a thúsú a bheith 1 bar>, agus ansin dúinn bhreisiú sé uair amháin níos mó leis an + +. Chuaigh muid thar an gearr go leor, ach tá sé go maith a bheith acu i gcoitinne tuiscint cad iad na snáitheanna agus imeachtaí. Rinne muid go príomha seo i Scratch, ionas gur féidir leat smaoineamh ar na snáitheanna mar sraitheanna iolraí de chód ag rith ag an am céanna. I actuality, tá sé nach bhfuil dócha ar siúl ag an am céanna, ach saghas abstractly is féidir linn smaoineamh ar é an mbealach. I Scratch, mar shampla, bhí againn an sprites éagsúla. D'fhéadfaí é a forghníomhaitheach chóid éagsúil ag an am céanna. D'fhéadfá a bheith ag siúl cé go bhfuil an duine eile ag rá rud éigin i gcuid eile den scáileán. Tá Imeachtaí ar bhealach eile a scaradh amach ar an loighic idir gnéithe éagsúla de do chód, agus i Scratch raibh muid in ann imeachtaí a Insamhail baint úsáide as an Craoladh, agus tá go hiarbhír Nuair a Faigh mé, ní Nuair a Éist liom, ach go bunúsach tá sé ar bhealach chun faisnéis a tharchur ó sprite eile. Mar shampla, b'fhéidir gur mhaith leat cluiche a tharchur os a chionn, agus nuair a fhaigheann eile sprite cluiche os a chionn, Freagraíonn sé ar bhealach áirithe. Tá sé an múnla tábhachtach a thuiscint do chláir. Díreach dul thar an tSeachtain bunúsach 0, cad atá againn imithe thar go dtí seo, ligean ar breathnú ar an gclár C simplí. D'fhéadfadh an téacs le beagán beag ó anseo, ach beidh mé dul thar sé i ndáiríre tapaidh. Táimid ag lena n-áirítear 2 comhad header ag an mbarr, cs50.h agus stdio.h. Táimid ag a shainiú ansin teorainn leanúnach ar a dtugtar a bheith 100. Táimid ag cur as ár n-fheidhm is mó. Ós rud é nach bhfuil muid ag úsáid a bhaint as argóintí anseo ní mór dúinn a chur ar neamhní mar na hargóintí ar son is mó. Feicimid o thuas. Sin an cineál ar ais, ar ais mar sin, 0 ag bun an leathanaigh. Agus tá muid ag baint úsáide as CS50 fheidhm leabharlainne a fháil o ' a iarraidh ar an úsáideoir chun ionchur, agus é a stóráil againn sa x athraitheach, mar sin againn a dhearbhú x thuas, agus thúsú sé againn le x = GetInt. Táimid ag seiceáil ansin a fheiceáil má thug an t-úsáideoir dúinn ionchur maith. Má tá sé TEORAINN ≥ ba mhaith linn a thabhairt ar ais le cód earráid 1 agus teachtaireacht earráide a phriontáil. Agus ar deireadh, má tá an t-úsáideoir a thabhairt dúinn ionchur maith táimid ag dul a cearnach ar an líon agus a phriontáil an toradh amach. Just a dhéanamh cinnte go bhfuil na bhaile hit gach Is féidir leat a fheiceáil ar na lipéid ar na codanna éagsúla den chód anseo. Luaigh mé i gcónaí, comhaid header. Oh, slánuimhir x. Bí cinnte a mheabhrú go bhfuil athróg áitiúil. Sin i gcodarsnacht sé ó athróg domhanda, a beidh orainn labhairt faoi le beagán níos déanaí sa seisiún athbhreithnithe, agus táimid ag glaoch ar an fheidhm leabharlainne printf, mar sin más rud é nach raibh san áireamh againn an comhad header stdio.h Ní bheadh ​​muid in ann a ghlaoch printf. Agus creidim go bhfuil an arrow fuair gearradh go amach anseo dírithe ar an% d, a bhfuil teaghrán formáidiú i printf. Deir sé a phriontáil amach an athróg mar uimhir d,%. Agus is é go bhfuil sé do Sheachtain 0. Anois tá Lucas ag dul chun leanúint ar aghaidh. Hey, guys. Is é mo ainm Lucas. Tá mé sophomore sa teach is fearr ar an gcampas, Mather, agus tá mé ag dul chun labhairt le beagán faoi Seachtain 1 agus 2.1. [Seachtain 1 agus 2.1!] [Lucas Freitas] Mar a bhí Lexi rá, nuair a thosaigh muid ag aistriú do chód ó Scratch go C cheann de na rudaí gur faoi deara againn go bhfuil féidir leat ní hamháin scríobh do chód agus é a reáchtáil ag baint úsáide as brat glas níos mó. I ndáiríre, caithfidh tú a úsáid roinnt céimeanna a dhéanamh do C chlár bheith i do comhad inrite. Go bunúsach cad a dhéanann tú nuair a bhíonn tú ag scríobh clár a tú a aistriú do smaoineamh i dteanga gur féidir le tiomsaitheoir a thuiscint, mar sin nuair a bhíonn tú ag scríobh ar chlár i C cad atá tú a dhéanamh a scríobh i ndáiríre rud éigin go bhfuil do Tiomsaitheoir ag dul a thuiscint, agus tá sé ansin an tiomsaitheoir ag dul a aistriú an cód i rud éigin go mbeidh do ríomhaire a thuiscint. Agus is é an rud, tá do ríomhaire i ndáiríre an-balbh. Is féidir le do ríomhaire a thuiscint ach amháin 0s agus 1s, mar sin i ndáiríre an chéad ríomhairí daoine cláraithe de ghnáth ag baint úsáide as 0s agus 1s, ach ní níos mó, buíochas le Dia. Ní thugaimid a chur de ghlanmheabhair na seichimh do 0s agus 1s le haghaidh do lúb nó le haghaidh lúb tamaill agus mar sin de. Sin an fáth go bhfuil muid ag tiomsaitheoir. Cad a dhéanann a Tiomsaitheoir bhfuil aistríonn sé go bunúsach leis an gcód C, in ár gcás, le teanga go mbeidh do ríomhaire a thuiscint, bhfuil an cód réad, agus an tiomsaitheoir go bhfuil muid ag baint úsáide ar a dtugtar clang, agus mar sin tá sé seo i ndáiríre an tsiombail le haghaidh clang. Nuair a bheidh tú do chlár, caithfidh tú a dhéanamh 2 rudaí. Gcéad dul síos, caithfidh tú a thiomsú do chlár, agus ansin tá tú ag dul a reáchtáil do chláir. A thiomsú do chlár a bhfuil tú a lán de na roghanna sin a dhéanamh. Is é an chéad cheann a dhéanamh program.c clang ina bhfuil clár an t-ainm de do chlár. Sa chás seo is féidir leat a fheiceáil a bhíonn siad ag rá ach "Hey, a thiomsú mo chlár." Níl tú ag rá "Ba mhaith liom an t-ainm do mo chlár" nó rud ar bith. Is é an dara rogha ag tabhairt ainm ar do chlár. Is féidir leat a rá clang-o agus ansin an t-ainm gur mian leat an comhad inrite a bheith ainmnithe mar agus ansin program.c. Agus is féidir leat a dhéanamh freisin a dhéanamh clár, agus a fheiceáil conas i 2 chás chéad Chuir mé. C, agus sa tríú cuid Tá mé ach cláir? Yeah, tú nár chóir a chur i ndáiríre. C nuair a úsáideann tú a dhéanamh. Seachas sin tá an tiomsaitheoir ag dul iarbhír a yell ag tú. Agus freisin, níl a fhios agam más cuimhin leat guys, ach a lán de uaire againn chomh maith a úsáidtear-lcs50 nó-LM. Is é sin ar a dtugtar a nascadh. Insíonn sé ach an tiomsaitheoir go mbeidh tú úsáid as na leabharlanna ceart ann, sin más mian leat cs50.h a úsáid go bhfuil tú i ndáiríre a chlóscríobh clang program.c-lcs50. Mura bhfuil tú é sin a dhéanamh, nach bhfuil an tiomsaitheoir ag dul go mbeadh a fhios go bhfuil tú ag baint úsáide as na feidhmeanna sin i cs50.h. Agus nuair is mian leat a reáchtáil do chlár a bhfuil tú 2 roghanna. Má rinne tú program.c clang nach raibh tú ainm a thabhairt do do chlár. Tá tú a rith sé ag baint úsáide as. / A.out. Is A.out ainm caighdeánach a thugann clang do chlár mura bhfuil tú thabhairt dó ainm. Seachas sin tá tú ag dul a dhéanamh. / An chláir má thug tú ainm le do chlár, agus freisin má rinne tú a dhéanamh clár an t-ainm go bhfuil clár ag dul a fháil ag dul cheana féin a chlárú an t-ainm céanna leis an comhad c. Ansin labhair muid faoi chineálacha sonraí agus sonraí. Go bunúsach tá cineálacha sonraí an rud céanna mar boscaí beag a úsáideann siad chun luachanna a stóráil, ionas go bhfuil cineálacha sonraí i ndáiríre go díreach mar a Pokémons. Thagann siad i méideanna go léir agus na cineálacha. Níl a fhios agam má dhéanann an analaí ciall. An méid sonraí ag brath iarbhír ar an ailtireacht meaisín. Gach na méideanna sonraí go bhfuil mé ag dul a thaispeáint anseo i ndáiríre do mheaisín 32-giotán, a bhfuil an cás ar ár fearas, ach má tá tú códaithe iarbhír do Mac nó i Windows freisin is dócha go bhfuil tú ag dul a bheith acu le meaisín 64-giotán, ionas cuimhnigh go bhfuil na méideanna sonraí go bhfuil mé ag dul a thaispeáint anseo Is le haghaidh an meaisín 32-giotán. Ba é an chéad cheann a chonaic muid ar slánuimhir, a bhfuil go leor simplí. Úsáid tú slánuimhir a stóráil slánuimhir. Chonaic muid freisin ar an carachtar, an ruabhreac. Más mian leat úsáid a bhaint as litir nó siombail beag bhfuil tú ag dul is dócha a úsáid Char. Tá Char 1 beart, rud a chiallaíonn 8 giotán, cosúil le Lexi dúirt. Go bunúsach ní mór dúinn Tábla ASCII go bhfuil 256 teaglamaí féideartha 0s agus 1s, agus ansin nuair a scríobhann tú a ruabhric tá sé ag dul a aistriú an carachtar a dúirt ionchur tú ar roinnt go bhfuil tú sa tábla ASCII, cosúil le Lexi. Ní mór dúinn freisin ar an snámhphointe, a úsáid againn a stóráil uimhreacha deachúlacha. Más mian leat a roghnú 3.14, mar shampla, tá tú ag dul a úsáid snámhphointe nó dúbailte go bhfuil cruinneas níos mó. Tá snámh 4 bytes. Tá dúbailte 8 bytes, mar sin tá an difríocht amháin an cruinneas. Againn freisin le fada a úsáidtear le haghaidh slánuimhreacha, agus is féidir leat a fheiceáil do mheaisín 32-giotán ina slánuimhir agus fada go bhfuil an méid céanna, mar sin ní dhéanann sé i ndáiríre chiall a úsáid fada i meaisín 32-giotán. Ach má tá tú ag baint úsáide as meaisín Mac agus 64-giotán, tá i ndáiríre fada méid 8, mar sin braitheann sé i ndáiríre ar an ailtireacht. Maidir leis an meaisín 32-giotán nach ndéanann sé ciall a úsáid fada i ndáiríre. Agus ansin le fada fada, ar an láimh eile, tá 8 bytes, mar sin tá sé an-mhaith más mian leat a bheith slánuimhir níos faide. Agus ar deireadh, ní mór dúinn téad, a bhfuil fírinne * Char, atá ina pointeoir a Char. Tá sé an-éasca chun smaoineamh go bhfuil an méid de na teaghrán ag dul a bheith cosúil le líon na gcarachtar a bhfuil tú ann, ach i ndáiríre an * Char féin Tá an méid pointeoir le ruabhric, a bhfuil 4 bytes. Is é an méid * ruabhreac 4 bytes. Ní chuireann sé ábhar má tá tú focal beag nó litir nó rud ar bith. Tá sé seo ag dul a bheith 4 bytes. D'fhoghlaim againn chomh maith le beagán faoi réitigh, ionas gur féidir leat a fheiceáil, má tá tú, mar shampla, clár a deir go bhfuil slánuimhir x = 3 agus ansin printf ("% d", x / 2) a dhéanann tú guys fhios agat cad tá sé ag dul i gcló ar an scáileán? D'iarr duine éigin? >> [Mic Léinn] 2. 1. >> 1, yeah. Nuair a dhéanann tú 3/2 tá sé ag dul a fháil 1.5, ach ós rud é tá muid ag baint úsáide as slánuimhir sé ag dul chun neamhaird a dhéanamh den chuid dheachúlach, agus tú ag dul a bheith acu 1. Más rud é nach bhfuil tú ag iarraidh sin a tharlóidh cad is féidir leat a dhéanamh, mar shampla, Is é a dhearbhú go bhfuil y = x snámhphointe. Ansin, tá x a úsáidtear a bheith 3 ag dul anois a bheith 3.000 i y. Agus ansin is féidir leat a phriontáil ar an y / 2. I ndáiríre, ba chóir dom a bheith 2. thar ann. Tá sé seo ag dul a dhéanamh 3.00/2.00, agus tá tú ag dul a fháil 1.5. Agus ní mór dúinn an f .2 ach a iarraidh le haghaidh 2 aonad dheachúlach sa chuid de dheachúlacha. Má tá tú .3 f tá sé ag dul a bheith i ndáiríre 1.500. Má tá sé 2 tá sé ag dul a bheith 1.50. Ní mór dúinn freisin sa chás seo anseo. Má dhéanann tú snámhphointe x = 3.14 agus ansin tú x printf bhfuil tú ag dul a fháil 3.14. Agus má dhéanann tú x = o 'x, rud a chiallaíonn déileáil le x mar slánuimhir agus a phriontáil duit x anois bhfuil tú ag dul a bheith acu 3.00. An dhéanamh go chiall? Toisc go bhfuil tú ag caitheamh an chéad x mar slánuimhir, mar sin tá tú neamhaird a dhéanamh an chuid dheachúlach, agus ansin tá tú ag priontáil x. Agus ar deireadh, is féidir leat a dhéanamh seo chomh maith, slánuimhir x = 65, agus ansin tú a fhógairt ruabhric c = x, agus ansin, más rud phriontáil duit an c bhfuil tú ag dul iarbhír a fháil A, mar sin cad go bunúsach atá tú a dhéanamh anseo Tá aistriú na slánuimhir isteach an carachtar, díreach cosúil a dhéanann an Tábla ASCII. Labhair muid freisin faoi na hoibreoirí math. Chuid is mó acu go leor simplí, mar sin +, -, *, /, agus freisin phléamar mod, a bhfuil an chuid eile den rannán de 2 uimhreacha. Má tá tú 10% 3, mar shampla, ciallaíonn sé roinnt 10 faoin 3, agus cad é an chuid eile? Tá sé seo ag dul a bheith 1, mar sin tá sé i ndáiríre an-úsáideach le haghaidh a lán de na cláir. Chun Vigenère agus Caesar Tá mé cinnte go leor go léir a úsáidtear de tú guys mod. Maidir oibreoirí math, a bheith an-chúramach nuair a chomhcheangal * agus /. Mar shampla, má dhéanann tú (3/2) * 2 cad tá tú ag dul a fháil? [Mic Léinn] 2. Yeah, 2, mar gheall ar 3/2 ag dul a bheith 1.5, ach ós rud é atá tú ag déanamh oibríochtaí idir 2 slánuimhreacha bhfuil tú ag iarbhír ag dul díreach a mheas 1, agus tá sé ansin 1 * 2 ag dul a bheith 2, mar sin a bheith an-, an-chúramach nuair a dhéanamh uimhríochtúil le slánuimhreacha mar gheall ar go dtiocfadh leat a fháil go 2 = 3, sa chás sin. Agus a bheith an-chúramach maidir le tosaíocht. Ba chóir duit a úsáid de ghnáth lúibíní a bheith cinnte go bhfuil a fhios agat cad tá á dhéanamh agat. Roinnt aicearraí úsáideach, ar ndóigh, tá sé ar cheann i + + nó i + = 1 nó ag baint úsáide + =. Is é sin an rud céanna mar atá ag déanamh i = i + 1. Is féidir leat a dhéanamh freisin i - nó i - = 1, a bhfuil an rud céanna mar atá i = i -1, úsáid a bhaint as rud éigin tú guys go leor i do lúba, ar a laghad. Chomh maith leis sin, le haghaidh *, má úsáideann tú * = agus má dhéanann tú, mar shampla, i * = 2 is é an rud céanna a rá i = i * 2, agus an rud céanna le haghaidh roinnt. Má dhéanann tú i / = 2 tá sé an rud céanna mar atá i = i / 2. Anois, faoi fheidhmeanna. Tá tú guys fhoghlaim go bhfuil feidhmeanna straitéis an-mhaith cód a shábháil fad a bhíonn tú cláir, mar sin más mian leat a dhéanamh ar an tasc céanna i gcód arís agus arís eile, is dócha gur mhaith leat a úsáid le feidhm ach mar sin ní gá duit a chóipeáil agus a ghreamú ar an gcód arís agus arís eile. I ndáiríre, tá príomh-fheidhm, agus nuair a thaispeáint mé tú ar an bhformáid ar fheidhm bhfuil tú ag dul a fheiceáil go bhfuil go soiléir go leor. Bainimid úsáid freisin feidhmeanna ó roinnt leabharlanna, mar shampla, printf, GetIn, a bhfuil as an leabharlann CS50, agus feidhmeanna eile cosúil le cos. Gach ceann de na feidhmeanna sin i bhfeidhm iarbhír i leabharlanna eile, agus nuair a chuir tú na comhaid teaghrán i dtús do chlár bhfuil tú ag rá gur féidir leat do thoil a thabhairt dom an cód le haghaidh na bhfeidhmeanna sin mar sin ní dóigh liom go bhfuil a chur i bhfeidhm le mé féin? Agus is féidir leat scríobh freisin do fheidhmeanna féin, mar sin nuair a thosaíonn tú cláir tuigeann tú nach bhfuil leabharlanna go léir na feidhmeanna go bhfuil gá duit. Maidir leis an pset seo caite, mar shampla, scríobhamar a tharraingt, scramble, agus lookup, agus tá sé an-, an-tábhachtach a bheith in ann feidhmeanna a scríobh mar go bhfuil siad úsáideach, agus úsáid againn iad go léir an t-am i gcláir, agus Sábhálann sé a lán de chód. Tá formáid a chomhlíonadh an gceann seo. Tá cineál ar ais ar dtús. Cad é an cineál ar ais? Tá sé díreach nuair a bhfuil do fheidhm ag dul a thabhairt ar ais. Má tá tú a chomhlíonadh, mar shampla, factorial, go bhfuil dul chun ríomh factorial de slánuimhir, is dócha ag dul ar é a thabhairt ar ais slánuimhir chomh maith. Ansin tá an cineál ar ais ag dul a bheith slánuimhir. Printf Tá iarbhír ar neamhní chineál ar ais toisc nach bhfuil tú ag filleadh rud ar bith. Tá tú ag priontáil ach rudaí ar an scáileán agus quitting an fheidhm ina dhiaidh sin. Ansin tá tú an t-ainm na feidhme gur féidir leat a roghnú. Ba chóir duit a bheith beagán réasúnta, ní cosúil nach Roghnaigh ainm cosúil xyz nó cosúil le x2f. Déan iarracht a dhéanamh suas ainm a bhfuil ciall leis. Mar shampla, má tá sé factorial, factorial a rá. Má tá sé ina fheidhm go bhfuil dul chun rud éigin a tharraingt, ainm é a tharraingt. Agus ansin ní mór dúinn na bparaiméadar, ar a dtugtar freisin argóintí, atá cosúil leis na hacmhainní gur gá do fheidhm ó do chód a fheidhmeanna a tasc. Más mian leat a ríomh ar an factorial de roinnt is dócha gá duit a bheith ar roinnt a ríomh factorial. Is é ceann de na hargóintí go bhfuil tú ag dul go bhfuil an líon féin. Agus ansin tá sé ag dul rud éigin a dhéanamh agus an luach ar ais ag an deireadh mura tá sé ina fheidhm neamhní. A ligean ar a fheiceáil, mar shampla. Más mian liom a scríobh feidhm suimeanna na huimhreacha go léir i sraith de slánuimhreacha, gcéad de gach, is é an cineál ar ais ag dul a bheith slánuimhir toisc go bhfuil mé le sraith de slánuimhreacha. Agus ansin tá mé ag dul go bhfuil an t-ainm fheidhm cosúil le sumArray, agus ansin dul ar é a chur ar an eagar féin, go nums int, agus ansin an fad an sraith sin a fhios agam cé mhéad uimhreacha Caithfidh mé a suim. Ansin tá mé a thúsú suim athróg ar a dtugtar, mar shampla, chun 0, agus gach uair a fheiceann mé eilimint sa eagar chóir dom é a chur le suim, mar sin rinne mé le haghaidh lúb. Díreach mar a dúirt Lexi, an bhfuil tú slánuimhir i = 0, i 0 ansin tá sé dearfach. Má tá sé = to 0 ansin tá sé 0, agus má tá sé <0 ansin tá sé diúltach. Agus is é an ceann eile a dhéanamh más rud é, eile más rud é, eile. Is é an difríocht idir an dá go bhfuil an duine ag dul iarbhír a seiceáil más> 0, <0 = 0 nó trí huaire, mar sin má tá tú ar an uimhir 2, mar shampla, tá sé ag dul chun teacht anseo agus a rá más rud é (x> 0), agus tá sé ag dul a rá yes, mar sin a phriontáil mé dearfach. Ach cé a fhios agam go bhfuil sé> 0 agus nach bhfuil ag dul a bheith 0 nó <0 Tá mé ag dul fós le déanamh go bhfuil sé 0, tá sé <0, mar sin tá mé ag dul i ndáiríre taobh istigh de IFS nach raibh mé ag mar tá a fhios agam cheana féin nach ag dul ar é a shásamh ar bith de na coinníollacha sin. Is féidir liom a bhaint as an más rud é, eile más rud é, eile ráiteas. Deir sé go bunúsach má tá x = 0 phriontáil mé an dearfach. Más rud é nach bhfuil sé, tá mé ag dul chun tástáil seo chomh maith. Má tá sé 2 Níl mé ag dul seo a dhéanamh. Go bunúsach má bhí mé x = 2 a bheadh ​​leat a rá más rud é (x> 0), yes, a phriontáil mar sin seo. Anois go bhfuil a fhios agam go bhfuil sé> 0 agus go deimhin é an chéad dá Níl mé ag dul go fiú a reáchtáil an gcód seo. Ritheann an cód níos tapúla, i ndáiríre, 3 huaire níos tapúla má úsáideann tú an. D'fhoghlaim muid freisin faoi agus agus nó. Níl mé ag dul chun dul tríd seo mar labhair Lexi cheana mar gheall orthu. Tá sé díreach na && agus | | oibreoir. Is é an rud ach beidh mé a rá a bheith cúramach nuair a tá tú 3 coinníollacha. Lúibíní a úsáid mar tá sé an-mearbhall nuair a tá tú i riocht agus ceann eile nó ceann eile. Lúibíní a úsáid ach a bheith cinnte go bhfuil a dhéanamh do dhálaí chiall mar gheall sa chás sin, mar shampla, is féidir leat a shamhlú go d'fhéadfadh sé a bheith ar an chéad choinníoll agus ceann amháin nó an duine eile nó an 2 coinníollacha le chéile i agus nó an tríú ceann, agus mar sin a bheith díreach cúramach. Agus ar deireadh, phléamar lasca. Tá athrú an-úsáideach nuair a bheidh agat athróg. Ligean le rá go bhfuil tú athróg ar nós n is féidir a bheith 0, 1, nó 2, agus do gach ceann de na cásanna sin bhfuil tú ag dul a dhéanamh ar an tasc. Is féidir leat a rá athrú ar an athróg, agus léiríonn sé go an luach is ansin cosúil value1 mé ag dul a dhéanamh, agus ansin mé briseadh, rud a chiallaíonn nach bhfuil mé ag dul chun breathnú ar aon cheann de na cásanna eile mar gheall sásta againn cheana féin go bhfuil cás agus ansin value2 agus mar sin de, agus is féidir liom a bheith chomh maith le lasc réamhshocraithe. Ciallaíonn sé sin más rud é nach gcomhlíonann sí aon cheann de na cásanna go raibh mé go bhfuil mé ag dul a dhéanamh rud éigin eile, ach sin roghnach. Sin uile dom. Anois, a ligean tá Tommy. Ceart go leor, tá sé seo ag dul a bheith Seachtain 3-ish. Seo iad roinnt de na hábhair beidh muid ag clúdach, rialaithe criptithe, raon feidhme, eagair, et cetera. Just a focal tapaidh ar rialaithe criptithe. Ní Táimid ag dul a casúr an bhaile seo. Rinneamar é seo i pset 2, ach le haghaidh an tráth na gceist a dhéanamh cinnte a fhios agat an difríocht idir an cipher Caesar agus an cipher Vigenère, conas an dá de na hoibre sifir agus cad é mar a chriptiú agus dhíchriptiú téacs baint úsáide as na 2 sifir. Cuimhnigh, rothlaíonn an cipher Caesar ach gach carachtar ag an méid céanna, ag déanamh cinnte mod tú ar líon na litreacha sa aibítir. Agus an cipher Vigenère, ar an láimh eile rotates, gach carachtar ag méid éagsúla, mar sin seachas a rá Beidh gach rothlú carachtar faoi 3 Vigenère rothlú gach carachtar le méid éagsúil ag brath ar roinnt eochairfhocal áit a seasann gach litir i an eochairfhocal roinnt méid éagsúla a rothlú an téacs soiléir ag. A ligean ar labhairt ar dtús faoi raon feidhme athraitheach. Tá 2 cineálacha éagsúla na n-athróg. Tá athróga áitiúla, agus tá siad ag dul a bheith sainithe lasmuigh de phríomh nó lasmuigh d'aon fheidhm nó bloc, agus beidh siad seo ar fáil áit ar bith i do chlár. Má tá tú feidhm agus sa fheidhm lúb agus Is é an athróg mór domhanda ar fáil i ngach áit. A athróg áitiúil, ar an láimh eile, tá scoped go dtí an áit ina bhfuil sé sainithe. Má tá tú feidhm anseo, mar shampla, ní mór dúinn an fheidhm g, agus taobh istigh de g tá athróg anseo ar a dtugtar y, agus ciallaíonn sin go bhfuil an athróg áitiúil. Cé go bhfuil an athróg ar a dtugtar y agus tá an athróg ar a dtugtar y na 2 feidhmeanna bhfuil aon smaoineamh cad iad chéile athróg áitiúil. Ar an láimh eile, suas anseo deirimid slánuimhir x = 5, agus tá sé seo lasmuigh de scóip aon fheidhm. Tá sé lasmuigh de raon is mó, mar sin tá sé seo athróg domhanda. Ciallaíonn sé sin go taobh istigh de na 2 feidhmeanna nuair a rá liom x - nó x + + Tá mé ag teacht ar an x ​​ar comhbhrí le trína bhfuil an y agus an y athróga éagsúla. Sin an difríocht idir athróg domhanda agus athróg áitiúil. Chomh fada is a dearadh lena mbaineann, uaireanta, tá sé dócha go bhfuil smaoineamh níos fearr a a choinneáil ar athróga áitiúil aon uair is féidir leat b'fhéidir ós rud é go bhfuil féidir a bunch na n-athróg domhanda a fháil i ndáiríre mearbhaill. Má tá tú a bunch feidhmeanna a mhodhnú go léir an rud céanna d'fhéadfadh tú dearmad ar an méid gcás go modhnaíonn an fheidhm seo trí thimpiste seo domhanda, agus ní dhéanann an fheidhm eile a fhios faoi, agus nach é a fháil go leor mearbhall mar a fhaigheann tú cód níos mó. A choinneáil ar athróga áitiúil aon uair is féidir leat b'fhéidir Tá dearadh amháin go maith. Eagair, cuimhnigh, tá go simplí liostaí na n-eilimintí den chineál céanna. Ní féidir taobh istigh de CI Tá liosta cosúil le 1, 2.0, hello. Againn nach féidir a dhéanamh go díreach. Nuair a fhógairt againn le sraith i C go léir de na heilimintí a bheith den chineál céanna. Anseo tá mé le sraith de 3 slánuimhreacha. Anseo tá mé fad an eagar, ach má tá mé á dhearbhú ach é sa chomhréir i gcás I an rud nach bhfuil gach ceann de na heilimintí ní féidir liom gá go teicniúil seo 3. Is é an tiomsaitheoir cliste go leor chun an figiúr amach cé chomh mór ba chóir an eagar a bheith. Anois, nuair is mian liom a fháil nó a chur ar luach eagar is é seo an chomhréir sin a dhéanamh. Cuirfidh sé seo a mhodhnú i ndáiríre an ghné dara sraith mar, cuimhnigh, uimhriú Tosaíonn ag 0, ní ag 1. Más mian liom a léamh go bhfuil luach féidir liom a rá rud éigin cosúil le slánuimhir x = eagar [1]. Nó más mian liom a chur ar an luach, ar nós mé ag déanamh anseo, Féidir liom a rá eagar [1] = 4. An uair eilimintí rochtain a fháil ar a n-innéacs nó a seasamh nó i gcás ina bhfuil siad ar an eagar, agus a thosaíonn an liosta ag 0. Is féidir linn a bheith chomh maith eagair de arrays, agus tá sé seo ar a dtugtar sraith il-tríthoiseach. Nuair a bhfuil muid sraith il-tríthoiseach ciallaíonn sé gur féidir linn a bheith rud éigin cosúil le sraitheanna agus colúin, agus tá sé seo ach bealach amháin físiúil seo nó ag smaoineamh air. Nuair a bheidh mé eagar iltoiseach Ciallaíonn sé sin go Tá mé ag dul chun tús a dhíth orthu níos mó ná 1 innéacs mar má tá mé greille ní hamháin rá cad as a chéile tá tú i thabhairt dúinn roinnt. Sin i ndáiríre ag dul ach a thabhairt dúinn liosta de uimhreacha. Ligean le rá go bhfuil mé an eagar anseo. Tá mé le sraith ar a dtugtar greille, agus tá mé ag rá tá sé 2 sraitheanna agus colúin 3, agus mar sin tá sé seo bealach amháin físiúil é. Nuair a rá liom Ba mhaith liom a fháil ar an eilimint ag [1] [2] go Ciallaíonn sé sin mar go bhfuil na sraitheanna ar dtús agus ansin colúin Tá mé ag dul chun léim chun rámhaigh 1 ó dúirt mé 1. Ansin mé ag dul le teacht os cionn anseo chun an gcolún 2, agus mé ag dul a fháil ar an luach 6. Ciall a bhaint as? Il-tríthoiseach eagair, cuimhnigh, go teicniúil ach le sraith de arrays. Is féidir linn a bheith arrays de arrays de arrays. Is féidir linn a choinneáil ag dul, ach i ndáiríre bealach amháin chun smaoineamh ar conas é seo á leagan amach agus cad atá ar siúl go bhfuil a shamhlú é a i greille mar seo. Nuair a pas muid arrays le feidhmeanna, tá siad ag dul a iompar le beagán difriúil ná nuair a théann muid athróg rialta chun feidhmeanna a cosúil le dul le slánuimhir nó snámhphointe. Nuair a pas againn i cineálacha slánuimhir nó ruabhric nó aon cheann de na sonraí eile Thóg muid díreach le breathnú ar an gcás go modhnaíonn an fheidhm luach na athróg nach bhfuil athrú ag dul a propagate suas don fheidhm ag glaoch. Le sraith, ar an láimh eile, beidh a tharlaíonn. Má éiríonn liom i sraith le roinnt fheidhm agus athruithe feidhme sin cuid de na gnéithe, nuair a thiocfaidh mé ar ais go dtí an fheidhm a d'iarr sé Is é mo eagar ag dul anois a bheith difriúil, agus an stór focal chun na Tá arrays ar aghaidh trí thagairt a dhéanamh, mar beidh orainn a fheiceáil níos déanaí. Tá sé seo a bhaineann le conas obair threo, i gcás na cineálacha sonraí bunúsacha, ar an láimh eile, tá a rith ag luach. Is féidir linn a smaoineamh gur mar cóip a dhéanamh ar roinnt athróg agus ansin dul ar an gcóip. Ní chuireann sé cuma cad a dhéanann muid leis an athróg. Ní bheidh feidhm ag iarraidh bheith ar an eolas go raibh athrú é. Tá arrays ach beagán difriúil ina leith sin. Mar shampla, mar a chonaic muid ach, tá príomh-simplí feidhm nach féidir a dhéanamh i 2 argóintí. Is é an chéad argóint leis an fheidhm is mó argc, nó líon na hargóintí, agus tá an dara hargóint ar a dtugtar argv, agus iad siúd na luachanna iarbhír na hargóintí. Ligean le rá go bhfuil mé clár ar a dtugtar this.c, agus a rá liom seo a dhéanamh, agus mé ag dul a reáchtáil seo ag an líne orduithe. Anois chun pas a fháil i roinnt argóintí ar mo chlár ar a dtugtar seo, Raibh mé in ann a rá rud éigin cosúil le. / Seo cs 50. Tá sé seo cad a shamhlú David a dhéanamh gach lá ag an gcríochfort. Ach anois ar an taobh istigh príomhfheidhm an chláir Tá na luachanna seo, mar sin tá argc 4. D'fhéadfadh sé a bheith beagán mearbhall mar gheall i ndáiríre tá muid ag dul ach amháin i Tá cs 50. Sin ach 3. Ach cuimhnigh go bhfuil an chéad ghné den argv nó an chéad argóint Is é an t-ainm na feidhme féin. Mar sin, ciallaíonn sé sin go mór dúinn 4 rudaí anseo, agus tá an chéad eilimint ag dul a bheith. / seo. Agus beidh sé seo a léiriú mar theaghrán. Ansin tá na gnéithe eile a chlóscríobh againn i ndiaidh ainm an chláir. Mar sin, ach mar leataobh, mar a chonaic muid dócha i pset 2, cuimhnigh go bhfuil an téad 50 ≠ an 50 slánuimhir. Mar sin, ní féidir linn a rá rud éigin cosúil le, 'slánuimhir x = argv 3.' Sin nach bhfuil ag dul ach ciall a dhéanamh, toisc go bhfuil an teaghrán, agus tá sé seo slánuimhir. Mar sin, más mian leat a thiontú idir 2, cuimhnigh, táimid ag dul chuig Tá an fheidhm seo ar a dtugtar draíochta atoi. A thógann téad agus tuairisceáin an tslánuimhir ionadaíocht taobh istigh den teaghrán. Mar sin go botún éasca a dhéanamh ar an tráth na gceist, ach smaoineamh go mbeidh sé seo go huathoibríoch ar an chineál ceart. Ach tá a fhios go díreach a mbeidh siad seo i gcónaí teaghráin fiú má tá an teaghrán amháin slánuimhir nó carachtar nó snámhphointe. Mar sin a ligean anois ar labhairt faoi reáchtáil am. Nuair atá againn go léir na halgartaim a dhéanamh ar fad na rudaí seo dÚsachtach, bíonn sé úsáideach i ndáiríre a iarraidh ar an cheist, "Cé chomh fada a dhéanann siad a dhéanamh?" Ionadaíocht againn go bhfuil rud ar a dtugtar nodaireacht asymptotic. Mar sin, ciallaíonn sé seo go - go maith, a ligean ar rá linn a thabhairt dár algartam roinnt ionchuir i ndáiríre, i ndáiríre, i ndáiríre mór. Is mian linn a iarraidh ar an cheist, "Tá Cé chomh fada is atá sé ag dul a ghlacadh? Cé mhéad céimeanna a thógfaidh sé ar ár algartam a reáchtáil mar fheidhm de mhéid an ionchur? " Mar sin, is é an bealach chéad is féidir linn cur síos a dhéanamh am a reáchtáil le mór O. Agus é seo ár gcuid ama ag rith is measa cás. Mar sin, más mian linn a réiteach le sraith, agus a thabhairt dúinn ár n-algartam eagar go bhfuil in ord íslitheach nuair ba chóir é a bheith in ord dul suas, go ag dul a bheith an cás is measa. Is é seo ár uachtair cheangal ar an t-uasmhéid ama beidh ár algartam a ghlacadh. Ar an láimh eile, tá sé seo Ω ag dul chun cur síos is fearr ar chás am ag rith. Mar sin, má thugann muid sraith atá sórtáilte cheana le algartam sórtáil, cá fhad a thógfaidh sé a shórtáil sé? Agus seo, ansin, cur síos ar níos ísle cheangal ar rith ama. Mar sin, anseo ach roinnt focail a chuireann síos ar roinnt uaireanta coitianta ag rith. Tá siad seo in ord ardaitheach. Is é an t-am is tapúla a reáchtáil againn ar a dtugtar i gcónaí. Ciallaíonn sin is cuma cé mhéad gnéithe a thabhairt dúinn ár n-algartam, cuma cé chomh mór is é ár raon, sórtáil sé nó ag déanamh is cuma cad tá ag éirí leis an eagar a ghlacadh i gcónaí ar an méid céanna ama. Mar sin, is féidir linn a léiriú go díreach le 1, a bhfuil tairiseach. D'fhéachamar freisin ag an am a reáchtáil logartamach. Mar sin, tá rud éigin cosúil le cuardach dénártha logartamach, nuair a gearradh againn ar an bhfadhb in am leath gach agus ansin rudaí a fháil ach níos airde ó ann. Agus má tá tú ag scríobh riamh O d'aon algartam factorial, tú nár chóir a mheas is dócha seo, mar do phost lá. Nuair a chur i gcomparáid againn amanna reáchtáil tá sé tábhachtach a choinneáil i gcuimhne na rudaí seo. Mar sin má tá mé an algartam go O (n), agus duine éigin eile Tá algartaim de O (2n) is iad seo i ndáiríre asymptotically coibhéiseacha a ghlacadh. Mar sin má shamhlú muid n a bheith ina líon mór mar eleventy billiún: mar sin nuair a bhíonn muid ag comparáid eleventy billiún chun rud éigin cosúil le eleventy billiún + 3, go tobann nach bhfuil 3 a dhéanamh i ndáiríre difríocht mhór níos mó. Sin an fáth táimid ag dul chun tús a chur ag smaoineamh ar na rudaí a bheith comhionann. Mar sin, rudaí cosúil le na tairisigh anseo, níl 2 x seo, nó cur 3, is iad seo ach tairisigh, agus tá siad ag dul chun titim suas. Mar sin tá sin an fáth go bhfuil gach 3 de na huaire reáchtáil mar an gcéanna mar a rá go bhfuil siad O (n). Mar an gcéanna, má táimid tar éis 2 uair reáchtáil eile, a ligean ar rá O (n ³ + 2n ²), is féidir linn a chur + N, + 7, agus ansin ní mór dúinn am eile a reáchtáil go díreach O (n ³). arís, is iad seo an rud céanna mar gheall ar na - nach bhfuil na mar an gcéanna. Seo iad na rudaí céanna, tá brón orainn. Mar sin, is iad seo mar an gcéanna mar gheall ar tá sé seo ³ n ag dul a tionchar an-mhór seo a ² 2n. Cad é nach bhfuil an rud céanna má tá muid amanna reáchtáil mar O (n ³) agus O (n ²) toisc go bhfuil an ³ n bhfad níos mó ná seo ² n. Mar sin, má táimid easpónant a bheith acu, go tobann a thosaíonn seo le hábhar, ach nuair a bhíonn muid ag déileáil go díreach le tosca mar a bhfuil muid suas anseo, ansin ní tá sé ag dul go dtí ábhar mar go bhfuil siad ag dul díreach le titim amach. A ligean ar ghlacadh le breathnú ar roinnt de na halgartaim againn le feiceáil go dtí seo agus labhairt faoina gcuid ama a reáchtáil. Is é an bealach chéad ag lorg do roinnt i liosta, a chonaic muid go raibh, cuardaigh líneach. Agus is é an cur i bhfeidhm cuardaigh líneach Super simplí. Tá muid díreach liosta, agus táimid ag dul chun breathnú ar gach gné amháin ar an liosta go dtí go bhfaighidh muid ar an líon táimid ag lorg. Mar sin, go Ciallaíonn sé sin, i gcás is measa, an O (n). Agus d'fhéadfadh an cás is measa anseo a bheith má tá an eilimint an ghné dheireanach, ansin ag baint úsáide cuardaigh líneach ní mór dúinn chun breathnú ar gach gné amháin go dtí go againn a fháil chun an ceann deireanach chun go mbeadh a fhios go raibh sé i ndáiríre ar an liosta. Ní féidir linn a thabhairt ach suas halfway agus a rá, "Tá sé dócha nach ann." Le cuardach líneach ní mór dúinn chun breathnú ar an rud ar fad. An t-am ag rith is fearr ar chás, ar an láimh eile, tá tairiseach toisc go bhfuil an cás is fearr an eilimint táimid ag lorg ach an chéad cheann ar an liosta. Mar sin, dul ar é a chur chugainn go díreach 1 chéim, is cuma cé chomh mór is atá an liosta má táimid ag lorg an chéad eilimint gach uair. Mar sin, nuair a chuardaíonn tú, cuimhnigh, nach bhfuil de dhíth go bhfuil ár liosta a shórtáil. Mar gheall ar táimid ag dul go simplí chun breathnú ar gach gné amháin, agus ní chuireann sé ábhar i ndáiríre Cén t-ord na heilimintí sin go bhfuil isteach Tá algartam cuardaigh níos cliste rud éigin cosúil le cuardach dénártha. Cuimhnigh, le cur chun feidhme cuardaigh dénártha nuair a bhíonn tú ag dul a a choinneáil ag breathnú ar an lár an liosta. Agus toisc go bhfuil muid ag breathnú ar an lár, a cheangal againn go bhfuil an liosta in eagar eile nó nach bhfuil a fhios againn áit a bhfuil an lár, agus ní mór dúinn chun breathnú ar an liosta iomlán a fháil air, agus ansin ag an bpointe sin tá muid ag wasting ach am. Mar sin, má táimid tar éis liosta a shórtáil agus a aimsiú againn ar an lár, tá muid ag dul chun comparáid a dhéanamh ar an lár leis an eilimint táimid ag lorg. Má tá sé ró-ard, ansin is féidir linn dearmad a dhéanamh ar an leath ceart mar tá a fhios againn go más rud é ár n-eilimint ró-ard cheana agus tá gach rud do cheart ngné seo fiú níos airde, ansin ní mór dúinn chun breathnú ann níos mó. Más ar an láimh eile, más rud é ár n-eilimint ró-íseal, Tá a fhios againn go bhfuil gach rud ar an taobh clé den ghné freisin ró-íseal, mar sin ní dhéanann sé a dhéanamh i ndáiríre ciall chun breathnú ann, ach an oiread. Sa tslí seo, le gach céim agus gach uair a táimid ag an lárphointe an liosta, táimid ag dul a ghearradh ár fhadhb i leath toisc go tobann tá a fhios againn a bunch iomlán na n-uimhreacha nach féidir a bheith ar an duine táimid ag lorg. Sa pseudocode mbeadh sé seo a lorg rud éigin mar seo, agus toisc go bhfuil muid ag gearradh an liosta in am leath gach amháin, ár gcás is measa jumps am ar siúl ó líneach go logartamach. Mar sin, go tobann ní mór dúinn logáil isteach i gcéimeanna chun a fháil gné i liosta. An t-am ag rith is fearr ar chás, cé go bhfuil, go fóill i gcónaí mar anois, a ligean ach a rá go bhfuil gné táimid ag lorg i gcónaí ar an lár beacht an liosta bunaidh. Mar sin, is féidir linn fás ár liosta chomh mór agus is mian linn, ach má tá an eilimint táimid ag lorg ar an lár, ansin tá sé ag dul ach a ghlacadh chugainn 1 chéim. Mar sin tá sin an fáth go bhfuil muid O (log n) agus Ω (1) nó tairiseach. A ligean ar siúl i ndáiríre cuardaigh dénártha ar an liosta seo. Mar sin a ligean ar rá go bhfuil muid ag lorg an eilimint 164. Is é an chéad rud a táimid ag dul a dhéanamh teacht ar an lárphointe an liosta seo. Tharlaíonn sé ach ionas go mbeidh an lárphointe ag dul chun titim i idir na huimhreacha 2, sin a ligean ach a rá treallach, gach uair a dtagann an lárphointe idir huimhreacha 2, a ligean ar bhabhta suas díreach. Ní mór dúinn ach chun a chinntiú a dhéanann muid seo gach céim ar an mbealach. Mar sin, táimid ag dul do bhabhta suas, agus táimid ag dul a rá go bhfuil 161 an lár ár liosta. Mar sin, 161 <164, agus gach gné ar an taobh clé de 161 freisin <164, agus mar sin tá a fhios againn go nach bhfuil sé ag dul chun cabhrú linn ar chor ar bith chun tosú ag lorg thar anseo mar gheall ar an eilimint táimid ag lorg ní féidir a bheith ann. Mar sin, cad is féidir linn a dhéanamh is féidir linn dearmad a dhéanamh go díreach faoi sin leath iomlán na láimhe clé den liosta, agus anois a mheas ach ó na láimhe deise den aghaidh 161. Mar sin, arís, is é seo an lárphointe; ligean ar bhabhta suas díreach. Anois tá 175 ró-mhór. Mar sin, tá a fhios againn nach bhfuil sé ag dul chun cabhrú lorg againn anseo nó anseo, ionas gur féidir linn a chaitheamh go díreach ar shiúl, agus ar deireadh thiar beidh bhuail an 164 againn. Ceisteanna ar bith ar an cuardach dénártha? A ligean ar bogadh ar aghaidh ó chuardach trí liosta sórtáilte cheana a ghlacadh i ndáiríre liosta d'uimhreacha in ord ar bith agus ag déanamh an liosta in ord ardaitheach. Bhí ar a dtugtar an algartam chéad fhéachamar ar saghas mboilgeog. Agus bheadh ​​sé seo a bheith níos simplí de na halgartaim a chonaic muid. Deir saghas mboilgeog go nuair a bhíonn aon 2 eilimintí taobh istigh den liosta as áit, rud a chiallaíonn go bhfuil líon níos airde ar an taobh clé de líon níos ísle, ansin táimid ag dul a mhalartú leo, mar ciallaíonn sin go mbeidh an liosta "Níos mó in eagar" ná mar a bhí sé roimh. Agus táimid ag dul díreach a leanúint leis an bpróiseas arís agus arís agus arís eile go dtí deireadh an cineál gnéithe mboilgeog a suíomh ceart agus táimid liosta in eagar. Is é an t-am a reáchtáil ar an dul a bheith O (n ²). Cén fáth? Bhuel, mar gheall ar an gcás is measa, tá muid ag dul a ghlacadh gach gné, agus táimid ag dul chun deireadh suas i gcomparáid le gach gné eile ar an liosta. Ach sa chás is fearr, ní mór dúinn liosta sórtáilte cheana, mboilgeog saghas ar ach ag dul chun dul trí aon uair amháin, a rá "Nope. ní raibh mé a dhéanamh ar aon babhtálacha, mar sin mé ag déanamh." Mar sin, ní mór dúinn a am is fearr ar chás a reáchtáil Ω (n). A ligean ar reáchtáil saghas mboilgeog ar liosta. Nó an chéad, a ligean ar breathnú díreach ar roinnt pseudocode i ndáiríre go tapa. Ba mhaith linn a rá ba mhaith linn súil a choinneáil ar, i ngach leagan den lúb, a choinneáil ar súil ar an bhfuil nó nach athraigh muid aon ghnéithe. Mar sin, an chúis is é sin, táimid ag dul chun stop a chur nuair nach bhfuil againn swapped aon ghnéithe. Mar sin, ag tús ár lúb ní mór dúinn a mhalartú rud ar bith, mar sin beidh orainn a rá go bréagach. Anois, tá muid ag dul chun dul tríd an liosta agus eilimint i gcomparáid i eilimint i + 1 agus má tá sé an cás go bhfuil líon níos mó ar an taobh clé de líon níos lú, ansin táimid ag dul díreach a mhalartú leo. Agus ansin táimid ag dul a mheabhrú go bhfuil Mhalartaigh againn mar eilimint. Ciallaíonn sé sin gur gá dúinn dul tríd an liosta ar a laghad 1 níos mó ama toisc go bhfuil an coinníoll a stop muid nuair a bhíonn an liosta iomlán curtha in eagar cheana féin, rud a chiallaíonn nach mór dúinn a dhéanamh ar aon babhtálacha. Mar sin tá sin an fáth go bhfuil ár staid síos anseo 'agus tá roinnt gnéithe a bheith swapped.' Mar sin a ligean anois ar breathnú díreach ag an rith ar liosta. Tá mé ar an liosta 5,0,1,6,4. Tá saghas mboilgeog dul chun tús a an bealach ar fad ar thaobh na láimhe clé, agus tá sé ag dul a chur i gcomparáid na heilimintí i, mar sin 0 go i + 1, a bhfuil eilimint 1. Tá sé seo ag dul a rá, go maith 5> 0, ach anois tá 5 ar an taobh clé, mar sin is gá dom a mhalartú an 5 agus an 0. Nuair a bheidh mé a mhalartú leo, go tobann mé an liosta seo éagsúla. 5> 1, mar sin táimid ag dul a mhalartú leo. Ní 5> 6, mar sin ní mór dúinn aon rud a dhéanamh anseo. Ach 6> 4, mar sin ní mór dúinn a mhalartú. Arís, ní mór dúinn a reáchtáil trí mheán an liosta iomlán a fháil amach ar deireadh thiar go bhfuil na as ord; babhtála againn orthu, agus ag an bpointe seo ní mór dúinn a reáchtáil trí mheán an liosta t-am 1 níos mó a dhéanamh cinnte go bhfuil gach rud a ordú, agus ag an saghas mboilgeog bpointe críochnaithe. Tá algartam éagsúla cur roinnt gnéithe agus sórtáil iad a shórtáil roghnaithe. Is é an smaoineamh atá laistiar saghas roghnaithe a táimid ag dul a thógáil suas le cuid curtha in eagar ar an liosta 1 eilimint ag an am. Agus is é an bealach táimid ag dul a dhéanamh go trí thógáil suas an deighleog na láimhe clé den liosta. Agus go bunúsach, gach - ar gach céim, táimid ag dul a ghlacadh ar an ngné is lú againn fágtha nach bhfuil curtha ar eagar go fóill, agus táimid ag dul a bhogadh isteach sa deighleog in eagar. Ciallaíonn sin ní mór dúinn a fháil go leanúnach an ghné íosta neamhshórtáilte agus ansin an ghné íosta agus é a mhalartú le cibé d'fhág-chuid is mó eilimint nach bhfuil curtha in eagar. Is é an t-am a reáchtáil ar an dul a bheith O (n ²) mar gheall ar an gcás is measa ní mór dúinn gach eilimint amháin i gcomparáid le gach gné eile. Toisc go bhfuil muid ag rá go más rud é go dtosaíonn muid ar an leath clé den liosta, ní mór dúinn chun dul tríd an deighleog ar fad ceart chun teacht ar an ngné is lú. Agus ansin, arís, is gá dúinn dul thar an deighleog ar fad ceart agus choinneáil ag dul thar an thar agus os cionn arís agus arís eile. Sin ag dul a bheith n ². Táimid ag dul go dtí gá le haghaidh taobh istigh lúb eile le haghaidh lúb a thugann le tuiscint n ². I gcás smaoinimh is fearr, a ligean ar rá linn a thabhairt dó liosta sórtáilte cheana; againn nach i ndáiríre a dhéanamh a dhéanamh ar aon níos fearr ná ² n. Toisc go bhfuil saghas rogha aon bhealach a fhios agam go Is é an ghné is lú ach an ceann a tharlóidh liom a bheith ag féachaint ar. Caithfidh sé fós a dhéanamh cinnte go bhfuil an iarbhír an t-íosmhéid. Agus an bealach amháin chun a dhéanamh cinnte go bhfuil sé an t-íosmhéid, ag baint úsáide as an algartam, is é sin le breathnú ar gach gné amháin arís. Mar sin, i ndáiríre, má tá tú a thabhairt dó - má thugann tú saghas roghnú liosta sórtáilte cheana, níl sé ag dul a dhéanamh ar bith níos fearr ná mar a thugann sé ar liosta nach bhfuil curtha in eagar fós. Dála an scéil, má tharlaíonn sé a bheith ar an cás go bhfuil rud éigin O (rud) agus óimige de rud éigin, is féidir linn ach a rá níos mó succinctly go bhfuil sé θ ar rud éigin. Mar sin má fheiceann tú go teacht suas in áit ar bith, go bhfuil an méid a chiallaíonn go díreach. Má tá rud éigin téite n ², tá sé idir O mór (n ²) agus Ω (n ²). Mar sin cás is fearr agus cás is measa, ní dhéanann sé difríocht a dhéanamh, Is é an algartam ag dul a dhéanamh ar an rud céanna gach uair. Mar sin, is é seo cad a d'fhéadfadh pseudocode le haghaidh saghas roghnú cuma mhaith. Táimid ag dul go bunúsach a rá gur mhaith liom a iterate ar an liosta ó chlé go deas, agus ag gach atriall den lúb, tá mé ag dul chun bogadh an ghné is lú isteach sa chuid curtha in eagar ar an liosta. Agus nuair a liom bogadh rud éigin ann riamh, ní mór dom chun breathnú ar an ghné sin arís. Mar gheall ar chomh luath agus a mhalartú mé eilimint i an deighleán clé den liosta, tá sé curtha in eagar toisc go bhfuil muid ag déanamh gach rud in ord ardaitheach ag minimums úsáid a bhaint as. Mar sin, dúirt muid, maith go leor, tá muid ag seasamh i, agus ní mór dúinn chun breathnú ar gach ceann de na heilimintí leis an gceart i d'fhonn teacht ar an méid is lú. Mar sin, Ciallaíonn sé sin go ba mhaith linn chun breathnú ó i + 1 go dtí deireadh an liosta. Agus anois, má tá an ghné sin tá muid ag lorg faoi láthair ag níos lú ná ár n-íosmhéid go dtí seo, a bhfuil, cuimhnigh, tá muid ag tosú ar an amach is lú a bheith díreach is cuma cén eilimint táimid faoi láthair ag; beidh mé glacadh leis go bhfuil an t-íosmhéid. Má fhaigheann mé gné go bhfuil níos lú ná sin, ansin tá mé ag dul a rá, maith go leor, go maith, a fuair mé ar a laghad nua. Tá mé ag dul chun cuimhneamh áit a raibh an íosmhéid. Mar sin anois, nuair atá mé imithe tríd an deighleog ceart neamhshórtáilte, Is féidir liom a rá mé ag dul a mhalartú leis an ngné íosta an eilimint sin san áit i. Sin ag dul a thógáil suas mo liosta, mo chuid curtha in eagar ar an liosta ó chlé go deas, agus ní mór dúinn riamh chun breathnú ar ghné arís tá sé sa chuid sin. Nuair atá againn mhalartú é. Mar sin a ligean reáchtáil saghas roghnú ar an liosta seo. Is é an ghné gorm anseo ag dul a bheith ar an i, agus gearrtar an ghné dearg ag dul a bheith an eilimint íosta. Mar sin, a thosaíonn i léir ar an mbealach ar an taobh clé den liosta, agus mar sin ar 5 pm. Anois, ní mór dúinn a fháil ar an ghné íosta neamhshórtáilte. Mar sin, deirimid 0 <5, mar sin tá mo 0 íosta nua. Ach ní féidir liom stop a chur ann, mar gheall ar cé gur féidir linn a aithint go bhfuil 0 is lú, ní mór dúinn a reáchtáil trí gach gné eile de chuid an liosta a dhéanamh cinnte. Mar sin, 1 Is mó, tá 6 níos mó, is é 4 níos mó. Ciallaíonn sé sin go tar éis féachaint ar gach ceann de na heilimintí, tá mé meáite ar 0 is lú. Mar sin, tá mé ag dul a mhalartú an 5 agus an 0. Nuair a liom a mhalartú go, Tá mé ag dul a fháil ar liosta nua, agus tá a fhios agam riamh gur gá dom chun breathnú ar an 0 arís mar aon uair amháin tá mé Mhalartaigh sé, bhí mé ag curtha in eagar é agus táimid ag déanamh. Anois, a tharlaíonn sé ach ionas go mbeidh an ghné gorm arís 5, agus ní mór dúinn chun breathnú ar an 1, 6 agus an 4 a chinneadh go 1 Is é an ghné is lú is lú, mar sin beidh orainn a mhalartú an 1 agus an 5. Arís, ní mór dúinn chun breathnú ar - an 5 i gcomparáid leis an 6 agus an 4, agus táimid ag dul a mhalartú an 4 agus an 5, agus ar deireadh, i gcomparáid iad siúd 2 uimhreacha agus babhtála iad go dtí go bhfaigheann muid ár liosta sórtáilte. Ceisteanna ar bith ar chineál roghnaithe? Maith go leor. A ligean ar aistriú go dtí an ábhar seo caite anseo, agus go bhfuil athchúrsáil. Athchúrsáil, cuimhnigh, is é an rud meta i ndáiríre nuair a bhfuil feidhm arís agus arís eile glaonna féin. Mar sin, ag pointe éigin, cé go bhfuil ár n-fuction ag glaoch arís agus arís eile é féin, tá gá le pointe éigin ag a stopadh we ag glaoch féin. Toisc más rud é nach bhfuil againn é sin a dhéanamh, ansin táimid ag dul díreach a leanfaidh sí ag déanamh seo go deo, agus ár gclár nach bhfuil ag dul díreach a fhoirceannadh. Tugaimid an coinníoll seo an cás bonn. Agus deir an mbunchás, seachas ag glaoch feidhm arís, Tá mé ag dul díreach a thabhairt ar ais roinnt luach. Mar sin, nuair a againn ar ais ar luach, tá muid ag iarraidh a stopadh féin, agus is féidir an chuid eile de na glaonna atá déanta againn go dtí seo ar ais chomh maith. Is é an os coinne an cháis bonn an cás athchúrsach. Agus é seo nuair is mian linn go ceann eile glaoch a dhéanamh chun an fheidhm go bhfuil againn faoi láthair isteach Agus muid is dócha, cé nach i gcónaí, ag iarraidh úsáid a bhaint as argóintí éagsúla. Mar sin, má táimid tar éis feidhm a dtugtar f, agus f ar a dtugtar a ghlacadh ach 1 argóint, agus muid a choinneáil ach glaoch f (1), f (1), f (1), agus a tharlaíonn sé ach ionas go Tagann an argóint 1 i gcás athchúrsach, againn riamh ag dul go fóill a stopadh. Fiú má táimid tar éis cás a bonn, ní mór dúinn a dhéanamh cinnte go bhfuil deireadh thiar táimid ag dul a bhuail an gcás bonn. Ní chuirimid a choinneáil ach ag fanacht sa chás seo athchúrsach. Go ginearálta, nuair a ghlaonn muid féin, táimid ag dul is dócha go bhfuil argóint difriúil gach uair. Anseo tá feidhm i ndáiríre simplí recursive. Mar sin, beidh sé seo a ríomh an factorial de roinnt. Suas barr anseo ní mór dúinn ár gcás bonn. I gcás go n ≤ 1, ní táimid ag dul chun glaoch factorial arís. Táimid ag dul chun stop a; táimid ag dul díreach a thabhairt ar ais roinnt luach. Más rud é nach bhfuil sé seo fíor, ansin táimid ag dul a bhuail ár gcás athchúrsach. Fógra anseo nach bhfuil muid ag iarraidh ach factorial (n), mar ní bheadh ​​an-chabhrach. Táimid ag dul chun glaoch factorial de rud éigin eile. Agus mar sin is féidir leat a fheiceáil, ar deireadh thiar má éiríonn muid rud éigin factorial (5) nó, táimid ag dul chun glaoch factorial (4) agus mar sin de, agus ar deireadh thiar táimid ag dul a bhuail an cás seo bonn. Mar sin, féachann an maith. A ligean ar a fheiceáil cad a tharlaíonn nuair a reáchtáil againn i ndáiríre seo. Is é seo an chairn, agus a ligean ar rá go bhfuil príomh-dul chun glaoch ar an fheidhm sin le argóint (4). Mar sin, a fheiceann uair factorial agus = 4, beidh factorial glaoch féin. Anois, go tobann, ní mór dúinn factorial (3). Mar sin, tá na feidhmeanna ag dul a choinneáil ag fás go dtí deireadh bhuail muid ár gcás bonn. Ag an bpointe seo, is é an luach ar ais seo an tuairisceán (NX an luach ar ais seo), Is é an luach ar ais ar an NX an luach ar ais seo. Faoi dheireadh, ní mór dúinn a bhuail le huimhir éigin. Ag barr anseo, deirimid ar ais 1. Ciallaíonn sé sin go nuair a táimid ar ais go bhfuil uimhir, is féidir linn pop seo as an chairn. Mar sin, seo factorial (1) a dhéanamh. Nuair 1 tuairisceáin, an factorial (1) tuairisceáin, an tuairisceán seo go dtí an 1. An luach ar ais seo, cuimhnigh go raibh, NX an luach ar ais seo. Mar sin, go tobann a fhios, Guy seo gur mhaith liom a thabhairt ar ais 2. Mar sin, cuimhnigh, ar ais go bhfuil luach seo ach NX an luach ar ais suas anseo. Mar sin, anois is féidir linn a rá 3 x 2, agus ar deireadh, anseo is féidir linn a rá seo ag dul ach a bheith 4 x 3 x 2. Agus nuair a tuairisceáin seo, táimid ag dul síos go dtí taobh istigh slánuimhir amháin is mó. Ceisteanna ar bith ar athchúrsáil? Gach ceart. Mar sin, tá níos mó ama do cheisteanna ag an deireadh, ach anois beidh Joseph chlúdach na hábhair atá fágtha. [Joseph Ong] Gach ceart. Mar sin anois go atá againn Labhair faoi recursions, a ligean ar labhairt le beagán faoi na rudaí a chumasadh saghas é. Is Cumaisc saghas bunúsach ar bhealach eile de shórtáil liosta de uimhreacha. Agus conas a oibríonn sé, le saghas merge bhfuil tú liosta, agus cad a dhéanaimid é rá linn, a ligean ar roinneadh seo i 2 leath. Beidh muid a reáchtáil ar dtús merge sórtáil arís ar an leath clé, ansin beidh muid ag reáchtáil merge sórtáil ar an leath ceart, agus go dtabharfaidh sé linn anois 2 leath atá curtha in eagar, agus anois táimid ag dul a chur le chéile leis na leath le chéile. Tá sé rud beag deacair a fheiceáil gan sampla, mar sin beidh muid ag dul tríd an motions agus féach cad a tharlaíonn. Mar sin, dtosaíonn tú le liosta seo, scar muid sé i 2 leath. Rithimid merge sórtáil ar an leath clé den chéad uair. Mar sin, go bhfuil an leath chlé, agus anois táimid iad a reáchtáil tríd an liosta seo arís a fhaigheann a ritheadh ​​i saghas merge, agus ansin táimid, arís, ag an taobh clé den liosta seo agus reáchtáil againn chumasadh saghas ar sé. Anois, a fháil againn síos go dtí liosta de na huimhreacha 2, agus tá sé anois ar an leath clé ach 1 eilimint fada, agus ní féidir linn scoilt liosta sin ach 1 eilimint i leith, mar sin deirimid go díreach, nuair a ní mór dúinn 50, a bhfuil ach 1 eilimint, tá sé curtha in eagar cheana féin. Chomh luath agus táimid ag déanamh le sin, is féidir linn a fheiceáil gur féidir linn bogadh ar aghaidh chuig an leath ceart an liosta seo, agus tá 3 curtha in eagar chomh maith, agus mar sin anois go bhfuil an dá leath den liosta seo atá curtha in eagar is féidir linn a bheith páirteach na huimhreacha seo ar ais le chéile. Mar sin, táimid ag 50 agus 3; 3 níos lú ná 50, agus mar sin téann sé i dtús agus ansin a thagann 50 isteach Anois, tá sin déanta; théann muid ar ais go dtí an liosta sin agus sórtáil sé leath ceart. Is é 42 sé uimhir féin, mar sin tá sé curtha in eagar cheana féin. Mar sin, anois againn i gcomparáid leis na 2 agus 3 níos lú ná 42, ionas go bhfaigheann a chur i dtús, anois Faigheann 42 a chur i, agus 50 faigheann a chur isteach Anois, tá curtha in eagar, a théann muid go léir ar an mbealach ar ais go dtí an barr, 1337 agus 15. Bhuel, táimid anois ar an leath clé den liosta seo; 1337 is a chuireann sé féin mar sin tá sé curtha in eagar agus céanna le 15. Mar sin, anois againn le chéile na huimhreacha 2 a shórtáil an liosta bunaidh, 15 <1337, mar sin téann sé i dtús, ansin téann 1337 isteach Agus anois curtha in eagar muid araon leath an liosta bunaidh suas barr. Agus tá gach ní mór dúinn a dhéanamh le chéile ar na. Táimid ag na huimhreacha 2 chéad liosta seo, 3 <15, mar sin téann sé isteach ar an eagar saghas chéad uair. 15 <42, agus mar sin téann sé isteach Anois, 42 <1337, go dtéann isteach 50 <1337, agus mar sin téann sé isteach Agus faoi deara go thógamar díreach 2 líon amach an liosta seo. Mar sin, nach bhfuil muid ag malartú díreach idir an 2 liosta. Táimid ag lorg ach ag an tús, agus táimid ag cur leis an ngné go bhfuil níos lú agus ansin é a chur isteach inár eagar. Anois, tá muid chumasc go léir leatha agus táimid ag déanamh. Merge aon cheist agat faoin saghas? Tá? [Mac Léinn] Má tá sé scoilteadh i ngrúpaí éagsúla, cén fáth nach bhfuil scoilt siad ach é aon uair amháin agus tá tú 3 agus 2 i ngrúpa? [An chuid eile den dothuigthe cheist] An chúis - mar sin tá an cheist, ní féidir cén fáth merge go díreach iad ag an chéad chéim tar éis ní mór dúinn iad? An chúis is féidir linn a dhéanamh, tús a chur ag na gnéithe clé chuid is mó de dá thaobh, agus ansin an ceann níos lú agus é a chur i, is é sin a fhios againn go bhfuil na Tá liostaí ar leith in orduithe curtha in eagar. Mar sin má tá mé ag féachaint ar na gnéithe clé an chuid is mó den dá leath, Tá a fhios agam siad ag dul a bheith ar na gnéithe is lú de na liostaí sin. Mar sin, is féidir liom iad a chur isteach na spotaí eilimint is lú ar an liosta mór. Ar an láimh eile, má mé ag amharc ar na 2 liostaí sa dara leibhéal os cionn ann, 50, 3, 42, 1337 agus 15, nach bhfuil na atá curtha in eagar. Mar sin má mé ag amharc ar 50 agus 1337, tá mé ag dul a chur isteach i mo 50 chéad liosta. Ach ní hionann sin a dhéanamh i ndáiríre chiall, toisc go bhfuil 3 an ghné is lú as gach ceann de na. Mar sin, is é an chúis amháin is féidir linn a dhéanamh an chéim seo le chéile mar gheall ar ár liostaí atá curtha in eagar cheana féin. Cén fáth go bhfuil muid a fháil ar síos go léir ar an mbealach chun an bun mar nuair a ní mór dúinn ach uimhir amháin, tá a fhios agat go bhfuil líon amháin i agus de féin go bhfuil cheana féin ar liosta in eagar. Ceisteanna ar bith? Uimh? Castacht? Bhuel, is féidir leat a fheiceáil go bhfuil ag gach céim níl uimhreacha na críche sin, agus is féidir linn a roinnt ar liosta i log leath n amanna, a bhfuil áit a fháil againn an x ​​n loga n castachta. Agus beidh tú a fheiceáil go bhfuil an cás is fearr le haghaidh saghas merge n logáil n, agus a tharlaíonn sé ach mar sin go bhfuil an cás is measa, nó an Ω thar ann, chomh maith n logáil n. Rud éigin a choinneáil i gcuimhne. Bogadh ar, a ligean ar dul ar aghaidh go dtí roinnt comhad Super bunúsacha I / O. Má d'fhéach tú ar Scramble, beidh tú faoi deara a bhí againn chineál éigin de chóras áit a raibh tú scríobh chuig comhad loga má léann tú tríd an gcód. A ligean ar a fheiceáil conas a d'fhéadfadh tú a dhéanamh. Bhuel, ní mór dúinn fprintf, ar féidir leat smaoineamh ar mar printf díreach, ach a phriontáil go díreach chun an comhad ina ionad sin, agus dá bhrí sin an f ag an tús. An saghas cód suas anseo, cad a dhéanann sé é sin, mar a bheadh ​​agat le feiceáil sa Scramble, Téann sé tríd do chlóbhualadh eagar 2-tríthoiseach amach as a chéile de réir a chéile cad iad na huimhreacha. Sa chás seo, priontaí, printf amach do chríochfort nó cad tugaimid an táirgeacht chaighdeánach alt seo. Agus anois, sa chás seo, tá gach ní mór dúinn a dhéanamh in áit printf le fprintf, insint cad comhad is mian leat a phriontáil le, agus sa chás seo priontaí sé ach sé amach chuig an gcomhad in ionad í a phriontáil amach le do teirminéil. Bhuel, ansin begs go bhfuil an cheist: Cén áit a fháil againn an saghas comhad ó, ceart? Rith muid logáil isteach leis an fuction fprintf ach bhí againn aon smaoineamh nuair a tháinig sé as. Bhuel, go luath sa chód, cad a bhí a bhí againn leis an smután de chód thar anseo, a deir go bunúsach go bhfuil gá oscailt an comhad log.txt. Cad a dhéanaimid tar éis go bhfuil muid a dhéanamh cinnte go bhfuil an comhad a osclaíodh i ndáiríre go rathúil. Mar sin, d'fhéadfadh sé a theipeann ar chúiseanna éagsúla; ní gá duit dóthain spáis ar do ríomhaire, mar shampla. Mar sin tá sé tábhachtach i gcónaí sula ndéanann tú aon oibríochtaí leis an gcomhad go bhfuil muid seiceáil an bhfuil osclaíodh go comhad go rathúil. Mar sin, cad go, sin an argóint fopen, go maith, is féidir linn a oscailt comhad i go leor bealaí. Cad is féidir linn é a dhéanamh, is féidir linn pas é w, rud a chiallaíonn sáraíocht an comhad má exits sé cheana féin, Is féidir linn a pas a fháil ar a, a gceangal siad go dtí deireadh an comhad in áit sáraitheach é, nó is féidir linn a shonrú r, rud a chiallaíonn, a ligean ar an comhad a oscailt mar inléite amháin. Mar sin, má déanann an clár chun aon athruithe a dhéanamh ar an gcomhad, yell orthu agus ná lig dóibh é a dhéanamh. Ar deireadh, nuair a táimid ag déanamh leis an comhad, a rinneadh oibríochtaí a dhéanamh ar sé, is gá dúinn a dhéanamh cinnte go táimid ag an comhad a dhúnadh. Agus mar sin ag deireadh na bliana do chlár, tá tú ag dul chun pas a fháil arís iad an comhad seo a d'oscail tú, agus díreach dhúnadh. Mar sin, is é an rud tábhachtach go bhfuil tú a dhéanamh cinnte go ndéanann tú. Mar sin, cuimhnigh gur féidir leat a oscailt comhad, ansin is féidir leat scríobh chuig an gcomhad, oibríochtaí a dhéanamh sa chomhad, ach ansin caithfidh tú a dhúnadh an comhad ag an deireadh. Ceisteanna ar bith ar chomhad bunúsacha I / O? Tá? [Ceist na Mac Léinn, dothuigthe] Ceart anseo. Is í an cheist, ní i gcás an comhad seo log.txt le feiceáil? Bhuel, má thugann tú díreach tar éis é log.txt, cruthaíonn sé é ar an eolaire céanna leis an inrite. Mar sin, má you're - >> [ceist na Mac Léinn, dothuigthe] Tá. Sa an fillteán céanna, nó ar an eolaire céanna, mar a ghlaonn tú é. Anois cuimhne, Stack, agus carn. Mar sin, conas a chuimhne atá leagtha amach sa ríomhaire? Bhuel, is féidir leat a shamhlú cuimhne mar saghas bhloc seo anseo. Agus i gcuimhne ní mór dúinn cad atá ar a dtugtar an gcarn bhfostú thar ann, agus an chairn sin síos ann. Agus fásann an carn síos agus fásann an chairn suas. Mar sin, mar a luaitear Tommy - ó, go maith, agus ní mór dúinn na 4 eile codanna a beidh mé a fháil sa dara - Mar a dúirt Tommy níos luaithe, tá a fhios agat conas glaoch a chuid feidhmeanna féin agus glaoch a chéile? A thógáil siad suas an saghas fráma Stack. Bhuel, má glaonna is mó foo, faigheann foo a chur ar an chruach. Foo glaonna bar, barra a fháil ar a chur ar an chruach, agus go bhfaigheann a chur ar an chruach i ndiaidh. Agus mar siad ar ais, tá siad gach a fháil tógtha as an chairn. Cad a dhéanann gach ceann de na suímh agus cuimhne a shealbhú? Bhuel, tá an barr, a bhfuil an deighleog téacs, an chlár féin. Mar sin, an cód meaisín, go bhfuil ann, nuair a tá tú thiomsú do chlár. Next, aon initialized athróg domhanda. Mar sin, tá tú athróg domhanda i do chlár, agus a rá leat, a 5 =, go bhfaigheann chur sa deighleog, agus an ceart faoin, tá aon sonraí a fuarthas argóint neamhuimhriúil domhanda, a bhfuil slánuimhir ach, ach nach bhfuil tú a rá tá sé cothrom le rud ar bith. Realize siad seo athróg domhanda, agus mar sin tá siad lasmuigh de is mó. Mar sin, ciallaíonn sé seo aon athróg domhanda a dhearbhú ach nach bhfuil initialized. Mar sin, cad ar an gcarn? Cuimhne leithroinnte ag baint úsáide as malloc, a beidh orainn a fháil i le beagán. Agus ar deireadh, leis an chairn tá aon athróg áitiúil agus aon fheidhmeanna a d'fhéadfadh leat glaoch in aon cheann de a gcuid paraiméadair. An rud deireanach, ní gá duit i ndáiríre a fhios cad a dhéanann na hathróga timpeallachta, ach aon uair a ritheann tú clár, tá rud éigin a bhaineann, ar nós is é seo an ainm úsáideora ar an duine a bhí ar siúl ar an gclár. Agus tá go dul a bheith saghas ag bun an leathanaigh. I dtéarmaí seoltaí cuimhne, a bhfuil luachanna heicsidheachúlach, a théann na luachanna ag an tús is fearr ag 0, agus tá siad go léir ar an mbealach síos go dtí bun an leathanaigh. Sa chás seo, má tá tú ar an gcóras 32-giotán, bhfuil an seoladh ag bun ag dul a bheith 0x, ina dhiaidh sin af, toisc go bhfuil 32 giotán, bhfuil 8 bytes, agus sa chás seo Comhfhreagraíonn 8 bytes go 8 n-uimhir heicsidheachúlach. Mar sin, síos anseo tá tú ag dul a bheith acu, cosúil le, 0xffffff, agus suas ann bhfuil tú ag dul a bheith 0. Mar sin, cad iad na leideanna? Ní fhéadfadh roinnt de tú clúdaithe seo i roinn roimhe seo. ach ní raibh muid ag dul thar sé i léacht, mar sin tá a pointeoir ach cineál sonraí a a siopaí, in ionad éigin de luach cosúil le 50, siopaí sé an seoladh roinnt suíomh i gcuimhne. Cosúil le go bhfuil cuimhne [dothuigthe]. Mar sin, sa chás seo, cad é ní mór dúinn, ní mór dúinn pointeoir le slánuimhir nó * o, agus tá sé seo seoladh heicsidheachúlach de 0xDEADBEEF. Mar sin, cad atá againn, anois, tá an pointeoir pointí ag roinnt suíomh i gcuimhne, agus tá go díreach, tá an luach 50 ag an suíomh seo chuimhne. Ar roinnt córais 32-giotán, ar gach córas 32-giotán, leideanna a ghlacadh giotán 32 nó 4 bytes. Ach, mar shampla, ar chóras 64-giotán, tá leideanna 64 giotán. Mar sin, go bhfuil rud éigin go mbainfidh tú ag iarraidh a choinneáil i gcuimhne. Mar sin, ar chóras deireadh-giotán, tá pointeoir giotán deireadh fada. Leideanna go bhfuil saghas deacair a díolama gan rudaí breise, mar sin a ligean ar dul trí shampla de leithdháileadh cuimhne dinimiciúil. Cad a leithdháileadh cuimhne dinimiciúil le haghaidh tú, nó cad tugaimid malloc, ligeann sé duit a leithdháileadh de chineál éigin sonraí taobh amuigh den tsraith. Mar sin, tá na sonraí seo saghas níos buaine ar feadh ré an chláir. Mar gheall ar mar atá a fhios agat, má tá tú dhearbhú x taobh istigh a chomhlíonadh, agus go bhfuil tuairisceáin fheidhm, tú a thuilleadh rochtain ar na sonraí a bhí stóráilte i x. Cad iad na leideanna lig dúinn go bhfuil siad in iúl dúinn a stóráil luachanna cuimhne nó a stóráil i deighleog difriúil de chuimhne, is é sin an gcarn. Anois, nuair a táimid ar ais as feidhm, chomh fada agus ní mór dúinn a pointeoir leis an suíomh i gcuimhne, ansin cad is féidir linn a dhéanamh is féidir linn ach breathnú ar na luachanna ann. Ligean ar breathnú ar shampla: Is é seo ár n-leagan amach cuimhne arís. Agus ní mór dúinn an fheidhm seo, is mó. Cad a dhéanann sé é - ceart go leor, mar sin simplí, ceart? - O x = 5, go díreach athróg ar an chruach i is mó. Ar an láimh eile, anois táimid ag dhearbhú go bhfuil pointeoir a iarrann an giveMeThreeInts fheidhm. Agus mar sin anois táimid ag dul isteach an fheidhm agus a chruthú dúinn fráma cruaiche nua ar sé. Mar sin féin, sa fráma cruaiche, a dhearbhú dúinn o * teocht, i mallocs 3 slánuimhreacha dúinn. Mar sin, beidh méid slánuimhir a thabhairt dúinn cé mhéad bytes é seo slánuimhir, agus tugann malloc dúinn go bytes a lán de spás ar an gcarn. Mar sin, sa chás seo, ní mór dúinn a cruthaíodh spás go leor ar feadh 3 slánuimhreacha, agus is é an gcarn mbealach suas ann, agus sin an fáth mé a tharraingt sé níos airde suas. Chomh luath agus táimid ag déanamh, tháinig muid ar ais ar bun anseo, is gá duit ach 3 ints ar ais, agus tugann sé an seoladh, sa chás seo níos mó ná i gcás an chuimhne. Agus leag muid pointeoir = athrú, agus suas ann ní mór dúinn ach eile pointeoir. Ach cad go bhfuil tuairisceáin fheidhm Cruachta anseo agus imíonn. Mar sin, imíonn teocht, ach a choimeád ar bun againn fós an seoladh an áit ina bhfuil Is iad na 3 slánuimhreacha taobh istigh de phríomhlíonra. Mar sin, sa sraith, is iad na leideanna scoped háitiúil an fráma Cruachta, ach tá an chuimhne dá dtagraíonn siad i gcarn. An dhéanamh go chiall? [Mac Léinn] Níorbh fhéidir leat arís go? >> [Joseph] Tá. Mar sin, má théann mé ar ais ach beagán, a fheiceann tú go bhfuil teocht leithdháilte roinnt cuimhne ar an gcarn suas ann. Mar sin, nuair a an fheidhm seo, tuairisceáin giveMeThreeInts, tá an chairn anseo ag dul a imíonn siad. Agus leis aon cheann de na hathróga, sa chás seo, an pointeoir leithdháileadh i bhfráma Cruachta. Go bhfuil dul chun imíonn siad, ach ós rud é muid ar ais teocht agus atá leagtha muid pointeoir = teocht, pointeoir ag dul anois a chur in iúl i gcuimhne céanna suíomh mar a bhí teocht. Mar sin, anois, cé go chailleann againn teocht, go pointeoir áitiúil, táimid choinneáil i gcónaí an seoladh gcuimhne ar an méid a bhí dírithe sé taobh istigh den pointeoir athraitheach. Ceisteanna? Is féidir sin a de chineál ar ábhar mearbhaill más rud é nach bhfuil tú imithe thar dó in alt. Is féidir linn, le do TF a bheidh dul cinnte níos mó ná é agus ar ndóigh, is féidir ceisteanna a fhreagairt ag deireadh an tseisiúin athbhreithnithe seo. Ach tá an saghas ábhar casta, agus tá mé níos mó samplaí atá ag dul a thaispeáint suas a chabhróidh a shoiléiriú cad iad na leideanna i ndáiríre. Sa chás seo, tá leideanna coibhéiseach le arrays, mar sin is féidir liom a úsáid ach an pointeoir leis an rud céanna mar eagar slánuimhir. Mar sin, tá mé ag innéacsú i 0, agus ag athrú an tslánuimhir chéad 1, athrú ar an slánuimhir dara 2, agus an tslánuimhir is 3 go 3. Mar sin, níos mó ar leideanna. Bhuel, cuimhne Binky. Sa chás seo tá muid leithdháileadh pointeoir, nó á ndearbhú againn pointeoir, ach i dtús báire, nuair a dhearbhófar mé díreach tar éis pointeoir, nach bhfuil dírithe ar é a áit ar bith i gcuimhne. Tá sé luachanna truflais díreach taobh istigh de sé. Mar sin, tá mé aon smaoineamh ina bhfuil an pointeoir dírithe. Tá seoladh a líonadh díreach le 0 agus 1, áit a bhí sé dearbhaithe ar dtús. Ní féidir liom aon rud a dhéanamh leis seo go dtí Iarraim malloc ar sé agus ansin tugann sé dom le spás beag ar an gcarn nuair is féidir liom a luachanna a chur taobh istigh. Ansin, arís, níl a fhios agam cad atá taobh istigh den chuimhne. Mar sin, is é an chéad rud le déanamh agam a sheiceáil an raibh an córas cuimhne go leor a thabhairt dom ar ais 1 slánuimhir sa chéad áit, agus sin an fáth Tá mé ag déanamh seo a sheiceáil. Má tá pointeoir nialasach, Ciallaíonn sé sin nach raibh sé ag go leor spáis nó cuid earráid eile a tharla, mar sin ba chóir dom a scoir as mo chlár.  Ach má rinne sé iarracht, anois is féidir liom a úsáid go pointeoir agus cad a dhéanann pointeoir * a leanas é ina bhfuil an seoladh a bhfuil i gcás go luach, agus leagann sé cothrom go 1. Mar sin thar anseo, tá muid ag seiceáil dá mba ann go bhfuil cuimhne. Nuair a fhios agat ann, is féidir leat a chur isteach ann Cad é an luach is mian leat a chur isteach é; sa chás seo 1. Chomh luath agus táimid ag déanamh leis, is gá duit a saor in aisce go pointeoir mar is gá dúinn a fháil ar ais go dtí an córas a chuimhne gur iarr tú sa chéad áit. Toisc nach bhfuil an ríomhaire a fhios nuair a táimid ag déanamh leis. Sa chás seo táimid ag insint go sainráite é, maith go leor, tá muid ag déanamh leis an chuimhne. Más gá phróis éigin eile é, is gá clár eile é, dar saor chun dul ar aghaidh agus é a ghlacadh. Cad is féidir linn a dhéanamh chomh maith go bhfuil féidir linn a fháil ach an seoladh na n-athróg áitiúla ar an leagan amach. Is é x sin o taobh istigh den fráma Cruachta na is mó. Agus nuair a úsáideann muid an COMHARTHA AGUIS seo, agus an oibreora, is cad a dhéanann sé sé x thógann, agus x bhfuil ach cuid de na sonraí i gcuimhne, ach tá sé seoladh. Tá sé suite in áit éigin. Mar sin, ag iarraidh é & x, cad a dhéanann an tugann sé dúinn an seoladh x. Faoi é seo a dhéanamh, tá muid ag déanamh pointe pointeoir An áit a bhfuil x i gcuimhne. Anois táimid ag hamháin rud éigin cosúil le * x, táimid ag dul a fháil ar 5 ar ais. Tá an réalta ar a dtugtar dereferencing é. Leanann tú an seoladh agus gheobhaidh tú an luach na sé stóráilte ansin. Ceisteanna ar bith? Tá? [Mac Léinn] Mura bhfuil tú dhéanamh ar an rud 3-Léirigh dhéanann sé thiomsú go fóill? Tá. Mura bhfuil tú dhéanamh ar an rud 3-pointeoir, tá sé ag dul go fóill a thiomsú, ach beidh mé a thaispeáint duit cad a tharlaíonn sa dara, agus gan é sin a dhéanamh, go cad tugaimid sceitheadh ​​cuimhne. Níl tú ag tabhairt an chórais ar ais a chuimhne, mar sin tar éis é agus an clár ag dul a charnadh cuimhne go nach bhfuil baint úsáide as é, agus is féidir aon rud eile é a úsáid. Má tá tú feicthe riamh Firefox le 1.5 milliún cilibheart ar do ríomhaire, sa bhainisteoir tasc, go bhfuil an méid atá ar siúl. Tá tú ar sceitheadh ​​i gcuimhne ar an gclár nach mbíonn siad ag láimhseáil. Mar sin, conas a pointeoir obair uimhríochtúil? Bhuel, tá uimhríochtúil pointeoir saghas innéacsú cosúil isteach eagar. Sa chás seo, tá mé pointeoir, agus cad is féidir liom é a dhéanamh liom pointe pointeoir chuig an chéad eilimint ar an sraith de 3 slánuimhreacha go bhfuil mé a leithdháileadh. Mar sin, anois cad a dhéanfaidh mé, athruithe réalta pointeoir ach an chéad ghné ar an liosta. Star pointeoir 1 pointe thar anseo. Dá bhrí sin tá pointeoir thar anseo, tá pointeoir 1 thar anseo, tá pointeoir +2 thar anseo. Is é sin, ag cur díreach 1 an rud céanna mar bogadh feadh an eagar. Céard a dhéanaimid é, nuair a dhéanann muid pointeoir 1 a gheobhaidh tú an seoladh thar anseo, agus d'fhonn a fháil ar an luach i anseo, a chuir tú le réalta i as an abairt ar fad chun P leis na roghanna é. Mar sin, sa chás seo, tá mé ag leagan síos an suíomh an chéad san eagar go 1, suíomh dara 2, agus suíomh an tríú 3. Ansin, cad mé ag déanamh thar anseo Tá mé ag priontáil ar ár pointeoir 1, a thugann mise amháin 2. Anois tá mé ag incriminteach a pointeoir, agus mar sin pointeoir ionann pointeoir 1, a théann sé ar aghaidh. Agus mar sin anois má phriontáil mé amach pointeoir 1, tá pointeoir 1 anois 3, atá sa chás seo priontaí amach 3. Agus d'fhonn le rud éigin saor in aisce, an pointeoir a thabhairt liom é Ní mór a bheith dírithe ag tús an eagar a fuair mé ar ais ó malloc. Mar sin, sa chás seo, má bhí mé a ghlaoch 3 ar dheis anseo, ní bheadh ​​sé seo a bheith ceart, mar tá sé i lár an eagar. Caithfidh mé a dhealú a fháil chun an suíomh bunaidh an láthair tosaigh chéad uair roimh an féidir liom saor in aisce é. Mar sin, tá anseo sampla níos mó i gceist. Sa chás seo, tá muid ag leithdháileadh 7 carachtair i sraith carachtar. Agus sa chás seo cad tá muid ag déanamh táimid ag looping thar na chéad 6 acu, agus táimid ag leagan síos iad a Z. Mar sin, slánuimhir i = 0, i> 6, i + +, Mar sin, pointeoir + beidh mé a thabhairt ach dúinn, sa chás seo, pointeoir, pointeoir 1, pointeoir +2, pointeoir +3, agus mar sin de agus mar sin de ar an eolas. Cad tá sé ag dul a dhéanamh ná a fhaigheann sé an seoladh sin, dereferences é a fháil ar an luach, agus athruithe go bhfuil luach ar Z. Ansin, ag deireadh na cuimhin é seo teaghrán, ceart? Tá gach teaghráin chun deireadh a chur le carachtar nialasach fhoirceannadh. Mar sin, cad a dhéanann mé i pointeoir 6 chuir mé an Eolas faoin margadh saothair Críochnaitheoir carachtar isteach Agus anois cad tá mé ag déanamh go bunúsach os cionn anseo chun feidhme printf ar theaghrán, ceart? Mar sin, ní nuair a printf anois nuair a tá sé bainte amach faoi dheireadh teaghrán? Nuair a bhuaileann sé an carachtar nialasach fhoirceannadh. Mar sin, sa chás seo, mo pointí pointeoir bunaidh tús an eagar. Phriontáil mé an chéad charachtar amach. Tairgim sé thar ceann. Phriontáil go carachtar amach. I bhogadh os a chionn. Agus a choinneáil mé ag déanamh seo go dtí mé a bheith ag an deireadh. Agus anois beidh an pointeoir * deireadh téigh seo agus a fháil ar an carachtar nialasach a fhoirceannadh ar ais. Agus ritheann sin mo lúb fad ach amháin nuair nach bhfuil an luach an carachtar nialasach fhoirceannadh. Mar sin, anois mé imeacht amach as an lúb. Agus mar sin má tá mé a dhealú 6 as an pointeoir, Téim ar ais go léir ar an mbealach chun an tús. Cuimhnigh, tá mé ag déanamh seo toisc go bhfuil mé chun dul go dtí an tús chun go saor in aisce é. Mar sin, tá a fhios agam go raibh go leor. An bhfuil ceist ar bith? Le do thoil, yes? [Dothuigthe cheist na Mac Léinn] An féidir leat a rá go louder? Tá brón orm. [Mac Léinn] Ar an sleamhnán seo caite ceart roimh freed tú an pointeoir, áit a raibh athrú tú i ndáiríre luach an pointeoir? [Joseph] Mar sin, ar dheis anseo. >> [Mac Léinn] Oh, maith go leor. [Joseph] Mar sin, tá mé pointeoir lúide lúide, ar dheis, a ghluaiseann an rud ar ais amháin, agus ansin mé saor é, toisc go bhfuil an pointeoir a aird ar an tús an eagar. [Mac Léinn] Ach ní bheadh ​​a bheith ag teastáil bhí stop tú tar éis an líne sin. [Joseph] Mar sin, dá mbeadh stop mé tar éis seo, bheadh ​​seo a mheas ar sceitheadh ​​cuimhne, toisc nach raibh mé ag siúl ar an saor in aisce. [Mac Léinn] I [dothuigthe] tar éis an trí chéad línte áit a raibh tú pointeoir 1 [dothuigthe]. [Joseph] Uh-huh. Mar sin, cad é an cheist atá ann? Tá brón orm. No, no. Téigh, téigh, le do thoil. [Mac Léinn] Mar sin, ní bhíonn tú ag athrú ar luach na leideanna. Ní bheadh ​​tú a bhí acu a dhéanamh pointeoir lúide lúide. [Joseph] Sea, go díreach. Mar sin, nuair a dhéanann mé pointeoir 1 agus pointeoir +2, Níl mé ag déanamh pointeoir ionann pointeoir 1. Mar sin, an pointeoir tréimhsí fanachta ach dírithe ag tús an eagar. Tá sé ach amháin nuair is féidir liom móide móide go leagann sé an luach ar ais taobh istigh an pointeoir, go mbogann sé i ndáiríre seo chomh maith. Gach ceart. Ceisteanna níos mó? Arís, má tá an cineál seo mór, beidh sé seo a bheith clúdaithe i seisiún. Iarr ar do chomhghleacaithe teagaisc faoi, agus is féidir ceisteanna a fhreagairt ag an deireadh. Agus de ghnáth nach mhaith linn a dhéanamh ar an rud lúide. Tá sé seo a cheangal ar choimeád orm rian cé mhéad mé fhritháireamh i eagar. Mar sin, go ginearálta, tá sé seo ach a mhíniú conas a oibríonn uimhríochtúil pointeoir. Ach cad is maith linn de ghnáth a dhéanamh is maith linn a chruthú cóip den pointeoir, agus ansin beidh muid úsáid as an chóip sin nuair a bhíonn muid ag bogadh timpeall sa téad. Mar sin, sna gcás a úsáideann tú an chóip a phriontáil an teaghrán ar fad, ach nach bhfuil againn a dhéanamh mar pointeoir lúide 6 nó rian cé mhéad ar athraíodh a ionad againn sa choinneáil, ach mar a fhios againn go bhfuil ár pointe bunaidh in iúl go fóill go dtí tús an liosta agus bhí gach a athrú muid an chóip. Mar sin, go ginearálta, a athrú cóipeanna de do pointeoir bunaidh. Ná déan iarracht a shórtáil de cosúil le - don't athrú cóipeanna bunaidh. Ag iarraidh a athrú cóipeanna amháin de do bunaidh. Mar sin, thugann tú faoi deara nuair a théann muid ar an teaghrán seo i printf ní gá duit a chur le réalta i os comhair sé cosúil rinne muid leis na dereferences eile, ceart? Mar sin, má gcló tú amach ag súil leis an% s fad téad seoladh, agus sa chás seo pointeoir nó sa chás seo cosúil le sraith de charachtair. Tá carachtair, ruabhric * s, agus arrays an rud céanna. Phointeora a carachtair, agus arrays carachtar go bhfuil an rud céanna. Agus mar sin, tá gach ní mór dúinn a dhéanamh pas i pointeoir. Ní thugaimid chun pas a fháil i ar nós pointeoir * nó aon rud mar sin. Mar sin, tá eagair agus leideanna an rud céanna. Nuair atá tú ag déanamh rud éigin cosúil le x [y] thar anseo le haghaidh sraith, cad é atá á dhéanamh faoi na cochall is é a rá, maith go leor, tá sé ina sraith carachtar, sin tá sé ina pointeoir. Agus mar sin tá x an rud céanna, agus mar sin cad a dhéanann sé cuireann sé y x, arb é an rud céanna ag bogadh ar aghaidh i gcuimhne go bhfuil i bhfad. Agus anois tugann x + y dúinn éigin de do sheoladh, agus dereference téigh againn ar an seoladh nó a leanúint ar an arrow a bhfuil i gcás an suíomh i gcuimhne agus a fhaigheann muid ar an luach as an suíomh sin i gcuimhne. Mar sin, ionas go bhfuil an dá go díreach an rud céanna. Tá sé ach shiúcra syntactic. Déanann siad an rud céanna. Tá siad ach syntactics éagsúla do gach ceann eile. Mar sin, cad is féidir dul cearr le leideanna? Cosúil, a lán. Maith go leor. Mar sin, rudaí dona. Nach bhfuil roinnt rudaí dona is féidir leat a dhéanamh a sheiceáil má tuairisceáin do ghlaoch malloc null, ceart? Sa chás seo, tá mé ag iarraidh an córas a thabhairt dom - cad é an líon sin? Cosúil le 2 billiún uair 4, toisc go bhfuil an méid de slánuimhir 4 bytes. Tá mé ag iarraidh é do mhaith 8 billiún bytes. Ar ndóigh, nach bhfuil mo ríomhaire ag dul a bheith in ann a thabhairt dom go ais cuimhne i bhfad. Agus ní raibh muid ag seiceáil má tá sé seo Eolas faoin margadh saothair, mar sin nuair a déanaimid ár ndícheall chun téigh i sé thar ann - an arrow a leanúint go dtí an áit atá sé ag dul chun - nach bhfuil againn go bhfuil cuimhne. Tá sé seo cad tugaimid dereferencing a pointeoir nialasach. Agus cúiseanna seo go bunúsach leat a segfault. Tá sé seo ar cheann de na bealaí is féidir leat a segfault. Rudaí olc eile, is féidir leat a dhéanamh - OH maith. Go raibh dereferencing a pointeoir nialasach. Maith go leor. Rudaí dona eile - go maith, a shocrú go bhfuil tú a chur díreach a sheiceáil in ann a seiceáil an bhfuil an pointeoir nialasach agus scoir as an gclár má tharlaíonn sé ar ais go malloc a pointeoir nialasach. Sin é an Comic xkcd. Daoine a thuiscint anois. Sórtáil de. Mar sin, cuimhne. Agus chuaigh mé thar an. Táimid ag iarraidh malloc i lúb, ach gach uair a tugaimid malloc táimid ag chailliúint rian ar an áit ina bhfuil an pointeoir dírithe, toisc go bhfuil muid ag clobbering é. Mar sin, tugann an glaoch tosaigh go dtí malloc dom cuimhne thar anseo. Mo leideanna pointeoir leis seo. Anois, ní féidir liom saor in aisce é, mar sin anois mé glaoch malloc arís. Anois, pointí sé thar anseo. Anois tá mo chuimhne atá dírithe thar anseo. Ag tagairt thar anseo. Ag tagairt thar anseo. Ach tá mé caillte riain an seoltaí na cuimhne go léir thar anseo go leithdháileadh mé. Agus mar sin anois Ní féidir liom aon tagairt dóibh níos mó. Mar sin, ní féidir liom iad a saor in aisce lasmuigh den lúb. Agus mar sin d'fhonn a shocrú rud éigin mar seo, má dhéanann tú dearmad chun cuimhne saor in aisce agus a fhaigheann tú an sceitheadh ​​cuimhne, Tá tú saor in aisce ar an chuimhne taobh istigh den lúb nuair a bhfuil tú ag déanamh leis. Bhuel, is é seo cad a tharlaíonn. Tá a fhios agam go leor de tú fuath seo. Ach anois - yay! A gheobhaidh tú cosúil le 44,000 cilibheart. Mar sin, saor in aisce tú é ag deireadh na lúb, agus tá go bhfuil dul chun saor in aisce ach an chuimhne gach uair. Go bunúsach, ní do chláir bhfuil sceitheadh ​​cuimhne níos mó. Agus anois rud éigin eile is féidir leat a dhéanamh saor in aisce ar roinnt cuimhne go atá tú d'iarr faoi dhó. Sa chás seo, tá tú rud éigin malloc, athraíonn tú a luach. Saor in aisce tú é aon uair amháin mar a dúirt go raibh tú déanta agat leis. Ach ansin freed muid arís é. Is é an rud go dona go leor. Níl sé ag dul chun segfault ar dtús, ach tar éis tamaill cad tá sé seo freeing dúbailte seo éillíonn do struchtúr gcarn, agus beidh tú ag foghlaim le beagán níos mó faoi seo má roghnaíonn tú a ghlacadh rang ar nós CS61. Ach go bunúsach tar éis cé go do ríomhaire ag dul a fháil ar dhaoine eatarthu faoi ​​cad suímh cuimhne go bhfuil an áit agus nuair a tá sé stóráilte - ina bhfuil sonraí a stóráiltear i gcuimhne. Agus shaoradh amhlaidh pointeoir dhá oiread droch-rud nach bhfuil tú ag iarraidh a dhéanamh. Níl rudaí eile is féidir a théann mícheart ag baint úsáide as Is uimhir. Mar sin, sa chás seo malloc tú 8 bytes, agus sin an rud céanna mar dhá slánuimhreacha, ceart? Mar sin, tá go breá sábháilte, ach tá sé? Bhuel, mar a labhair Lucas faoi ar architectures éagsúla, slánuimhreacha iad na faid éagsúla. Mar sin, ar an fearas go bhfuil tú ag baint úsáide as, tá slánuimhreacha thart ar 4 bytes, ach ar roinnt córas eile a d'fhéadfadh siad a bheith 8 bytes nó a d'fhéadfadh siad a bheith 16 bytes. Mar sin, má liom a úsáid ach an uimhir seo thar anseo, D'fhéadfadh an clár seo ag obair ar an fearas, ach níl sé ag dul chun cuimhne a dháileadh go leor ar roinnt córas eile. Sa chás seo, is é seo cad é an t-oibreoir Is uimhir a úsáidtear le haghaidh. Nuair a ghlaonn muid deachúlach (o), cad é seo a dhéanann é  tugann sé ar ár gcumas an méid de slánuimhir ar an gcóras go bhfuil an clár ag rith. Mar sin, sa chás seo, beidh deachúlach (o) 4 ar rud éigin cosúil leis an fearas, agus anois an uacht 4 * 2, a bhfuil 8, a bhfuil ach an méid spáis atá riachtanach le haghaidh dhá slánuimhreacha. Ar chóras éagsúla, má tá slánuimhir cosúil le 16 bytes nó 8 bytes, sé ag dul díreach a thabhairt ar ais bytes leor chun a stóráil an méid sin. Agus ar deireadh, structs. Mar sin, má bhí tú a stóráil ar bord Sudoku i gcuimhne, d'fhéadfadh conas é seo a dhéanamh? D'fhéadfá smaoineamh ar nós athróg don chéad rud, athróg an dara rud, athróg an tríú rud, athróg le haghaidh an rud ceathrú - olc, ceart? Mar sin, ar cheann fheabhsú féidir leat a dhéanamh ar bharr seo a dhéanamh 9 x 9 eagar. Go breá, ach cad más rud é go raibh tú chomhlachú rudaí eile leis an mbord Sudoku Is maith cad é an deacracht an bhoird, nó, mar shampla, cad é do scór, nó cé mhéad ama tá sé déanta agat chun an fhadhb seo mbord? Bhuel, cad is féidir leat a dhéanamh is féidir leat a chruthú struct. Cad Tá mé ag rá go bunúsach go bhfuil mé ag sainiú an struchtúr seo thar anseo, agus tá mé ag a shainiú bord Sudoku atá comhdhéanta de bord go bhfuil 9 x 9. Agus cad tá sé go bhfuil sé leideanna chun ainm an leibhéal. Tá sé freisin x agus y, a bhfuil na comhordanáidí an áit ina bhfuil mé ceart anois. Tá sé tar éis am a chaitear freisin [dothuigthe], agus tá sé an líon iomlán na mbogann mé ionchur go dtí seo. Agus mar sin sa chás seo, is féidir liom a ghrúpáil a bunch iomlán na sonraí i struchtúr amháin in ionad a bheith sé cosúil le ag eitilt timpeall i cosúil le athróga éagsúla nach féidir liom a choinneáil i ndáiríre súil. Agus ligeann seo dúinn ach error deas do saghas tagairt rudaí éagsúla taobh istigh den struct. Ach is féidir liom a dhéanamh board.board, agus a fháil mé an bord Sudoku ar ais. Board.level, a rachaidh mé conas a diana go bhfuil sé. Board.x agus board.y a thabhairt dom na comhordanáidí an áit ina d'fhéadfadh mé a bheith ar an mbord. Agus mar sin tá mé rochtain a fháil ar cad tugaimid réimsí sa struct. Sé seo sainmhíniú sudokuBoard, a bhfuil cineál go bhfuil mé. Agus anois táimid anseo. Tá mé athróg ar a dtugtar "bord" de sudokuBoard chineál. Agus mar sin anois is féidir liom rochtain a fháil ar na réimsí go léir a dhéanann suas an struchtúr seo thar anseo. Ceisteanna ar bith faoi structs? Tá? [Mac Léinn] Le haghaidh slánuimhir x, y, a dhearbhú tú araon ar líne amháin? >> [Joseph] Uh-huh. [Mac Léinn] sin, d'fhéadfadh, an bhfuil tú go díreach le gach ceann acu? Cosúil in x, amanna camóga y go iomlán? [Joseph] Sea, d'fhéadfaí tú a dhéanamh cinnte go bhfuil, ach an chúis a chuir mé x agus y ar an líne chéanna - agus is é an cheist is féidir cén fáth a dhéanann muid ach sin ar an líne chéanna? Cén fáth nach bhfuil muid a chur díreach gach ceann de na atá ar an líne chéanna x agus y a bhaineann le gach eile, agus tá sé seo ach stíle níos ceart, sa chiall, mar tá á ngrúpáil sé dhá rudaí ar an líne chéanna gur saghas céanna a bhaineann leis an rud céanna. Agus scoilt mé díreach tar éis na eatarthu. Tá sé díreach an rud stíl. Déanann sé feidhmiúil aon difríocht ar bith. Ceisteanna ar bith eile ar structs? Is féidir leat a shainiú Pokédex le struct. A Pokémon Tá líon agus tá sé litir, úinéir, i ndáil le cineál. Agus ansin má tá tú le sraith de Pokémon, is féidir leat a dhéanamh suas Pokédex, ceart? Maith go leor, cool. Mar sin, ceisteanna ar structs. Glacfar iad a bhaineann le structs. Mar fhocal scoir, GDB. Cad a dhéanann GDB in iúl duit a dhéanamh? Ligeann sé duit dífhabhtaigh do chlár. Agus más rud é nach bhfuil tú ag úsáid GDB, ba mhaith mhol mé ag faire ar an gearr agus díreach ag dul thar an méid atá GDB, conas a oibríonn tú leis, conas a d'fhéadfadh leat é a úsáid, agus tástáil sé ar chlár. Agus mar sin cad a ligeann GDB a dhéanann tú ligeann sé sos ar an [dothuigthe] suas do chlár agus líne praiticiúil. Mar shampla, ba mhaith liom a fhorghníomhú sos ag cosúil le líne 3 de mo chlár, agus cé go bhfuil mé ag dul 3 is féidir liom a phriontáil amach na luachanna atá ann. Agus mar sin cad tugaimid cosúil le sos i líne Tá muid ag glaoch ar an chur brisphointe ag an líne agus ansin is féidir linn a phriontáil amach na hathróga ag staid an chláir ag an am sin. Is féidir linn ansin ó ann dlús a chur tríd an gclár líne ar líne. Agus ansin is féidir linn breathnú ar an staid an chairn ag an am. Agus mar sin d'fhonn úsáid a bhaint as GDB, cad a dhéanann muid go bhfuil muid ag glaoch clang ar an gcomhad C, ach ní mór dúinn chun pas a fháil sé an ggdb-bhratach. Agus nuair a muid ag déanamh leis go bhfuil muid reáchtáil díreach gdb ar an aschomhad dá bharr. Agus mar sin gheobhaidh tú roinnt mais cosúil le téacs mar seo, ach tá i ndáiríre ar fad agat a dhéanamh cineál i orduithe ag an tús. Briseadh príomh chuireann brisphointe ag príomh-. Liostaíonn Liosta 400 na línte de chód thart ar líne 400. Agus mar sin sa chás seo is féidir leat breathnú ach timpeall agus a rá, ó, Ba mhaith liom a shocrú brisphointe ag líne 397, a bhfuil an líne seo, agus ritheann ansin do chlár isteach sa chéim agus tá sé ag dul a bhriseadh. Tá sé seo ag dul chun sos ann, agus is féidir leat a phriontáil amach, mar shampla, ar luach íseal nó ard. Agus mar sin tá a bunch na n-orduithe gá duit a fhios, agus beidh an taispeántas sleamhnán dul suas ar an suíomh gréasáin, mar sin más mian leat ach tagartha seo nó cosúil iad a chur ar do bhileoga cheat, braithim saor in aisce. Cool. Ba é sin Tráth na gCeist Athbhreithniú 0, agus beidh orainn bata thart má tá aon cheist agat. Gach ceart.  [Bualadh bos] [CS50.TV]