JASON Hirschhorn: Croeso, bawb, i Wythnos 6. Rwy'n hapus i weld chi i gyd yn fyw ac yn iach ar ôl Cwis 0, gan fy mod yn gwybod bod oedd ychydig yn arw. Ond diolch byth, i chi i gyd gwnaeth yn eithriadol o dda. Ac felly mae hynny'n wych. Os ydych yn fy adran, yr wyf wedi rhoi y rhan fwyaf o ohonoch gefnogi eich cwisiau eisoes. Mae cwpl o chi, yr wyf i'n cwrdd ar ôl y dosbarth. Ac os ydych yn fyfyriwr estyniad a nad ydych wedi derbyn eich cwis yn ôl eto, mae eich TF yn ôl pob tebyg yn gweithio arno a bydd graddio iddo, a chael yn ôl i chi cyn bo hir. Felly, fy myfyrwyr estyniad sydd yn gwylio ar hyn o bryd - gobeithio yn byw - Byddaf yn cael eich cwisiau yn fuan hefyd. Mae ein hagenda ar gyfer heddiw yw fel a ganlyn. Yn gyntaf, rydym yn mynd i fynd dros rai adnoddau sydd CS50 yn eu darparu i chi. Rydym yn mynd i fynd dros Cwis 0 nesaf, a 'N annhymerus' yn ateb unrhyw gwestiynau unrhyw un Mae am broblemau penodol. Ac yna, byddwn yn mynd dros ffeil I / O a datrys set 5. Bydd y ddau destun olaf yn cymryd i fyny y rhan fwyaf o'r adran heddiw. Yr wyf yn rhoi rhestr hon i fyny bob wythnos fel atgoffa i chi i gyd, ond craidd adran hon, rydym dim ond 90 munud - rydym nad ydynt yn gallu cwmpasu popeth fy mod byddai modd i dalu i chi guys. Ond mae gennym tunnell o adnoddau ar gyfer i chi fanteisio ar wrth i chi ddod i adnabod y deunydd a gwaith drwy eich problem yn gosod. Nodyn i'ch atgoffa fod gennyf ar-lein testun blwch, a sefydlwyd i chi ei llenwi os ydych yn gennych unrhyw adborth i mi, yn gadarnhaol ac yn adeiladol, am adran. Bod URL wedi ei leoli i'r dde i lawr yma. Felly, os gwelwch yn dda, cymryd hyn o bryd os oes gennych unrhyw adborth, boed hynny yn ystod yr adran, neu ar ôl, neu ar ôl i chi wylio'r fideo ar-lein, i roi eich adborth mi. Fi 'n sylweddol yn gwerthfawrogi unrhyw a phob ohono. Felly, yr wyf wedi bod yn cael sgyrsiau bach gyda llawer o fy myfyrwyr trwy gydol yr wythnos - fel yr wyf llaw cwisiau cefn, yn siarad am y gwrs, gweld sut rydych yn ei wneud. Ac un thema wedi dod i fyny drosodd a throsodd yn siarad am - yn penodol - problem yn gosod. Ac yr wyf wedi crynhoi y thema honno ar y bwrdd ar hyn o bryd. Yn y bôn, mae gwahaniaeth rhwng troi yn rhywbeth sy'n wneud yn iawn a rhywbeth sy'n cael ei wneud yn dda. Rhan fwyaf o bobl wedi bod yn gwneud gwych o ran cywirdeb - 5 neu 4 ar bob psets. Rhan fwyaf o bobl yn cael hynny bob amser. Fodd bynnag, dim ond oherwydd eich bod wedi gwneud rhywbeth ddim yn iawn yn golygu eich bod wedi gwneud rhywbeth mor cain, neu effeithlon, neu mor lân ag y byddwch yn gallai fod wedi gwneud hynny. A dyna beth mae'r cynllun - ac i raddau llai, arddull - echelinau ar gyfer. Felly, yr wyf yn gwthio chi i gyd, a TFS eraill yn cael eu gwthio i chi guys, nid yn unig i dro mewn pethau sy'n gywir, ond yn troi yn y pethau sy'n cael eu codio yn dda. Ddim yn gwneud diangen GYFER dolenni, Nid yw ail-gyfrifo newidynnau os Nid oes rhaid i chi. Er enghraifft, edrych yn ôl i broblem a osodwyd 4, wrth osod y brics ar y sgrîn, pob rhes - pob brics mewn rhes o ystyried yr un y-cydlynu - yr un uchder gydlynu. Fel na y-cydlynu oedd angen i yn cael ei gyfrifo y tu mewn i'r tu mewn nythu GYFER ddolen a ddefnyddiwyd gennych yn debygol i roi brics hynny ar y sgrin. Dim ond angen i gael eu cyfrifo bob tro y byddwch yn newid olynol, neu symud i lawr rhes. Felly, yn dweud os oes 10 brics mewn rhes, gall pob brics gael yr un y-cydlynu, a bod y-cydlynu gall dim ond yn cael ei gyfrifo unwaith ar gyfer pob un o'r rheini. Nid oes angen i gael eu cyfrifo 10 amser, ac nid yw bod yr angen cyfrifo ddigwydd yn y gwir swyddogaeth galwadau - y swyddogaeth alwad gracked newydd. Felly, os dyna oedd ychydig yn ddryslyd ar gyfer chi, fwy cyffredinol, pethau sy'n Nid oes angen i ddigwydd bob tro i chi fynd drwy'r dolen GYFER ni ddylai fod yn roi y tu mewn i'r ddolen GYFER, ac ni ddylai yn digwydd bob tro y byddwch yn mynd drwy'r ddolen I. Enghraifft, dylunio da arall a welsom yn Wythnos 3 am 15, gallai eich bod yn cadw golwg ar y sero. Felly, pan fyddwch yn ymgychwyn y bwrdd, byddwch yn arbed - mewn newidyn byd-eang, efallai - y x ac y-cyfesuryn y sero. Ac yna pryd bynnag y byddwch - yn eich swyddogaeth yn symud, pryd bynnag y byddwch yn gwneud symud yn llwyddiannus, byddwch yn diweddaru'r lleoliad y sero. Byddai hynny'n eich arbed rhag gorfod gwneud nythu GYFER dolenni i edrych drwy'r bwrdd bob amser yn eich swyddogaeth symud a dod o hyd y sero, neu ddod o hyd i'r teils, ac yna gwirio beth sydd nesaf iddo. Yn lle hynny, mae gennych y lleoliad y sero, gallwch dim ond yn edrych uchod, isod, ac i'r chwith ac i'r dde ohono, i ddod o hyd i y teils roeddech yn chwilio amdano. Felly, o ran y rhaglenni rydym yn ysgrifennu, ni fyddant byth yn ddigon mawr bod rhai o'r penderfyniadau cynllunio hyn yn wir yn mynd i amharu ar eich rhaglen, neu ei gwneud yn rhedeg yn fwy araf, neu efallai hyd yn oed yn rhedeg allan o gof. Ond rydym yn dal i gwthio i chi guys i ysgrifennu mor gain a Cod effeithlon ag y bo modd. Felly, os ydych yn ei wneud yn y pen draw ysgrifennu pethau sydd â llawer mwy o faint cwmpas, byddant yn cael eu hysgrifennu gyda da dylunio yn ogystal â bod yn gywir. Felly, mae nifer ohonoch wedi dwyn hynny. Mae hynny'n rhywbeth yr ydym yn chwilio amdano - rhywbeth yr ydym yn mynd i barhau i gwthio i chi guys ar. Os ydych chi erioed gennych unrhyw gwestiynau am y cynllunio eich rhaglen, mae croeso i estyn allan i mi, ac rwy'n hapus i cerdded drwy eich rhaglen gyda chi, ac yn tynnu sylw at rai o'r cynllun penderfyniadau a wnaed i chi, ac yn rhoi i chi rai awgrymiadau ar sut i wneud hyd yn oed yn penderfyniadau dylunio gwell. Felly, rydym yn mynd i symud ymlaen i siarad am Cwis 0. Cyn i ni wneud hynny, a yw unrhyw un os oes gennych unrhyw gwestiynau am yr hyn Rwyf wedi cynnwys hyd yn hyn? [Siffrwd SŴN] JASON Hirschhorn: Saith eiliad. OK. Gadewch i ni siarad am Cwis 0 am ychydig. Y rhan fwyaf ohonoch wedi eich Cwis cefn 0 yn. Os nad ydych, gobeithio chi gofio ei fod yn ychydig. Ond os ydych wedi cymryd Cwis 0, yna rydych hefyd yn cael mynediad at y PDF ar-lein yn atebion sampl. A oes unrhyw un gennych unrhyw gwestiynau cyn rydym yn neidio i mewn i ddeunydd yr wythnos am broblem benodol ar Cwis 0 - pam mae'r ateb yn yr hyn ydyw? A yw unrhyw un ddryslyd am unrhyw beth? Hyd yn oed os ydych yn cael y broblem yn iawn, ond dim ond os hoffech i mi egluro ychydig mwy, dwi'n hapus i wneud hynny nawr. Felly, yr wyf wedi gofyn i chi guys i dewch yn barod gyda rhai meddyliau am Cwis 0. Felly, a fyddai'n hoffi i fynd â ni dechrau gyda cwestiwn neu sylwadau am Cwis 0? [PAPUR siffrwd] JASON Hirschhorn: Nid yw pawb oedd yn berffaith. Felly, yr wyf yn gwybod [Chwerthin] rhaid cael rhai cwestiynau am Cwis 0. OK. Ie. Ompica. OMPICA: Rhif 10. JASON Hirschhorn: Rhif 10. Pa un oedd rhif 10? OMPICA: The - JASON Hirschhorn: Yr wyf yn haven't - OMPICA: Y cynnwys - JASON Hirschhorn: Rhif 10 yn wyth i i - ysgrifennu wyth i i? OMPICA: Yeah. JASON Hirschhorn: OK. Felly, y cwestiwn arall a allai fod gennych Gofynnwyd Roedd ydw i'n prescient? Mae'r ateb yn gadarnhaol. Yn adran cyn y cwis, gofynnais i chi guys i cod yn Sterling a wyth i i. Mae'r ddau ohonynt yn digwydd i ymddangos ar y cwis. Felly, gobeithio, a delir i chi sylw i hynny. Ac os oedd gennych, yna byddai gennych wneud yn ôl pob tebyg yn dda ar ddau hynny. Ond wyth i i, ni wnaethom mewn gwirionedd cod yn y dosbarth, ond yr oedd, unwaith eto, a ofynnwyd ar y cwis. Felly, un neu ddau o bethau i'w cymryd nodi wrth codio wyth i i. Y peth cyntaf, fesul y cwestiwn, roedd bod angen i chi i wirio a yw'r llinyn yn cyfateb i null. Mae cwpl o bobl yn ceisio i wirio yn nes ymlaen yn y rhaglen os yw braced fi oedd - felly mae cymeriad penodol yn y linyn - yn cyfateb i null. Ond cofiwch, hynny null yn ei hanfod - mae'n dda i feddwl am null fel pwyntydd sero - pwyntydd i sero - Thrafod er cof lle byth gallwch gael mynediad. Felly os oes rhywbeth yn hafal i null, rydych yn gwybod nad yw wedi cael ei hymgychwyn, gan neu does dim byd yno. Felly s yn seren torgoch, s i braced yn torgoch. Felly mae'n gwneud synnwyr i gymharu i null, ond s braced fi null. Ond unwaith eto - felly dyna oedd y peth cyntaf eich bod yn fod i'w wneud - gwirio i wneud yn siŵr eich bod mewn gwirionedd yn cael llinyn go iawn. Nesaf, yr oeddech am fynd drwy pob cymeriad yn y llinyn. Ac felly byddai hynny'n fel s braced i, er enghraifft, os fi yw eich iterator. Ac i gymryd y cymeriad, a yn cael ei werth gwirioneddol. Rydych wedi ei storio fel golosg, ond gwerth ASCII ar gyfer sero - sero fel cymeriad - Nid mewn gwirionedd yn y cyfanrif sero. Mae'n ryw nifer arall eich bod yn gallu edrych i fyny yn y tabl ASCII. Felly, un ffordd i gywiro am hynny - debyg mai dyma'r ffordd orau i gywiro ar gyfer hynny - yn tynnu oddi wrtho gwerth cymeriad - sero fel cymeriad. Dyfyniad sengl Felly minws, sero, un dyfyniad arall. Bydd hynny'n cymryd pa bynnag nifer sydd gennych fel torgoch, ac yn ei gael yn hafal i y nifer fel cyfanrif go iawn. A bod yn debyg iawn i'r dull llawer o bobl yn cymryd yn y problem set 2, gyda Cesar a Viginere - dulliau cêl-ysgrifennu hynny, pan fyddwch yn oedd yn eu cylchdroi. Felly, ar ôl i chi ei gael gan fod nifer o sero i naw, yna - yn dibynnu ar lle mae'n mynd yn y nifer yn y pen draw - angen i chi luosi ei gan bŵer o 10. Symudodd rhai pobl o gefn i'r flaen, a'i luosi yr unigolyn nifer gan bŵer o 10. Symudodd rhai pobl rhag y blaen i'r cefn - ac felly cymerodd yr uchaf trefnu rhifau yn gyntaf - ac yn arbed y rhai mewn amrywiol cownter byd-eang. Ac yna bob amser drwy GYFER dolen, lluoswch y cawr byd-eang wrthweithio newidiol drwy 10, i wneud lle ar gyfer y torgoch nesaf. Felly yr oedd yn ychydig yn ddryslyd heb i mi ei ysgrifennu ar y bwrdd. Ond mae'r ateb sampl ar gael i chi. Ond y rhai oedd y pethau mawr rydym yn chwilio amdano. Hefyd siec i wneud yn siŵr bod pob cymeriad unigol oedd yn wir yn cymeriad rhwng sero a naw, ac nid ryw gymeriad arall, fel A, er enghraifft. Dyna oedd y pethau yr ydym yn edrych ar ei gyfer yn y cwestiwn hwnnw. A yw hynny'n ateb eich cwestiwn? OMPICA: Yeah. JASON Hirschhorn: OK. A oes unrhyw gwestiynau eraill am Cwis 0? Beth am lunio? Bawb llunio iawn? Rhif Roedd - [Chwerthin] Unrhyw gwestiynau am y proses llunio? Wow. [PAPUR siffrwd] JASON Hirschhorn: Ydw. Michael. MICHAEL: A yw'r rhif 7 - ar hap? JASON Hirschhorn: Rhif 7. Rhif 7 yn cael cyfanrif ar hap. Ardderchog. Felly, rydych yn cael cyfanrif yn a cyfanrif b, a ydych am gael ar hap cyfanrifol rhwng a b. Gallwn mewn gwirionedd yn ysgrifennu hyn un ar y bwrdd, gan fod hyn yn un yn un llinell o god - un ffordd i wneud hynny. Felly, rydym yn rhoi drand fel swyddogaeth y gallem eu defnyddio. A beth mae drand - gan dybio ei fod wedi cael ei hadu - beth mae drand dychwelyd? MICHAEL: A arnofio rhwng 0.0 a 1.0. JASON Hirschhorn: Mae nifer - yeah. Mae nifer rhwng 0 ac 1. Ac felly rydym wedi b ac a. Ac yna rydym wedi ein rhif ar hap rhwng 0 ac 1 a roddwyd i ni gan drand. Mae rhai pobl yn ceisio rhoi b, neu b minws yn, neu rywbeth y tu mewn rhai cromfachau. Byddai hynny'n golygu eu bod yn dadleuon i'r swyddogaeth hon. drand nid yw'n cymryd unrhyw ddadleuon - fel getString yn ydynt yn cymryd unrhyw ddadleuon. Felly mae'n paren ar agor dim ond, yn agos paren - ac mae hynny, ynddo'i hun, yn yr alwad swyddogaeth. A bod yn rhoi i chi nifer rhwng 0 ac 1. Wrth gwrs, mae gennym ystod eang y gall y niferoedd fod ynddi Dweud, os b yn 10 ac mae a yn 5, mae gwir am nifer gydag ystod o 5. Felly, y peth nesaf y mae angen ei wneud yw lluoswch hyn gan yr ystod b minws a. Felly, gan dybio bod wedi lluosi. A bydd yn rhoi nifer ni o fewn ystod a roddir. A bod ystod benodol sef y gwahaniaeth rhwng b minws a. Ac yn olaf, bydd mai dim ond rhoi o - dweud yr ystod rhwng b minws yn yn 5, bydd hynny'n rhoi i ni nifer 0-5. Ond os yw, mewn gwirionedd 5, mae angen i ni roi hwb ystod hyn i fyny i'r man lle mae'n mewn gwirionedd i fod i fod, drwy ychwanegu. Felly, sy'n cael y rhesymeg cywir. Ac yna, byddai gennych cwestiwn arall? MICHAEL: Na Fi jyst teimlo'n fud ar hyn o bryd. [Chwerthin] JASON Hirschhorn: Na Peidiwch â theimlo'n wir fud. Mae nifer o bobl yn ei chael yn anodd gyda'r cwestiwn hwn. Ac yna, y cwestiwn arall yw, drand, dywedasoch, yn rhoi arnofio chi - dychwelyd arnofio. Ond mae swyddogaeth hon, gofynnwyd mewn gwirionedd ar gyfer cyfanrif gael ei ddychwelyd. Nid oes angen i chi i fwrw hyn yn benodol i cyfanrif, gan fod y rhain Bydd gweithrediadau trin fel pob yn arnofio - fel rhif pwynt arnawf. Fel y bydd hyn - hyd yn oed os yw hyn yn yn gyfanrif, bydd hyn yn yn cael ei luosi yn gywir. Bydd yr holl lluosi yn gweithio. Nid oes angen i chi i fwrw yma. Yn wir, ni ddylech fwrw. Byddai hynny - os hoffech chi fwrw nifer dyna rhwng 0 ac 1 - rhif ar hap, pwynt fel y bo'r angen - yna bydd yn naill ai yn unig 0 neu 1, felly byddwch yn colli i gyd gywirdeb. Ond ar y diwedd, pan fyddwch yn dychwelyd, mae'n mynd yn awtomatig hanfon yn ôl fel cyfanrif. Felly nid oes angen i chi ei wneud y castio eich hun. Felly, mae hyn yn yr ateb i y cwestiwn hwnnw, rhif 7. Unrhyw gwestiynau eraill ar Cwis 0? Yeah, Annie. ANNIE: Pryd ydym ni'n defnyddio recursive - pan ydym yn defnyddio dolenni iteraidd? JASON Hirschhorn: Pryd ydych chi'n defnyddio recursive - felly yn fwy cyffredinol, y manteision ac anfanteision recursion yn erbyn dull ailadroddol. A all unrhyw un gynnig pro neu con? Os gwelwch yn dda? Ni all unrhyw un. Pwy all gynnig pro neu con? [PAPUR siffrwd] MYFYRIWR 1: Ymgylchol yn llai codio - llai o deipio? JASON Hirschhorn: Felly ar y cyfan, recursion yn arbennig, swyddogaeth - neu algorithm fel uno fath - sy'n cynnig ei hun i ddull ailadroddus - fod yn fwy syml i cod recursively. A dim ond yn gwneud mwy o synnwyr i wneud hynny recursively. Felly byddai hynny'n pro i recursion. Eraill? Yeah? MYFYRIWR 2: Con i recursion - Mae'n defnyddio mwy o gof. JASON Hirschhorn: Felly yn union gywir. Bydd swyddogaeth ailadroddus yn cadw ychwanegu pentwr fframiau i'r pentwr. Felly, os ydych yn gweithredu ar lawer o rhifau, ac mae'n rhaid iddynt yn galw hyn yn gweithredu llawer, yna byddwch yn sicr yn cymryd mwy cof, tra Bydd dull iteraidd dim ond rhoi un stac ffrâm ar y simnai, oherwydd y cyfan yn digwydd o fewn un swyddogaeth. Unrhyw manteision a'r anfanteision eraill? Yeah. MYFYRIWR 3: Manteision i recursion. Nid oes rhaid i chi benderfynu yn ymlaen llaw faint o weithiau y Roedd cod i gael ei ailadrodd. Gallwch gael nifer a bennwyd ymlaen llaw o adegau sy'n rhaid i chi ei ailadrodd, yna recursion yn well, oherwydd mae'n cymryd y canlyniad. JASON Hirschhorn: Yr wyf yn credu bod hynny'n wir. Ond rwy'n credu yn y ddau achos byth byddech - mae'n debyg y byddech yn cael rhywfaint o mewnbwn gan y defnyddiwr. Neu y byddai swyddogaeth hon yn cael rhywfaint o fewnbwn a fyddai'n penderfynu faint o weithiau y mae'n Dylai redeg. Felly yn gyffredinol, oni fyddech cod caled - hyd yn oed mewn dull ailadroddol - sut Dylai nifer o weithiau y ddolen yn cael ei rhedeg. Wnaethoch chi gael un arall eich bod yn meddwl am, Annie? OK. Felly, y rhai yn ôl pob tebyg y ddau - pro mwyaf a'r mwyaf con i recursive yn erbyn dull ailadroddol. OK. Unrhyw beth arall ar Cwis 0? Gadewch i ni symud ymlaen. Ffeil gallaf / O. Mae byr gwych yr wythnos hon ar ffeil I / O, gobeithio, eich bod wedi gwylio lluosog adegau, ac edmygu. Mae llawer o waith yn mynd i mewn i hynny, ac rwyf wedi glywed ei fod yn insanely ddefnyddiol. Yr wyf hefyd yn cynnwys y ddolen ar sleid hon, rhag ofn nad ydych wedi cael cyfle i wylio 10 gwaith. Felly, yr ydym yn mynd i fynd yn fyr yn ystod y camau sylweddol i agor a gweithio gyda ffeiliau, ac yna rydym yn mynd i plymio i mewn i broblem codio cyn archwilio'r broblem a osodwyd. Felly eto, yr wyf i'n mynd i roi hyn i fyny ar y sgrin, ond rwy'n mynd i siarad am dim ond munud am yr hyn rydym yn ei wneud yma gyda ffeil I/O-- beth mae hynny'n ei olygu? Mae hynny'n golygu y gallwn greu ein rhaglenni, ac yna wedi ein rhaglenni allanfa, ac nid ydym wedi gwneud unrhyw effaith ar y byd y tu allan i'n rhaglen. Ond pan fyddwn yn dechrau gweithio gyda ffeiliau - y ddau yn eu darllen i mewn a chreu nhw - gallwn gael rhywfaint o effaith ar y byd y tu allan ein rhaglen. Yn union fel pe na bai Microsoft Word yn gallu i wneud unrhyw ddogfennau Word, yna unwaith Microsoft Word roi'r gorau iddi, pob un o'ch byddai gwaith yn cael mynd, a byddai'n mewn gwirionedd yn ddiwerth. Yn y pen draw ydym am i fod yn gallu ysgrifennu rhaglenni sy'n gallu effeithio ar byd o'u cwmpas, y ddau drwy gymryd yn mewnbynnau cymhleth - o ran ffeiliau a drwy ffeiliau, ac mae hefyd yn creu diddorol ac allbynnau cymhellol - o ran gwahanol fathau o ffeiliau. Felly dyna pam yr ydym yn dechrau dysgu sut i weithio gyda ffeiliau. Yn fwy penodol, yr hyn rydym yn ei wneud fel a ganlyn. Mae'n syml iawn. Dim ond cwpl o gamau, a maent yn cael eu rhestru yma ar y cod hwn. Felly, rydym yn mynd i fynd drwy y llinell hon cod wrth linell. Yn gyntaf, byddwch yn gweld tynnu sylw at - pan fyddwch yn gweithio gyda ffeil, ni waeth pa fath o ffeil ydyw, angen i chi ei agor. A dyna gyda galwad i fopen - yma. Eich bod yn cynnwys enw'r ffeil. Os nad yw'r ffeil yn eich cyfeiriadur, neu 'r folder ble rhaglen hon bywydau, yna mae angen i chi hefyd gynnwys llwybr i'r man lle y ffeil yn. Rydym yn mynd i gymryd yn ganiataol bod hyn yn ffeil o'r enw "text.txt" - dogfen destun syml - yn y un ffolder rhaglen hon yw. Felly dyna beth arall i gadw mewn meddwl - os ydych am i agor ffeil rhywle arall, chi mewn gwirionedd mae angen i gynnwys ei leoliad. Yn ail, gallwch basio dadl i fopen, a dyna beth ydych am ei wneud gyda'r ffeil. Mae tri phrif dadleuon a ydych yn mynd i basio i fopen. Pwy all roi i mi dri hynny? Pwy all roi i mi un ohonynt? Ie. MYFYRIWR 4: Enw'r ffeil? JASON Hirschhorn: Mae'n ddrwg gennyf. Mae tri phrif ddadleuon y gellir byddwch yn pasio fel yr ail ddadl i fopen. Rydych chi'n iawn - yr enw ffeil yw'r ddadl gyntaf. Ond mae'r ail ddadl i fopen yn Yn gyffredinol, tri llinynnau, ac - ie. Aleja. ALEJA: A ar gyfer atodi. JASON Hirschhorn: A, os ydych chi am atodi at ffeil sy'n bodoli eisoes. MYFYRIWR 5: R ar gyfer darllen. JASON Hirschhorn: R, os ydych yn eisiau darllen o ffeil. MYFYRIWR 6: W ar gyfer ysgrifennu. JASON Hirschhorn: Ac w, os ydych yn eisiau ysgrifennu at ffeil. Felly, yn yr achos hwn, rydym yn ysgrifennu at y ffeil, felly mae gennym w. Chi ei agor, rhaid i chi hefyd i achub y ffeilio yn rhywle, a dyna y cod i ochr chwith y y gweithredwr aseiniad - Im 'yn creu pwyntydd i ffeil gelwir, yn yr achos hwn, ffeil. Nid ydym yn mynd i boeni pa hyn i gyd capiau beth FFEIL yw. Digon yw dweud, ei fod yn hir ffrwd o sero a rhai. A dyna sut yr ydym yn mynd i ei weithredu ac yn ei ddeall. Y peth nesaf mae angen i ni ei wneud - ac mae hyn yn hynod o bwysig - pryd bynnag y byddwch yn agor ffeil - yn wir, pryd bynnag y byddwch yn galw malloc, ar gyfer enghraifft, ac yn cael rhywfaint o cof a cheisio a'i gadw mewn pwyntydd, byddwch bob amser yn eisiau gwirio i wneud yn siŵr bod Nid yw swyddogaeth ddychwelodd null. Felly, yn yr achos hwn, rydym yn edrych i wneud sicrhau ein bod mewn gwirionedd yn agor y ffeilio yn gywir, ac roedd oes gwall yn ein rhaglen. Nesaf, unwaith y byddwn wedi gwirio i wneud yn siŵr bod gennym ffeil gwaith, gallwn ysgrifennu at, neu ddarllen o, neu atodi at y ffeil. Yn yr achos hwn, yr wyf yn syml argraffu un llinell at y ffeil hon. Sut ydw i'n gwybod hynny? Wel, rwy'n ei ddefnyddio swyddogaeth hon a elwir yn fprintf. Mae pob un o'r swyddogaethau y byddwch yn eu defnyddio wrth ysgrifennu at, neu ddarllen o, neu Bydd trin ffeiliau yn debyg i'r swyddogaethau ydych chi wedi ei weld o'r blaen, ond yn dechrau â'r llythyren F, sefyll i ffeil. Ac fprintf, yn wahanol ein print arferol app, yn cymryd un ddadl ychwanegol, a dyna y ffeil lle rydych yn eisiau argraffu y llinell hon i. Nid oes gennyf unrhyw beth i'w yr hawl i ohai. Nid oes gennyf y trydydd ddadl i printf - neu'r ail ddadl i printf, y trydydd ddadl i fprintf, gan fy mod nid oes ganddynt unrhyw bachau yma. Dydw i ddim yn cynnwys unrhyw newidynnau. Ond unwaith eto, fprintf a pob un o'r rhain ffeil swyddogaethau sy'n gweithredu gyda ffeiliau yn gyffredinol yn mynd i angen y ffeil y maent yn gweithredu. Yn olaf, y peth pwysig olaf i wneud yw cau'r ffeil, yn union fel gyda - pryd bynnag y byddwn malloc rhywbeth, rydym am i ryddhau rhywbeth, rhag i ni cael yn gollwng cof - yr ydym am i gau ein ffeil. Os yw'r rhaglen hon wedi gadael heb gau y ffeil, groes yn fyddai dim yn mynd anghywir, yn enwedig os Roedd ffeil fach. Ond mae'n sicr yn arddull codio da ac ymarfer bob amser yn cau eich ffeil pan fyddwch yn gorffen ei ddefnyddio. Felly dyna'r hanfodion ffeil gallaf / O. Mae'n debyg eich bod wedi gweld hynny o'r blaen, neu wylio yn y byr gwych. A oes unrhyw un gennych unrhyw gwestiynau, cyn rydym yn mynd i mewn i rai codio ymarfer problemau, am ffeil I / O neu camau Fi jyst yn mynd drosodd? [THEIPIO SWNIO'N] JASON Hirschhorn: A ydych yn gennych gwestiwn, Avi? AVI: Na JASON Hirschhorn: OK. Rydw i'n mynd i aros arall saith eiliad. [Chwerthin] Dyna tip da iawn. Rydych guys nid yn unig yn ei hoffi gofyn cwestiynau. Mae hynny'n iawn. OK. Felly mae ein problem ymarfer cyntaf yw, yr ydym yn mynd i ddyblygu swyddogaeth offeryn llinell orchymyn eich bod yn ôl pob tebyg ddefnyddio cyn - copi - yr offeryn copi. Os byddwch yn teipio cp ac yna basio dau dadleuon yn eich terfynell, gallwch copïo ffeil. A dyna beth yr ydym yn mynd i ysgrifennu ar hyn o bryd. Felly eto, darllen oddi ar sleid hon, byddwn i'n i chi ysgrifennu rhaglen sy'n cymryd dau a dim ond dau gorchymyn-lein dadleuon - ffeil ffynhonnell a ffeil cyrchfan - a chopïau cynnwys y ffynhonnell ffeil i'r ffeil cyrchfan un beit ar y tro. Felly dyna lawer i ofyn am. Unwaith eto, ddull da o hyn yw Nid yw mynd yn syth at y cod C, ond dorri i lawr i mewn i un neu ddau o gamau. Yn gyntaf, meddyliwch am y rhesymeg - yn union yr hyn rwy'n gofyn i chi ei wneud - ac yn deall pob un o'r camau i'r broblem hon. Heb fod mewn C, dim ond mewn rhai pseudocode, neu hyd yn oed model meddwl beth sy'n mynd ymlaen. Nesaf, unwaith y byddwch yn cael y pseudocode i lawr, chyfrif i maes sut mae'r pseudocode mapiau ar offer a phethau rydym wedi dysgu i'w defnyddio yn C. Ac yn olaf, unwaith y byddwch i gyd wedi bod gyda'ch gilydd, gallwch cod y broblem. Cymerwch 5 i 10 munud i weithio ar y broblem hon. 'N annhymerus' yn rhoi'r cyfarwyddiadau yn ôl i fyny mewn eiliad. Ac yna rydym yn mynd i fynd dros y pseudocode, a chod mae'n byw fel grŵp. Os oes gennych unrhyw gwestiynau tra byddwch yn gweithio ar hyn, mae croeso i godi eich llaw, a byddaf yn dod o gwmpas ac yn eu hateb. MYFYRIWR 7: Alla i swipe darn o bapur? JASON Hirschhorn: Beth sydd i fyny? [THEIPIO SWNIO'N] JASON Hirschhorn: OK. Gadewch i ni fynd dros y pseudocode gyntaf, a Yna, byddaf yn rhoi cwpl fwyaf y byddwch yn munud i orffen codio. Pwy fyddai'n hoffi dechrau m off gyda'r llinell gyntaf pseudocode gyfer y swyddogaeth hon? MYFYRIWR 8: Gwiriwch i wneud yn siŵr bod a roddwyd i chi ddwy ffeil. JASON Hirschhorn: OK. Ac os nad ydym yn? MYFYRIWR 8: Byddwn yn dychwelyd 0. JASON Hirschhorn: A ddylem ni yn dychwelyd 0? MYFYRIWR 8: Dychwelyd a - blanking. Mae'n ddrwg gennym. JASON Hirschhorn: Yeah. Mae'n debyg nad 0. Oherwydd 0 yn golygu popeth yn dda. OK. Felly dyna llinell gyntaf o pseudocode. Pwy sydd â'r ail linell pseudocode? MYFYRIWR 9: Ar agor y ffeiliau? JASON Hirschhorn: Agor y ddau ffeiliau. OK? MYFYRIWR 10: Edrychwch i weld os yw'r ffeil yn NULL? JASON Hirschhorn: Gwiriwch i wneud yn sicr nid yn NULL. Fel o'r neilltu - slaes 0 - yw bod NULL? MYFYRIWR 11: Rhif JASON Hirschhorn: Dyw hynny ddim yn NULL. Alw'n hynny yw'r terminator null. Mae'n sillafu'n mewn gwirionedd gyda dim ond un l. Felly, gwirio rhywbeth yn erbyn hynny - dyna mewn gwirionedd yn gymeriad - felly gwirio rhywbeth yn erbyn sy'n cael ei Nid yw yr un fath ag edrych i weld a yw'n yn dychwelyd NULL. Ac mae rhai pobl - ar eu cwisiau a eu problem setiau - wedi cael y dau o'r rheiny yn ddryslyd. Ond y ddau o'r rhain yn mewn gwirionedd gwahanol. Mae un yn dod i ben llinyn - mae un yn pwyntydd i 0. MYFYRIWR 12: Pam y byddai nad ydych yn gwirio i gwneud yn siŵr nad yw'r ffeiliau yn NULL cyn i chi eu hagor? JASON Hirschhorn: Felly agored yn arbed rhywbeth yn y ffeil. Ac os byddwch yn mynd yn ôl yma - felly y llinell hon - fopen - Bydd rhoi cyfeiriad a storfa i chi y cyfeiriad hwnnw yn y ffeil a yw'n gweithio. Os na fydd yn gweithio, mae'n Bydd storio NULL - MYFYRIWR 12: O. OK. Rhaid i chi. JASON Hirschhorn: Yn ffeil. Felly, nad ydych yn gallu gwirio am NULL cyn i chi eu hagor. NULL golygu nad oedd rhywbeth gweithio'n gywir. OK. Felly, gwirio i wneud yn siŵr nid yw? Neu a? Beth ydym yn ei feddwl? Byddwn yn mynd â hynny. MYFYRIWR 13: Ydy. JASON Hirschhorn: Ydy? Nid yw? MYFYRIWR 13: Ydy. JASON Hirschhorn: OK. Rydym yn ymddangos i gael rhywfaint o consensws ar hynny. Nid yw NULL. OK, llinell nesaf o pseudocode. Pwy sydd wedi rhoi i mi llinell eto? Byddwn yn aros i chi. Yeah. MYFYRIWR 14: Mae'n rhaid i chi ddarllen o'r ffeil cyntaf? JASON Hirschhorn: OK. MYFYRIWR 14: Neu rydym yn defnyddio fscanf neu rhywbeth fel 'na y ffeil gyntaf? JASON Hirschhorn: Felly rydym am darllen o'r ffeil gyntaf a - gadewch i ni gywiro hynny yma. Darllen o'r ffeil ffynhonnell. Ac yna, beth ydym yn ei wneud ar ôl i ni darllen o'r ffeil ffynhonnell? Rhywun arall? MYFYRIWR 15: Ysgrifennu i y ffeil cyrchfan? JASON Hirschhorn: Rydym yn ysgrifennu at y ffeil cyrchfan, ac - OK. Beth arall rydym yn ar goll? Rhywun arall nad yw wedi rhoi i mi yn llinell o god eto - o pseudocode. Yeah. MYFYRIWR 16: Efallai y gallwch chi bob amser wirio a oes rhywbeth i ddarllen er mwyn, fel y llinell nesaf? Bod yn debyg y llinell nesaf, weld os yw'n bodoli. [ELECTRONIG BEEP] JASON Hirschhorn: Wps. Dyna fy meddalwedd ddyddlyfru. Yeah? MYFYRIWR 16: Yeah. JASON Hirschhorn: Felly rhowch i mi, un mwy o amser. MYFYRIWR 16: Gwiriwch a oes dal i fod yn llinell nesaf o'r ffeil ffynhonnell i ddarllen. JASON Hirschhorn: OK. Felly, nid ydym yn darllen llinellau - yn darllen bytes yma - ond eich bod yn gywir. Rydym am i ddarllen ac ysgrifennu nes nad oes mwy bytes. OK. Ac felly dylai'r rhain gwirionedd fod hindentio ychydig, oherwydd eu bod o dan yno. Iawn? Hyd nes y byddwn yn ddi-bytes, rydym yn mynd i darllen o'r ffeil ffynhonnell ac ysgrifennu at y ffeil cyrchfan. Ac yna, beth yw'r olaf llinell o pseudocode? Rhywun nad wedi rhoi rhywbeth i mi eto. MYFYRIWR 17: Cau'r ffeiliau? JASON Hirschhorn: Yn union. Caewch y ffeiliau. Felly, mae ein pseudocode. Rydw i'n mynd i roi'r pseudocode i gedit, ac mewn ychydig funudau yr ydym yn Bydd cod hwn ar y cyd. OK. Gadewch i ni ddechrau arni fel grŵp. Nishant, yr wyf wedi fy ffeil newydd. Rydw i wedi newydd agor hyn i fyny. Untitled Document 1. Beth yw'r peth cyntaf y dylwn ei wneud? NISHANT: Cynnwys llyfrgelloedd? JASON Hirschhorn: OK. Pa llyfrgelloedd? NISHANT: Stdio.h, stdlib.h, yr wyf yn credu? JASON Hirschhorn: OK. Beth yw stdlib amdano? NISHANT: Wedi anghofio. JASON Hirschhorn: OK. Felly cynnwys stdio. Beth ddylwn i ei wneud hyd yn oed cyn Byddaf yn dechrau codio? NISHANT: Ysgrifennwch pennawd? JASON Hirschhorn: Sut ydw i'n cael ei lliw? [LLEISIAU ymyrryd yn] NISHANT: Sut ydych chi'n ei gael lliw? JASON Hirschhorn: Sut ydw i'n lliw codio? NISHANT: Nid wyf yn gwybod. Oh. Arbed. JASON Hirschhorn: Achub. Ie. Dylwn gadw fel. C. Felly, ei gadw ar y bwrdd gwaith fel cp.c. Melys. Ac os ydw i am gael arddull llawn pwyntiau, beth ddylwn i gynnwys ar y brig? NISHANT: Gallwch ysgrifennu eich enw, enw y rhaglen, a phwrpas y rhaglen hefyd? JASON Hirschhorn: Edrych yn dda. Ardderchog. Felly, rydych wedi dechrau i ffwrdd â ni berffaith. # Yn cynnwys - byddwn hefyd yn ysgrifennu - OK. Felly, yr wyf yn meddwl fy mod yn barod i fynd. Pwy sydd â'r llinell gyntaf o god i mi - neu y llinellau cyntaf y cod sy'n bydd yn ei gymryd i fodloni ein cyntaf sylwadau pseudocode? Chi. MYFYRIWR 18: Os na fydd yn int argc, ac yna llosg * argv? JASON Hirschhorn: Yr wyf yn meddwl eich bod yn gywir. Gadewch i ni ei newid i int prif paren, agored, argc int, coma, cols * argv? Fel hynny? MYFYRIWR 18: Bracedi. JASON Hirschhorn: Bracedi. Braced Agored, braced agos, rhiant agos. Perffaith. Nawr gallaf gymryd dadleuon gorchymyn-lein. OK. Sicrhau ein bod yn rhoi dwy ffeil. Gallwch ei roi imi hynny hefyd. MYFYRIWR 18: Os argc - nid yw hyn yn un yn gyfartal 3. JASON Hirschhorn: Os paren agored Nid yw argc yn gyfartal 3? MYFYRIWR 18: Yeah, byddwch yn dychwelyd 1 neu unrhyw beth. JASON Hirschhorn: Mae'n ddrwg gennyf. MYFYRIWR 18: Ffurflen 1 neu unrhyw beth. JASON Hirschhorn: Dychwelyd 1. OK? Great. Agorwch y ddau ffeiliau. Pwy all fy helpu i agor y ddau ffeiliau? Pwy sydd wedi rhoi i mi cod eto? Kurt? KURT: Felly yr holl gapiau ffynhonnell F-I-L-E seren. JASON Hirschhorn: Dw i'n mynd i gymryd y llafariaid. Mae'r rhai yn oer. Mae fel Tumblr. MYFYRIWR 18: Equals fopen - JASON Hirschhorn: Equals fopen? MYFYRIWR 18: paren Agored, argv, braced agored. JASON Hirschhorn: Aros. Mae'n ddrwg gennym. Paren agored. OK. MYFYRIWR 18: Yeah. Argv is 1. JASON Hirschhorn: Is-1? MYFYRIWR 18: Yeah. Argv braced agored 1 - ie. Ac yna coma, ac yna agor dwbl dyfynnwch, r, dyfynnwch dwbl, paren agos, hanner colon. JASON Hirschhorn: Sweet. A beth am y llall? MYFYRIWR 18: Yn debyg iawn, ond yn hytrach o S-R-C, byddech yn ei alw'n D-S-T. JASON Hirschhorn: OO! Rwy'n hoffi hynny. MYFYRIWR 18: Dim ond D-S-T. Yeah. Ac yna argv, braced agored, 2. Yeah. Ac yna w yn hytrach na r. Yeah. JASON Hirschhorn: Great. Neu ddwy nesaf o linellau. Hefyd, os oes gan unrhyw un pethau i ychwanegu at llinellau yr ydym wedi ei wneud, mae croeso i ychwanegu hynny hefyd. Gwiriwch i wneud yn siŵr nid yw NULL. Pwy all roi y cod ei angen arnaf i bodloni bod llinell o pseudocode? Archer. ARCHER: Os src hafal hafal NULL neu DST hafal hafal NULL, yna byddwch yn dychwelyd - JASON Hirschhorn: Beth? ARCHER: Ôl 2? JASON Hirschhorn: Dychwelyd 2. Felly, os src paren agored yn dychwelyd yn hafal i NULL, neu - beth bynnag yw thing's - bibell? Pipe? Byddwn yn ei alw'n bibell. Pipe, pibell, DST hafal hafal NULL, yn dychwelyd 2. OK? Hyd nes y byddwn yn allan o bytes - rydym yn fath o hepgor dros y cam o y pseudocode ran mynd i'r YMA. Ond nes ein bod allan o bytes - beth mae hynny'n swnio fel? Pa fath o strwythur C - ond nid wyf yn defnyddio strwythur y gair, oherwydd ein bod ni'n mynd i ddechrau defnyddio mewn achosion eraill - ond offeryn C yn gwneud hynny swnio fel? MYFYRIWR 19: Mae dolen. JASON Hirschhorn: A dolen. Mae'n swnio fel dolen. Felly pwy all roi y llinell gyntaf i mi y cod ddolen yma? Gallwch hefyd ddewis pa fath o dolen rydych ei eisiau, os byddwch yn rhoi i mi y llinell hon o god. Mae yna dri math. Byddwch yn cael i ddewis. Byddwn yn awgrymu un o'r rheiny. Avi. Pa un wyt ti eisiau? AVI: AM. JASON Hirschhorn: AM. AVI: int i yn hafal i sero. JASON Hirschhorn: OK. AVI: Mae'r rhan Dydw i ddim yn siŵr am. Ond fi yn llai na maint ffynhonnell seren? Nid wyf yn siŵr o hynny. JASON Hirschhorn: OK. AVI: Oherwydd eich bod am gael y maint o ffeil, dde? JASON Hirschhorn: Felly, mae hyn nid mae'n debyg y bydd rhoi maint y gwir ni ffeil mewn beitiau. Felly beth arall y gallem ei wneud? Beth yn fath arall o ddolen? Neu a ddylem gadw at y dolen I? MYFYRIWR 20: A allech chi wneud dolen TRA? Ac yna, hyn y byddech yn ei wneud yw you'd - oherwydd ein bod wedi torgoch yn * ar gyfer y ffeil. Felly, os ydym yn unig yn cadw incrementing bod hyd nes y byddem yn dod o hyd i'r cymeriad NULL ar y diwedd? Neu ddim, yw nad yw sut y ffeiliau yn gweithio? JASON Hirschhorn: Felly gallwn gadw incrementing y torgoch * nes i ni ddod o hyd i'r NULL - MYFYRIWR 20: Yn y bôn dal i fynd cymeriad drwy gymeriad nes i ni gyrraedd ddiwedd y ffeil. JASON Hirschhorn: Ydw. Felly, dyna beth yr ydym am ei wneud. Rydym yn awyddus i gadw darllen, cymeriad gan gymeriad, nes i ni gyrraedd ddiwedd y ffeil. MYFYRIWR 20: Yeah. Dod o hyd i - beth yw'r diwedd neu arwydd stop ar ddiwedd y ffeil testun. JASON Hirschhorn: OK. Felly, pan fyddwn yn cyrraedd y diwedd y ffeil - sut rydym yn gwybod ein bod wedi cyrraedd ddiwedd y ffeil? Os ydw i'n galw - felly gadewch i cam yn ôl. Beth yw swyddogaeth? Gadewch i ni fynd i'r llinell hon yn iawn yma. Darllen o'r ffeil ffynhonnell. Pwy all roi y llinell o god i mi? MYFYRIWR 21: Fscanf? JASON Hirschhorn: Fscanf. OK. Beth os wyf am i ddarllen, iawn yn benodol, un beit? MYFYRWYR 21: Nid wyf yn gwybod. JASON Hirschhorn: OK. Hyd yn oed yn symlach na fscanf - beth yw - Yr wyf am i ddarllen o ffeil ffynhonnell? Darllen o ffeil ffynhonnell. Beth yw swyddogaeth - yeah. MYFYRWYR 22: Mae'n LandLine fread? JASON Hirschhorn: Fread. Yr wyf yn meddwl gadewch i ni daro ag mai un am y tro. Pa fath o ddadleuon mae fread cymryd? MYFYRIWR 22: Mae'n debyg mai'r math o ffeil, ac yna leoliad yn y ffeil? JASON Hirschhorn: Beth allaf ei deipio yma at chyfrif i maes pa fath o ddadleuon fread yn cymryd? MYFYRWYR LLUOSOG: fread Manaw. JASON Hirschhorn: Dyn fread a fwrite. Edrych fel maent yn hongian allan gyda'i gilydd. Felly fread yn cymryd faint o ddadleuon? MYFYRIWR 23: Four. JASON Hirschhorn: Mae'n cymryd pedwar dadleuon. Mae'n cymryd pwyntydd, maint, a bod peth, sydd yn rhyfedd, ac mae rhai ffeil. OK? Gadewch i ddarllen am y peth yma. "Mae'r fread swyddogaeth yn darllen n memb elfennau o ddata, bob maint bytes hir, o'r nant yn tynnu sylw at y nant, gan eu storio yn y lleoliad a roddir gan pwyntydd. " Felly pedwar dadleuon. Pam nad ydw i'n jyst adysgrifia hyn, a bastio yn iawn yma. OK. Felly pwy gallu dechrau llenwi dadleuon hyn i mi? Avi. AVI: Tynnwch y gwagle. Rhowch yn unig src. Cymerwch allan pwyntydd a'r seren. Rhowch src. Yna - JASON Hirschhorn: Felly, yr wyf i'n mynd i roi'r gorau i chi yno, oherwydd dyna anghywir. Rydych chi'n iawn gyda src, ond lle y dylai fynd src? [LLEISIAU ymyrryd yn] JASON Hirschhorn: Dylai mynd dros yma. Dyna'r src - ein src yn fath. Gadewch i ni edrych yma. Mae hyn yn gofyn am fath FFEIL *, rydym yn mewn gwirionedd fel arfer yn eu gweld fel 'na. Felly, mae hyn yn gofyn am ddadl o deipio FFEIL * a elwir yn nant sy'n src. OK? Pa faint o bethau yn ei wneud rydym eisiau eu darllen? Yr wyf yn rhoi i chi hwn yn y disgrifiad problem. MYFYRIWR 24: Un beit ar y tro. JASON Hirschhorn: Un beit. Pa mor fawr yw beit? Mae ei maint mewn bytes, felly beth allaf i ei roi iawn yno? MYFYRIWR 25: Un. JASON Hirschhorn: Un. Iawn. Mae ei maint yn uned beit, felly mae 1 yn 1 beit. Faint o ydw i am ei ddarllen ar y tro. MYFYRIWR 26: Un? JASON Hirschhorn: Un peth. Rwyf am i ddarllen un peth o faint 1, un brathiad ar y tro. A ble i roi, ar ôl i mi ei ddarllen? MYFYRIWR 27: Cyrchfan? JASON Hirschhorn: Felly, ni allaf roi yn syth i mewn i gyrchfan. MYFYRIWR 28: Rydych yn gonna Rhowch i mewn i un rhan o dair pwyntydd? MYFYRIWR 27: I'r gyrchfan. JASON Hirschhorn: OK. Yeah. MYFYRWYR 29: Gallwch chi ddatgan rhywbeth i gweithredu fel storio dros dro yn gynharach. JASON Hirschhorn: OK. Rhowch i mi hynny. MYFYRIWR 29: ffeil arall pwyntydd, efallai? JASON Hirschhorn: OK. Felly, mae hyn yn seren ddi-rym - mae'n seren fath yn ddi-rym, felly nid yw'n rhaid cael pwyntydd ffeil. Ac os ydw i'n darllen un beit, byddai lle yn lle da i storio un beit? MYFYRIWR 29: Mae casgliad? JASON Hirschhorn: Mae amrywiaeth. OK. A beth arall yn rhywbeth sy'n dim ond maint un beit? MYFYRIWR 30: A torgoch *? MYFYRIWR 29: Yeah. JASON Hirschhorn: A torgoch * Nid yw un beit. MYFYRIWR 29: A torgoch. JASON Hirschhorn: Mae torgoch yn un beit. Iawn? Felly, gadewch i ni yn galw byffer hwn yn generig enw a ddefnyddir ar gyfer y pethau hyn i storio rhywbeth dros dro. Felly, yr wyf yn creu byffer. Iawn? Ond mae'n cymryd yn ddi-rym *. Felly, efallai eich bod yn iawn, ei bod yn Dylai fod yn byffer o faint 0. Felly, mae'n storio un - iawn. Gan fod yr hawl yma - torgoch byffer yn gymeriad, ond mae hyn yn cymryd lle gwag * - pwyntydd. Er mwyn i mi wneud hyn ac yn awr byffer yn pwyntydd. Beth arall allwn i ei wneud? MYFYRIWR 31: Rhowch seren nesaf i torgoch. JASON Hirschhorn: gallwn wedi creu ei torgoch *. OK. Beth sy'n beth arall y gallwn ei wneud? Neu gadewch i ni fynd â hwn. Golosg * byffer, felly beth Nid wyf yn rhoi i mewn yma? MYFYRIWR 31: Ffiniol. JASON Hirschhorn: Ffiniol. Byffer yn pwyntydd i torgoch. Ac yn y lleoliad hwnnw, rydym yn rhoi un beit o rhywbeth yr ydym wedi darllen. Yeah. Avi. AVI: Dim ond cwestiwn cyflym. Ydych chi eisiau i malloc byffer? JASON Hirschhorn: Pwy all ateb y cwestiwn? MYFYRIWR 32: Wel, Nid yw'n wir pwynt i unrhyw beth ar hyn o bryd, felly - JASON Hirschhorn: Ond peidiwch rydym am i malloc iddo? MYFYRIWR 32: Pe baech yn gwneud hynny bod ffordd, yr wyf yn dyfalu, ie, oherwydd byddai angen i chi ryw le er mwyn iddo gyfeirio at. JASON Hirschhorn: A ydym yn rhaid i malloc ei? MYFYRIWR 33: Os ydych yn mynd i defnyddio y tu allan i'r ddolen. JASON Hirschhorn: A ydym yn mynd i defnyddio y tu allan o'r ddolen? MYFYRIWR 34: Oes. MYFYRIWR 35: Aros. A ydym eisiau ei ddatgan yn y ddolen i tu hwnt? JASON Hirschhorn: Felly, yr wyf yn dyfalu rydym wedi rhywfaint o dolen TRA ffug yma ein bod ni'n ceisio at chyfrif i maes, hynny nid ydym wedi gotten i eto. Nid oes angen i ni malloc iddo. Rydym yn gweithredu yn y prif, mae'n dim ond yn mynd i gael eu defnyddio y tu mewn dolen hwn. Nid oes angen i fodoli y tu allan i'r. Felly, gall fod yn newidyn lleol. Mae gennych pwyntydd i newidyn lleol. MYFYRIWR 36: Ond nid yw'n bwyntio at unrhyw beth. JASON Hirschhorn: Na, nid yw'n ymgychwyn i unrhyw beth. Ond nid ydym yn mynd i'w ddefnyddio hefyd. Rydym yn mynd i roi rhywbeth yn y tro cyntaf i ni ei ddefnyddio. Felly, mae hynny'n ymddangos OK. Felly nid oes angen malloc ni yma. Ac yr wyf yn meddwl ei fod yn iawn fel y mae. OK. Mae gennym y llinell fread. Gadewch i ni wneud y llinell nesaf. Os ydym am ysgrifennu at ffeil, beth yw swyddogaeth da i'w defnyddio i wneud hynny? MYFYRIWR 37: Fwrite? MYFYRIWR 38: Fprintf? JASON Hirschhorn: Fprintf yn un ohonynt. Beth sydd un arall? MYFYRIWR 39: Fwrite. JASON Hirschhorn: Fwrite. Ac ar gyfer ein dibenion, fwrite, a welodd ni yma, yn yn ôl pob tebyg y dewis yn well. Mae'n cymryd pedwar dadleuon yn ogystal. Nishant, a allwch roi 'm' r dadleuon? NISHANT: pharhaus Yr un cyntaf i fod yr un glustog. JASON Hirschhorn: OK. NISHANT: Yr un ail yn jyst yn mynd i fod yn 1. Trydydd un yn mynd i fod yn 1. A'r pedwerydd un yn mynd i fod DST. JASON Hirschhorn: A oes unrhyw un yn cael unrhyw gwestiynau am y llinell? Sy'n edrych yn dda. OK. Felly nawr mae'n edrych fel yr un peth rydym yn ar goll - mewn gwirionedd, gadewch i ni ysgrifennu y llinell hon ddiwethaf. Caewch y ffeiliau. Pwy all orffen ni i fyny ysgrifennu y ddwy linell olaf? Ie. Mae'n ddrwg gennym, beth yw eich enw? LUCY: Lucy. JASON Hirschhorn: Lucy. LUCY: src mmap ac yna cyrchfan mmap. JASON Hirschhorn: mmap, paren agored, src, paren agos, hanner colon. Ac mmap - yeah? LUCY: cromfachau Agored, DST ac yna colon. JASON Hirschhorn: Great. A beth ddylwn i gynnwys ar y diwedd? LUCY: Dychwelyd 0. JASON Hirschhorn: Dychwelyd 0. A oes rhaid i mi? Dim ond cwestiwn. Oes rhaid i ni gynnwys dychwelyd 0? MYFYRWYR LLUOSOG: Na JASON Hirschhorn: Na Prif yn awtomatig os ydych yn cael hyd y diwedd. Ond rwy'n credu ei bod yn braf gynnwys yn benodol. Yn enwedig pan fyddwn yn dychwelyd eraill pethau drwy gydol y rhaglen. OK. Dyma beth rydym yn ei golli - TRA beth? Pwy all feddwl am rai - Mae rhywfaint o synnwyr o'r hyn bethau allai fynd i mewn 'na? Hyd yn oed os mai dim ond mewn rhai pseudocode fel iaith? Beth ydym ni mewn gwirionedd - beth ydym ni eisiau i fynd tan? Yeah, Lucy. LUCY: Diwedd ffeil. JASON Hirschhorn: Diwedd ffeil. Felly, beth ydych chi'n ei olygu wrth ddiwedd y ffeil? LUCY: Ar ôl i chi gyrraedd y diwedd y ffeil, stopio. JASON Hirschhorn: OK. Felly, ar ôl i ni gyrraedd diwedd y ffeil. Sut ydym ni'n gwybod pan fyddwn wedi cyrraedd diwedd y ffeil? MYFYRIWR 40: Yr wyf yn meddwl byffer Bydd yn cael ei gosod i NULL. MYFYRWYR 41: Byffer ei ddatgan y tu mewn i'r ddolen. JASON Hirschhorn: Felly yr ydych yn meddwl Bydd clustogi yn cael ei osod i NULL. Pam y byddai byffer gael eu gosod i NULL? MYFYRIWR 40: Oherwydd pan fyddwch yn fread, rydych yn ceisio rhoi ddim i'r byffer. JASON Hirschhorn: OK. Felly, rydych chi'n meddwl fread - pan fyddwn wedi cyrraedd diwedd y ffeil, beth sy'n fread mynd i'w wneud? Yr wyf yn credu mai dyna'r cwestiwn mae'n rhaid i chyfrif i maes. Beth mae fread ei wneud? A yw'n rhoi NULL mewn byffer, neu mae'n ei wneud rhywbeth arall? Sut gallwn ni chyfrif i maes yr hyn y mae'n? MYFYRIWR 42: Dyn. JASON Hirschhorn: Manaw. Felly, gadewch i ni edrych dros yma. Dychwelyd gwerth. Ar lwyddiant, fread a fwrite dychwelyd y nifer o eitemau darllen neu ysgrifenedig. Mae'r rhif hwn yn hafal i nifer y bytes trosglwyddo dim ond pan fydd maint yw 1. Os bydd gwall yn digwydd, neu ar ddiwedd y ffeil yn cael ei gyrraedd, mae'r gwerth dychwelyd yn eitem cyfrif byr neu 0. Felly, ar gyfer ein dibenion, os rhannau fread diwedd y ffeil, ac yn darllen o diwedd y ffeil, does dim byd ar ôl i ddarllen, beth rwyt ti'n mynd i'w dychwelyd? MYFYRIWR 43: Zero? JASON Hirschhorn: Beth? MYFYRIWR 43: Zero? JASON Hirschhorn: Zero. Mae'n mynd i ddychwelyd sero. Felly, rydym yn gwybod bod fread, pan rydym wedi cyrraedd diwedd y ffeil, yn mynd i ddychwelyd sero. Sut y gallwn ddefnyddio hynny i ein mantais? AVI: Gallwch chi ddatgan newidyn y tu allan i y ddolen o'r enw siec. Os na fydd siec yn gyfartal - ar hyn o bryd - un. JASON Hirschhorn: OK. AVI: Ac yna gallwch roi OS datganiad i'r dde ar ôl fread yn dweud os fread hafal i sero - dim. JASON Hirschhorn: Pwy gallu helpu Avi allan? AVI: Beth yw'r gwerth dychwelyd erbyn fread? JASON Hirschhorn: Rydym yn unig Aeth dros hynny. AVI: Sut ydych chi'n gynrychioli? JASON Hirschhorn: Felly yn dychwelyd - gadewch i ni edrych i fyny yma - mae'n dychwelyd size_t, sydd yn ei hanfod yn gyfanrif. Felly, mae'n dychwelyd yn gyfanrif. Ac yn ein hachos ni, bydd yn dychwelyd 1 neu 0 - 1 petai'n darllen un peth - un beit, a 0 os ydym wedi cyrraedd y diwedd. Felly, os fread - yeah? MYFYRIWR 45: Methu ch jyst roi'r lawn fread (byffer, 1, 1, src) i mewn i'r tra dolen? JASON Hirschhorn: Felly yr ydych yn bwriadu gwneud hyn yn y fan honno? [LLEISIAU ymyrryd yn] JASON Hirschhorn: Dal ar. Felly, rydym yn ridding o hynny. Felly, rydych yn cynnig rhoi fread i yno? Beth ddylem ni hefyd yn symud os ydych am wneud hynny? MYFYRIWR 45: Y byffer y tu allan. JASON Hirschhorn: Rydym yn dylai hefyd yn symud hyn allan yma. MYFYRIWR 45: Ond a yw hynny'n gyson symud yn ei flaen? [LLEISIAU ymyrryd yn] JASON Hirschhorn: OK. Felly, mae hyn yn beth a gynigir Okshar. Rydym yn creu ein byffer. Rydym fread TRA, yna rydym yn fwrite. Syniadau ar hyn? MYFYRIWR 46: Mae fy unig gwestiwn yw, byddai mewn gwirionedd yn gweithredu'r fread gorchymyn? JASON Hirschhorn: Cwestiwn Fawr. Pan fyddwch yn rhoi swyddogaeth alwad tu mewn i gyflwr, yn gwneud hynny swyddogaeth galwad gyflawni? Rydym wedi gweld enghreifftiau o hyn o'r blaen. Iawn? MYFYRIWR 46: OK. Yeah. Felly, mae'n gweithredu. JASON Hirschhorn: Rydym wedi gweld pethau fel 'na o'r blaen, lle mae gennym alwad swyddogaeth tu mewn amod. A yw'r swyddogaeth honno alwad gweithredu? Ie. Felly mae'r ateb yn gadarnhaol. Bydd hyn yn galw swyddogaeth gweithredu. Ond unwaith eto, a yw'n hyn yr ydym am? Beth yn un ffordd y gallem ffigur allan os yw'n hyn yr ydym am? MYFYRWYR LLUOSOG: Rhedeg ei? JASON Hirschhorn: Gallem redeg. Ond cyn i ni wneud hynny, gallem hefyd ymresymu drwy hyn. Pe bai - ddweud ein bod wedi un beit yn ein ffeilio, byddwn yn cyrraedd yma, byddwn yn mynd i'r cod hwn. Bydd hwn yn rhedeg. fread bydd yn dychwelyd un beit a storio yn y byffer. A bydd hyn yn gwerthuso i 1, iawn, ar ôl iddo dychwelyd 1. Felly TRA 1. A yw hynny'n golygu y cod y tu mewn Bydd y ddolen TRA gyflawni? MYFYRIWR 47: Yeah. Mae'n wir. JASON Hirschhorn: Ydw. 1 yn wir. Dyw hi ddim yn 0. Felly, bydd y cod yma yn gweithredu y tu mewn. Felly, byddwn yn ysgrifennu hynny. Byddwn yn symud yn ôl at hyn lein unwaith eto. Nawr rydym wedi - rydym yn ar ddiwedd ein ffeil. Rydym yn darllen o ddiwedd ein ffeil, oherwydd ein bod dim ond un beit ynddo. Fread yn dychwelyd 0, storfeydd rhywbeth yn clustogi. Wyf yn onest ddim yn gwybod beth mae'n storio mewn byffer. Gallai Mae'n debyg y byddwn yn edrych i fyny i weld beth mae'n ei wneud. Bod yn onest nid wyf yn gwybod. Nid ydym yn gwybod, sy'n gofalu beth mae'n storio mewn byffer? Ond mae'n dychwelyd 0. A bydd TRA 0 gweithredu? Ni fydd TRA 0 gweithredu. Felly, yna byddwn yn symud i lawr yma. Felly, gadewch i ni gael godi dwylo os yw hyn yn yw'r cod dylem redeg, neu os byddwn Dylai wneud y newidiadau cyntaf. Felly, os ydych yn meddwl - mae'n rhaid i chi bleidleisio. Os ydych yn meddwl y dylem redeg y cod hwn fel y mae, os gwelwch yn dda codwch eich llaw. OK. Mae un - a oes gennych gwestiwn, bryder? Yeah. MYFYRIWR 48: Ar ôl i ni symud byffer y tu allan i'r ddolen, yr ydym yn rhaid i malloc ei? JASON Hirschhorn: Cwestiwn Fawr. Ar ôl i ni symud byffer y tu allan i'r ddolen, oes rhaid i ni malloc ei? Mae hwn yn gwestiwn gwmpas. Os byddwn yn ymgychwyn byffer y tu allan i y ddolen hon, bydd yn bodoli tu mewn i'r ddolen? MYFYRWYR LLUOSOG: Oes. JASON Hirschhorn: Ydw. Mae ei gwmpas yn cynnwys tu mewn i'r ddolen, ac, mewn gwirionedd, unrhyw beth o dan y tu mewn y cod hwn, gan gynnwys y pethau y tu mewn yma. Felly nid oes angen i ni malloc iddo. Mae'n newidyn lleol, ac mae ei gwmpas yn dal i gynnwys y ddolen. MYFYRIWR 49: A oes angen i ryddhau ei? JASON Hirschhorn: A ydym yn Mae angen byffer rhad ac am ddim? MYFYRIWR 49: Yeah, os nad ydym yn ei wneud malloc. JASON Hirschhorn: A ydym yn Mae angen byffer rhad ac am ddim? Nid ydym yn ei wneud. Unwaith eto, mae'n newidyn lleol, felly nid oes angen i ni ryddhau ei. OK. Gadewch i ni weld beth sy'n digwydd. Felly mae'n uninitialized. Dyna oedd yr hyn a rhywbeth y Arfaethedig Marcus gynharach. Felly, rydym yn cael y gwall, clustog amrywiol yn cael ei uninitialized pan ddefnyddir yma. Sut y gallwn atgyweiria hon? MYFYRIWR 50: Malloc hyn? MYFYRIWR 51: Equals NULL? MYFYRIWR 52: Dweud byffer hafal NULL. JASON Hirschhorn: OK. Yn edrych yn dda. Mae gennym yn awr. Gadewch i ni greu rhywbeth i geisio copïo. Felly, rydym wedi ein ffeil testun. Sut y gallwn gynnal y rhaglen hon? Yeah. MYFYRWYR 53: Gallwch wneud dot slaes cp, test.txt. Ac yna gallwch chi enwi ffeil arall a bydd yn storio mewn. JASON Hirschhorn: OK. Byddwn yn ei alw'n out.txt. Cool? SEG fai. Sylwadau ar y nam GEY? Mae hyn yn wych. Sut y gallwn ddarganfod ble y nam GEY yn? Beth? MYFYRIWR 54: gdb. JASON Hirschhorn: gdb. Rydym yn cynnal gdb drwy ysgrifennu gdb dot slaes, enw ein rhaglen. Dim dadleuon llinell gorchymyn yno. Rydym yn mynd i osod torbwynt yn y prif. Os wyf am ddechrau gdb, beth ddylwn i ei wneud? MYFYRIWR 55: R. JASON Hirschhorn: R. Ac yna beth? MYFYRIWR 55: Mae'r dadleuon? JASON Hirschhorn: Yna y dadleuon gorchymyn-lein. Gadewch i ni gerdded drwy'r. N yn unig yw cymryd linell mi gan linell. Rydw i'n mynd i fynd tan Rwy'n cael fy fai seg. Mae fy fai seg. Mae'n edrych fel fread a achosir fi sydd ar fai seg. Yr wyf yn gwybod ei achosi fread fy fai SEG, oherwydd dyna oedd y lein rydym yn unig dienyddio. A'r unig beth a oedd yn digwydd yn y llinell honno - dau beth yn digwydd. Roedd Fread yn mynd, ac yna rydym yn gwneud rhywfaint o gwirio TRA. Rwy'n barod i bet bod y TRA Nid yw gwirio yn achosi fy fai seg. Mae'r rhan fwyaf tebygol, fread oedd achosi fy fai seg. Yr wyf hefyd yn gweld rhywbeth yma, memcopy. Copi cof. Mae'n swnio fel symud cof o un lleoliad i'r llall. Mae'n swnio fel rhywbeth fyddai'n digwydd yn fread, efallai fod rhywfaint o cof symud oddi yma i yma. Gadewch i ni fynd drwy hyn eto. Sut ydw i'n dechrau drosodd a'i redeg eto? Yeah. MYFYRIWR 56: A oes angen i chi roi yn ampersand cyn byffer? JASON Hirschhorn: Felly ampersand cyn Byddai byffer roi cyfeiriad i mi byffer, sy'n torgoch *. Gadewch i ni redeg drwy'r un mwy o amser. Sut ydw i'n rhedeg drwyddo un yn fwy o amser? MYFYRIWR 57: Allwch chi yn unig deipio rhedeg eto? JASON Hirschhorn: Dim ond teipio rhedeg eto. Felly, nid ydym yn mynd i cyflawni y llinell hon. Felly byffer yn pwyntydd NULL. Cywiro? Mae'n yn pwyntio i - gadewch i ni weld. Os ydym wedi ein - dynnu llun cyflym o hyn. Gall pawb weld os Rwy'n ysgrifennu dros yma? Felly, yn y pentwr, mae gennym leol amrywiol ac fe'i gelwir yn clustogi, a mae'n pwyntydd i torgoch. Pa cyfeiriad yw torgoch hwn ar? MYFYRIWR 58: 0x0. JASON Hirschhorn: Iawn. Dyna beth mae hyn yn. Yn y fan hon, y tu mewn byffer, yn cael ei storio 0x0. Dyna beth sydd gennym - y setup sydd gennym ar hyn o bryd. Felly y llinell hon, fread, yn rhoi rhywbeth o ffynhonnell ble? I mewn i'r bocs neu y bocs? Pa bocs? Chwith blwch neu flwch iawn? Mae hyn yn y blwch cywir. Mae'n dilyn y pwyntydd, ac yn ei roi i mewn yma. Pan fyddwn yn ceisio chof cyffwrdd yn lleoliad 0, beth ydym yn ei gael? Mae wall. Dyna'r camgymeriad sydd gennym ar hyn o bryd. Yeah. MYFYRIWR 59: Nid oes gennych i roi byffer seren? Neu ddim? Ar gyfer fread? JASON Hirschhorn: Felly fread cymryd pwyntydd. Felly, mae'n mynd yn clustogi. Ac yna bydd yn dad-gyfeirio yn rhywle y tu mewn fread. Ond unwaith eto, gwelsom, mae'n cymryd pwyntydd. Nid oes angen i ni ei anfon byffer seren. Byddai hynny'n cael ei pasio mae'n beth bynnag sydd yma. Ac y byddai pob tebyg yn rhoi gwall ni oherwydd ein bod yn dad-cyfeirio iddo. Iawn? Pan fyddwn yn dad-gyfeirio pwyntydd hwn, pan rydym yn ceisio cael mynediad yn y lleoliad hwn, rydym yn cael gwall - ein wall. Felly - wps. Rydym yn mynd i roi'r gorau iddi allan o gdb. Mae ein llinell - ein problem - yn iawn yma ar y llinell hon. Ac mae'n broblem oherwydd y llinell hon. Sut y gallwn ni greu blwch sy'n yn hygyrch mewn fread. Iawn? Mae angen i ni greu blwch sy'n un beit mawr, yr un maint â torgoch. Ond mae angen y blwch i fod yn hygyrch pan fydd y swyddogaeth hon yn gweithredu. Felly, lle - yeah. Unrhyw syniadau? MYFYRIWR 60: Dim ond ei osod fel unrhyw gymeriad ar hap. Dim ond gwneud hafal byffer torgoch y cymeriad. Ac yna, pan fyddwch wedi byffer yno - JASON Hirschhorn: Aros. Char byffer? Felly dim seren? MYFYRIWR 60: Yeah. Tynnwch y seren. Equals cymeriad hap. JASON Hirschhorn: OK. Felly rhowch un i mi. MYFYRIWR 60: Fel a neu rywbeth. Ac yna pan fyddwch yn cael byffer yno, byddwch yn defnyddio - MYFYRIWR 61: Star? O na, mae'r ampersand. MYFYRIWR 60: Defnyddiwch y ampersand. JASON Hirschhorn: OK. A beth am yn fwrite? MYFYRIWR 60: Defnyddiwch y ampersand eto. JASON Hirschhorn: Pob hawl. Fel bod eich syniad yw, rydym yn creu golosg a roi rhywbeth ynddo, ac yna ysgrifennu at y torgoch. MYFYRIWR 60: Yeah. JASON Hirschhorn: Beth y mae pobl yn ei feddwl? MYFYRWYR 62: Mae'n convoluted. JASON Hirschhorn: OK. Gadewch i ni tynnu allan. Felly, y tro hwn, dw i'n mynd i dynnu hyn yn coch ar y corn yma, ac yna rydym yn Bydd yn rhaid i - ooh! Mae'n ddrwg gennym. Felly, y tro hwn mae gennym rywbeth o'r enw byffer, ac mae'n ar y pentwr. Cywiro? Ac rydym yn arbed ynddo, yn y lle cyntaf. Yna, rydym wedi ein galw i fread. Pa fread yn ei wneud yw ei bod yn cymryd beit o ein ffeil ac yn ei roi yn rhywle. Mae'n ei roi mewn beth bynnag fo'r beth sy'n pwyntio i. Wel, cyn i ni gael y cyfeiriad hwn - 0x0. Nawr beth gyfeiriad sydd gennym? MYFYRIWR 63: Beth bynnag cyfeiriad byffer yn. JASON Hirschhorn: Beth bynnag cyfeiriad byffer yn. Yn ôl pob tebyg ei fod yn mynd i fod yn rhywbeth fel 'na. Na thebyg yn mynd i ddechrau gyda b ac yn f, ac yna wedi chwech arall digidau hecsadegol. Nid yw o bwys. Mae rhai gyfeiriad. Ac rydym yn pasio cyfeiriad hwnnw mewn Ac rydym yn mynd i roi ein un beth beit yn y cyfeiriad hwnnw. Felly, rydym yn mynd i roi ein un beth beit tu yma. Ac yna rydym yn mynd i ysgrifennu o beth sydd erioed y tu mewn yma. A oes unrhyw un gennych unrhyw gwestiynau am hynny? Pwy sy'n meddwl y bydd y cod hwn yn gweithio? Codwch eich llaw os ydych yn meddwl Bydd y cod hwn yn gweithio. Rhaid i chi gymryd safiad. Ac sy'n meddwl na fydd y cod hwn yn gweithio? Codwch eich llaw. Dylai pawb arall fod yn codi eu llaw. OK. Michael, ble ydych chi'n sefyll? MICHAEL: Ni allaf benderfynu. Math o yn y canol. JASON Hirschhorn: Rydych yn yn y canol. Dewiswch un. MICHAEL: 'n annhymerus' cael ffydd a dweud y bydd yn gweithio. JASON Hirschhorn: OK. Bydd gennych ffydd ac yn dweud ei fod yn gweithio? Beth ddigwyddodd? [LLEISIAU ymyrryd yn] JASON Hirschhorn: Dim bai SEG. Sut y gallwn wirio i weld os dau beth yn gyfartal? Ddwy ffeil yn gyfartal. MYFYRIWR 64: Diff. JASON Hirschhorn: Diff. Gwiriadau gwahan ar gyfer y gwahaniaethau rhwng ddwy ffeil, ac os bydd yn dychwelyd dim byd, maen nhw'n union yr un fath. Ac os ydym yn agor i fyny, rydym yn cael ein ffeil. Felly yr oedd yr ateb cywir. Gadewch i ni edrych yn ôl ar yn un mwy o amser. Rydym mewn gwirionedd nid oedd hyd yn oed yn Mae angen i ymgychwyn iddo. Mae'n debyg y byddai edrych ychydig glanach os nad oeddech yn rhoi rhywbeth ar hap mewn 'na. Y pwynt oedd, roedd angen i chi i greu rhywfaint o le i storio rhywbeth o fread ac yn cymryd rhywbeth allan o fwrite. A bod peth oedd i fod naill ai'n lleol amrywiol ar y pentwr - rydych Gallai wedi malloc'd ychydig o le. Felly, rydym mewn gwirionedd gallai fod malloc ysgrifenedig yma, ac a fyddai wedi gweithio. Ac yna byddem wedi bod yn storio ein pethau rhywle ar y domen. Ond mae hyn yn mewn gwirionedd, yn ôl pob tebyg, yr ateb mwyaf cain. Dim ond yn creu ychydig o le ar y pentwr am y pethau hyn i fynd. Y byddai gennyf ddau sylwadau eraill. Pe baech yn cymryd ei dro yn hyn, a yna cael sgôr ar hyn, fy sylwadau fyddai fel a ganlyn. Mae'r rhain yn 1 sydd yma, i mi, yn edrych fel rhifau hud. Mae hyn yn 1, o ran fread, yn gwneud synnwyr. Dyna nifer o bethau i ddarllen neu ysgrifennu. Ond mae hyn yn un cywir yma dylai yn ôl pob tebyg fod yn rhywbeth arall. Felly, beth yw un ateb? MYFYRIWR 65: Maint y beit. JASON Hirschhorn: Fel hynny? MYFYRIWR 65: Maint y torgoch. JASON Hirschhorn: Maint y torgoch. Yeah, nid yw beit yn fath. Felly, faint o waith torgoch. Gallem gael, ar ben ein cod, # diffiniedig sy'n. O'r enw BYTE rhywbeth ac mae'n wir yn torgoch. A dweud y gwir, mae dull hyd yn oed yn well allai fod wedi bod yn hyn - uint. Unrhyw un yn gwybod beth yw hwnnw? Mae'n ddrwg gennym. Yr wyf wedi ei ôl. Arhoswch, dim. Pa ffordd mae'n mynd? Unrhyw un yn gwybod beth yw hwnnw? Yeah. MYFYRWYR 67: i fod i helpu i safoni ar draws systemau pethau sy'n gael - fel cyfanrifau heb eu llofnodi sydd yn meddu ar 8 bytes? JASON Hirschhorn: Mae hynny'n yn union gywir. Ar beiriannau gwahanol, yr un maint â golosg - Nid yw fel arfer torgoch. Fel arfer, chars yn un beit. Ond mae'r maint o fathau data eraill yn wahanol faint ar 32-bit peiriant yn erbyn 64-bit peiriant. Mae uint8_t yw 8 darnau bob amser - bob amser yn un beit. Ac mae angen i mi gynnwys y ffeil flaen int safonol. Felly nawr, mae hyn yn fwy na thebyg y byddai wedi bod yn y ffordd orau i ysgrifennu cod hwn. Felly, yr wyf yn cael gwared ar y rhifau hud. Ac yr wyf hefyd yn fwy rhesymegol teipio ar gyfer byffer. Nid yn unig yw golosg, mae'n beit, sef yr hyn yr ydym yn disgwyl iddo fod. Ac i fyny yma, rydym wedi gwirionedd wedi bod ychydig yn fwy cadarn. Nid ydym yn galw ei fod yn torgoch, sydd - efallai, pwy a ŵyr - gallai fod yn wahanol maint ar beiriannau gwahanol. Rydym yn mewn gwirionedd yn dweud hyn yn union un beit, bob amser, yn waeth beth. Ac os ydym yn edrych yma, rydym yn gwneud cp. Uh-oh. Beth ddigwyddodd? MYFYRWYR 68: Gallai fod yn cael ei newid. JASON Hirschhorn: Beth? MYFYRIWR 69: A yw'n? MYFYRIWR 70: Nid ydych yn gwneud ei ddiffinio fel math. MYFYRIWR 71: Ond dylai ei ddiffinio yn safonol. MYFYRWYR 72: Beth sy'n mynd ymlaen? MYFYRIWR 73: A ddylai fod yn diffinio pob gapiau? JASON Hirschhorn: Felly nid yw'n # ddiffinio. Mewn gwirionedd, yn yr achos hwn, rwy'n mynd i ddefnyddio typedef. Oherwydd ein bod yn ei ddefnyddio fel fath mewn un lleoliad. Felly, yn yr achos hwn, yr ydym mewn gwirionedd yn awyddus i typedef fel rydym yn argraffu math newydd byte, ac y mae, yn y bôn, mae hyn yn. Mae'n ychydig yn wahanol na # ddiffinio. Ac yn awr, ein cod gweithfa 'n anhyfreg. Felly, unwaith eto, # diffinio yn rhywbeth, yn cymryd lle ym mhobman gyda'r peth arall. Mai dim ond macro - llaw-fer i gael gwared o rifau hud. Ond yn yr achos hwn, oherwydd ein bod yn ei ddefnyddio fel math - yma - er mwyn i hynny weithio, mae angen i typedef beth bynnag beit yw. Ac rydym yn diffinio yn iawn yma. Nid yw'n strwythur, mae'n mewn gwirionedd yn dim ond yn gyfanrif heb ei arwyddo. Mae'n un beit hir. Bydd y cod hwn ar gael ar-lein, a Dylai pob un ohonoch ei gael ar hyn o bryd. Felly, rydym wedi - perffaith - 13 munud i'r chwith i fynd dros broblem set 5. Rwyf am i gerdded trwy copy.c gyda'i gilydd, ac yna byddwn yn siarad yn fyr am y rhannau eraill o'r broblem a osodwyd. Felly, gadewch i mi dynnu i fyny copy.c. A'r peth oer yw, mewn gwirionedd rydym wedi ysgrifennu llawer o cod hwn yn barod. Mae'r cod ysgrifennom llythrennol yn unig ddaeth allan o'r yma pan oeddwn yn ysgrifennu'r ar fy mhen fy hun. Ond mae hyn yn copy.c, yn ffurfio sylfaen ar gyfer y ddwy ran gyntaf o y broblem a osodwyd ar gyfer whodunit.c, a oedd yn angen i chi ysgrifennu, a resize.c. Recover.c, sef y trydydd a'r olaf rhan o'r broblem a osodwyd, yn seiliedig oddi ar y ffeil. Rydych yn mynd i angen i ysgrifennu y ffeil, rydym yn rhoi templed ar gyfer eich bod yn ffeilio, ond nid oes ganddi ddim yn ymwneud â copy.c. Ond oherwydd bod copy.c yw'r sylfaen ar gyfer y ddwy ran gyntaf, rydym yn mynd i gerdded trwyddo yn awr, felly mae gennych ymdeimlad da o'r hyn y mae'n ei wneud. Ac mae'r sylwadau yn rhoi peth ohono i ffwrdd. Rydym eisoes wedi ysgrifennu rhai o hyn. Yn gyntaf, rydym yn gwneud yn siŵr rydym yn cael tri dadleuon. Nesaf, rydym yn cofio enw'r ffeil. Felly, rydym yn hepgor y cam hwn pan rydym yn codio ein peth - pan fydd ein cp. Ond yma, maent yn gwneud ei fod yn ychydig yn lanach. Maent yn gwirio i wneud yn siŵr y ddau ffeiliau yn dda, yn ychwanegol at eu hagor. Rydym yn ysgrifennu i gyd y cod hwn yn unig yn awr, felly rwy'n ddim yn mynd i drigo ar y cod hwn. Nesaf yw rhai pethau sy'n benodol i y mathau o ffeiliau yr ydym yn ei ddefnyddio, a oedd yn yn ffeiliau didfap. Ffeiliau didfap cael rhywfaint o metadata gysylltiedig â hwy. Felly, y cwpl cyntaf bytes ddweud wrthych am y ffeil. Nid ydynt yn lliwiau y picsel yn y ddelwedd. Maent yn dweud wrthych am y ffeil. Ac os ydych yn darllen drwy'r broblem a osodwyd, bydd gennych lawer mwy o wybodaeth ar ba fathau o strwythurau metadata yn cael eu cynnwys gyda bitmaps. Ond dyna pam yr ydym yn cael y cyntaf set o - cod hwn yma. Rydym yn darllen y metadata - dau ddarn o metadata - y ffeil header a'r header wybodaeth. Ac rydym yn gwirio rhai rhannau ohono i wneud yn siŵr ei fod yn ffeil didfap gwir cyn parhau. Ac eto, mae'r rhain yn y manylion yr ydym yn Nid oes angen i chi fynd i mewn i hyn. Os ydych yn darllen drwy'r broblem a osodwyd, y byddwch yn deall hyn. Stori hir yn fyr, mae'r rhain yn dim ond dweud, hon yn ffeil didfap, a yn cadarnhau hynny. Nesaf, rydym yn ysgrifennu rhai at y ffeil allan. Rydym yn gweld hynny yma. Rydym yn ysgrifennu at y pwyntydd y tu allan. Nesaf, rydym yn penderfynu padin. Felly eto, fel y mae arbenigrwydd gyda ffeil didfap, mae rhai llinellau yn cynnwys padin ar y diwedd. Ac os ydych yn darllen drwy'r broblem a osodwyd, byddwch yn dysgu mwy am padin. Mae hyn yn y fformiwla i ddod o hyd i padin. Pwysig i'w cofio - pan fyddwch yn newid maint bitmap ffeil, mae'r newidiadau padin. Pan fyddwch yn newid yr un maint â ffeil, mae'r newidiadau padin. Nid yw byth yn mynd i fod yn fwy na 3 - bydd yn cael ei 0 trwy 3, gynhwysol. Ond pan fyddwch yn newid maint y rhywbeth, mae'r newidiadau padin. Os mai dim ond un picsel yn y rhes, yr wyf yn angen tair bytes o padin, oherwydd pob rhes wedi i fod lluosrifau o bedwar bytes hir mewn ffeil didfap. Ond os wyf ddyblu, i fynd o un picsel i ddau picsel, pob un ohonynt, gadewch i ni ddweud, yw beit, yna mae angen i mi dau bytes o padin i wneud sy'n cyfateb i bedair. Felly, pan fyddaf yn newid maint rhywbeth, Angen i mi newid y swm o padin gen i. A yw hynny'n gwneud synnwyr i bawb? Nesaf, rydym yn ailadrodd dros bob rhes, neu drwy'r holl rhesi. Ac yna rydym yn ailadrodd trwy pob colofn ym mhob rhes. Rydym yn trin didfap hwn fel grid, fel yr ydym wedi cael eu trin y bwrdd mewn 15. Fel yr ydym yn trin y brics pan rydym yn eu hargraffu ar y sgrin. Mae grid o rhesi a cholofnau. Yna - rydym yn gweld hyn. Rydym mewn gwirionedd dim ond codio hyn. Rydym yn creu rhywfaint o storfa dros dro. Rydym yn darllen i mewn 'na, ac yna byddwn yn ysgrifennu allan. Mae hyn yn union yr hyn yr ydym newydd ei wneud. Nesaf, oherwydd dywedais pob llinell yn dod i ben mewn rhai padin, rydym yn sgip dros y padin - yr hen padin. Ac yna byddwn yn ychwanegu yn ôl. Yn yr achos hwn, rydym yn creu yr un peth union ffeil. Rydym yn unig yn copïo iddo. Felly y llinell hon yn fath o wirion. Gallem yn llythrennol yn unig rhowch y padin mewn Ond os byddwch yn newid maint y ffeil, a ydych yn dal eisiau y llinell hon? Felly, os byddwn yn newid y maint o ffeil, ydym ni yn dal yn awyddus i sgip dros yr hen padin? MYFYRIWR 74: Oes. JASON Hirschhorn: Felly rydym yn ei wneud. Oherwydd hyn, unwaith eto, yn delio gyda'r ffeil ffynhonnell. Nid ydym yn poeni am y padin o'r ffeil ffynhonnell. Rydym yn awyddus i fynd i'r llinell nesaf. Ond nid ydym yn rhoi yn ôl yn syml yr hen faint o padin. Mae angen i roi yn ôl y swm newydd o padin. Felly, pan fyddwn yn newid yr un maint â ffeiliau, rydym yn dal yn awyddus i hepgor dros y padin yn yr hen ffeil - beth rydym yn darllen yn o. Ond yr hyn rydym yn ysgrifennu at, rydym yn mynd angen i roi rhywfaint yn wahanol nifer y padin y rydym wedi pennu. Yeah. MYFYRIWR 75: Mae trefn y ddau rhai Nid yw llinellau oes ots, dde? Oherwydd eich bod yn trin ffeiliau gwahanol. JASON Hirschhorn: Yn union. Mae trefn y ddwy linell Nid yw o bwys. Rydym yn ysgrifennu y llinell hon. Mae hyn yn yma ar gyfer y ffeil rydym yn ysgrifennu at. Mae hynny'n bwysig, felly rydym yn cael y swm cywir o padin. Mae hyn wedi i ddelio â'r ffeil yn. Rydym am i hepgor hawl dros y padin. Nid ydym am i ddarllen - os ydym yn darllen beit ar y tro, rydym yn nid ydynt yn poeni am bytes padin hynny. Rydym yn awyddus i symud at y llinell nesaf. Yn olaf, yn union fel Lucy roddodd i ni, rydym yn cau'r ffeiliau a dychwelyd 0. Felly, mae hyn yn copy.c. Ac rydym mewn gwirionedd ysgrifennodd - rydym treuliodd y rhan fwyaf o adran yn ysgrifennu'r, yn y bôn. Rydych yn gwneud hyn yn. Felly, gobeithio eich bod yn meddu ar synnwyr da o'r hyn sy'n mynd ymlaen yn fan hyn. Y gwahaniaeth mawr, yn onest, yn unig y rhan gyntaf sy'n delio â nodweddion hynod o ffeiliau didfap. Felly, yr wyf wedi fel fy sleid nesaf, beth sydd angen i ni ei wneud? Wel, gadewch i ni feddwl am whodunit. Ac ar gyfer rhywun sy'n darllen drwy y broblem a osodwyd, beth ydyn ni angen iddynt ei wneud mewn whodunit? Yn syml. Aleja. ALEJA: Allwch chi gymryd rhan bob picsel sy'n dynodi'r goch. Ac yna - fath o? JASON Hirschhorn: OK. Felly, yn cymryd y rhan o bob picsel sy'n dynodi'r goch. Sy'n agos, ond nid y cyfan ohono. MYFYRIWR 76: Wel, mae gwahanol ffyrdd o wneud hynny. JASON Hirschhorn: OK. Rhowch un ffordd i mi. MYFYRIWR 76: Tynnwch yr holl goch, a Yna bwysleisio glas a gwyrdd. JASON Hirschhorn: OK. Felly o ystyried y ddwy ffordd hyn - mae'n swnio fel ni roi cynnig picsel, mae'n Mae lefel coch, glas, a gwyrdd. Rydym yn awyddus i newid y lefelau cymharol y coch, glas, a gwyrdd, yn dibynnu ar y picsel. Ble yn y cod hwn y dylem newid y berthynas coch, glas, a gwyrdd lefelau o picsel a roddwyd. Ar ôl i ni wedi ei ddarllen - cyn i ni ysgrifennu? Rhowch y rhif llinell mi. MYFYRWYR LLUOSOG: 83. JASON Hirschhorn: 83. Felly, i'r dde yma. Ar gyfer whodunit, y cod mae angen i chi dylai pob ysgrifennu ewch i'r dde yno. A dyna'r unig cod angen i chi ysgrifennu. Oherwydd, fel y clywsom, pob mae angen i chi wneud yw newid y glas cymharol, lefelau coch, a gwyrdd o bob picsel. Rydych chi wedi ei ddarllen yn, ac yn awr eich bod yn mynd i ysgrifennu allan. Sut ydw i'n cael - os oes gennyf y peth hyn a elwir yn driphlyg, dde yma, ac mae'n o teipiwch RGBTRIPLE - yn dda, os ydym yn edrych yn bmp.h, beth yw RGBTRIPLE? MYFYRWYR 77: Mae'n LandLine strwythur. JASON Hirschhorn: RGBTRIPLE yn strwythur. Rydym yn gweld bod dde i lawr yma. Ac felly os oeddwn i eisiau mynediad, dyweder, lefel coch y strwythur, sut ydw i'n mynediad at y lefel coch strwythur hwn? [DOSBARTH si] MYFYRIWR 78: RGBTRIPLE.rgbtred? JASON Hirschhorn: A yw hynny'n gywir? MYFYRIWR 79: Dylai fod yn triphlyg dot, yn hytrach na RGBTRIPLE dot? JASON Hirschhorn: Triple. Triple yw'r newidyn lleol, felly yma, does dim awgrymiadau yma. Felly, rydym yn unig yn defnyddio'r dot nodiant. Bydd hyn yn rhoi lefel o goch i mi. Os wyf am newid, Fi jyst yn gosod mae'n gyfartal i rywbeth gwahanol. Felly eto, llinell hon o god mynedfeydd newidyn hwn y tu mewn strwythur hwn, a gallwn ei osod i rywbeth newydd. Felly, ar gyfer whodunit, unwaith eto, mae hyn yn, yn ei hanfod, yr hyn y mae angen ei wneud. Syml iawn. Dim ond newid rhai lefelau cymharol, a dyma lle y cod hwnnw yn mynd. Newid maint, ar y llaw arall, yn ychydig yn fwy anodd. Yn wir, newid maint mae'n debyg, yw'r rhan anoddaf o'r broblem hon a osodwyd. Mae gennym dri munud i fynd drosto. Ond unwaith eto, yr ydym eisoes wedi ysgrifennu y rhan fwyaf o'r cod hwn, felly rydym yn Dylai fod yn eithaf cyfarwydd. Beth yw rhai pethau yr ydym am ei wneud yn newid maint, os ydych chi wedi darllen dros y broblem a osodwyd? Os ydych yn eu rhoi i mi, rydym yn Gall siarad amdanynt. Beth yw rhai pethau yr ydym am ei wneud? MYFYRIWR 80: Fertigol - felly rhaid i chi llorweddol newid maint iddo, ond yn fertigol newid maint hynny hefyd? JASON Hirschhorn: Felly os ydym yn rhoi picsel, ac yr ydym yn awyddus i newid maint iddo gan ffactor o ddau, yn awr mae angen i fod yn newid maint yn llorweddol ac yn newid maint fertigol. A yw hynny'n gwneud synnwyr? Yeah. Felly dyna mae'n debyg y her fwyaf. A byddwn yn siarad am hynny mewn eiliad. Yeah. MYFYRIWR 81: Y ffordd yr wyf yn meddwl ohono Roedd chi angen argraffu allan - JASON Hirschhorn: Aros. Peidiwch â dweud wrthym yr hyn a wnaethoch. Rydym yn mynd i siarad yn y rhesymeg. MYFYRIWR 81: OK. Beth oedd y cwestiwn? JASON Hirschhorn: Rydych yn unig codi eich llaw. Nid oedd unrhyw gwestiwn. Gadewch i mi gyflwyno. Gadewch imi drafod hyn yn gryno. Felly, rydym wedi un picsel, rydym am ddyblygu, yn llorweddol ac yn fertigol. Felly, yn ddelfrydol yr hyn yr ydym yn ei wneud yma yw, yr ydym darllen yn ein picsel, byddwn yn ysgrifennu ei ond mae llawer o weithiau. Ond yna rydym wedi ein tric yma, oherwydd yna rydym am hepgor y llinell nesaf ac ysgrifennu hynny ar y ddechrau'r llinell nesaf. Felly, os ydym am ailadrodd y ddau llorweddol ac yn fertigol, beth yw un ffordd dda o wneud hynny - un da er i wneud hynny? Felly nid oes angen i ni geisio gyson o gwmpas ein ffeil i osod y pethau. Efallai na fydd y cwestiwn yn cael yn gwneud synnwyr, ond yr wyf yn meddwl bod ateb iddo yn helpu. MYFYRIWR 82: Creu amrywiaeth? JASON Hirschhorn: Felly, gadewch i ni feddwl pob ffeil fel rhes. Gadewch i ni feddwl yn nhermau rhesi. Os ydym wedi ein rhes gyntaf gan ein bach llun, gallwn wneud y rhes i mewn i rhes fawr o llun mawr, ac yna ailadrodd y rhes, fodd bynnag, sawl gwaith y mae angen ei ailadrodd, yn hytrach na mynd yn y picsel picsel, sy'n mynd yn ddryslyd pan delio gyda ffeiliau. Oherwydd os oedd gennym - Im 'yn rhedeg allan o le. Os yw hyn yn ein ffeiliau, ac yr ydym yn cael y un picsel yno, ac yr ydym am ei roi iawn yno, yr ydym yn dal i gael rhai pethau angen, er mwyn mynd dros yno pan rydym yn ysgrifennu a chreu ein ffeil newydd - ein ffeil sy'n ddwywaith mor fawr. Ond mae'n anodd iawn â swyddogaethau ffeil i neidio o gwmpas i linellau newydd fel 'na, ac yna mynd yn ôl yma a rhoi pethau i mewn 'na. Mae bron yn amhosibl i wneud rhywbeth fel 'na, os yw hynny'n gwneud synnwyr. Felly, os ydym yn meddwl yn nhermau o resi, gallwn cymryd ein rhes, ac yna ei roi - ailadrodd rhesi fertigol. A dyna sut yr ydym yn delio â newid maint fertigol yn hytrach na llorweddol. Roedd y math hwnnw o gyflym, a ychydig yn ddryslyd. Yn anffodus, mae ein amser ar ben. Byddaf yn sefyll y tu allan ar gyfer y rhai ohonoch yma sydd â chwestiynau am y set problem, gan gynnwys adennill. Felly, gadewch i ni ohirio'r ar hyn o bryd. Ac eto, os oes gennych unrhyw gwestiynau, gallwn sgwrsio tu allan.