[CHWARAE CERDDORIAETH] DAVID J. Malan: Mae hwn yn debyg seminar freshman heddiw. IAWN. Felly glawog allan iawn. Mae hyn yn tueddu i ddigwydd ar ddydd Mercher, ond mae'r holl cyfle mwy ar gyfer cwestiynau heddiw. Felly gadewch i ni ddechrau i ffwrdd mewn gwirionedd gyda'r ffilm mewn dim ond hyn o bryd. Ond byddwn yn dechrau yn fawreddog fel bob amser. Mae hyn yn CS50, ac mae hyn yn yw diwedd wythnos 4. Felly, os ydych wedi gwylio erioed Teledu neu ffilm yr hwn mae rhai arbenigwyr cyfrifiadurol a yr heddlu, neu FBI, neu ryw asiantaeth yn ceisio dal rhai gwrthwynebwr, yn dda, eich bod wedi yn ôl pob tebyg wedi clywed yr ymadrodd "yn gwella," lle y technegydd rywsut hud a lledrith zooms mewn ganmil bell i weld y troseddwyr hunaniaeth neu rhif plât trwydded yn hyd yn oed yn y sglein drych neu y glint o lygad rhywun. Felly yn wir, gadewch i ni edrych ar mae ffurf wahanol fath o Hollywood. [VIDEO Playback] -OK, Yn awr gadewch i ni gael edrych yn dda ar eich cyfer. -Hold Ef. Rhedwch y cefn. -Wait Funud. Ewch i'r dde. -Mae, Rhewi hynny. -Sgrîn Llawn. -OK, Rhewi hynny. -Tighten Fyny ar hynny, byddwch? -Vector Mewn ar hynny guy gan yr olwyn gefn. -Zoom Yn iawn yma ar y fan a'r lle hwn. -With Yr offer cywir, y ddelwedd gellid ei chwyddo a hogi. -Beth yw hwnna? -Mae'n 'An rhaglen wella. -Can Ydych yn glir bod unrhyw? Nid -I ddim yn gwybod. Gadewch i ni wella. Adran A6 -Enhance. Gwell -I y manylion, ac-- Rwy'n credu bod yna digon i wella, rhyddhau i fy sgrin. Gwell -I yr adlewyrchiad yn ei llygad. -Let Cael ei redeg hyn trwy gwella fideo. -Edgar, Gallwch wella hyn? -Hang Ar. -I've Bod yn gweithio ar myfyrio hwn. Myfyrio -Someone yn. Reflectiar. -Mae 'Na adlewyrchiad o wyneb y dyn. Myfyrio -Y. -Mae 'Na adlewyrchiad. -Zoom I mewn ar y drych. -Gallwch Weld adlewyrchiad. -Can Chi gwella delwedd o fan hyn? -Can Byddwch yn gwella arno iawn yma? -Can Chi wella hyn? Allwch chi ei wella? -Can Ni'n gwella hyn? -Can Chi wella hyn? -Hold Ar ail, 'n annhymerus' yn gwella. -Zoom I mewn ar y drws. -Times 10. -Zoom. -Move Mewn. -Mwy. -Wait, Rhoi'r gorau. -Stop. -Pause Ef. -Rotate 75 gradd ni o amgylch y fertigol, os gwelwch yn dda. -Stop. Ewch yn ôl at y rhan am y drws, eto. -Got Enhancer ddelwedd a all bitmap? -Hey, Efallai y gallwn ddefnyddio'r Pradeep Dull sen i weld i mewn i'r ffenestri. Meddalwedd -Mae yw cyflwr y celf. -Y Gwerth eigen i ffwrdd. -With Y dde cyfuniad o algorithm-- -He Yn cymryd dileu algorithmau i'r lefel nesaf, a gallaf eu defnyddio i gwella'r llun hwn. -Lock Ar ac ehangu'r z-echelin. -Enhance. -Enhance. -Enhance. -Freeze A gwella. [DIWEDD Playback] DAVID J. Malan: pob hawl, felly pob un o'r rheini yn eiriau gwirionedd. Maent yn unig strung gyda'i gilydd mewn ffordd nad synhwyrol mewn gwirionedd. Ac, yn wir, cyrsiau CS50 ac yn ei hoffi yn tueddu i ddifetha llawer o teledu a ffilmiau ar eich cyfer chi. Oherwydd pan y rhai arbenigwyr cyfrifiadurol yn ysgwyd oddi ar delerau a dweud pethau ffansi fel fectorau eigen, ac mae'r z-echelin, ac unrhyw nifer o eraill mewn gwirionedd termau mwy technegol, maent yn wir yn unig stringing geiriau at ei gilydd yn rhy aml. A yw hynny'n un o'n gobeithion yw, fel sgîl-effaith o gyrsiau cymryd fel hyn, bydd mwy o bobl yn y byd mewn gwirionedd yn gallu pwyso a mesur yn a dim ond erioed mor ychydig yn dylanwadu ar y ansawdd a chywirdeb y ffilmiau hynny? Yn wir, gadewch i ni edrych ar realiti. Felly dyma yw staff llun o Mary, un o'n cymrodyr addysgu. Ac mae'n debyg ei bod yn dan amheuaeth o rywbeth. Ac eto, mae 'na lygedyn o rhyw darn o dystiolaeth yn ei lygad, neu yn adlewyrchiad o'i eyeglasses. Wel, os byddwn yn gwneud yn union fel y ffilmiau cynnig, yn yr hwn yr ydym yn chwyddo ac yn "gwella", dyma faint o wybodaeth yn wyneb Mary pan fyddwch yn cipio delwedd â'r penderfyniad gwreiddiol. Ac, mewn gwirionedd, gallwch weld dotiau hyn. Ac mae'r rhain yn beth yw'r Gelwir picsel, P-I-X-E-L-S, sydd ychydig sgwâr nodweddiadol hynny yw dot sy'n cyfansoddi delwedd. Ac yn ôl yn y dydd, ac mewn gwirionedd hyd yn oed heddiw gyda rhai o heddiw LED setiau teledu neu LCD setiau teledu, os oes gennych un yn eich ystafell neu yn y cartref, os byddwch yn mynd i fyny super yn agos ato, a yn enwedig os yw'n teledu braidd yn hŷn, mae'n debyg y gallwch hyd yn oed weld dotiau hyn a dyna beth cyfansoddi delwedd. Ac nid dim mwy yw gwybodaeth na hyn. Rydym Gallai "gwella", yn yr ystyr o llyfnhau pethau drosodd a math o casglu bod math o, math o beth Dylai fod yn lliw nesaf at llygad Fair fel nad yw'n mewn gwirionedd mor pixelated. Ond os Rwy'n cadw chwyddo i mewn, mae yna yw y dyn drwg yn ei llygad. Fel 'na yn oed yn wybodaeth sydd gennym. Ni allwch greu gwybodaeth allan o ddim byd. Dim ond yn gyfyngedig nifer o ddarnau yno. Felly, yn Problem Set 4, lle cewch gyfle i chwarae gyda'r math hwn o byd. Yn Problem Set 4, byddwch yn edrych ar y byd graffeg, a fforensig, ac mewn gwirionedd yn ysgrifennu cod sy'n adennill delweddau a gollwyd. Byddwch yn ysgrifennu cod sy'n yn trin delweddau sydd eisoes yn bodoli ac yn y pen draw yn deall yr hyn sydd mynd ymlaen o dan y cwfl. Ac, mae'n troi allan, mae'n mewn gwirionedd Nid yw bob un sy'n gymhleth. Er enghraifft, os ydym eisiau yn cynrychioli wyneb hapus lle gyda picsel du hyn, neu ddotiau duon hyn, yn dda, gallem yn syml gynrychioli iddynt fel wirioneddol yn didfap. Ac os ydych wedi clywed erioed fod didfap mynegiant, efallai mae bellach yn dechrau gwneud ychydig mwy o synnwyr heddiw. Rydym eisoes yn gwybod beth ychydig yn. Mae'n 0 neu 1. A map yn unig yw rhywbeth fel darn o bapur sy'n rhoi cyfarwyddiadau i chi ac mae ganddo efallai grid o x a y-cyfesurynnau. Felly dyma didfap. Mae'n map o ddarnau lle mae 1 yn ôl pob golwg mynd i gynrychioli picsel gwyn, ac mae 0 yn mynd i gynrychioli picsel du. Ond gallem yn sicr yn troi o gwmpas. Mae'n Nid yw'n bwysig felly cyhyd ag y byddwn ni'n gyson. A dyma yw sut, yn binary-- y tu mewn o gof cyfrifiadur, neu hyd yn oed y tu mewn o ffeil ar eich galed drive-- allech chi storio y symlaf o ddelweddau wyneb hapus. Ond beth ydym ni, wrth gwrs, ddiffygiol yn y ddelwedd hon? Lliw, dde? Mae'n gam nesaf amlwg neu gwella i wella hyn gyda lliw. Felly, yn anffodus gyda dim ond un bit, 0 neu 1, gallem cynrychioli lliw. Gallai hynny fod yn goch, neu las, neu du, neu wyn, neu wyrdd, neu binc, neu unrhyw barau o liwiau. Ond er mwyn symlrwydd, rydym chi helpu chymryd yn ganiataol du a gwyn. Felly beth mae rhesymegol angen arnom os ydym eisiau i weithredu lliw mewn delwedd? Beth sy'n rhaid i ni ei wneud? Fel pe y ffactor sy'n cyfyngu yma yw bod ag un bit gallwch dim ond yn cynrychioli dwy wladwriaeth, 0 neu 1, wyn neu ddu, beth ydych chi eisiau ei wneud? GYNULLEIDFA: Mwy o ddata. DAVID J. Malan: Mwy darnau, yeah mwy o ddata, mwy o ddarnau. Ac, yn wir, dyna yn union sut lluniau lliw yn cael eu cynrychioli. Yn hytrach na defnyddio ychydig yn sengl, a 0 neu 1 ar gyfer pob picsel, bob dot, 'ch jyst yn defnyddio lluosog. Efallai defnyddiwch 8, efallai, yn fwy cyffredin defnyddio 24, ac yn wir, yn Problem Set 4, byddwch yn chwarae gyda ffeil fformat sy'n defnyddio 24 o ddarnau fel arfer. Ond mae'r rhan fwyaf ohonoch yn ôl pob tebyg gyfarwydd â JPEG. Os ydych chi wedi cymryd erioed llun ar eich ffôn, neu llwytho i fyny neu wedi gweld rhywbeth ar Facebook, neu Flickr, unrhyw rif o wefannau sy'n seiliedig ffoto-, eich bod wedi yn ôl pob tebyg wedi gweld delwedd JPEG o'r blaen. Ac mae'n troi allan, mae hyn yn y ffeil fformat rydyn ni'n mynd i'w defnyddio yn PSet 4, lle rydych chi'n mynd i rhaid i adennill delweddau fy mod i wedi dileu ddamweiniol o cerdyn cof llygru yn y camera, os mynnwch. Ac mae'n ymddangos bod hyd yn oed er JPEG yw sophisticated-- 'n bert mae'n llawer mwy soffistigedig na'r dotiau du a gwyn gwelsom eiliad yn ôl, oherwydd mae algorithmau ffansi mewn gwirionedd bod yn cael eu defnyddio i gywasgu JPEG, felly y gallwch gael neis iawn, llun o ansawdd ond gan ddefnyddio cymharol ychydig ddarnau. A byddwn yn dod yn ôl at cywasgu cyn bo hir. Mae'n ymddangos bod y cyntaf tri bytes mewn image-- JPEG ni waeth beth yr ydych wedi cymryd llun o- yw gwerthoedd 255, 216, 255. Mewn geiriau eraill, os ydych yn unig gweld bod patrwm o ddarnau, cynrychioli yma â thair bytes, neu 24 ddarnau cyfanswm, gyda tebygolrwydd uchel y gallwch gasglu hynny ydych yn edrych ar 'i hon tri cyntaf bytes o JPEG. Ac mae hyn yn beth sy'n hysbys fel llofnod JPEG. Mae llawer o fformatau ffeil allan yno yn tueddu i ddechrau gyda phatrymau penodol o 0au ac 1s, fel bod Windows, a Mac OS, a iOS, a Android gwybod pa fath o ffeil y maent yn, yn ychwanegol at y ffeil hyn a elwir yn estyniad fod llawer o ffeiliau wedi. Os ydych wedi .jpg, dyna Cliw arall i'r cyfrifiadur. Felly, gadewch i ni yn awr edrych ar hyn ychydig yn fwy technegol. Rydym yn gwybod y degol yn system yn 0 drwy 9. Rydym yn gwybod deuaidd yw 0 ac 1. Ac os ydych yn meddwl yn ôl i PSet 0, yr oedd gennym i chi ymgodymu â, am ychydig bach, rhywbeth a elwir yn hecsadegol, lle mae gennych 16 digid, yn hytrach na 10 neu yn lle 2. Ac digidau hynny, yn ôl confensiwn, yn 0 thrwy 9 ac yna trwy f, lle mae f cynrychioli'r hyn rhif degol, yn union fel bwyll cyflym gwirio? Felly, 15. Ac mae'n rhaid i gynrychioli 10, dim ond drwy natur y archebu fy mod i wedi ei roi. Mae'n dim ond gonfensiwn mympwyol, ond mae'n eithaf safonol. Felly, os edrychwn ar y patrwm hwn o dri bytes-- gadewch i ni dim ond dechrau i edrych arno mewn modd sy'n gyson â sut gwyddonwyr cyfrifiadurol yn gyffredinol yn edrych ar ac yn meddwl am ffeiliau. Gallwch sicr yn meddwl am ffeil mewn 0au, a 1s, ac degol, ond mewn gwirionedd, rydym yn tueddu i ddefnyddio deuaidd neu yn fwy nodweddiadol hexadecimal-- yn ôl o PSet 0. Felly gadewch i mi yn cynnig y 255, 216, a 255 yn unig y patrymau hyn o 0au ac 1s. A gallwch wirio hyn os ydych yn am wneud y math o Wythnos 0. Ond, ar hyn o bryd, dim ond yn cymryd yn ganiataol bod hyn yn wir yn gywir. Rwyf newydd hailysgrifennu tri degol rhifau fel tri gwerth deuaidd. Nawr yr hyn yr wyf i'n mynd i wneud yw dim ond ychwanegu ychydig o le gwyn, dim ond er mwyn darllenadwyedd ar. A rhybudd, Im 'jyst yn mynd i symud pethau ar wahân. Felly, cyn, ar ôl, cyn, ar ôl. Dwi'n gwneud dim byd diddorol eraill na dim ond lledaenu pethau allan fel hysbysiad hwnnw pob set o wyth darnau yn awr dwy set o bedwar ddarnau. Mae hyn yn ddefnyddiol oherwydd hecsadegol yn arbennig o ffasiynol oherwydd bod gan bob digid hecsadegol 0 drwy f, neu'n fwy penodol drwy 15 0, Gellir cael eu cynrychioli gyda phedwar union ddarnau. Mewn geiriau eraill, yn hecsadegol os ydych yn eisiau cynrychioli 0, 'i' jyst 0000, pedwar sero. Ac os ydych chi am i gynrychioli 15, 'i' 1111, sef pedair ddarnau. Ac os ydych yn gwneud y cwestiwn, os mai dyma'r lle rhai, dyma'r lle 16 oed, hynny'n mynd i roi you-- yn hytrach sy'n mynd canlynol-- ddrwg gennym, mewn deuaidd, mae hynny'n mynd i roi i chi 15, rhai lle, deuoedd lle, pedwar a wyth lle. Felly gadewch i mi yn cynnig bod y set o bedwar darnau ar y chwith beth ydym yn mynd i alw f. Mae'n y rhif mwyaf i chi Gall gynrychioli gyda phedwar darnau. Ac rydym eisoes yn gwybod o hecsadegol, f yw'r digid mwyaf yn hecsadegol. Mae gennym f arall yno, dau yn fwy dros yno. Ac am y tro, dim ond yn cymryd ar ffydd fy mod wedi gwneud y math cywir a bod yr hanner chwith o ddarnau hynny, 1101, yr un peth â d yn hecsadegol. A'r llaw dde, 1000, dim ond 8. A bod un yn hawdd gweld, dde? Mae'r 8 represents-- yn iawn o dan y lle wyth. Felly, mae gennym un yn y golofn wyth ac nid oes dim yn y pedwar, deuoedd neu rai. Felly nawr yn fwy confensiynol, bodau dynol yn tueddu i ysgrifennu digid hecsadegol fel hyn, 'ch jyst yn eu squish gyda'i gilydd, ac yna rydych yn eu rhagddodiad â 0x. Mae'n golygu dim byd heblaw gliw gweledol i human-- yma hon yn value-- hecsadegol oherwydd efallai na fel arall yn amlwg. Pa un yw dweud, yn y pen draw, bod patrwm zeros a rhai, neu batrwm y hecsadegol digidau cyfwerth ei eich bod yn mynd i ddechrau chwilio am yn Problem Set 4 yn this-- a bydd y Broblem Set 4 spec cerdded chi drwy hyn yn fwy detail-- ond yn sylweddoli fel math o ddirgel fel gallai hyn edrych ar yr olwg gyntaf, ydych yn mynd i ddechrau gweld hyn yn llawer. Ac yn wir, hyd yn oed yn GDB, mae'r debugger fe wnaethom gyflwyno ar ddydd Llun a Dan cyflwyno mewn PSet 3, yn mynd i yn aml yn dangos i chi gwerthoedd hecsadegol dim ond oherwydd eu bod yn tueddu i fod yn fwy confensiynol na'r degol neu'n deuaidd ym myd cyfrifiaduron. Nawr, gadewch i ni roi hyn mewn cyd-destun. Mae llawer o'r efallai y byddwch yn cofio hyn llun yma, a ddaeth o beth? Vista, felly hyd yn oed yn gynharach na hynny, gwnaeth Windows XP cyntaf hwn. Felly, mae hyn yn dirwedd hardd. Ac yn wir, os ydych yn brocio o gwmpas online-- Rwy'n credu ei fod yn erthygl Wicipedia, wherein rhywun yn rhyfeddol iawn yn mynd allan dod o hyd yn y lleoliad hwn yn y byd a sefydlwyd ei gamera mewn union y place-- cywir ac mae hyn yn edrych yn like-- heddiw, ond 'i' yn union yr un lleoliad. Mae'r ddelwedd hon, fodd bynnag, yw mewn ffeil fformat a elwir didfap, b-m-t. Ac rydym yn mynd i gymryd super cipolwg cyflym ar yr hyn mae hynny'n ei olygu. Ond didfap yn unig yw ffordd wahanol o delweddau sy'n cynrychioli dal i ddefnyddio picsel mewn 0au ac 1s, yn y pen draw. Ond ar yr olwg cyflym, mae wedi llofnod yn fwy diddorol ar ddechrau'r ffeil. Nid dim ond tri bytes, yn hytrach mae criw cyfan o batrymau bytes sydd wedi bennwyd ymlaen llaw ystyr. Er enghraifft, rhywle yn y ychydig bytes cyntaf o ddelwedd bitmap yn mynd i fod maint y delwedd, lled y ddelwedd, uchder y ddelwedd, felly metadata defnyddiol, os mynnwch. Gwybodaeth ddefnyddiol bod Photoshop neu unrhyw graffeg rhaglen rydych yn ei ddefnyddio Efallai mewn gwirionedd yn poeni am. Felly mwy am hyn yn Problem Set 4, ond mae hyn Dim ond i ddweud bod ar ddiwedd y dydd yr holl fformatau ffeil yr ydych wedi bod yn defnyddio am years-- ffeiliau Microsoft Word, Ffeiliau Rhifau, ffeiliau Excel, unrhyw nifer o fformatau ffeil a allai gael rhywfaint o estyniad ffeil hysbys yn unig 0au ac 1s o dan y cwfl. A bodau dynol wedi penderfynu beth confensiynau yw, pa batrymau 0au ac 1s cynrychioli ffeilio erbyn Word ffeil Excel, yn erbyn unrhyw nifer o fformatau ffeil eraill. Felly, yn PSet 4, bydd gennych cyfle i chwarae â hynny. Ond beth mae'n ei olygu i fod â struct. Mae hyn mewn gwirionedd yn segue n glws yn awr i mewn i C, sydd â dim ond cwpl nodweddion ychwanegol y nid ydym wedi edrych ar eto. Mae'n iaith 'n bert bach ac un o nodweddion neis am C yn struct. Er enghraifft, os ydych yn yn awyddus i represent-- gadewch i ni dweud eich eisiau cael newidyn sy'n yn cynrychioli fyfyriwr mewn rhyw rhaglen. Efallai eich bod yn ysgrifennu cwrs rhaglen gofrestru, neu siopa graidd offeryn, neu rywbeth fel 'na. Beth Darnau o ddata cysylltiedig i fyfyriwr sy'n dod i'r meddwl? Fel myfyriwr yn gynrychioli â'r hyn gwerthfawrogi? Yeah? Mae gennych enw fel myfyriwr. Beth arall mae myfyriwr nodweddiadol gael? GYNULLEIDFA: [Anghlywadwy] DAVID J. Malan: Felly, mae'n ddrwg gennyf. GYNULLEIDFA: Oed. DAVID J. Malan: Mae oedran neu pen-blwydd cyfwerth ei, yep. Beth arall? GYNULLEIDFA: rhif adnabod? DAVID J. Malan: Felly rif adnabod, efallai rhif ffôn, efallai dorm, neu dŷ, neu goleg, neu rywbeth fel 'na. Unrhyw nifer o ddarnau o ddata sy'n allai fod gennych yn eich rhestr cysylltiadau yn yr hyn a allai diffinio yn fyfyriwr. Felly, os oeddem am wneud hyn, mewn cod, efallai y byddwn yn gwneud rhywbeth syml fel hyn. Efallai gennym raglen fel bod Mae gadewch i ni ddweud, int prif (ddi-rym). Ac os wyf am i gynrychioli fyfyriwr efallai y byddwn yn cael, er enghraifft, llinyn a elwir yn enw ar gyfer y myfyriwr hwnnw, llinyn o'r enw dorm gyfer y myfyriwr hwnnw, efallai mae int a elwir yn ID gyfer y myfyriwr hwnnw. Ac oherwydd Im 'yn arfer llinyn, yr wyf yn Mae angen i fynd yn ôl a rhoi i fyny CS50.h. Efallai fy mod yn mynd i angen stdio.h. Felly gadewch i mi preemptively wneud hynny ac rwy'n mynd i alw student.c hwn am nawr ac arbed hyn. Ac yn awr y gallaf wneud rhywbeth gyda newidynnau hyn. Ac rydym yn jyst yn mynd i ysgrifennu bod fel sylw yn y cod ffug, gan nad yw'n ddiddorol yr hyn rydym yn ei wneud am y tro. Iawn, felly mae hyn yn rhaglen sy'n rhywsut siopau yn fyfyriwr. Beth ydw i am ei wneud os byddaf eisiau i storio dau fyfyriwr? Felly, fy ngreddf gyntaf yn mynd i yn iawn, arhoswch funud, os oes gen i fyfyriwr arall pam nad ydw i'n dim ond gwneud enw llinyn 2, dorm llinyn 2, ID2 int. Ac rydym wedi gwneud wedi mynd i lawr y ffordd hon o'r blaen a beth oedd ein ateb i hyn sy'n ymddangos i fod yn fath o gopi past hackish swydd yma? GYNULLEIDFA: Mae rhesi. DAVID J. Malan: Yeah, gallem ddefnyddio amrywiaeth. Yr hawl hwn yn gyflym iawn yn dod yn anhylaw. Mae'n rhaid i chi drefnu o fympwyol dechrau enwi pob un o'r newidynnau hyn. Ac, y dynol, rhaid i chi gadw olrhain bod yn cyfateb name2 OK gyda dorm2 cyfateb ID2. 'I jyst yn dod yn llanast. Felly mae'n llawer haws, galw i gof o ychydig wythnosau yn ôl, i ddim ond yn gorfod galw enwau llinyn ac efallai rhoi i ni dair o'r rheiny. Ac yna efallai rydym wedi llinyn dorms a chael tri o'r rheini, neu gyda cyson, int IDS ac mae ganddynt dri o hynny. Ond hyd yn oed yn awr mae hyn yn teimlo ychydig yn flêr, ar y dde. Rydym yn sôn am fyfyrwyr ac eto Dwi wir yn annedd ar y lefel isel Manylion gweithredu. Mae'r myfyriwr yn enw ac dorm ac Adnabod. Pam na all Fi jyst yn datgan newidyn Gelwir myfyrwyr a galw mae'n s. Ac os wyf am myfyriwr arall, pam nad ydw i'n jyst alw t. Neu os ydw i am criw cyfan o fyfyrwyr, beth am wneud Fi jyst dweud gen i ddosbarth cyfan o myfyrwyr, ac mae'n tri ohonynt. Mewn geiriau eraill, pam na all yr wyf yn dod i fyny gyda fy math data eu hunain, a elwir yn Mae myfyrwyr, tu mewn sydd yn enw, yn adnabod, yn dorm, yw unrhyw nifer o feysydd eraill. Ac mae'n troi allan chi yn gallu ei wneud yn union hynny. Felly C Mae gan nodwedd hon a elwir struct. Dyna nodwedd iaith sy'n yn ein galluogi i wneud yn union hynny. Rydw i'n mynd i fynd yn ei flaen ac agor structs.h ble rydyn ni'n mynd i weld y ar ôl y diffiniad o fyfyriwr. Mae'n troi allan - ac mae hyn yn un hyd yn oed symlach na'r un sy'n cynnwys adnabod funud yn ôl. Os ydych eisiau dod o hyd i eich math data cartref, ac yn ychwanegol at int, a torgoch a arnofio a phawb arall yma sy'n bodoli, gallwch wneud hynny trwy llythrennol ysgrifennu struct typedef, Yna, mae rhai braces cyrliog, tu mewn yr ydych yn rhestru'r newidynnau rydych am ei cysylltu â hon data arferiad newydd teipiwch fel enw a dorm, ac yna ar ôl y braces cyrliog eich bod yn rhoi enw i'r math data newydd. Felly, er enghraifft, i fyfyrwyr. A beth braf am hyn yn awr yw bod os edrychwn ar y cod cyfatebol, y confensiwn, yn gyntaf oll, yw rhoi hyn mewn ffeil o'r enw rhywbeth dot h, ffeil header, nad ydym wedi dechrau defnyddio ein hunain yn ormod. Ond rydym yn mynd i ddechrau gan ddefnyddio cryn dipyn erbyn hyn. A beth y gallwn ei wneud gyda hyn, yn y pen draw, yn yr ychydig linellau o god yn datgan yn union hynny Math o ddata, yn fyfyriwr. Ac yn awr gadewch i ni ei ddefnyddio. Rydw i'n mynd i nawr yn mynd i mewn i ffeil o'r enw structs1.c. A gadewch i ni edrych ar ychydig o nodweddion yma. Felly mae'r pethau i fyny yma yw yn bennaf cyfarwydd, ac yr ydym chi helpu dod yn ôl at yr hyn nad yw cyfarwydd mewn dim ond hyn o bryd. Mae hyn wrth gwrs yn cynnwys fy hun ffeil flaen, sydd yn newydd yn ogystal, ac eithrio ar gyfer PSet 3 os, galw i gof, rydym wedi helpers.h. Felly, efallai y byddwch yn cofio helpers.h #include. Pam er ydw i'n defnyddio dyfyniadau yn hytrach na cromfachau onglog? Pryd ydw i'n dewis rhyngddynt? Bron bob amser Yr wyf yn ymddangos i ddefnyddio cromfachau onglog. Ac yna, yn sydyn ar llinell chwe Im 'yn arfer dyfynodau dwbl. Pam y gallai hynny fod? Yeah? GYNULLEIDFA: [Anghlywadwy] DAVID J. Malan: Dyna gwirioneddol, beth? GYNULLEIDFA: Dyna yn eich IDE. DAVID J. Malan: Yeah, dyna yn fy IDE go iawn. A gadewch i ni fynd ar ôl y DRhA, oherwydd bod yn unig yn offeryn sy'n Im 'yn arfer. Dyna yn fy bresennol cyfeiriadur, yn benodol. Felly structs.h yw fy ffeil hun heb ei osod yn y DRhA, yn y system weithredu ei hun, yn hytrach mae yn fy cyfeiriadur cyfredol. Felly y confensiwn yw os ydych am i gynnwys eich ffeil pennawd hun, 'ch jyst yn defnyddio dyfynodau dwbl. Beth ydym yn galw y peth hyn yn llinell 8, yn gyffredinol? Dyma beth? rhywbeth #define. Mae hyn yn cynrychioli cysonion, dde? Os ydych chi am gael Gwerth yn eich rhaglen eich bod yn defnyddio yn ei gyfanrwydd criw o weithiau, 'i' confensiwn da i ffactor allan, yn datgan ei fod, gyda'r symbol hash diffinio, yna, yn ôl confensiwn, ym mhob priflythrennau word-- er nad yw'n gwbl angenrheidiol, ond 'i' confensiwn dynol i fanteisio cysonion fel eu bod yn neidio allan ar chi visually-- gofod ac yna bydd y gwerth ydych am fod yn sy'n cyfateb i enw'r y cyson yn. Dim hanner colon, ond rydych yn syml yn dilyn y patrwm yno. Felly, beth ydw i'n ei wneud yn y cod gwirioneddol. Felly, gadewch i ni edrych ar y brif raglen yma. Yn llinell 12 oherwydd fy mod yn wedi cynnwys structs.h, Yr wyf yn awr wedi magically ar fy gwaredu math data newydd. Dydw i ddim yn unig yn cael mynediad at int, a torgoch, ac arnofio, a llinyn, a glas ac eraill. Yr wyf yn awr yn cael mynediad at math data myfyrwyr. Felly, yn unol 12, Im 'yn cyfuno dau ideas-- un fath data arfer a dau, gan ddefnyddio amrywiaeth. Ac felly yn y rhaglen hon os Rwyf am gefnogi mewn gwirionedd tri myfyriwr gwahanol yn fy rhaglen, yr wyf yn Gall ddweud yn syml roi newidyn mi Gelwir myfyrwyr, pob un ohonynt yw o fyfyrwyr fath, a oedd yn yw fy math data arferiad. Ac, yn benodol, yn rhoi i mi tri o'r rheini yn fy array. Felly nawr beth ydym yn ei wneud yn y rhaglen hon? Dyma dim ond ar gyfer ailadrodd dolen 0-3, oherwydd dyna beth yw gwerth y myfyrwyr yn. Im 'jyst yn annog y defnyddiwr rhoi enw'r myfyriwr mi. Ac yna yn unol 17, rydym yn ganddynt linell cyfarwydd yn bennaf. Rydym wedi ein hen gyfaill GetString ar y dde. A pha ddarn o gystrawen yn ôl pob golwg newydd, os nad ydych erioed wedi ei raglennu yn C o'r blaen, ac erioed wedi defnyddio'r structs? Yeah? GYNULLEIDFA: Y .name. DAVID J. Malan: Y .name. Ond nid yw hyn yn ormod o naid, oherwydd erbyn hyn y myfyrwyr braced i yn rhoi i'r myfyriwr i-ed i chi. Ac os ydych chi am ddeifio tu mewn strwythur hwnnw, 'ch jyst yn defnyddio cyfnod sengl a Yna, enw'r newidyn tu mewn, neu fod yr eiddo y tu mewn i'r ydych am gael mynediad at. Yn yr un modd, yna, os byddaf wedyn annog y defnyddiwr, rhowch dorm y myfyriwr i mi, gallwch un modd storio'r llinyn yn yr newidyn dorm tu mewn o'r strwythur myfyrwyr. Ac yn awr pethau'n mynd ychydig o ffansi. Ac mae hyn yn mynd i edrych yn efallai lawer yn fuan. Ond byddwch yn gweld hyn yn llawer mwy yn PSet 4, felly gadewch i ni dim ond cipolwg ar yn awr. Mae'n ymddangos bod yn unol 23 drwy 38, beth yn eich barn chi, efallai fy mod yn ei wneud? Rydw i wedi cael gwared ar y sylwadau ar gyfer heddiw, ond mae'r fersiwn o'r cod-lein ar gyfer Mae cyfeirio pob sylw. Beth ddylwn i ei ymddangos i fod yn ei wneud? GYNULLEIDFA: Arbed y ffeil gyda'r holl y wybodaeth y mae'r defnyddiwr yn mynd i mewn. DAVID J. Malan: Yeah, yn union, mae hyn yn ffordd newydd ein bod yn gweld dau, Nodwedd arall o C, lle y gallaf greu fy ffeiliau eu hunain. Hyd yma, mae pob rhaglen bron rydych wedi ysgrifennu yn heb ddinasyddiaeth. Cyn gynted ag y mae'n ei wneud yn rhedeg, dyna ni. Does dim cof neu atgof ohoni. Does dim arbed ffeil. Ond os ydych chi eisiau arbed mewnbwn sydd wedi digwydd, fel mewn gêm neu raglen fel hyn, mae'n troi allan y gallwn wneud hynny. A byddwch yn gweld hyn yn fwy yn PSet 4 ac yn Adran. Ond mae hyn llinell 23 yn y bôn creu ffeil o'r enw students.csv. Ac efallai y byddwch wedi gweld hyn o'r blaen. Hyd yn oed os nad ydych erioed wedi ei astudio CS o'r blaen, CSV yw newidynnau wedi'u gwahanu gan goma. Mae fel dyn tlawd iawn yn ei fersiwn o'r ffeil Excel, sy'n golygu y gallai gael ei hagor yn Excel ac yn Nifer Apple, ac mae ganddo rhesi a cholofnau. Ond dyw e ddim yn perchnogol fformat fel Microsoft neu Apple. Dim ond atalnodau yn gwahanu'r gwerthoedd y byddwn yn gweld mewn munud. A dim ond yn cymryd dyfalu. Yn unol 23, ar yr union diwedd, fy ail ddadl at y swyddogaeth newydd o'r enw f agored ar gyfer agor ffeil w. Beth allai w dynodi? Yeah? GYNULLEIDFA: Mae'n gadael i chi ysgrifennu at y ffeil? DAVID J. Malan: Mae'n gadael chi ysgrifennu at y ffeil. Felly mae 'na un neu ddau o amrywiadau ein bod yn gallu plygio i mewn yma. Ond os ydych am ddarllen y ffeil, hynny yw edrych arno a'i ddarllen i mewn i gof, yr ydych dim ond yn defnyddio dyfyniad unquote "r". Os ydych am ysgrifennu at y ffeiliau, byddwch yn defnyddio dyfyniad unquote "w". Mae hefyd wedi atodi a un neu ddau o bethau eraill os ydych am i addasu ffeiliau sy'n bodoli eisoes. Nawr rydym yn mynd i cadw gweld hyn beth, yna byddwn yn dod yn ôl i linell 24. NULL, mae'n troi allan, yn gwerth arbennig sy'n gellir ei ddychwelyd gan swyddogaethau penodol os bydd rhywbeth wedi mynd wrong-- os nad yw'r ffeil yn bodoli, os ydych wedi rhedeg allan o gof, neu griw o gamgymeriadau eraill. Ond am nawr, gadewch i ni gymryd yn ganiataol bod hyn yn yw gwirio gwall yn unig confensiynol. Yma yn llinell 26, rwy'n ailadrodd 0-3 dros fy holl fyfyrwyr. Ac mae hyn yn fath o fath swyddogaeth newydd, fprintf, ond dim ond yn cymryd dyfalu. Os printf yn unig print llinyn fformatio, beth mae fprintf yn ôl pob tebyg yn ei olygu? GYNULLEIDFA: Argraffu i ffeil. DAVID J. Malan: Argraffu a llinyn fformatio i ffeil. Dyna beth i'r ZIP ychwanegol f modd yn ffeil. Ac mae'r ddadl gyntaf newydd wedi i fod y newidyn sy'n cynrychioli eich ffeil. Yna, rydym yn unig yn cael fformat llinyn yn union fel printf. A hyd yn oed er bod hyn cystrawen yn newydd, mae hyn yn unig golygu plwg yn enw'r myfyriwr, plug-in y dorm myfyrwyr, ac yna gyda fclose, caewch y ffeil. Ac yna lastly-- hyn yn newydd a byddwn yn dod yn ôl at hyn cyn long-- Im 'yn rhyddhau y myfyriwr am resymau a ddigwyddodd i fyny uwchben yno. Ond byddwn yn dod yn ôl at hynny cyn long-- dyna oherwydd y ffordd GetString yn mewn gwirionedd yn gweithio o dan y cwfl. Felly, gadewch i ni edrych hwylus yma. Os byddaf yn teipio ls yn fy cyfeiriadur, sylwi nad wyf yn ei wneud cael ffeil o'r enw students.csv, dim ond nid oes, nid yw'n bodoli. Felly os wyf yn awr yn llunio rhaglen hon, gwneud structs-1,. / Structs-1, ac yr wyf i'n mynd i fynd yn ei flaen a theipiwch Andi, sy'n byw yn Berkeley yn Iâl. Rydym yn mynd i gael Rob pwy byw yn Thayer y dyddiau hyn. A gadewch i ni ddod o hyd i ble yw, yr wyf yn meddwl, Maria yn Mather, os wyf wedi cofio yn gywir. Felly nid oes dim yn digwydd wedyn. Ond os wyf yn teipio ls yn awr, mae students.csv. Gadewch i ni fynd yn ei flaen a students.csv agored. Mae hyn eto yn iawn fformat ffeil ysgafn. Ond yr wyf yn syml i wedi mabwysiadu confensiwn bod gen i ddau rhesi a cholofnau yma. Mae'r golofn gyntaf yn Enwau cyntaf pobl. Mae'r ail golofn yn y myfyriwr dorm, neu goleg, neu dŷ, neu whatnot. Ac yn awr yr wyf wedi achub hwn yn barhaol mewn ffeil. Felly nid yw'n bob un sy'n ddiddorol. Ond mae hyn yn unig yw garreg sarn nawr i allu parhau gwybodaeth yn barhaol. Felly, gadewch i ni weld nawr beth arall y gallwn wneud â'r hyn ac eraill nodweddion. Ond yn gyntaf, unrhyw gwestiynau? Dyna oedd llawer, ac roedd hynny'n gyflym. Ond byddwch yn gweld llawer mwy mewn PSet 4, yn ogystal. Yeah? GYNULLEIDFA: A oes ffordd i barhau i ychwanegu enwau at y ffeil? DAVID J. Malan: Cwestiwn da. A oes ffordd o barhau ychwanegu enwau at y ffeil? Ydw. Ac, yn wir, os ydych yn darfod i fyny ail-agor y ffeil, byddech yn eu defnyddio dyfyniad unquote "a" ar gyfer atodi, a fyddai dim ond ychwanegu llinell newydd, a llinell newydd dro ar ôl tro, yn union. Cwestiwn da. Cwestiynau eraill? Yeah? GYNULLEIDFA: Os ydych yn rhedeg y rhaglen eto ar hyn o bryd, byddai'n cadw ychwanegu enwau i'r ffeil neu byddai'n agor ffeil newydd? DAVID J. Malan: Ah, cwestiwn da. Os ydych yn rhedeg y rhaglen eto cywir yn awr, teipio efallai mewn enwau newydd, byddai'n ychwanegu at y ffeil neu ysgrifennu dros y ffeil? Mae'r olaf, oherwydd fy mod i'n peidio â defnyddio dull atodi. Ac oherwydd Im 'jyst yn ddall agor y ffeil ar gyfer ysgrifennu, dim ond ei fod yn mynd i ysgrifennu dros y ffeil. Felly byddai yn wir angen i mi ei wneud yw atodi, os ydw i eisiau mewn gwirionedd yn cael tymor hir cronfa ddata. Nawr CSV yn ddefnyddiol, dweud y gwir, hyd yn oed am debyg os ydych yn writing-- a byddwn yn y pen draw yn gweld hyn yn ddiweddarach yn y semester pan rydym yn defnyddio CSVs at ddibenion eraill. Os ydych am i storio'r holl bobl sydd wedi cofrestru ar gyfer rhai digwyddiadau, neu cofrestru ar gyfer eich myfyrwyr grŵp, neu rywbeth fel 'na, storio'r data yn y math hwn o fformat yn super gyfleus. Oherwydd llythrennol, os wyf Roedd i lawrlwytho'r ffeil hon. Gallwn i double-- a gadewch i ni mewn gwirionedd yn rhowch gynnig ar hyn os oes gen i Excel neu Niferoedd ar fan hyn. Rydw i'n mynd i dde-glicio neu reolaeth-glicio fy ffeil. Wps. Cliciwch y botwm dde neu reolaeth-glicio fy ffeil. Dewch ymlaen, nid yw fy llygoden yn cydweithredu. Download-- Rydw i'n mynd i lawrlwytho'r holl ffeiliau yma fel dim ond er mwyn i mi chrafangia yr un yma. A gadewch i ni weld os yw hyn yn gweithio students.csv-- tro cyntaf Rwyf wedi actifadu. Erbyn hyn maent eisiau gweld fy cysylltiadau. Yn awr, mae angen i mi gofrestru. Gweler pa mor hawdd yw hi i ddefnyddio CSVs? Ie, ei gadw'n gyfoes. OK, yn awr rydym yn barod ar gyfer y dosbarth. OK, oh, beth sy'n newydd? OK, yn agos. Dyna oedd hudol. OK, yn awr mae'n rhaid i ni roi'r wybodaeth ddiweddaraf. Ac yn awr, mae wedi anghofio beth ffeil agorais yn wreiddiol, ond yr hyn a-- dyna ni. Iawn, felly erbyn hyn mae gennym ffeil Excel. Diolch. Iawn, felly beth wnes i oedd y rhan hawdd. Wrth gwrs y gallwn i wedi rhag-osod Excel, neu Rhifau, neu beth bynnag raglen. Ond mae hyn yn 'n glws, oherwydd yn awr yr wyf yn gallu trin mae'r data mewn fformat safonol. Felly nawr gadewch i ni gyd-destun newid i lle rydym yn gadael i ffwrdd tro diwethaf, a oedd i gychwyn i gymryd oddi ar olwynion hyfforddiant. Ond yn gyntaf, na wnaethoch chi gweld cinio yn gynharach y yn digwydd eto yma yn Tân ac Ice yng Nghaergrawnt, Sitar yn New Haven. Cofrestrwch ar wefan CS50s ASAP i ymuno â myfyrwyr CS50 a staff. Felly, rydym yn cymryd olwynion hyfforddiant i ffwrdd ar ddydd Llun fel follows-- llinyn wedi cael ei ddatgan yn Llyfrgell CS50s ers peth amser. Ac mae'n braf, oherwydd mae'n caniatáu ni i siarad am newidynnau fel rhai geiriau a brawddegau ac yn fwy cyflawn. Ond mae'n troi allan llinyn yn bodoli. Mae hynny yn unig yw gyfystyr, neu alias, ein bod wedi creu ar gyfer rhywbeth sydd mewn gwirionedd ychydig yn fwy o'r enw technegol yn torgoch *. Ac yn wir, gwelsom enghraifft o raglen ar ddydd Llun nad oedd yn ymddwyn yn eithaf wrth i ni ddisgwyl. Hwn oedd y ffeil, cymharu-0. Ac yn dwyn i gof bod yn cymharu-0, os Yr wyf yn ail-grynhoi rhaglen dydd Llun ac yn rhedeg chymharu-0 a deipio i mewn mom yn llythrennau bach, a mom mewn llythrennau bach eto. Roedd y rhaglen yn mynnu fy mod deipio pethau gwahanol, er bod mom, i gyd yn llythrennau bach, yn union yr un fath yn weledol. Felly beth oedd yr ateb byr am pam y cyfrifiadur yn meddwl y ddau linyn yn wahanol? Yeah? GYNULLEIDFA: [Anghlywadwy] DAVID J. Malan: Iawn. Felly, mom, y tro cyntaf Yr wyf yn ei deipio i mewn, yn cael ei storio yn rhywle yn fy cyfrifiadur cof ond mewn lleoliad gwahanol na'r ail dro i mi deipio i mewn mom. Nawr mae'n sicr y gellid ei optimized. Gallai'r cyfrifiadur fod yn smart ac sylweddoli y ddau llinynnau, hey, eu bod yn union yr un fath. Gadewch nid fi redundantly storio. Ond nid yw cyfrifiaduron yn gwneud hynny Optimization oni bai eich bod yn dweud wrthynt i. Felly, yn ddiofyn, maen nhw'n jyst yn mynd i roi diwedd ar i fyny mewn dau le gwahanol yn y cof. Ac felly i fod yn fwy clir, pan rydym yn cymharu y ddau llinynnau, y galwyd gyntaf s, yr ail galwyd t, beth oedd yn benodol yr wyf yn cymharu yma ar y llinell 13? Yeah. GYNULLEIDFA: Mae'n y lle er cof y bydd y newidyn yn pwyntio at. DAVID J. Malan: Yn union, roeddwn yn cymharu y lle er cof bod newidynnau y rhai Cyfeiriodd at. Felly yn benodol, os mom oedd wrth beit rhif 1, a 2, a 3, a 4-- oherwydd cofio'r slaes Mae angen 0 fod yr holl ffordd ar y diwedd. Ac y lle arall o mom, m-o-m, Roedd yn y cyfeiriad 10, 11, 12, a 13. Roeddwn yn cymharu 1, y cyfeiriad hwnnw, y lleoliad hwnnw yn y cof, erbyn 10, sef mae'n amlwg nad yr un fath. 1 Nid yw 10. Felly, mae hyn yn neis yn y mae'n eithaf syml. Ond mae'n achosi problemau i'r graddau y Ni allwn ymddangos i gymharu llinynnau. Felly fundamentally-- ac ar y lefel hon isel, os ydych chi eisiau gweithredu rhaglen i gymharu dau air ar wahân bod y defnyddiwr wedi teipio i mewn ar gyfer ansawdd, a ydynt yn llinell i fyny torgoch am torgoch, dim ond mewn termau cyffredinol, beth sydd angen i ni ei wneud, mae'n debyg? Nid yw'n ddigon dim ond i edrych ar y rheini dau gyfeiriad. Yr hyn sydd angen i ni ei wneud? Yeah? GYNULLEIDFA: ailadrodd drwy mae'r string [Anghlywadwy]. DAVID J. Malan: Yeah, gadewch i ni ailadrodd trwy'r llinyn. Gadewch i ni yn defnyddio ar gyfer dolen, dolen tra, neu beth bynnag yr ydych yn fwyaf cyfforddus ag ef. Ac os ydym wedi cael dau linyn yn rhywle mewn cof, gadewch i ni edrych ar bob yn cymeriad yn gyntaf, yna pob un yn ail cymeriad, yna drydydd, ac yn bedwerydd, ac yn bumed, nes i ni daro pa werth sentinel arbennig? GYNULLEIDFA: [Anghlywadwy] DAVID J. Malan: Yeah, mae'r slaes sero, a phryd hynny naill ai llinyn gallwn benderfynu dyna ni. Ydyn ni wedi cyfateb bob gymeriad? Os nad yw, yn dychwelyd ffug. Os felly, yn dychwelyd yn wir. Ac felly dyna'n union beth y fersiwn y rhaglen yn cymharu-1.c ei wneud. Mae'n union yr un fath â'r hyn yr ydym edrych ar Dydd Llun ac eithrio fy mod i wedi gotten gwared ar y gair string-- er nad oes ganddo unrhyw impact-- swyddogaethol i gyd Rwy'n gwneud yn awr yn cael gwared rhai olwynion hyfforddiant gweledol, ond i weld yn glir bod s a t yn gyfeiriadau. A dyna beth y seren, y seren, yn cynrychioli yn gyfeiriad, a elwir fel arall yn fwy technegol fel pwyntydd. Felly, pan wyf yn datgan mlaen llinell 9 a dweud torgoch * s, nid yw hynny'n golygu rhoi llinyn mi. Mae hynny'n golygu rhoi newidyn y mae ei fi bwrpas mewn bywyd yw i storio cyfeiriad. Oherwydd yr wyf am i roi'r cyfeiriad o gyfres i mewn iddo. Ac yn wir, GetString, i fod yn glir, nid yn dychwelyd llinyn. Nid yw'n dychwelyd mom slaes sero, fel y cyfryw. Beth mae GetString yn benodol ac yn fanwl gywir yn dychwelyd? GYNULLEIDFA: [Anghlywadwy] DAVID J. Malan: Mae gyfeiriad, mae'r cyfeiriad y cymeriad cyntaf mewn rhai llinyn y mae wedi gotten. Ac felly yn awr rydym yn gweld allweddair arbennig eto. Ac, yr wyf yn cyfeirio at hyn yn gynharach. Mae hyn yn mynd i fod confensiwn da y byddwn yn gweld eto ac eto yn awr. Im 'yn gwirio i wneud yn siŵr bod Nid yw null ac nid t yn null. Gan fod yn seiliedig ar fy 'n sylweddol sôn cyflym yn gynharach, beth allai olygu os nad GetString yn dychwelyd cyfeiriad ond N-U-L-L, sef unwaith eto, rhywfaint o werth arbennig? GYNULLEIDFA: Gwall. DAVID J. Malan: Mae'n camgymeriad. Aeth rhywbeth o'i le. A beth yn nodweddiadol allai ddigwydd, yn enwedig gyda strings-- a allai fod o hyd anhysbys yn advance-- efallai y cyfrifiaduron ' allan o gof, efallai chi deipio yn y fath gair hir neu ddedfryd neu ludo traethawd mor fawr does nid dim ond digon o gof. Ac felly ni all GetString ddychwelyd cyfeiriad y holl beth, felly dim ond yn dychwelyd dim. Ac mae'n dweud gwall wedi digwydd trwy ddychwelyd y gwerth NULL arbennig. Mae'n y cyfeiriad sero, fel petai. Nawr mae'n troi allan C comes ag a swyddogaeth sy'n gwneud hynny ailadrodd. Nid oes rhaid i ni weithredu hyn gyda mae i dolen neu ddolen tra ein hunain. Gallwn ddefnyddio swyddogaeth, Gelwir gryno, droi comp, neu linyn cymharu, y mae eu bwrpas mewn bywyd yw i wneud yn union hynny. Rydych yn rhoi dau awgrymiadau, dau gyfeiriad, a bydd yn mynd i'r cyfeiriadau hynny ac yna cymharu llythyren ar gyfer Llythyr am lythyr ar gyfer ansawdd, stopio dim ond pan fydd yr hyn sy'n wir? Pan reddfol dylai droi comp yn rhoi'r gorau i ailadrodd, dim ond i fod yn glir? Pan fydd yn taro slaes 0 yn y naill llinyn, a phryd y gall ei benderfynu wedi popeth cyfatebol, neu wedi bod yno anghysondeb? Felly, os ydym yn rhedeg hyn nawr a rhoi cynnig ein gêm cyfalafu bach, felly gwnewch yn cymharu-1, ./compare-1, a deipio mom yn llythrennau bach y ddau achlysur. Nawr mae'n yr un peth. Ac os wyf yn ei wneud eto gyda llythrennau bach ac yna efallai priflythyren. Nawr mae'n wir yn gwahaniaethu rhwng llythrennau bach a mawr. Felly nid bob un sy'n caled neu hudol, ond mae'n awr yn egluro beth sy'n mynd ymlaen o dan y cwfl. Felly, beth arall y gallwn ei echdynnu o y math hwn o wers? Felly, gadewch i ni edrych ar hyn. Rydw i'n mynd i fynd yn ei flaen ac ysgrifennu rhaglen cyflym a elwir yma copi-0. Ac yn awr gadewch i ni fynd yn ei flaen ac mewn gwirionedd gadewch i ni wneud this-- gyda chopi-0, yn edrych ar yr hyn yr wyf wedi cael yma. Cyntaf i mi ddweud wrth y defnyddiwr, yn dweud rhywbeth. Yna mi gael llinyn ac yr wyf yn ei storio mewn s. Yna mi gadarnhau a oes s hafal hafal NULL, dim ond dychwelyd 1. Felly, mae hyn yn unig yw gwirio gwall safonol. Nid oes unrhyw beth diddorol sydd wedi digwydd. Ac yn wir, os ydym yn cael gwared ar y gwall gwirio, mae hyn yn edrych fel wythnos 1 Cod ar hyn o bryd. Ond yr wyf wedi dechrau i gael ychydig yn well am hynny. Nawr yn llinell 16, wythnos yn ôl, efallai diwrnodau neu funudau hyd yn oed cwpl yn ôl, gallech ddweud llinell 16 yw gan greu newidyn a elwir yn t a chopïo s i mewn iddo. A dyna yn berffaith cludfwyd rhesymol. Ond fod yn fwy manwl yn awr. Beth sy'n digwydd yn llinell 16? Yr hyn sy'n cael ei gopïo o'r dde i'r chwith? Yeah? GYNULLEIDFA: A yw t cael cyfeiriad s? DAVID J. Malan: Yn union, t yn cael y cyfeiriad s. Felly, er mwyn bod yn glir yn awr, os byddaf yn mynd yn ôl at yr enghraifft honno cynharach ac yr wyf yn tynnu allan y peth dwi wedi teipio i mewn. A hyn yr wyf wedi ei deipio in-- dyma s, ac yma yn hyn yr wyf wedi teipio mewn rhywle yn cof, mom ac yna slaes 0 sydd wedi ei ychwanegu i mi. Yr hyn yr wyf yn ei storio mewn yma, yn galw i gof, mae hyn ar leoliad 1, 2, 3, 4, dyma beth sydd ar hyn o bryd yn s. Felly, os ar linell 16, yr wyf yn dweud ei roi i mi newidyn a elwir t a siop arall mewn o ngwerth s, beth Nid yn cael ei storio yma bydd mom ond yn hytrach dim ond y rhif 1. Felly, os ydym yn edrych ar y blaen yn y rhaglen hon Erbyn hyn, yr hyn sy'n mynd i ddigwydd? Felly sylwi fod yna swyddogaeth hon i chi efallai wedi defnyddio hyn beth amser yn ôl i Cesar, neu Vigenere, neu efallai ddim o gwbl. I'n hawlio gyda fy printf, rwy'n mynd i fanteisio copi i'r t. Yn gyntaf, yn unol 19, bwyll cyflym gwirio, gwiriadau strlen hyd t. Oherwydd nad wyf am ceisio manteisio rywbeth os nad oes llinyn yno. Os yw'r defnyddiwr jyst daro Enter, does dim byd i fanteisio. Felly, nid wyf am wneud llinell 21. Felly llinell 21 yn manteisio pa lythyren, mae'n debyg, mewn t? GYNULLEIDFA: m? DAVID J. Malan: Mae'n edrych fel ei fod yn copïo pa un? GYNULLEIDFA: m. DAVID J. Malan: Uh, m. OK, felly y m cyntaf, oherwydd hysbysu fy mod i'n gan fynd heibio i toupper, a oedd yn os nad ydych erioed wedi ei weld ei fod yn dim ond swyddogaeth i manteisio fel ei fewnbwn. t braced sero yn golygu rhoi 'm' r sero cymeriad t. Ac felly sut mae hyn yn Newid llun, bod yn glir? Beth sydd angen i gael ailysgrifennu neu ei newid mewn perthynas â s a t a mom sero slaes. GYNULLEIDFA: [Anghlywadwy] DAVID J. Malan: Yeah, felly mae hyn yn un yma yn syml angen i gael newid canlynol-- atgyweiria this-- Mae angen i gael newid i m cyfalaf. Ond yn awr, edrychwch yn ddiweddarach yn y rhaglen, os wyf argraffu s a t wrth i mi lanhau yma, gwyliwch beth sy'n mynd i ddigwydd argraffu s a t. Felly gwnewch gopi-0, ./copy-0. Gadewch i mi fynd yn ei flaen a theipiwch yn mom ym mhob llythrennau bach. Sylwch y gwreiddiol ac y copi wedi cael eu cyfalafu. Pam? Wel, s a t yn y ddwy pwyntio at, os mynnwch, yr un darn o gof. Ac yn dweud y gwir, mae hyn yn mynd yn 'n sylweddol uninteresting-- ffaith ein bod yn defnyddio cyfeiriad sero yma. Yr wyf yn golygu, nid wyf yn wir gofal lle mae pethau mewn cof. Mae'n ddrwg gennym i ddim yn dileu ychydig yn rhy fawr. Ond dwi ddim yn wir gofal ble mae pethau yn y cof. Ac felly, yn wir beth rhaglenwyr yn tueddu i feddwl am yw bod pan fyddwch yn siarad am cyfeiriad, neu pwyntydd, sy'n gofalu lle y mae yn gof. Nid wyf yn poeni os yw'n ar beit un neu un biliwn. Fi jyst poeni bod hyn newidyn yn effeithiol bwyntio ar y darn o gof. Ac felly, o hyn ymlaen, yn hytrach na quibble dros gyfeiriadau cof mympwyol, gadewch i ni dim ond dechrau i dynnu awgrymiadau fel awgrymiadau, fel saethau. Felly beth s a t gwirionedd, yn ôl y rhaglen hon, oherwydd y ffordd yr wyf yn creu t, 'i' jyst ddau newidyn ar wahân pwyntio at yr un darn o gof. Ac nid ydym yn poeni ble maen nhw. Felly allwn haniaethol i ffwrdd y manylion. Felly sut ydw i'n atgyweiria hon? Os ydw i eisiau i ysgrifennu fersiwn o'r copi rhaglen sydd mewn gwirionedd copïau y llinyn ac yn manteisio dim ond y copi, dim ond reddfol, beth sy'n rhaid i fod yn gynhwysyn at ein ateb? GYNULLEIDFA: [Anghlywadwy] DAVID J. Malan: Mae arnom angen yr hyn? GYNULLEIDFA: Chunk o gof. DAVID J. Malan: Mae angen darn arall o gof, dde? Nid ydym yn gwybod sut i ei wneud eto, o reidrwydd. Ond yr wyf yn fath o angen i hyn ddigwydd hynny bod y mom gwreiddiol mewn llythrennau bach yn dod i ben i fyny yn y darn ychwanegol o gof. Ac yna pan fyddaf yn newid y copi, yr wyf yn nad ydych am i newid y copi hwn yma. Rwyf yn lle hynny am newid dim ond hyn copi fel bod y gwreiddiol yn newid. Felly, gadewch i ni weld sut y gallwn wneud hyn. Yn copi-1, sydd eisoes â wedi'i dynnu sylw, ond ei sylwadau ar-lein. Rydym yn lle hynny wneud o'r canlynol-- hyn llinellau yn union yr un, mynd i mi llinyn a galw mae'n s. Ond yn awr gadewch i ni edrych ar un o'n mwyaf cymhleth ond yr olaf o'r cymhlethdod am dro, llinell 16 yn gwneud yn union hynny. Felly, os yw eich gyfforddus gyda'r llun rydym yn unig drew-- rhoi darn newydd o gof i mi, gopïo popeth i mewn iddo, gadewch i ni weld sut yr ydym yn cyfieithu y cod i. Felly llinell 16, ar yr ochr chwith, torgoch * t yn rhoi y blwch hwn i mi dros yma. Dyna i gyd mae'n ei wneud. Ar yr ochr dde, m alloc, neu malloc, yn dyrannu cof, super ffansi, ffordd cryptig o ddim ond dweud rhoi darn o gof i mi. Faint o gof sydd ei angen arnom? Wel, yn fath o fynegiant mawr. Ond gadewch i ni weld beth mae'n ei ddweud yma. Felly, mae hyn, wrth gwrs, yw rhoi mi hyd llinyn o s. Felly, mom dylai fod yn beth? Felly dim ond tri, dde? mom yn tri chymeriad. Nid ydych yn cyfrif y slaes sero pan fyddwch yn siarad am y hyd llinyn mae'n mewn gwirionedd y llythrennau gweladwy dynol. Felly mom, felly mae hyn yn rhoi i mi 3. Ond arhoswch funud, rydw i'n awr yn adio 1. Pam ydw i'n gwirionedd eisiau dyrannu 4 bytes ac nid dim ond 3? Yeah? GYNULLEIDFA: Ar gyfer y gwerth sentinel? DAVID J. Malan: Yn union, ar gyfer y gwerth sentinel. Ar gyfer y slaes sero, Mae angen cyfanswm o 4 bytes wyf. Felly, yr wyf angen hyd y llinyn ac 1. Ac yna yn unig ar gyfer measure-- da er bod ar y system hon, mae bob amser yn mynd i fod 1-- i ddim yn dweud lluoswch hyn drwy yr un maint â torgoch. Troi allan sizeof yn gweithredydd yn C sy'n jyst yn dweud wrthych y nifer y bytes dyna ofynnol ar gyfer math o ddata penodol. Nid yw'n gweithio am araeau, fel arfer, weithiau mae'n ei wneud. Ond yn yr achos gyffredinol, dim. Ond bydd yn ddweud wrthyf faint o bytes o char yw, sy'n troi allan bob amser 1. Felly, mae hyn yn debyg lluosi 1. Llinell edrych mor super cryptig o god. Ond yr holl mae'n ei wneud yw rhoi mi darn o gof. Ond a yw'n ymddangos i fod yn copïo unrhyw beth i mewn i'r cof? Dim eto. Ac felly beth ydw i'n ar linell 22, a 23, 24, 25, yn dda, yr wyf yn syml yn gwneud hyn. Ac mae hyn yn fath o hen bethau ysgol nawr. Mae hyn yn debyg PSet 2, lle ydych ond yn symud pethau o gwmpas yn y cof, neu yn hytrach yn y llinynnau. Felly rwy'n ailadrodd o 0 i hyd y llinyn s. A dwi'n copïo cymeriad i-fed yn s i mewn cymeriad i-ed mewn t. Ac am fy mod, y rhaglennydd, a wnaed siwr i ddyrannu yn union fel llawer o bytes gan fod angen i mi, mae'n berffaith un-i-un perthynas. Ac yr wyf yn copïo mom mewn llythrennau bach i'r un newydd. Ac yna yn olaf, yr wyf yn gwneud y llinell hon. Ac felly mae'r effaith yn unig i gyfalafu t hwn yma. Felly, mae llawer i amsugno, ond os ydych yn unig yn ystyried beth sy'n digwydd mewn gwirionedd ar dan y cwfl yn unig yw symud y rhain bytes o gwmpas, y cyfan sydd sydd ei angen i ddatrys y broblem hon yw dim ond i roi darn hwn o gof i ni. Nawr ar y risg o llethol, gadewch i mi ddangos un enghraifft arall sef bron union yr un fath, ac eithrio ar gyfer yr un yma llinell o god. Felly, mae hyn yn y fersiwn haciwr o'r rhaglen hon, os mynnwch. Ond gadewch i ni jyst distill i mewn yr hyn sy'n digwydd. Llinell 24 yn arfer bod yn t hwn braced ff yn cael s braced i. Yn awr, rydw i'n newid hyn i y t seren yn llawer mwy cryptig ynghyd ag 1 yn dychwelyd seren s plws 1. Felly, beth sy'n digwydd a pham oes gennym gymeriad seren? Rydym wedi gweld y seren o'r blaen, ac mae'n cael ei ddefnyddio mewn ffordd wahanol yma. Rydym eisoes yn gweld torgoch *, nawr rwy'n gweld a seren ar y dechrau, ac mae hynny'n iawn. Oherwydd ei fod yn troi allan ein bod Gall fath o gasglu unig gan y rhai cyntaf egwyddorion yr hyn sy'n digwydd. Felly, dim ond i fod yn glir, beth yw s? Yr wythnos diwethaf, roedd yn llinyn. Nid yw hynny'n ddigon anymore. Beth yw s, yn benodol? GYNULLEIDFA: [Anghlywadwy] DAVID J. Malan: Mae'n pwyntydd. Mae'n y cyfeiriad y cymeriad cyntaf i ni teipio i mewn. OK, beth yw t? GYNULLEIDFA: [Anghlywadwy] DAVID J. Malan: Y cyfeiriad y beit cyntaf mewn t, y darn o gof ailddyrannu. Felly, mae'n troi allan bod pan fyddwn yn ailadrodd o 0 ar hyd at y llinyn length-- yn gyntaf oll, fi yn cychwyn ar 0, oherwydd o hyn hen ysgol am beth ddolen. Felly yn unig ar gyfer symlrwydd, gadewch i ni cymryd yn ganiataol bod y llinell gyntaf o god yn wir yn unig hyn, dde. Ai fi yn sero, gan ychwanegu sero i rywbeth yn ôl pob tebyg Nid yn mynd i gael effaith. Felly beth yw yr ymadrodd hwn? Mae'n ymddangos bod y seren gweithredwr yn y cyd-destun hwn yw'r dereference gweithredydd, sydd ychydig yn ffordd ffansi o ddweud fynd i'r cyfeiriad canlynol. Felly, os yw cyfeiriad y cyntaf cymeriad yn y darn hwn o gof, * S yn golygu mynd yno. Ac oherwydd ein bod wedi tynnu y llun yn y modd hwn, gallwch fabwysiadu'r yn dilyn model meddyliol. Os yw hyn yn s, ac yr ydych yn dweud * s, * s math o fel llithrennau ac ysgolion, os ydych yn cofio y gêm o blentyndod, yn debyg ddilyn y saeth a mynd i'r cyfeiriad. * T yr un peth. Felly dechreuwch yma, ewch at ei darn. Ni all Fi jyst dynnu ar sgrin hon y ffordd honno. * T olygu i fynd yma. Ac yna, mae'r gyfer ddolen yn unig gan ddweud symud y cymeriad hwn yma, symud y cymeriad hwn yma, symud y cymeriad hwn yma. Ond sut mae gwneud hynny incrementation? Mae angen i mi dadwneud hyn yr wyf newydd ei ddileu. Mae hyn yn yr hyn a elwir yn gyffredinol rhifyddeg pwyntydd, a oedd yn yn golygu mathemateg gyda chyfeiriadau. Os, yn yr am dolen, Rwy'n cadw incrementing i, ac s yn gyfeiriad ac t yn cyfeiriad, os wyf yn jyst cadw adio 1, mai dim ond yn golygu cadw symud ymlaen, ac ymlaen, ac ymlaen yn y cof. Mae fel Oxford Street, y stryd bod yr adeilad CS ar. Mae'r adeiladau CS ar 33 Oxford Street. Felly, os ydych yn ei wneud 33 Stryd Rhydychen ac 1, sy'n dod â chi i 34 Oxford Street, yna 35 Oxford Street, Yna, 36 Oxford Street, beth bynnag y rheini adeiladau mewn gwirionedd - os ydynt yn bodoli. Ac felly, dyna i gyd rydym yn ei wneud yma gyda rhifyddeg pwyntydd. Felly mae'n ffordd super ddirgel o fynegi ein hunain. Ond yr holl sy'n digwydd o dan y cwfl yn unig yn dilyn y cyfeiriadau hyn, fel dilyn map, os mynnwch, neu yn dilyn saethau fel rydym wedi tynnu ar y sgrin. OK, mae llawer i'w dreulio. Unrhyw gwestiwn ar gystrawen, cysyniadau, awgrymiadau, malloc, neu debyg. Yeah, dros yma yn gyntaf. GYNULLEIDFA: Felly, lle y Dywed * t hafal toupper * t, yw bod mynd i fanteisio holl lythyrau neu just-- DAVID J. Malan: Ah, Cwestiwn da iawn. Felly, yn y llinell hon yma, 31, mae hyn yn mynd i wneud yn fawr y llythyr cyntaf neu bob un o'r llythyrau. Felly gadewch i ni ateb hynny drwy fynd yn ôl i'r egwyddorion cyntaf. Ac egwyddorion cyntaf yma yr wyf yn golygu dim ond yn mynd at y diffiniadau sylfaenol o'r hyn sydd ynghlwm. Felly toupper 'na swyddogaeth sy'n manteisio ar torgoch. Dyna i gyd. * T yn golygu mynd i'r first-- mynd i'r cyfeiriad mewn t. Felly, yn y llun, os mai dyma'r dalp o gof dyrannwyd â malloc, ac mae hyn yn t, * t yn golygu ewch yma. Yn y cyfamser, rydych yn pasio gwerth hwnnw, llythrennau bach m i toupper, eich bod yn cael yn ôl cyfalaf M, ble yr ydych yn ei roi? Rydych yn ei roi yn yr un lleoliad. Ac felly gan y rhesymeg y rhai diffiniadau sylfaenol 'i' yn unig cyfalafu llythyren gyntaf oni bai eich bod ailadrodd gyda fi neu ar gyfer dolen neu ddolen tra, nid yw'n mynd i wneud unrhyw beth mwy nag yr ydych yn gofyn amdano. Cwestiwn da. Yeah? GYNULLEIDFA: Pam wnaethoch chi ddefnyddio'r dereference dull yn hytrach na y casgliad? DAVID J. Malan: Ah, cwestiwn da. Pam y byddech yn defnyddio'r dereference dull yn hytrach na'r dull arae? Dim rheswm arbennig, i fod yn onest. Ac, mewn gwirionedd, ar gyfer hyn math o enghraifft, ar y dde, Im 'jyst yn dadlau gwneud y rhaglen fwy cymhleth, mwy llygaid yn cael eu gwydro drosodd, mae pobl yn edrych ar gan fod hyn yn edrych super ddirgel, ond hyd yn oed er 'i' gwneud yr un peth. Ac felly, dweud y gwir, mae hwn yn ateb yn ddiangen yn weledol gymhleth at y broblem. Mae'n dal i fod dyluniad da, pump allan o bump ar gyfer dylunio, boed hynny yn y braced nodiant neu nodiant pwyntydd. But-- yn enwedig pan gawn yn nes ymlaen yn y cwrs mewn PSet 5 pan fyddwn yn gweithredu y geiriadur sydd Rydw i wedi crybwyll un neu ddau o times-- byddwn mewn gwirionedd yn gofalu am y cyfeiriadau cof lefel isel ein bod yn wir yn deall beth sy'n Digwydd. Ond, am y tro, mae'n troi allan bod hyn llinell o god cromfachau sgwâr yma yn bodoli mewn gwirionedd. Maent yn yr hyn a elwir siwgr cystrawennol, a oedd yn yn unig yw ffordd weirdly oera o ddweud y compiler yn trosi cromfachau sgwâr i fod yn hynny mynegiant mathemategol. Felly mae'n gonfensiwn dynol i allu dim ond ysgrifennu cromfachau iawn hawdd ei ddefnyddio yma. Ond beth mae'r compiler, chlang, sydd mewn gwirionedd yn gwneud unrhyw adeg byddwch yn ysgrifennu beth sy'n tynnu sylw yn unol 24, o dan y cwfl 'i' 'n sylweddol trosi i'r hyn. 'I' jyst yn fwy pleserus fel dynol i ddarllen ac ysgrifennu cod yn hoffi llinell 24. Ond yn y pen draw y rhai olwynion hyfforddiant yn dod i ffwrdd yn rhy pan fydd un ei gysur ei hun yn cael gryfach. Mae pob hawl, felly yn cofio felly fod hwn Roedd y math o broblem fwyaf rydym yn rhedeg i mewn. A dyna beth ysgogodd gyfan hon sgwrs poeni dim am awgrymiadau, a chyfeiriadau, a chopïo pethau. Yr oedd oherwydd ein bod baglu dros y mater dwp, dwp, lle Yr wyf yn rhoi ar waith logically-- gyda Lauren i fyny yma ar y demo a'r sudd oren yn y milk-- yn berffaith swyddogaeth algorithmically gywir ar gyfer cyfnewid ddau newidyn ' gwerthoedd, ond y peth damn Nid oedd gan unrhyw barhaus, neu parhaol, effaith ar fy cod. A pham oedd hynny? Yn gryno, pam mae hyn gweithredu cyfnewid rhesymegol gywir, ond yn cael unrhyw effaith ar y newidynnau sy'n cael eu trosglwyddo iddo, fel x ac y ar gyfer y prif? Beth oedd hanfod y mater hwn? Yeah? GYNULLEIDFA: Oherwydd ei wneud newidyn copïau o amrywiol o ran y tocyn drwy swyddogaeth. DAVID J. Malan: Yn union, pan fyddwch yn pasio newidynnau mewn i swyddogaeth, neu ddadleuon i mewn i swyddogaeth, maen nhw'n basio gan copi, a oedd yn yn golygu eich bod yn cael yn union chwilio patrwm o ddarnau ar gyfer y ddau x ac y, Gelwir yma a b. A allwch chi wneud unrhyw beth rydych am â copïau hynny, ond maent yn mynd i gael unrhyw effaith ar y swyddogaeth galw. Ac, yn wir, rydym yn tynnu bod llun ar y sgrin, galw i gof tro diwethaf, lle os ydych yn wir yn meddwl am yr hyn sydd mynd ymlaen o dan y hood-- os mae hyn yn cof eich cyfrifiadur, ac i lawr yma yw'r dalp o cof yn cael ei ddefnyddio ar gyfer y prif, mae hyn yn dalp o cof yn cael ei ddefnyddio ar gyfer cyfnewid, ac felly hyd yn oed os oes prif ganddo dau newidyn, x ac y, Efallai y cyfnewid yn cael edrych yn union yr un fath gwerthoedd, y ddau ohonynt yn 1 a 2, ond maent yn llwyr gwahanol darnau o gof. Felly mae angen o hyd i ateb i hyn. Ac yn dweud y gwir, mae'n ymddangos ein bod yn awr gennym ateb i'r broblem hon, ar y dde. Os ydym yn awr yn cael y gallu i trin pethau o ran cyfeiriadau a, math o llithrenni gwaredu ac ysgolion arddull, dilynwch saethau hyn ac yn mynd i unrhyw le rydym eisiau mewn cof, nid gallem datrys y broblem hon drwy basio o brif i gyfnewid Nid yw gwerthoedd yr ydym am ei cyfnewid, ond dim ond yn reddfol beth y gallem ei drosglwyddo i gyfnewid yn lle hynny? [LLEISIAU gosod eu hunain yn] DAVID J. Malan: Pam na ydym yn unig ei throsglwyddo y cyfeiriadau, dde? Pam nad ydym yn rhoi cyfnewid a map trysor, os gwnewch, sy'n arwain at y gwirioneddol gwerthoedd x ac y. Gadewch i ni cyfnewid, mewn gwirionedd yn newid darnau gwreiddiol hynny, yn hytrach na dim ond pasio copïau o'r darnau. Ac felly, mewn gwirionedd, dyna beth sydd mynd i fod yr ateb. Mae'r fersiwn yma yw yn amlwg drwg ac ddiffygiol. Ac yn awr, ar yr olwg gyntaf, 'i jyst yn edrych yn fel rydym yn ychwanegu criw o sêr ar hap ac croesi ein bysedd y byddai'n llunio. Ond, byddai nawr yn llunio. Ond gadewch i ni weld beth y pethau hyn yn ei olygu. Ac, yn anffodus, mae'r awduron Gallai C wedi dewis symbol arall i wneud hyn yn ychydig yn , ond mae'r gweithredwr seren gliriach Mae gan wahanol ystyr yn dau gyd-destun gwahanol. Ac rydym wedi gweld y ddau, ond gadewch i wahaniaethu. Felly, i fyny ar y brig yno, pan fyddaf wedi newid aab o fod yn int yn y drwg Fersiwn i int sêr, a a b, yn flaenorol, roedd cyfanrifau. Beth yw aab bellach yn y fersiwn da, gwyrdd? Maent yn gyfeiriadau. Cyfeiriadau o'r hyn, bod yn glir? Cyfeiriadau o gyfanrifau. Felly y ffaith fy mod i'n gan ddweud yn golygu seren int mae hyn yn y cyfeiriad o yn gyfanrif, yn benodol. Felly, yn awr yn sylwi yn y llinellau o god, rhywbeth arall wedi newid hefyd. TMP aros yr un fath, oherwydd bod dim ond y cyfanrif dros dro, dim hud cof yno. Ond bellach mae angen yn seren. Ac, mewn gwirionedd, mae pob sôn arall a a b, sylwi bod pob dyna newid o goch i wyrdd yw fy mod i'n prefixing newidynnau rhai sydd â sêr. Oherwydd nad wyf am i gopïo a a b. Oherwydd os Fi jyst adysgrifia a a b a chyfnewid aab, beth ydw Fi 'n weithredol cyfnewid? Dim ond cyfeiriadau, yr wyf am gyfnewid beth sydd yn y cyfeiriadau hynny. Dw i eisiau mynd yno. Ac felly y gweithredwr seren tu mewn fy swyddogaeth, Nid yw tu mewn i'r rhestr paramedr, yn golygu i chi fynd i'r cyfeiriadau hynny ac mewn gwirionedd yn newid y gwerthoedd hynny. Felly beth mae'r llun bellach yn edrych fel yn lle hynny. Wel, os yn lle hynny i ddim yn pasio mewn am a b Nid yw 1 a 2-- Fi 'n weithredol angen ychwanegu un diffiniad eraill yma. Felly mae'n debyg y darn hwn o gof yn y lleoliad 10. Mae hyn yn y lleoliad 11, ond mae hyn yn dipyn o symleiddio, Yr wyf yn awr wedi dau ddewis ydw i'n pasio x a y neu ydw i'n pasio eu cyfeiriadau? Os byddaf yn pasio eu cyfeiriadau fel hyn, Fi jyst Mae angen yn awr i weithredu cyfnewid fesul y cod gwyrdd fel bod pan fydd yn gweld a phan fydd yn gweld b, nid yw'n jyst adysgrifia a a b a symud y llaeth a sudd oren. Mae'r llaeth a sudd oren trosiad yn awr yn torri i lawr, gan fod hynny yn cwpanau o fapiau hylif ac nid. Yn lle hynny mae angen i ni fynd i fynd i'r afael 10 ac rydym yn Mae angen i fynd i'r afael â 11, a yna perfformio y rhesymeg gyfnewid. Felly mae'r rhesymeg yr un fath, ond mae arnom angen ffordd ychydig yn wahanol o gael gafael ar newidynnau hynny. Ac felly yn y diwedd, yr hyn y mae'r rhaglen i edrych fel yn hyn. Yn swap.c copïo llythrennol a gludo y fersiwn gwyrdd. Ond mae angen i mi wneud un newid. Nid yw'n ddigon dim ond i newid cyfnewid. Pa llinell arall o god mae angen i mi newid? Yeah? GYNULLEIDFA: Ble mae'n ei gymryd y dadleuon. DAVID J. Malan: Lle mae'n cymryd ei ddadl. Felly, os wyf yn sgrolio i fyny i'r prif, yr wyf yn Ni all dim ond pasio yn x ac y, ac, yr wyf yn addo, yr olaf darn o gystrawen newydd heddiw. Mae angen i mi basio yn peidio x a y ond y cyfeiriad x ac y. Ac mae'n troi allan, y symbol bod yr awduron o C Dewisodd yw os ydych yn defnyddio ampersand yma, i beidio â ei gymysgu â'r ampersand bitwise, os ydych chi'n defnyddio ampersand yma ac yn ampersand yma, mae hyn ffigurau allan i chi, beth yw'r cyfeiriad x, efallai ei bod yn 10, beth yw'r cyfeiriad y, efallai ei bod yn 11, ac yn pasio rhai yn lle hynny. Felly, mae llawer i amsugno i gyd ar unwaith. Ond gadewch i ni weld nawr yn gyflym mewn ein pedair munud yn weddill lle y gall pethau fynd o chwith. Ac wrth fynd heibio, mewn gwirionedd Cymerais y llun yma, Cymerodd TF y llun yma y flwyddyn neu ddwy yn ôl. Felly, mae hyn yn y gornel cefn o Neuadd Fwyta Eliot. Efallai Awgrymiadau yw'r anoddaf pwnc yr ydym yn ymdrin yn CS50. Felly, os ydych yn poeni y math y llethr yn debyg efallai ei bod yn mwy o ffon hoci fel hyn, yn sylweddoli rydym yn fath o agosáu at uchafbwynt yn ran cymhlethdod cysyniadol. Ac yr wyf yn dod i fyny yma llun, oherwydd yr wyf yn tyngu i dduw, yn disgyn 1996, pan fyddaf yn cymryd CS50 gyda fy nghyd addysgu, Nishat Mehta, efe yn eistedd fi i lawr yn y cornel o'r Eliot D. Hall dros ginio, neu swper, neu rywbeth i roi cynnig i fy helpu i ddeall awgrymiadau. A dyma lle yr oeddwn yn wythnos ar ôl ei gyflwyno yn y ddarlith pan Yr wyf yn olaf yn deall awgrymiadau. A dwi'n obeithiol y hwn Bydd clicio lawer yn gynt i chi. Ond yn sylweddoli hyn yn hollol ymysg y pynciau mwy soffistigedig rydym wedi edrych ar. Ond mae'n ymhlith y rhai mwyaf pwerus. A phan fyddwch yn ei gael, 'i' 'n sylweddol i gyd jyst yn mynd i ddod yn olaf at ei gilydd. Felly gorffwys sicr nid yw'n gwneud Mae angen i'r holl sinc mewn heddiw. Felly dyma y rhaglen ddiwethaf ydym yn mynd i edrych ar. Ac rydym yn mynd i ben gyda cyflym tri munud o animeiddio clai a wnaed gan ein cyfaill, Nick Parlante. Dyma rhaglen, hynny ar y ddau uchaf llinellau datgan x amrywiol ac y. Mae'r ddau ohonynt yn gyfeiriadau o gyfanrifau, awgrymiadau AKA. Yna byddwn yn dyrannu digon cof i storio yn int ac yn ei storio y cyfeiriad o'r cof yn x. Felly, mae hyd yn oed yn symlach nag yr enghraifft o'r blaen. Rhowch bedair bytes o gof i mi, dyna maint o int, a rhowch y cyfeiriad hwnnw o x. Mae'r llinell yma'n golygu mynd i'r cyfeiriad yn x a rhowch ystyr bywyd, mae'r rhif 42 yno. Ond mae y llinell hon yn fy mhoeni. Seren y golygu mynd i'r cyfeiriad yn y, a rhowch y rhif anlwcus 13 yno. Pam ei bod yn beryglus, ar hyn o bryd yn y story-- er dweud yn gyflym yn ein cofnodion gwanhau Yma-- pam ei fod yn ddrwg i mi ddweud, ewch i'r cyfeiriad yn y? GYNULLEIDFA: Nid ydych wedi [Anghlywadwy]. DAVID J. Malan: Nid wyf wedi rhoi unrhyw beth yn y. Felly beth yw gwerth y, yn y fan hon yn y stori? Nid oes gennym unrhyw syniad. Mae'n rhywfaint o werth garbage ac nid yw ychwaith yn Binky gwybod. Pe gallem ben ar nodyn hwn. [VIDEO Playback] -Hey, Binky, deffro. Mae'n amser am hwyl pwyntydd. -Beth yw hwnna? Dysgu am awgrymiadau? O, nwyddau. -Well, I ddechrau arni, mae'n debyg ein bod mynd i angen cwpl awgrymiadau. -IAWN. Mae'r cod hwn yn clustnodi dau awgrymiadau sy'n gallu pwyntio at gyfanrifau. -OK, Wel yr wyf yn gweld y dau awgrymiadau, ond maent yn nid yw'n ymddangos i fod yn pwyntio at unrhyw beth. -bod Iawn. I ddechrau Awgrymiadau Nid oes pwynt i unrhyw beth. Y pethau y maent yn cyfeirio atynt yw Gelwir pointees a gosod i fyny yn gam ar wahân. -OH, Ar y dde, ar y dde. Roeddwn i'n gwybod hynny. Mae'r pointees ar wahân. Felly, sut ydych chi'n ddyrannu pointee? -OK, Wel y cod yn dyrannu mae pointee cyfanrif newydd, ac mae hyn yn rhan setiau x i bwyntio ato. -Hey, Sy'n edrych yn well. Felly, yn ei gwneud yn gwneud rhywbeth. -OK, 'N annhymerus' dereference y pwyntydd x i storio'r rhif 42 yn ei pointee. Ar gyfer tric hwn, bydd angen i mi fy ffon hud o dereferencing. -Eich Ffon hud o dereferencing? Uh, hynny, mae hynny'n wych. -Mae Beth mae'r cod yn edrych fel. 'N annhymerus' jyst yn gosod i fyny 'r rhif ac-- [POP SAIN] -Hey, Edrychwch yno mae'n mynd. Felly, yn gwneud dereference ar x dilyn y saeth i gael mynediad at ei pointee. Yn yr achos hwn, i storio 42 i mewn 'na. Hey, ceisiwch ddefnyddio i storio rhif 13 drwy'r pwyntydd arall, y. -IAWN. 'N annhymerus' jyst yn mynd dros yma i y, a chael y rhif 13 set i fyny. Ac yna yn cymryd y ffon o dereferencing a just-- [Swnyn SAIN] -OH, Hey nad oedd yn gweithio. Dweud, UH, Binky, nid wyf yn ei wneud meddwl dereferencing y yn syniad da, oherwydd osod fyny'r pointee yn gam ar wahân. Ac nid wyf yn credu ein bod byth yn gwneud hynny. -Hmm, Pwynt da. -Yeah, Dyrannwyd y pwyntydd, y, ond ni fyddwn byth yn ei osod i dynnu sylw at pointee. -Hmm, Sylwgar iawn. -Hey, Rydych yn edrych yn dda yno, Binky. Allwch chi drwsio fel bod y pwyntiau i'r un pointee ag x. -Sure, Yr wyf yn defnyddio fy ffon hud o aseiniad pwyntydd. -A Bod mynd i fod yn broblem, fel o'r blaen? -Dim, Nid yw hyn yn cyffwrdd y pointees. 'I jyst yn newid un pwyntydd i dynnu sylw at yr un thing-- [Neidio i SAIN] --as un arall. -OH, Rwy'n gweld. Nawr y pwyntiau i'r un lle ag x. Felly, aros, yn awr y yn sefydlog. Mae ganddo pointee. Felly, gallwch roi cynnig ar y ffon o dereferencing eto i anfon y 13 drosodd. -OH, OK, dyma mynd. -Hey, Edrych ar hynny. Nawr dereferencing gwaith ar y. Ac oherwydd bod y awgrymiadau yn cael eu rhannu bod un pointee, y ddau ohonynt yn gweld y 13. -Yeah, Rhannu, uh, beth bynnag. Felly, yr ydym yn mynd i newid lleoedd nawr? -OH, Edrychwch ein bod allan o amser. -But-- -Just Cofio'r tair rheol pwyntydd. Rhif 1, strwythur sylfaenol yw bod gennych pwyntydd, ac mae'n tynnu sylw drosodd i pointee. Ond mae'r pwyntydd a pointee ar wahân. Ac y gwall cyffredin yw sefydlu pwyntydd ond i anghofio i roi cynnig pointee. Rhif 2, dereferencing pwyntydd yn dechrau ar y pwyntydd ac yn dilyn ei saeth i gael mynediad at ei pointee. Fel yr ydym i gyd yn gwybod, mae hyn ond yn gweithio os oes yn pointee, pa fath o mynd yn ôl i reol rhif 1. Rhif 3, pwyntydd aseiniad yn cymryd un pwyntydd ac yn newid iddo i dynnu sylw at y un pointee ag pwyntydd arall. Felly, ar ôl yr aseiniad, y ddau awgrymiadau Bydd yn pwyntio at yr un pointee, weithiau sy'n cael ei alw rhannu. A dyna i gyd yna iddo, mewn gwirionedd. Ffarwelio nawr. [DIWEDD Playback] DAVID J. Malan: Dyna ni am CS50. Diolch i Athro Nick Parlante. Byddwn yn gweld chi yr wythnos nesaf. [CHWARAE CERDDORIAETH ELECTRONIG]