[Seinm ceoil] ZAMYLA Chan: A ligean ar dul i ngleic le ghnóthú. Ghnóthú Is dócha mo PSET is fearr leat, agus go príomha mar gheall ar Sílim go bhfuil sé i ndáiríre, really cool. Go bunúsach, tá tú ag a tugadh i gcuimhne comhad cárta ina pictiúir a bheith scriosta. Ach cad a bhfuil tú ag dul go dtí Tá siad go léir a ghnóthú a dhéanamh. OK. Mar sin, tá sé i ndáiríre spreagúil, ach b'fhéidir beag imeaglaithe, mar atá tú Tugtar C comhad agus folamh caithfidh tú a líonadh isteach OK, mar sin a ligean ar bhriseadh seo isteach i gcodanna inbhainistithe. Feicfidh tú ag iarraidh a oscailt an comhad cárta cuimhne. Go cosúil simplí go leor. Ansin, teacht ar an tús de íomhá JPG. Gach na comhaid ar an chuimhne cárta ag dul a bheith JPGs. Ansin, nuair a fhaigheann tú an tús, tú ag dul a oscailt JPG nua, go is é sin, cosúil le, a chruthú JPG, agus scríobh 512 beart ag am go dtí go bhfuil JPG nua fáil, agus dar críoch leis an gclár, uair amháin tú bhrath an deireadh an chomhaid. Mar sin, an chéad chéimeanna is é an chéad a oscailt an comhad cárta chuimhne. Ach tá a fhios agat seo cheana féin, agus níl comhad feidhm I / O go bhfuil dul chun chruthú an-úsáideach. OK. Mar sin, cad iad JPGs? Mar is gá dúinn chun an tús é. Bhuel, JPGs, díreach cosúil le léarscáileanna beagán, ach sraitheanna na mbeart. Luckily, Tosaíonn gach JPG le ceachtar 0xff, 0xd8, 0xff, 0xe0, seicheamh amháin inbhéartaigh na bearta, nó eile ord na mbeart. Mar sin, in iúl na ceithre bytes tús JPG. Aon duine eile seachas na dhá teaglaim de cheithre bytes. Agus luckily dúinn, Go deimhin eile go bhfuil muid Is féidir leas a bhaint as go bhfuil gach JPG stóráilte taobh-le-taobh ar an gcárta chuimhne. Tá mé ionadaíocht ar an struchtúr cárta cuimhne scéimreach ar an sleamhnán anseo. Anseo, gach cearnóg, dronuilleog gach, Is ionann 512 bytes, agus a thosaíonn sé le liath sa mhéid is go nach bhfuil againn i ndáiríre tá a JPG. Ach ansin bhuail muid ar deireadh bloc le réalta. Ciallaíonn sé sin go bhfuil an chéad cheithre bytes amach díobh siúd atá 512 ar cheann de na dhá sraitheanna de JPG ag tosú. Agus muid ag dul ó ann, agus ansin uair Críochnaíonn JPG amháin, tosaíonn an chéad cheann eile. Ní chuirimid bhfuil aon níos mó riamh spás liath i-idir. Ach conas is féidir léamh againn i ndáiríre seo, agus Léigh na 512 beart ionas gur féidir linn a dhéanamh a chur i gcomparáid leis an chéad áit? Bhuel, a ligean ar dul ar ais go dtí fread, a Bíonn an struct a bhfuil na bearta a bhfuil tú ag léamh. Mar sin, tá tú ag dul a chur iad siúd i ann - méid, líon, agus ansin inpointer go bhfuil tú ag léamh as. Anois, ba mhaith linn a léamh 512 ag an am, agus ba mhaith linn a stóráil seo i maolán, Tá mé ag dul a ghlaoch air. Go bunúsach, tá muid ag dul a shealbhú ar sin 512 bytes agus a dhéanamh rudaí a bhfuil sé, ceart? Táimid ag dul ceachtar a chur i gcomparáid leis an chéad ceithre bytes, nó táimid ag dul go dtí léamh i, ceart go leor? Mar sin, ansin beidh an pointeoir sonraí sin fónamh mar do Maolán, agus an inpointer, go maith, go bhfuil ag tarlú go díreach a bheith ar do chárta chuimhne. Ar ais go dtí ár schematic cárta cuimhne. Táimid ag dul a léamh 512 beart sa turas, stóráil gach bloc 512-beart isteach i maolán, a bhfuil ar sin Maolán, iad siúd 512 bytes, go dtí a fhios againn go díreach cad atá le déanamh orthu. Mar sin, nach bhfuil an tús rud ar bith, mar sin beidh muid ag léamh an maolán, i gcomparáid é, agus Ní mór dúinn aon rud a dhéanamh leis. Agus ansin, bhuail muid ar deireadh le réalta bloc, rud a chiallaíonn go atá againn Fuair ​​ár gcéad JPG. Mar sin, an maolán a shealbhú anois beart ón JPG. An chéad uair eile 512 bytes, toisc go bhfuil siad Ní bloc réalta, chomh maith chuid den JPG. Agus tá JPGs leanúnach ó ann ar i, go dtí go bhuail muid an chéad cheann eile JPG. Agus ansin tá an maolán ansin 512 bytes don JPG, agus mar sin de, agus mar sin de. OK. Mar sin, nuair a bhuail tú ar an chéad réalta bloc, an chéad JPG, conas a dhéanann tú i ndáiríre, go maith, a oscailt é? A ligean ar a dhéanamh ar JPG nua. Na filenames do JPG ag dul go dtí a bheith san fhormáid, líon, líon, number.jpg, sa mhéid is go bhfuil siad ag ainmnithe i an t-ord ina bhfuil siad le fáil, ag tosú ag 0. Mar sin, an chéad JPG go bhfuil tú Beidh teacht ar a 000.jpg. Mar sin, is dócha go bhfuil smaoineamh maith súil a choinneáil ar cé mhéad JPGs atá tú ag fáil go dtí seo. Mar sin, go bhfuil an t-ainm comhaid. Ach conas a dhéanann tú a dhéanamh i ndáiríre go? Bhuel, tá muid ag dul a úsáid feidhm a dtugtar sprintf. Tá beagán cosúil le printf, i gcás ina Is féidir leat úsáid a bhaint ionadchoinneálaithe do theaghráin, ach amháin sa chás seo, beidh sprintf in phriontáil an comhad amach ar an láthair eolaire, ní isteach sa teirminéal. OK. Mar sin, anseo a fheicimid go bhfuil muid an teideal, sraith ruabhreac a stóráil ar an teaghrán dá dheasca, agus pas a fháil againn sa teideal an teaghrán iarbhír le placeholder, ach is maith linn tá fhoghlaim a dhéanamh leis printf. Ach an cód go bhfuil mé anseo Beidh a thabhairt 2.jpg, ní 002.jpg. Mar sin, beidh mé saoire chun tú a fháil amach conas a mhodhnú placeholder a dhéanamh ar an ainm ceart. OK. Mar sin, nuair atá tú ag sprintf'd ansin is féidir leat oscailt go comhad, toisc go bhfuil sé i do eolaire, le fopen, ag baint úsáide as an teideal, agus ansin is cuma cad is mian leat mód go comhad a oscailt isteach Mar sin anois go atá againn oscail comhad JPG nua, anois is féidir linn a scríobh 512 beart sa turas am, go dtí go ndéanfar JPG nua aimsithe. Mar sin, a ligean ar ghlacadh eile breathnú ag an chomhréir na fwrite. Tá a fhios agam go bhfuil mé ag taispeáint sleamhnán seo go leor, ach ba mhaith liom ach chun a chinntiú go nach bhfuil tú guys a fháil ar dhaoine eatarthu freisin, mar gheall ar Tá a fhios agam go bhfuil sé an-éasca a mheascadh suas an chéad agus an ceann deireanach argóint, go háirithe. Ach cuimhnigh go bhfuil tú ag scríobh ó do Maolán isteach na n-íomhánna comhad amach. Anois go bhfuil a fhios agat conas an scríobh 512 bytes isteach i do chomhad JPG go atá tú cruthaíodh, go maith, ba mhaith linn a stopadh go próiseas nuair atá sroichte againn faoi dheireadh na ár gcárta, mar ní bheidh a bheith ann aon íomhánna níos mó a fháil. Mar sin, a ligean ar dul ar ais go dtí fread uair amháin níos mó, geallaim. Filleann fread cé mhéad míreanna ar mhéid, méid, bhí siad réidh i go rathúil. Go hidéalach, tá sé seo ag dul a bheith cibé éiríonn leat i do líon, ceart? Toisc go bhfuil tú ag iarraidh a léamh ar líon eilimintí den méid, méid. Ach más rud é nach bhfuil fread in ann a léamh go líon na n-eilimintí, ansin beidh sé ar ais cibé líon é a léamh go rathúil. Anois, tá rud amháin tábhachtach tabhairt faoi deara go má úsáideann tú comhad eile I / O fheidhm cosúil le fgetc, beidh sé ar ais chomh maith conas a lán nithe a léamh go rathúil. Cad é úsáideach faoi fheidhm seo go má úsáideann tú feidhmeanna taobh istigh de coinníoll, beidh sí i gcrích í féin fad is chinneadh an coinníoll sin, atá ach i ndáiríre úsáideach. Mar sin, má tá tú seo coinníollacha, a rá, má maolán fread, is féidir MÉID MADRAÍ, 2, pointeoir ionann, comhionann le 1, go Ciallaíonn sé gur mhaith liom buíochas a léamh 2 madraí ag an am. Ach má fhilleann fread 1 in ionad 2 mar ag súil leis, ciallaíonn sé sin go bhfuil ann 2 madraí fágtha i mo chomhad, ach 1. Ach má fhilleann sé 2, ansin tá mé fós iad siúd 2 madraí taobh istigh de mo Maolán. Mar sin anois a thugann tú le tuiscint ar conas a sheiceáil le haghaidh an deireadh an chomhaid, ach a ligean ar dul tríd anois ar an loighic. Conas is féidir linn píosa iarbhír gach de na heilimintí sin le chéile? Nuair a bhuail muid ár gcéad JPG, ós rud é Tá a fhios againn go bhfuil JPGs stóráil contiguously, beidh orainn ag scríobh go dtí go a bhaint amach againn an deireadh an chomhaid chárta. Ach nach bhfuil muid ag iarraidh a scríobh rud ar bith go dtí sin. Mar sin ábhair sé, ní amháin go bhfuil muid ag tús le JPG nua, ach cibé acu againn a fuair cheana féin JPG nó nach bhfuil. Má tá sé ar tús JPG nua, beidh muid ag iarraidh a dhúnadh ar ár comhad JPG reatha má ní mór dúinn oscailte amháin, agus oscailte ceann nua a scríobh isteach. Más rud é nach bhfuil sé an tús an JPG nua, áfach, beidh muid a choinneáil ar an gcomhad JPG céanna oscailt agus scríobh isteach go. Beidh muid ag scríobh ár n-Maolán isteach cibé Comhad JPG ní mór dúinn ar oscailt, ar choinníoll go ní mór dúinn oscailte amháin, ar ndóigh. Más rud é nach mór dúinn a fháil ár gcéad JPG go fóill, ní féidir linn aon rud a scríobh. Agus leanann an próiseas seo go dtí go tú teacht ar an deireadh an comhad chárta. Agus ar deireadh, beidh tú ag iarraidh a dhéanamh cinnte go bhfuil tú fclose aon comhaid go atá tú ag fopened. Nuair a bhíonn tú compordach leis an coincheapa, chur le breathnú ar roinnt pseudocode, rud atá san áireamh agam anseo. Gcéad dul síos, ba mhaith leat a oscailt an comhad cárta, agus ansin arís ar an bpróiseas seo a leanas go dtí go atá tú a shroich an deireadh an chárta. Ba mhaith leat a léamh 512 bytes isteach i maolán. Ag baint úsáide as an maolán, beidh tú ag iarraidh a sheiceáil cibé an bhfuil tú ag an tús JPG nua nó nach bhfuil. Agus an freagra ar an cheist sin a bheidh difear do bhainistíocht comhad - a comhaid a oscailt tú, a cinn a dhéanann tú dhúnadh. Ansin, fuair tú cheana féin JPG? Cén chaoi a bhfuil tú ag coinneáil rian de sin? Ansin, ag brath ar sin, beidh tú ceachtar scríobh isteach an JPG reatha go bhfuil tú Tá oscailt, nó nach bhfuil scríobh sé ar chor ar bith, toisc nach bhfuil tú bhfuarthas JPG fóill. Ar deireadh, nuair atá tú tagtha go deireadh na an comhad, beidh tú ag iarraidh a dhúnadh ar bith comhaid go bhfuil tú ar oscailt fágtha. Ba mhaith linn a bheith slachtmhar anseo. Agus leis sin, atá tú a aisghabháil go léir na comhaid ar iarraidh ón chuimhne cárta, a bhfuil feat iontach deas. Mar sin, pat duit féin ar chúl. Ach, níl gné amháin níos mó a an PSET, a bhfuil an comórtas. Feicfidh tú go bhfuil gach ceann de na pictiúir go atá tú a aisghabháil iarbhír pictiúir de bhaill foirne CS50 ar. Mar sin, má tá tú ar an gcampas nó áit éigin in aice le, ansin is féidir leat pictiúir a chur le an fhoireann, agus an t-alt go bhfuil an an chuid is mó pictiúir le baill foirne as a n-comhaid ghnóthú mbeidh fháil duais uamhnach. Leis sin, ansin atá tú críochnaithe PSET an ghnóthú. Is é mo ainm Zamyla, agus tá sé seo CS50.