DAVID J. Malan: Mae hwn yn CS50 ac mae hyn yn ddechrau wythnos pedwar. Ac, bachgen, mae Volkswagen yn trafferth i gyd oherwydd y meddalwedd. Gadewch i ni gymryd golwg. [VIDEO Playback] -Cars, Y cymeriadau smartest yn y ffilmiau Cyflym a Furious. Mae'r automaker Almaeneg wythnos Canfu Volkswagen ei hun yng nghanol sgandal o cyfrannau a allai fod yn droseddol. -Volkswagen Yn iachus ar gyfer biliynau mewn dirwyon, taliadau troseddol posibl ar gyfer ei swyddogion gweithredol, fel y mae'r cwmni yn ymddiheuro ar gyfer rigio 11 miliwn o geir i helpu i guro profion allyriadau. Modelau diesel -Certain oedd cynllunio gyda meddalwedd soffistigedig bod gwybodaeth a ddefnyddir gan gynnwys y lleoliad y llywio a cherbydau gyflymu'r i benderfynu ar y car oedd cael profion allyriadau. O dan yr amgylchiad, yr injan Byddai lleihau allyriadau gwenwynig. Ond y car yn rigged i ffordd osgoi pan oedd yn cael ei yrru. Allyriadau cynyddu 10-40 amseroedd uchod lefelau EPA derbyniol. [DIWEDD Playback] DAVID J. Malan: Felly gadewch i ni yn edrych ar hyn a gweld yn union sut mae hyn allai gael eu rhoi ar waith a sut y gallai hyn effeithio ar cymaint o geir fel hyn. Felly, yn fy llaw dyma y wasg rhyddhau a gyhoeddwyd gan y EPA-- yr Amgylchedd Asiantaeth Diogelu a oedd yw'r asiantaeth reoleiddio Unol Daleithiau sy'n ymdrin pryderon amgylcheddol, ac yna bydd y gwir hysbysiad cyfreithiol a oedd yn anfon at Volkswagen ychydig ddyddiau yn ôl. Felly yr EPA yn ysgrifennu, ac yn datgelu bellach yn gyhoeddus, mae meddalwedd soffistigedig algorithm ar rai Cerbydau Volkswagen detects pan fydd y car yn mynd profi allyriadau swyddogol ac yn troi gollyngiadau llawn rheolaethau ar unig yn ystod y prawf. Effeithiolrwydd cerbydau hyn llygredd dyfeisiau rheoli allyriadau yn fawr gostwng yn ystod yr holl gyrru arferol sefyllfaoedd. Mae hyn yn arwain mewn ceir sy'n bodloni safonau yn y labordy neu brofion orsaf, ond yn ystod gweithrediad arferol allyrru oxides-- nitrogen neu NOx-- ar hyd at 40 gwaith y safon. Mae'r meddalwedd a gynhyrchwyd gan Volkswagen yn ddyfais dyfyniad unquote, trechu, fel y diffinnir gan Glân Ddeddf Aer yn yr Unol Daleithiau. Maent yn mynd ymlaen i ddweud bod yr Atwrneiaeth Barhaus a asiantaeth arall heb ei orchuddio y ddyfais trechu meddalwedd ar ôl dadansoddiad annibynnol gan ymchwilwyr ym West Prifysgol Virginia. Llygredd NOx yn cyfrannu at nitrogen deuocsid, osôn ar lefel y ddaear, a mater gronynnol mân. Dod i gysylltiad â hyn llygryddion wedi cael ei gysylltu gydag ystod eang o effeithiau iechyd difrifol, gan gynnwys mwy o asthma ymosodiadau a anadlu eraill afiechydon a all fod yn ddigon difrifol i anfon pobl i'r ysbyty. Dod i gysylltiad â osôn a mater gronynnol hefyd bod yn gysylltiedig â cynamserol marwolaeth o ganlyniad i anadlu cysylltiedig neu gardiofasgwlaidd effeithiau cysylltiedig. Plant, yr henoed, pobl ag clefyd anadlol preexisting yn arbennig mewn perygl ar gyfer effeithiau iechyd llygryddion hyn. Digon yw dweud, 'i' eithaf difrifol. A gadewch i ni fynd ymlaen i ddarllen dim ond un dyfyniad mwy ac yna byddwn yn edrych ar y goblygiadau sylfaenol o hyn yng nghyd-destun car. Yn benodol, Volkswagen cynhyrchu a'u gosod meddalwedd yn yr hyn a elwir rheolaeth electronig module-- neu ECM-- o cerbydau hyn sy'n synhwyro pan fydd y cerbyd yn cael ei brofi am cydymffurfio â safonau allyriadau EPA. Yn seiliedig ar wahanol fewnbynnau gan gynnwys y lleoliad y llyw, cerbyd cyflymder, hyd y peiriant gweithredu, a gwasgedd barometrig, mewnbynnau hyn yn fanwl olrhain y paramedrau o'r weithdrefn prawf ffederal a ddefnyddir ar gyfer profi allyriadau ar gyfer ardystio EPA ddibenion. Yn ystod profion allyriadau EPA, meddalwedd cerbydau ECM Rhedodd meddalwedd sy'n cynhyrchu canlyniadau allyriadau cydymffurfio. Ar bob adeg arall, mae'r Meddalwedd ECM cerbyd Rhedodd ffordd ar wahân graddnodi oedd yn lleihau effeithiolrwydd y system rheoli allyriadau yn gyffredinol, yn benodol y catalytig detholus gostyngiad yn y NOx Lean trap-- sy'n byddwn yn gweld tua mewn munud. O ganlyniad, mae allyriadau NOx cynyddu ffactor o 10 hyd at 40 gwaith uwch na'r lefelau cydymffurfio EPA yn dibynnu ar y math o gylchred gyrru. Felly beth mae hyn yn ei olygu mewn gwirionedd, a'r cod ffynhonnell at redeg meddalwedd ar y Volkswagen i beidio ganddo ac eto ei ddatgelu yn gyhoeddus, yw bod, yn effeithiol, mae hyn yn cyfwerth yn rhywle yno y tu mewn o god Volkswagen. Os ydych yn cael eu profi, ac os bydd y car canfod ffactorau amgylcheddol penodol fel y llyw safle neu y mudiad neu brin o hynny y car neu unrhyw nifer o ffactorau eraill sy'n cael eu Tybiwyd ar hyn o bryd i fod yn rhan o'r fformiwla hwn, maent yn syml troi ar allyriadau llawn rheoli. Mewn geiriau eraill, maent yn dechrau allyrru llai o'r llygryddion. Else, ym mhob sefyllfa arall pan nad yw'n canfod fel rhai yn y labordy, eu bod nid yn unig yn ei wneud. Ac fel y gallwch symleiddio hyn i fwy pseudocode concrid gyda rhywbeth fel hyn. Os yr olwynion yn troi, ond mae'r Nid olwyn lywio yw, awgrymog bod y car ar rai math o gylchdroi silindr ond mewn rhyw fath o warws cael ei brofi, Yna, yn ymddwyn fel y Byddai EPA hoffi i chi. Fel arall, ni ei wneud. Felly, gadewch i ni edrych ar fideo byr sy'n yn edrych ar yr hyn y goblygiadau yn o hyn mewn gwirionedd yn fecanyddol. [VIDEO Playback] -Last Dydd Gwener cyhoeddodd y EPA fod rhai Ceir Volkswagen Audi a wnaed rhwng 2009 ac eleni yn defnyddio dyfais drechu hyn a elwir yn i fynd o amgylch deddfau allyriadau cynllunio i gadw'r aer glân. Ond beth mae hynny'n ei olygu yn union? Wel, ceir modern wedi dwsinau o gyfrifiaduron y tu mewn iddynt. Ac mae rhai o gyfrifiaduron rhai helpu i gydlynu swyddogaethau o'r peiriant ar gyfer optimwm perfformiad tra'n sicrhau nad oes gormod o garbage dod allan o'r bibell gwacáu. Maen nhw wedi bod yn gweithio mewn gwirionedd y ffordd hon am sawl degawd bellach. Yn y bôn, mae pob rhan o injan car modern Mae gan synhwyrydd neu reolwr arno, a chyfrifiaduron hyn yn darllen yn y data miloedd o gwaith yr addasiadau eiliad gwneud fel y gymhareb o danwydd i'r aer sy'n mynd i mewn i'r silindrau. Mae'r rhain yn Volkswagen twyllo a modelau Audi yn disel, a disel wedi un yn fwy cyfrifiadur yn bwysig iawn paramedrau a reolir, sydd yn faint o danwydd heb ei losgi yn mynd i mewn i'r nwyon llosg. Nawr bod swnio'n ddrwg. Nid yw'n swnio fel fyddech am tanwydd heb ei losgi yn mynd i mewn i'r nwyon llosg. Ond yn yr achos diesel, mae gennych rywbeth Gelwir trap NOx sy'n yn ddyfais sy'n amsugno a thrapiau ar gyfer ocsidau nitrogen sy'n llygryddion a fyddai fel arall yn mynd i mewn i'r atmosffer. Ac effaith y trap NOx cael ei wella gyda thanwydd unburned. Felly dyfais drechu yn rhaglen arbennig y tu mewn cyfrifiaduron hyn all ei gwneud yn edrych fel y car yn cwrdd allyriad safonau hyd yn oed pan nad yw'n gwneud hynny. Roedd gan Volkswagen broblem ar ei ddwylo. Mae ei beiriannau diesel yn hysbys ar gyfer cael economi tanwydd mawr, ond mae'r fagl NOx ond yn gweithio'n dda pan fydd mwy o danwydd yn cael ei ddefnyddio. Felly byddai'r car canfod, yn arfer hon dyfais trechu, pan gafodd ei cael allyriadau prawf, y byddai'n defnyddio mwy o danwydd, yn gwneud y gwaith trap NOx yn dda, Byddai gollyngiadau yn iawn. Ond yna byddwch yn cael ar y ffordd, y ddyfais yn troi i ffwrdd, rydych yn llosgi llai o danwydd ond eich bod yn rhoi cymaint â 40 gwaith fwy o lygryddion i'r atmosffer. Ond sut y gwnaeth y Heck y car yn gwybod ei bod yn cael eu profi ar gyfer cydymffurfio allyriadau? Dywed yr EPA ei fod yn soffistigedig system sy'n gwirio pethau fel sefyllfa olwyn lywio, cyflymder, pa mor hir oedd y peiriant ymlaen, a hyd yn oed y gwasgedd atmosfferig. Mewn geiriau eraill, roedd unrhyw ffordd roedd hyn yn ddamweiniol oherwydd bod y feddalwedd yn a gynlluniwyd yn ofalus iawn i ganfod prawf allyriadau swyddogol. Dyna rai eithaf difrifol twyll a dyna pam Volkswagen yn trafferth mor ddifrifol. Yn wir, mae eu Prif Swyddog Gweithredol, Martin Winterkorn, dim ond camu i lawr. Felly beth sy'n digwydd nesaf? Wel, os ydych chi'n un o'r hanner miliwn Jettas diesel, Beatles, golfs, Passats, neu Audi A3s effeithio, y newyddion da yn cael ei fod eich car yn dal i fod yn ddiogel i yrru. Nid oes rhaid i chi ei roi i ffwrdd hyd nes y Volkswagen yn cyhoeddi adalw. Ond ar ryw adeg eu bod yn yn ôl pob tebyg yn mynd i gael i ddiweddaru'r meddalwedd y tu mewn i'ch car. Pan fydd hynny'n digwydd i chi efallai cael llai o filltiroedd y tanc. Cyfreithwyr eisoes yn paratoi ar gyfer chyngawsion gweithredu dosbarth felly efallai y perchnogion yn cael iawndal ar ryw adeg yn y dyfodol. Ond nid yw mynd i yn digwydd yn y dyfodol agos. [DIWEDD Playback] DAVID J. Malan: Felly mae hyn mewn gwirionedd yn codi cwestiwn darlun mwy diddorol ag i ymddiried ynddo. Iawn? Mae pob un ohonom wedi iPhones neu Androids neu rhywbeth yn ein pocedi fwyaf tebygol y dyddiau hyn, neu gliniaduron ar ein lap sydd yn Meddalwedd sy'n rhedeg ei wneud gan Apple a Microsoft a sypiau o gwmnïau eraill. Ond sut ydyn ni'n gwybod bod yr hyn cynnyrch meddalwedd rhain yn ei wneud yw'r hyn mae'r rhain mewn gwirionedd cwmnïau yn dweud eu bod yn ei wneud? Er enghraifft, pwy sydd i yn dweud bod bob tro y byddwch yn gwneud galwad ffôn ar eich iPhone neu Android ffôn neu debyg, bod y rhif ffôn nad hefyd yn yn cael eu llwytho i fyny i weinydd rhywfaint cwmni oherwydd rhai rhaglen eich bod wedi ysgrifenedig, boed yn y gweithredu system ei hun fel iOS neu Android, neu am eich bod wedi llwytho i lawr rhai trydydd parti app hynny rywsut yn gwrando i bopeth yr ydych yn teipio i mewn neu popeth rydych yn ei ddweud mewn gwirionedd. Sut ydych chi'n gwybod bod, pan fydd rydych guys yn rhedeg chlang neu Gwneud i lunio eich meddalwedd eu hunain yn CS50, sut a ydych staff hynny CS50 ei hun, drwy gyfrwng y llyfrgell CS50, Nid yw wedi bod yn logio pob llinyn yr ydych wedi gotten erioed neu bob modfedd eich bod wedi gotten erioed? Wel, fe allech chi yn sicr yn edrych yn y cod ffynhonnell ar gyfer rhywbeth fel y llyfrgell CS50, byddwch yn Gallai edrych ar y cod ffynhonnell ar gyfer system weithredu Linux rhedeg ar IDE CS50. Ond cyflwyniad anhygoel Rhoddwyd nôl yn 1984 sy'n derbyn y Wobr Turing gan gwyddonydd cyfrifiadurol enwog iawn hysbys as-- enw Ken Thompson sy'n Derbyniodd y Wobr Turing a oedd yn fath o gyfrifiadur gwyddoniaeth yn Gwobr Nobel, os gwnewch, am ei waith ar system weithredu o'r enw Unix, sy'n debyg iawn o ran ysbryd i'r hyn rydym yn ei ddefnyddio sydd yn Linux. A'r cwestiwn gofynnodd yn ei araith dderbyn, yn y bôn sy'n gosod y fframwaith ar gyfer blynyddoedd a blynyddoedd o drafod am ymddiriedaeth a diogelwch, roedd hyn. I ba raddau y dylai un ymddiriedolaeth a datganiad bod program-- darn o software-- yn rhad ac am ceffylau Trojan? Efallai ei bod yn bwysicach i ymddiried y bobl a ysgrifennodd y feddalwedd. Ac yn wir, rydym wedi cysylltu i'r sgwrs ei fod ef Rhoddodd wrth dderbyn y wobr hon yn y '80au ar wefan CS50 yn o dan y dudalen Darlithoedd ar gyfer heddiw. Oherwydd yr hyn y byddwch yn gweld yw ei fod mewn gwirionedd yn rhoi enghraifft gweddol syml o sut hyd yn oed casglwr fel chlang neu beth bynnag crynoadyddion mae eraill wedi'u defnyddio yn y gorffennol, beth os wreiddio yn y compiler ydym ni ein hunain yn defnyddio ychydig os cyflwr sy'n dweud ei hanfod, os byddwch yn sylwi bod y cod hwn yn defnyddio y swyddogaeth GetString neu'r GetInt swyddogaeth, mynd yn ei flaen a rhowch yn ei le drws cefn neu geffyl Trojan fel bod y rhaglen Erbyn hyn, mae rhai seroau a rhai sy'n gwneud rhywbeth maleisus. Logio eich holl keystrokes, llwytho i fyny data hwnnw i ryw gweinydd, neu yn wir unrhyw beth. A beth Ken Thompson yn mynd ymlaen i wneud yn ei sgwrs yw dangos hyd yn oed os oes gennych fynediad i'r ffynhonnell cod casglwr sy'n faleisus allai fod yn gwneud hyn, nid oes gwahaniaeth, oherwydd mae cyw iâr hwn a'r wy realiti y mae llawer yn y gorffennol flynyddoedd lle crynoadyddion cael eu defnyddio i lunio eu hunain. Mewn geiriau eraill, ffordd yn ôl pan fydd rhywun Roedd i wedi ysgrifennu y compiler cyntaf. Ac wedi hynny, unrhyw adeg y maent wedi eu diweddaru casglwr drwy newid ei cod ffynhonnell, ychwanegu nodweddion a recompiling ei i bobl fel ni ddefnyddio, yn dda, maent yn eu defnyddio hen fersiwn o'r compiler i lunio'r newydd fersiwn o'r compiler. Ac os ydych yn cymryd golwg yn y sgwrs a roddodd, byddwch yn gweld hynny oherwydd o hynny cylchogrwydd, gallwch chi mewn gwirionedd yn cael bugs neu Ceffylau Caerdroia gwreiddio mewn meddalwedd rydym yn ei ddefnyddio. A hyd yn oed os ydych yn edrych ar y cod ffynhonnell ar gyfer y rhaglenni hynny, efallai na hyd yn oed fod yn amlwg oherwydd bod y twyll mewn gwirionedd mewn rhyw fersiwn hŷn o compiler sydd byth ers hynny wedi bod yn chwistrellu y bygythiad i mewn i'n meddalwedd. Sydd ond yn dweud, rydym yn Ni all 'n sylweddol, ac ni ddylai meddalwedd ymddiriedolaeth yn rhedeg ar ein gliniaduron neu ffonau neu unrhyw nifer o leoedd. Ac yn wir, yn nes ymlaen yn y semester hwn pan rydym yn dechrau siarad am rhaglennu ar y we ac mewn gwirionedd ddechrau adeiladu ceisiadau ar y we i ni ein hunain, byddwn yn siarad am y rhain bygythiadau ac eraill. Yn awr, efallai y byddwch wedi meddwl tybed a sylwi bod Darth bach bach Vader yn y clipiau sy'n Mae'r Ymyl yn dangos yno am Volkswagen. Os nad ydych erioed wedi ei weld, yr wyf yn meddwl y dylem ysgafnhau y naws gan fod hyn i gyd ddigalon iawn ac yn frawychus. Rydw i'n mynd i edrych yn ôl yn Super Bowl 2011 pan fydd masnachol gan Volkswagen-- ac mae hyn bron yn eu gwneud yn likable again-- ddarlledwyd am y tro cyntaf ar y teledu. Mae'n y 60 eiliad clip fy mod yn credu y byddwch yn ei fwynhau. [VIDEO Playback] [CERDDORIAETH - THEMA O "WARS STAR"] [Ci'n cyfarth] [CAR YN CYCHWYN] [DIWEDD Playback] DAVID J. Malan: Yeah. Nid oeddwn ond yn gwirio. Y car hwnnw ar y rhestr o droseddau. Iawn. Felly, rydym yn edrych ar rai pseudocode funud yn ôl. A dyma 'na fwy snippet cod pseudocode ein bod wedi gweld ychydig o weithiau hyd yn hyn. A gadewch i ni ddefnyddio hyn yn gyfle yn awr i gyflwyno rhaglennu newydd techneg a wnaethom gweld algorithmically yr wythnos diwethaf pan edrychasom ar fath uno. Ond gadewch i ni ffurfioli ei a gweld sut efallai y byddwn yn ei ddefnyddio mewn cod gwirioneddol, ac yna rydym yn mynd i ddefnyddio hwn techneg i lawr y ffordd fwyaf debygol o ddatrys problemau penodol eraill. Felly, mae hyn yn un o'r rhaglenni cyntaf i ni erioed ysgrifennodd, er mewn cod pseudocode. A beth y rhaglen hon ganiateir i ni wneud cwrs oedd dod o hyd Mike Smith mewn llyfr ffôn. Ac yn sylwi mewn llinellau penodol wyth a 11 a oedd y datganiad hwn Go I. Ac yn wir, mae rhai ieithoedd, C yn eu plith, ei wneud mewn gwirionedd yn cael datganiad bod yn llythrennol ewch i sy'n eich galluogi i neidio i'r llinell benodol. Mae wedi gwgu arno oherwydd gellir ei gam-drin yn hawdd iawn a gallwch ddechrau neidio ar eich rhaglen dros y lle yn hytrach na i ddefnyddio'r math o rhesymeg a llif rheoli ein bod wedi defnyddio hyd yn hyn gyda dim ond dolenni a'r amodau ac yn y blaen. Ond gallwn symleiddio'r algorithm hwn yn y cod pseudocode fel a ganlyn. Yn hytrach na hyn ailadroddol neu ddull looping lle rydym yn cadw mynd yn ôl ac yn ôl ac yn ôl i linell tri, pam nad ydym yn unig fath o punt a mwy Yn gyffredinol, yn dweud yn unol saith a 10, dim ond yn cymryd lle dau rheiny parau o linellau gyda, arall os Smith yn gynharach yn y llyfr yr ydym chi helpu chwilio am Mike yn y chwith hanner y llyfr. Arall os Smith yn ddiweddarach yn y lyfr, chwiliwch am Mike yn yr hawl hanner y llyfr. Ac yn sylwi eisoes y cylchogrwydd. Iawn? Im 'yn chwilio am Mike yn y llyfr ffôn ac yna Yn y pen draw taro efallai llinell saith neu efallai llinell 10 ac mae fy cyfarwyddyd i mi fy hun yn chwilio i Mike yn hanner y llyfr ffôn. Wel, sut mae chwilio am Mike? Rwyf yn y canol chwilio am Mike, pam a ydych yn fath o anfon i mi mewn cylch? Ond mae hynny'n iawn oherwydd mae'r hyn sy'n digwydd i faint y broblem, fel yr ysgrifennwyd yn unol 7 ac 10? Nid ydym yn jyst yn deud chwilio i Mike, chwiliwch am Mike. Ni ddim yn dweud yn benodol beth? Chwilio am iddo ef yn ystod hanner chwith yr hanner cywir sydd i bob pwrpas hanner maint y broblem. Felly mae'n iawn ein bod yn fath o cymryd rhan mewn cylchogrwydd hwn, ddadl y cylchlythyr hwn, oherwydd o leiaf rydym yn gan wneud y broblem yn llai ac yn llai. Ac yn y diwedd rydyn ni'n mynd i gyrraedd bod achos sylfaenol hyn a elwir yn lle rydym wedi dim ond un dudalen left-- fel ein gwirfoddolwr yr wythnos ddiwethaf did-- roedd gennym un dudalen i'r chwith ac yna nid ydym yn ei wneud rhaid cadw chwilio am Mike Smith oherwydd ei fod yn naill ai ar y dudalen neu os nad yw'n. Felly, sut y gallwn weithredu y syniad hwn, mae hyn yn fath o cylchogrwydd mewn cod gwirioneddol? Wel, gallwn trosoledd techneg sy'n ei adnabod yn gyffredinol fel dychweliad. Ac rydym wedi gweld hyn yn y pseudocode ar gyfer math uno yr wythnos diwethaf. Dwyn i gof bod hwn oedd y pseudocode ar gyfer math uno. Mae'n dadlau hyd yn oed yn symlach na swigod neu dethol neu fewnosod fath unig o ran symlrwydd gallwch fynegi ei ag ef. Ond mae hynny oherwydd rydym yn fath o circularly gan ddywedyd, chwilio am rywbeth trwy chwilio amdano eto. Ond rydym yn chwilio naill ai ar yr hanner chwith neu hanner cywir ac yna yn y pen draw rydym yn uno yn yr achos hwn. Ond yma, hefyd, gyda y rhai ddwy linell yn didoli, wnaethom ni eto yn cael y syniad o dychweliad. Ac diriaethol beth mae hyn yn ei olygu, yng nghyd-destun algorithm, yw bod algorithm dychweliadol yn os yw'n defnyddio neu'n galw ei hun. Neu yn nhermau C, swyddogaeth yw recursive-- swyddogaeth o'r enw foo yn recursive os foo, rhywle yn ei cod ffynhonnell, galwadau y foo swyddogaeth ei hun. A dyna ddrwg os yw pob foo byth yn ei wneud yn galw ei hun dro ar ôl tro. Mae'n iawn os foo yn y pen draw yn dod i ben, fel y mae uno didoli, drwy ddweud, arhoswch funud, os yw hyn broblem yn super bach, er enghraifft, neu yr wyf yn dod o hyd iddo pwy rwy'n chwilio am, dim ond yn dychwelyd. Peidiwch â recursively, peidiwch gylchol galw fy hun eto. Ac felly gadewch i ni edrych ar sut y gallai hyn weithio mewn gwirionedd. Felly, yr wyf i'n mynd i fynd yn ei flaen ac yn agored i fyny dwy enghraifft cod ffynhonnell yma. Cael ei alw'n un o'r rhain sigma 0. Ac nid yw hyn yn gwbl recursive, ond gadewch i ni gymryd a edrych ar yr hyn y rhaglen hon yn ei wneud. Rwyf wedi tynnu allan yr holl sylwadau ohono ond mae pob y cod ffynhonnell ar CS50 yn Mae gan y wefan sylwadau os ydych yn eisiau darllen drwyddo eto yn nes ymlaen. A gadewch i ni wneud un neu ddau o bwyll yn gwirio yma. Felly, ar frig y cod hwn, rydym wedi cynnwys CS50.h. Beth mae hyn yn ei wneud? Pam ei fod yn fan hyn? Yn nhermau lleygwr rhesymol i. Beth mae'n ei wneud? Yeah. GYNULLEIDFA: Felly swyddogaeth honno GetInt yn gweithio. DAVID J. Malan: Felly y y swyddogaeth GetInt yn gweithio. Oherwydd tu mewn hon ffeiliau, CS50.h, a oedd yn byddwn yn gweld cyn bo hir mewn ran ei cod ffynhonnell, Mae criw o swyddogaethau declared-- GetInt, GetString, a bagad o others-- ac oni bai gennym mewn gwirionedd fod Cynnwys llinell, nid yw'r chlang compiler yn mynd i wybod ei fod yn bodoli. Ac un peth yn wir ar gyfer llinell dau lle int ei ddiffinio printf, sydd yn swyddogaeth byddwn yn cadw defnyddio gryn dipyn. Yn awr, llinell pedwar ymddangos ychydig yn ffynci oherwydd mai dim ond un leinin. Mae'n cael hanner colon, dim cyrliog bresys, dim cod tu mewn iddo. Ond yr hyn a wnaethom yn galw y peth hyn yn yr wythnosau diwethaf? Yeah. Felly prototeip. A pham mae gennym prototeip sy'n ymddangos i fod ychydig yn ddiangen fel arfer oherwydd ein bod fel arfer gweld y swyddogaeth eto yn nes ymlaen yn y ffeil, dde? Felly pam yr ydym yn have-- rydych yn unig crafu eich pen, ond byddaf yn cymryd ei. Yeah. GYNULLEIDFA: [Anghlywadwy] swyddogaeth ar ôl y prif. DAVID J. Malan: Yn union. Fel bod y compiler gwybod i chi yn y pen draw yn diffinio neu'n gweithredu swyddogaeth honno ar ôl prif, yn ôl pob tebyg. Felly chlang ac mae'r rhan fwyaf crynoadyddion yn fath o fud a byddant yn unig yn gwybod yr hyn yr ydych yn dweud wrthynt. Ac os ydych am ddefnyddio swyddogaeth o'r enw sigma, yn eich dysgu y casglwr yn well ei bod yn bodoli o flaen llaw. Yn awr, prif hun, hyd yn oed er 'i' criw o linellau, yn eithaf cyfarwydd, gobeithio erbyn hyn. Mae'n got a do tra dolen y mae ei bwrpas mewn bywyd yma mae'n debyg yw i gael cyfanrif positif oddi wrth y defnyddiwr. A dim ond cadw aflonyddu arno neu hi nes eu bod yn cydweithredu. Yna, yn unol 16 Mae gen i alwad diddorol. IntAnswer. Pa ar y llaw chwith ochr yn rhoi i mi yn Int sy'n gallu store-- elwir Answer-- sydd yn mynd i storio, mae'n debyg, mae'r gwerth dychwelyd sigma. Felly sigma yn unig yw enw mympwyol ond ystyrlon fy mod i wedi rhoi i swyddogaeth y mae ei bwrpas mewn bywyd yw cymryd un argument-- byddwn yn galw ei achos-- N yn hwn a dim ond i gymryd y swm o y rhif hwnnw ynghyd pob rhif positif sy'n llai nag y mae'n. Felly os wyf yn pasio yn y nifer 2 i sigma, yr wyf am ychwanegu 2 plws 1 yn ogystal â 0-- Nid yw 0-- fel bod yn rhoi i mi 3. Os byddaf yn pasio mewn 3 i sigma, yr wyf am 3 a 2 ac 1, sy'n rhoi i mi 6. Ac yn y blaen. Felly dim ond yn ychwanegu i fyny yr holl rhifau llai na neu'n hafal iddo. Yn awr, i lawr yma Im 'jyst yn mynd argraffu'r yr ateb. Felly, fel gwiriad pwyll gyflym, gadewch i ni gwneud sigma 0-- sigma slaes dot 0-- a gadewch i mi deipio i mewn 2. Ac yr wyf yn wir yn cael 3. Gadewch i mi deipio mewn 3. Yr wyf yn wir yn cael 6. Ac os gall unrhyw un ei wneud y math yn gyflym, os wyf yn gwneud 50 beth ydw i'n mynd yn ei gael? GYNULLEIDFA: [Anghlywadwy]. DAVID J. Malan: Wel, dim. Ond 1,275 sydd yn eithaf agos. Felly, mae hyn yn ganlyniad i wneud 50 ynghyd â 49 plws 48 a mwy 47 plws 46 yr holl ffordd i lawr i 1. Felly dyna i gyd sigma ei wneud. Ond gadewch i ni weld sut rydym wedi rhoi ar waith yn awr. Felly lawr yma yw swyddogaeth ei hun. Ac nid yw'n ymddangos bod hyn yn cael unrhyw beth i'w wneud â dychweliad eto. Yn wir, rydym yn defnyddio hen dechneg ysgol. Rydw i'n ymgychwyn swm newidyn enw i sero, yna mae gen i foreloop yma, ac rwy'n datgan Int enw Rwyf, a'i osod cyfartal i 1-- er y gallwn i ei osod yn hafal i sero, ond ers i mi mod yn gwneud hynny, sy'n gofalu os yw'n sero neu un. Mae'n mynd i gael unrhyw effaith. Felly rwy'n ailadrodd cyn belled gan fy mod yn llai na neu'n hafal i m, sy'n yw'r ddadl a basiwyd mewn. Ac yna Fi jyst cadw incrementing I. A mewnwelediad o'r ddolen i gyd rwy'n ei wneud yn ei wneud swm yn ogystal hafal I. Ac mae hynny'n fwriadol. Dydw i ddim am ei wneud, yn hyn o achos, fel swm a mwy a mwy. Rwyf eisiau ychwanegu gwirionedd gwerth cyfredol i mi sy'n cadw mynd yn fwy ac yn fwy ac yn fwy at y cyfrif yn olynol. Ac yna byddaf yn dychwelyd swm. Ac felly ateb yn cael y swm gwerth. Ac yna yr wyf yn ei hargraffu. Felly mae 'na gyfle fan hyn, fodd bynnag, at y math o symleiddio cod hwn gysyniadol a'r math o ergyd un i ' meddwl o ran y symlrwydd er ei fod yn cymryd amser i ddidoli o'r gwerthfawrogi pam mae hyn yn bwerus yn y esiamplau bach. Dyma sigma one-- felly mae'r ail fersiwn o'r cod hwn. Mae popeth i fyny top yn union yr un fath, felly yr un stori yn berthnasol fel o'r blaen. Ond yn awr gadewch i ni edrych ar y gweithredu sigma sy'n Rydw i wedi ei dreulio o dipyn i lawr i ddim ond y rhain lines-- pedair llinell o god, mewn gwirionedd, yn ogystal â rhai braces cyrliog a gofod gwyn. Ond beth ydw i'n ei wneud? Os yw m yn llai na neu'n hafal i sero, mae angen i mi fath o drin yr achos hwnnw super syml. Ac os ydych yn llaw i mi sero neu unrhyw beth negyddol sydd ychydig yn rhyfedd, Im 'jyst yn mynd i fympwyol ond yn dychwelyd sero gyson. Nid wyf am y peth hyn i fynd i mewn i rai anfeidrol 'n annaearol dolen oherwydd gwerth negyddol. Felly, Im 'jyst yn dweud, os byddwch yn rhoi i mi sero neu lai, Im 'yn dychwelyd sero. Ond mae hynny'n dda oherwydd dyna bod un dudalen o'r llyfr ffôn sydd ar ôl. Rydw i'n brathu oddi ar broblem benodol iawn ac nid galw rhywbeth recursively. Ond mewn llinell 31, yr hyn Nid wyf yn ymddangos i fod yn ei wneud? Mae'r cromfachau yn unig cadw pethau, gobeithio, ychydig yn gliriach. Ond yr holl rwy'n ei wneud yw fy mod dychwelyd m-- beth bynnag ydych yn llaw me-- yn ogystal â'r gwerth m-- ddrwg gennym, a gwerth sigma m minws 1. Felly beth mae hyn yn ei olygu? Os byddwch yn rhoi rhif 3 mi fel mewnbwn, yr ateb Rwyf am gael yn y pen draw yw 6 gan fod 3 a 2 ac 1 yn rhoi i mi 6. Ond sut ydw i'n meddwl am sut y cod hwn yn rhedeg? Y tro cyntaf yr wyf yn galw sigma ac yr wyf yn pasio yng ngwerth 3, hynny fel dweud ar ddarn o bapur, dyma y gwerth 3 ac rwyf wedi bod yn pasio hyn fel sigma. 3 yn amlwg heb fod yn llai na 0, felly Nid yw cyflwr OS yn berthnasol. Mae'r ARALL wneud. Felly, beth ddylwn i ei wneud? Yr wyf am ddychwelyd m, sef 3, yn ogystal â sigma m minws 1. Felly, gadewch i mi gadw golwg ar hyn. Rydw i'n mynd i roi hyn darn o lawr bapur. A beth gwerth, i fod yn glir, a wyf yn mynd i basio i mewn i sigma yn y fan hon yn y stori? Pa rif? 2, dde? 3 minws 1 yw 2. Felly, Fi jyst angen ychydig sgrap o bapur yma. Felly, yn awr yn cael elwir sigma eto. Ac yr wyf wedi rhoi yn fwriadol i lawr hwn am ei fod yn math o fel oedi bod fersiwn o'r stori oherwydd erbyn hyn rwy'n canolbwyntio ar arwydd o m minws 1. Felly m yn 3, m minws 1 yw 2. Felly dyma yw 2 fy mod i wedi ei basio. 2 yn amlwg heb fod yn llai na 0 fel nad yw achos yn berthnasol. Else Dychwelaf m, sef hwn beth, yn ogystal â sigma o'r hyn werth? Felly os sigma o 1-- gan fod m yn ar hyn o bryd 2, felly 2 minws 1 yw 1. Felly, yn awr Fi jyst gwerth 1. Im 'jyst pasio rhif 1 i'r sigma-- swyddogaeth neu fy hun Yma-- felly mae 1 yn amlwg nid llai na sero, yn dal yn berthnasol. Dychwelyd Arall 1 plws sigma o'r hyn? 0. Felly gadewch i mi dim ond cofiwch hynny. 'N annhymerus' yn mynd yn ôl at hynny yn nes ymlaen. Nawr rydw i'n mynd i fynd yn ei flaen a jot i lawr y rhif 0, oherwydd dyna fy nadl neu paramedr. Im 'yn llwyddo yn y nifer 0 ac yn olaf y broses hon o ychydig ailadrodd fy hun ad nauseum yn peidio oherwydd yr hyn ydw i'n syth yn ei wneud unwaith y byddaf yn gweld hyn 0? Dychwelaf sero. Felly, yn awr mae'n rhaid i chi ail-ddirwyn y stori. Os byddaf yn nawr yn mynd yn ôl mewn amser, beth oedd y peth mwyaf diweddar Fe wnes os oeddech yn llythrennol ailddirwyn fideo? Rydw i'n mynd i godi'r mwyaf diweddar 1 ac mae hynny'n rhoi i mi 1 plws 0 yw 1. Os byddaf yn cadw ailddirwyn y stori, mae hynny'n mynd i roi i mi 2 a gwerth rhedeg hyn, sydd 1. Felly dyna 3. Ac yna dwi'n mynd i gadw ailddirwyn. Pan fyddaf yn rhoi i lawr yn gyntaf y rhif 3-- felly 3 ynghyd â 3 yn rhoi i mi 6. Ac yn awr, os ydych wedi hailddirwyn y fideo hyd at y pwynt hwn, hwn oedd y iawn cwestiwn cyntaf a ofynnais. Pan gaiff ei basio 3, beth yw sigma o 3? Mae'n wir 6, mae'r swm o yr holl darnau hyn o bapur. Felly, os nad yn cymryd ychydig amser i lapio eich meddwl o gwmpas, mae hynny'n iawn. Ond yn ystyried ei fod yn little-- iddo yn fwriadol iawn fy mod stacio rhifau hyn ar ben ei gilydd. Mae'n fath o fel cael memory-- cofnod mewn amser, fel sgwrwyr mewn fideo, y gallaf wir ailddirwyn mewn. Ac rydym yn mynd i ddod yn ôl i bod trosiad mewn dim ond ychydig. Ond yn gyntaf, mae'n ymddangos fod yna mae llawer o geeks a phobl doniol, Amcana, yn Google. A fyddai rhywun sy'n iawn dda am Googling meddwl dod i fyny am ychydig funudau'n a fy helpu i chwilio am rywbeth? Iawn, allwedd isel iawn. Rhywun sydd byth yn dod i fyny o'r blaen, efallai. IAWN. Yeah? Dewch ar. Dewch ar i lawr. Beth yw dy enw? SAM: Sam. DAVID J. Malan: Sam, yn dod ar i lawr. Mae hyn yn un. Neis i gwrdd â chi. Hey. Dewch ar drosodd. Felly, y cyfan sydd angen i mi i chi ei wneud, os gallech, Sam, dyma Google. Gallwch chwilio am y term recursion? Peidiwch â difetha. Ac yn awr let's-- yeah. OK Cliciwch hynny. Gwell cliciwch hynny. Ahh, ei gael. Na? IAWN. Felly, gadewch i ni wneud cwpl o rai eraill. Nid yn gymaint cysylltiedig yn academaidd yma, ond rhaid i chi erioed chwilio Google am anagram? SAM: Na DAVID J. Malan: Iawn. Chwilio am anagram yn lle dychweliad. Beth am Askew. Chi erioed wedi chwilio am Askew? Yn awr, mae hyn yn un ychydig yn anodd i'w gweld ond gobeithio everything's-- OK. 'I' jyst chi a fi yn mwynhau hyn. IAWN. Felly yn olaf, one's-- hon mae'n ychydig Askew. Nawr gwneud rholyn baril. Wonderful. Iawn. Diolch yn fawr i Sam. Yma byddwch yn mynd. Diolch. Felly beth sy'n mynd ymlaen ym mhob o enghreifftiau gwirion hyn? Felly mewn gwirionedd, o dan y cwfl o Google miliynau o linellau o god yn ôl pob golwg yn rhai gwirion OS amodau sydd yn eu hanfod gwirio a yw'r defnyddiwr teipio yn yr ymadrodd hwn, wneud rhywbeth sydd yn ôl pob tebyg yn cymryd swm nontrivial o amser i weithredu dim ond er mwyn fod yn ddifyr yn y modd hwn. Ond dyna i gyd y mae'n berwi i lawr at dan y cwfl. Ond, wrth gwrs, recursion yn fwy o geekier enghraifft ymhlith driciau arbennig hynny. Ac yn sicr mae yna bobl eraill i maes 'na yn ogystal ein bod efallai wedi nid hyd yn oed yn darganfod eto. Felly edrychwch, neu ystyried Erbyn hyn mae'r rhaglen ganlynol, ac yn sicr chrafangia unrhyw y rhain ar eich ffordd allan. Rydw i'n mynd i fynd yn ei flaen a agor rhaglen sy'n mynd i geisio i gyfnewid ddau werth. Ond cyn i ni fynd yno, gadewch i ni wneud hyn. A allem gael un yn fwy gwirfoddolwr, yr wyf yn meddwl? Hoffech chi wirfoddoli? Na? Dewch ar i fyny. Dewch ar i fyny. Iawn. Felly eich enw i yw beth? LAUREN: Lauren. DAVID J. Malan: Lauren. Dewch ar i fyny, Lauren. Felly Lauren yn cael ei herio yma fel a ganlyn. Neis i gwrdd â chi. Felly Lauren yma wedi yn blaen o'i ddau gwpan gwag. Ac mae gennym rai oren sudd a rhywfaint o laeth ac rydym yn mynd i fynd yn ei flaen ac yn gwneud y canlynol. Rydym yn jyst yn mynd i lenwi'r hyn. Mae ychydig owns o laeth dros yma a gadewch i ni lenwi ychydig o sudd oren dros yma. Ac o flaen pob un aelodau o'r gynulleidfa hyn, cyfnewid y ddau werth o gwpanau hyn. Rhowch y sudd oren yn y cwpan llaeth ac mae'r llaeth yn y cwpan sudd oren. Sut y byddech yn gwneud hyn os oeddech yn cartref ac yn cael mynediad at gyflenwadau eraill? LAUREN: Rhowch ef mewn cwpan arall. DAVID J. Malan: Iawn. Felly gadewch i ni gael dros dro amrywiol, os byddwn yn gwneud hynny. Ac yn mynd yn ei flaen yn awr ac yn gweithredu y weithdrefn hon yr un gyfnewid. Mor dda. Rydym wedi rhoi OJ mewn i'r dros dro amrywiol, llaeth i mewn i'r newidyn OJ, ac yn awr y newidyn dros dro i mewn i'r newidyn llaeth. IAWN. Felly gwneud yn dda iawn hyd yn hyn. Felly mae'n troi out-- dal bod yn meddwl am ddim ond eiliad. Yma, i ddim ond geek i fyny ychydig, mae hyn fyddai'r cod C cyfatebol ein bod newydd roi ar waith. Roedd gennym ddwy mewnbynnau, aab, y ddau y byddwn yn jyst dweud am symlrwydd yn int yn. Ac yn sylwi yma, os wyf am gyfnewid gwerthoedd dau newidyn, a a b, rydym yn wir angen middleman, a newidyn dros dro, cwpan dros dro, y mae'r arllwys un o'r gwerthoedd fel bod gennym dalfan ar ei gyfer. Ond yna mae'r cod yn union fel Lauren gweithredu yma. Yn awr, dim ond i gael Ychydig crazier, troi allan eich bod yn gallu gwneud hyn heb newidyn dros dro. Er mwyn gwneud hyn yn iawn, fodd bynnag, rydym yn mynd i gael i dwyllo gyda rhai cemeg. Mae gennym rai cwpanau ychwanegol yma. Felly, y peth agosaf sy'n edrych fel llaeth a dŵr perhaps-- neu laeth a OJ-- yw gennym rai dŵr, felly byddwn yn llenwi'r hwn yn un i fyny gydag ychydig o owns o ddŵr clir. Dyna mae'n debyg gormod. Yeah. Dyna bendant gormod. Daliwch ar un sec. Ac yn awr mae gennym olew, sydd, fel yr wyf yn cofio o ddosbarth cemeg ysgol ganol, gobeithio nad yw'n cymysgu'n gyda dŵr. Ond mae'n fath o fath o edrych fel llaeth a OJ. Felly nawr, heb ddefnyddio newidyn dros dro, gallwch gyfnewid dau gwerthoedd hynny? Felly olew yn mynd i mewn i'r gwpan dŵr, dŵr yn mynd i mewn i'r cwpan olew. LAUREN: Dim cwpanau eraill? DAVID J. Malan: Dim cwpanau eraill. Ac nid wyf i wedi mewn gwirionedd profi hyn cyn y flwyddyn hon felly nid wyf yn gwybod os bydd hyn gweithio mewn gwirionedd yn gemegol. Nid oedd i fod i ddigwydd. A yw'n gweithio? Iawn. Felly gwahanu? Da. Nawr rhaid i ni gael y dŵr i mewn i'r gwpan arall. Crynodyddion cemeg Doethach gallai yn ôl pob tebyg yn gwneud hyn yn well na fi. LAUREN: Mae'r dŵr sydd ar y gwaelod. DAVID J. Malan: Y water-- a oedd yn beth sy'n allweddol y tro diwethaf i ni yn gwneud hyn. Mae'n rhaid i chi wneud hynny yn y drefn gywir. Yeah. Mae hynny'n iawn. Felly nawr mae gennym ddau gwpan o olew. IAWN. Mae hynny'n iawn. Ond os yw hyn yn gemegol yn gweithio na I-- LAUREN: Mae hwn yn dŵr. DAVID J. Malan: Mae hynny'n bennaf dŵr. Iawn. Ond dyna dal i fod yr un fath ag o'r blaen cwpan. Felly arllwys iddo-- cynnig arni dros yno. IAWN. Mae hyn yn ddefnydd da o amser dosbarth heddiw. IAWN. Felly nawr we-- 'n glws. Math o. Iawn. Felly da iawn. Diolch yn fawr i Lauren. Gwneud yn dda iawn. Felly, dim ond i chwythu eich meddyliau, ac mae hyn yn rhywbeth efallai i chwarae gyda os ydych yn hoffi yn ID CS50, gallwch chi, mewn gwirionedd, gyfnewid ddau newidyn heb ddefnyddio cyfanrif dros dro. Ac mae hyn yn y cod C cyfatebol. Ac os ydych yn cofio o ddiwethaf Dydd Mercher, rydym yn cyflwyno, os yn fyr, rhai gweithredwyr newydd yng C. A yn gwneud unrhyw un yn galw i gof yr hyn y mae'r moron bach symbol yw, mai ychydig trionglog symbol o'r bysellfwrdd gynrychioli? Pa bitwise gweithredwr? GYNULLEIDFA: EXOR. DAVID J. Malan: EXOR. Exclusive Or. Felly os ydych am, dim ond am hwyl yn cartref, er mwyn rhoi a b dau mympwyol Gwerthoedd fel unrhyw eight-- ac yr wyf yn Byddai ddewis werth wyth did. Os byddwch yn gwneud hyn gyda 32 darnau, byddwch yn gyflym iawn yn diflasu. Ond dim ond yn rhoi wyth bit gwerth dyna beth bynnag, un neu ddau, ac yn rhoi b gwerth tebyg. Ac yna ddefnyddio'r diffiniad o XOR o ddydd Mercher diwethaf, cymhwyso hynny fesul tipyn, pob un y rhai wyth darnau ym mhob un a a b, ac yna yn ei wneud yn union fesul cod hwn. Ac nid yw'n anghywir beth byddwch yn gweld yma ar y sgrin. Mae'n wir boils i lawr i dair gweithrediadau XOR a rhywsut magically yn a b Bydd cyfnewid swyddi heb golli unrhyw wybodaeth. Felly, y tric olew a dŵr yn y agosaf ymgnawdoliad byd go iawn Gallwn feddwl am i ddynwared hynny. Ond mae'n sicr yn haws i defnyddio newidyn dros dro, fel yn yr achos yma. Ac mae hyn hefyd yn gyfle dweud, hefyd, y math hwn o optimization micro, fel gwyddonydd cyfrifiadurol Byddai dweud, er bod math o hwyl i Brag am sut y gwnaethoch hyn heb fel cyfnewid gyda newidyn ychwanegol, nid yw'n bob un sy'n cymhellol. Gan fod i achub 32 o ddarnau, fel y yn achos int go iawn, Nid yw'r cyfan sydd gymhellol ar system lle efallai y byddwch yn defnyddio degau o megabeit neu hyd yn oed fwy o gof o'r fath y dyddiau hyn. Ac yn wir, pan gawn i set problem yn ddiweddarach ac yr ydych yn gweithredu sillafu checker a byddwch yn cael eu herio i wneud hynny gyda hwn RAM cyn lleied a chyn lleied amser ag y bo modd ar y computer-- byddwch yn dal cael wythnos i weithredu iddo-- byddwch have-- byddwch yn herio i leihau'r adnoddau hynny. A dyna wir yr unig achlysur semester hwn lle byddwch yn cael eich annog i eillio oddi ar hyd yn oed y perfformiad gorau costau fel arall. Felly what-- sut y gallwn gweld hyn mewn cod gwirioneddol? Gadewch i mi fynd yn ei flaen yn awr ac agor enghraifft sy'n cael ei alw'n fwriadol Dim Swap am nad yw'n gwneud yn wir gyfnewid y newidynnau fel yr ydych mewn gwirionedd gallai ei ddisgwyl. Felly, gadewch i ni edrych. Dyma raglen sydd heb CS50 llyfrgell digwydd, Fi jyst safon / O. Nawr mae gennym prototeip ar gyfer cyfnewid fyny top a dim ond yn golygu mae'n rhaid iddo gael ei ddiffinio yn nes ymlaen. A dyma brif. Rwy'n neilltuo x ac y yn fympwyol, yn y drefn honno, mae'r gwerthoedd un a dau dim ond oherwydd eu bod yn fach ac yn hawdd i feddwl am. Ac yna Fi jyst cael bagad o printfs lle yr wyf yn cael archwiliad bwyll. x yw 1 ac y yw 2 yn ôl pob tebyg beth fydd printfs rhai yn dweud. Felly dim hud hyd yn hyn. Yna dwi'n mynd i wneud cais gyda argraffu def, cyfnewid dot dot dot. Rydw i'n mynd i alw'r cyfnewid swyddogaeth, gan fynd heibio yn x ac y. A gadewch i ni dybio am nawr bod gyfnewid yn cael ei weithredu yn union fel yr oedd funud yn ôl gyda newidyn dros dro. Ac felly yr wyf yn hawlio boldly, cyfnewid. x yn awr hon ac y mae yn awr fod. Ond y ffeil, wrth gwrs, gelwir Dim Swap. Felly gadewch i ni mewn gwirionedd yn gweld beth sy'n digwydd. Os byddaf yn llunio dim cyfnewid ac yna gwneud ./noswap, x yw 1, y mae 2. Cyfnewid cyfnewid. x yw 1, y mae 2. Felly mae'n ymddangos mewn gwirionedd yn ddiffygiol hyd yn oed er swap-- gadewch i sgrolio i lawr now-- yn cael ei weithredu yn union fesul y cod cynigiais eiliad yn ôl. Felly, nid ydym yn mynd i gael ffansi gyda'r stwff XOR am y tro. Mae hyn, hefyd, weithio yn unig fel gyda'r llaeth a OJ, ond nid yw'n ymddangos i fod yn gweithio. Felly, gadewch i ni wneud hyn eto. Efallai fy mod nid yn unig yn rhedeg yn iawn. Felly gadewch i ni redeg Dim Cyfnewid eto. Efallai I-- dim. Felly mae'n nid yn unig ei gwaith. Felly, gadewch i ni wneud ychydig gwiriad bwyll. Gadewch i mi fynd yn ei flaen yma yn Swap a dim ond ychwanegu, arhoswch funud, a yw% i / n a gadewch i ni plug-yng ngwerth a. Gan fy mod wir eisiau i weld beth sy'n digwydd. Ac yn wir, mae hyn yn techneg debugging y gallech fod yn defnyddio mewn oriau swyddfa neu gartref yn barod, debyg i hanner cyntaf Dan 'N fideo Armendariz mewn PSET3 wherein cyflwynasom print def fel techneg a argymhellir, o leiaf ar gyfer achosion syml. Gadewch i mi fynd yn ei flaen ac yn rhedeg yn gwneud dim cyfnewid eto, ./noswap. Diddorol. Felly sylwi ar yr hyn sy'n ymddangos i fod yn wir. x yw 1, y yw 2, ond mae 2 pan b yw 1. Felly dau rheini rywsut got cyfnewid ond nid yw x ac y yn cael eu cyfnewid. Felly, er mwyn bod yn glir, beth sy'n digwydd yw, hyd yma yr wyf wedi x ac y ac mae'r rheini'n newidynnau lleol yn y cwmpas prif, Im 'yn pasio yn x ac y i gyfnewid. Yn awr, cyfnewid, fel swyddogaeth ar wahân, yn rhad ac am ddim i alw ei ddadleuon neu ei unrhyw beth baramedrau y mae am. Foo neu far neu x neu y neu a neu b. Dim ond i wneud yn glir eu bod yn Nid yw union x ac y fel y cyfryw, Rwyf wedi dweud a a b. Ond gallem alw unrhyw beth rydym am iddynt. Ac felly mae'n edrych fel gyfnewid yn cael ei basio x-- AKA a-- ac mae'n yn cael ei drosglwyddo y-- AKA b. Rhywsut tair llinell hyn yn cyfnewid gwerthoedd hynny yn union fel y gwnaeth Lauren gyda'r llaeth a OJ. Ond pan fyddwn yn argraffu gwerthoedd, a a b yn wir cyfnewid ond x a y rhaid i unrhyw newid iddynt. Dwyn i gof bod x ac y yn i fyny yma. Felly, gallwn weld hyn drwy techneg arall hefyd. Ac mae hyn hefyd yn dechneg rhan annatod o broblem gosod tri. Gadewch i ni fynd yn ei flaen ac yn gwneud hyn mewn CS50 ID os nad ydych wedi gwneud hynny'n barod. Ar yr ochr dde i ni gael y tab Bar offer. Ac os byddwch yn agor hyn i fyny, mae rhywfaint o wybodaeth ddirgel sy'n taflu ar chi i ddechrau. Ond gadewch i ni tynnu coes hyn ar wahân go gyflym. Felly un, byddwch yn gweld newidynnau lleol. Troi allan sy'n adeiladu i mewn i IDE CS50, ac llawer o amgylcheddau rhaglennu mwy yn gyffredinol, yn dadfygiwr. Mae offeryn sy'n eich galluogi i weld eu golwg beth sy'n mynd ymlaen tu mewn i'ch rhaglen heb orfod troi at ychwanegu printfs a llunio a rhedeg ac ychwanegu printf a llunio ac rhedeg, sydd eisoes, yn ystod oriau swyddfa neu gartref, yn ôl pob tebyg mynd yn eithaf diflas. Felly dyma, mewn dim ond hyn o bryd, rydym yn mynd i ei weld mewn amser real gwerthoedd ein newidynnau lleol. Rydym ni hefyd yn mynd i fod yn gallu gosod hyn a elwir yn torbwyntiau sy'n cyfleoedd yn fy rhaglen i oedi gweithredu ar linell benodol o god fy mod yn chwilfrydig am. Iawn? Mae'r rhaglenni hyn yn rhedeg mewn eiliad. Mae'n fath o 'n glws i ni bodau dynol arafach i allu oedi, cymryd hyn o bryd, gweler yr hyn sy'n digwydd o gwmpas llinell benodol o god heb y aredig rhaglen drwyddo ac yn gorffen yn gyfan gwbl. Felly mae torbwyntiau yn mynd i'n galluogi i torri ac oedi ar bwynt penodol. Pentwr Call yn ffordd ffansi o gan ddweud pa swyddogaethau ar hyn o bryd yn cael ei alw ar hyn o bryd. Prif cael ei alw'n gyntaf bob amser. Ond os Prif alwadau y swyddogaeth o'r enw Swap, rydym yn wir yn mynd i weld hon twr o swyddogaethau sydd wedi bod Gelwir mewn trefn gronolegol. Felly, gadewch i ni weld hynny. Rydw i'n mynd i chwyddo allan. Rydw i'n mynd i fynd yn ôl at fy cod. A dim ond am fy mod eisiau i fod yn bedantig yma, Rydw i'n mynd i fynd yn ei flaen a chliciwch ychydig i'r chwith o'r llinell pump. A bod yn creu dot coch. Ac yn sylwi ar yr ochr dde bod y dadnamydd yn gwybod, hey, Wyf newydd ei ddweud yn torbwynt ar llinell noswap.c pump, yn benodol yn y llinell hon o god. Felly mae'r debugger yn gwybod fy mod wedi gofyn bod y tro nesaf Rwy'n rhedeg fy rhaglen ei oedi gweithredu yno yn hytrach na dim ond rhedeg yr holl beth super gyflym. Felly, yn awr yr wyf i'n mynd i glicio ar y Dadfygio botwm ar frig y DRhA ac mae hynny'n mynd i wneud y canlynol. Mae'n mynd i agor y cychwyn braidd brawychus edrych yn ail terfynell window-- debugging bell oddi wrth cynnal o'r fath ac such-- a byddwn yn dod yn ôl at yr hyn bob un sy'n golygu cyn bo hir. Ond yr hyn sy'n bwysig i nawr yw bod y dot coch ei tharo, dadfygiwr wedi fwriadol seibio execution-- nid ar y llinell honno fel y cyfryw, ond ar y cyntaf llinell o god gwirioneddol mewn y swyddogaeth honno. A dyna pam llinell saith yw bellach a amlygwyd mewn melyn. Ac yn awr gadewch i ni edrych ar yr ochr dde. Mae'n edrych fel, yn ddiofyn, yn ddigon 'n glws, x wedi pa werth? 0. Ac y mae pa werth? Zero. A dyna i'w ddisgwyl yn yr ystyr bod x a y-- bod line-- melyn wedi Nid yw ddienyddio eto. Felly ni ddylai x gael y gwerth 1. Gallai fod yn cael unrhyw werth arall, gwerth garbage fel y'u gelwir. Ac rydym yn got 'n ffodus yn ei bod yn sero yn y fan hon, yn ei hanfod. Felly, erbyn hyn does ond ychydig botymau mae angen i ni ofalu ynghylch pryd debugging yn y ffordd hon. Hysbysiad yma, mae gennym botwm Chwarae. Ac os ydym yn chwarae neu daro ailddechrau, dyna'n union mynd i redeg drwy gweddill y rhaglen neu nes ei fod yn taro torbwynt arall. Ond nid wyf wedi gosod unrhyw un arall torbwyntiau felly mae'n jyst mynd i redeg trwy'r diwedd. Y math hwnnw o colli y Pwrpas procio o gwmpas. Felly, yn hytrach, yr wyf yn poeni am eiconau hyn i'r dde. Ac os wyf yn hofran dros iddynt, fel y dylech hefyd, byddwch yn gweld ychydig o awgrymiadau offeryn tips--. Mae hyn yn un yn camu drosodd. Nawr nid yw hynny'n golygu sgip y llinell ganlynol o god. Mae hynny'n ei olygu yw chyflawni ac symud i'r nesaf, yn symud i'r nesaf, symud ymlaen i'r nesaf. Mewn geiriau eraill, drwy hynny botwm, gallaf gerdded drwy fy cod un cam ar y tro. Fesul llinell, yn llythrennol. Yn awr, ar y dde hynny, mae un arall y byddwn yn gweld mewn dim ond hyn o bryd. Mae hyn yn yr hyn a elwir Step Into eicon sy'n mynd i ganiatáu plymio i mi i mewn i swyddogaeth arall. Ond gadewch i ni weld hyn mewn dim ond hyn o bryd. Felly dw i'n mynd i glicio gamu drosodd. Ac yn awr yn sylwi, fel yr wyf clicio botwm hwn ar dde uchaf, cadwch eich llygaid yn fras o dan Lleol Newidynnau a gweld beth sy'n digwydd i x. x yn awr yn 1 am fod y llinell felen bellach wedi dienyddio ac yr ydym wedi symud ymlaen i linell 8. Ac mewn dim ond eiliad y gobeithio, dylai fod yn 2. Yn awr, nid oes dim sy'n ddiddorol digwydd am ychydig. Mae'r holl mae hwn yn ei printf. Ac yn sylwi, yn fy terfynell uwchradd ffenestr, yr wyf yn gweld allbwn print def. Ac yn awr mae'n rhaid i mi wneud penderfyniad gan fod y rhaglennydd. Gallaf cam dros y llinell hon o cod, gweithredu, ond nid mynd yn chwilfrydig ynghylch yr hyn sydd y tu mewn. Neu gall Fi 'n weithredol gamu i mewn iddo ac yn mynd y tu mewn o Swap ei hun. Felly, gadewch i ni wneud yr olaf. Gadewch i mi fynd yn ei flaen a chliciwch Nid yw Cam Dros ond Step Into. Rhybudd, yn sydyn newidiadau ffenestr i dynnu sylw at y cyntaf llinell o god yn Swap. Dyna llinell 21. Ac yn awr, pa fath o ffynci yw bod, os ydych yn edrych dros yma, yn ôl y disgwyl, coma a b yn 1 a 2, yn y drefn honno. Pam fod dros dro 32,767? Gan gofio hynny dros dro, yn debyg iawn y cwpan gwag eiliad yn ôl, ei ddatgan yma ar y llinell 21. Pam 32,000- Yr wyf yn golygu, pam mae 'i jyst rhywfaint o werth rhyfedd? Yeah? GYNULLEIDFA: Nid yw'n ymgychwyn. DAVID J. Malan: Mae'n Nid yw wedi'i ymgychwyn. Felly ein cyfrifiadur bob amser Mae gan gof corfforol. Mae bob amser wedi RAM corfforol. Ac mae bob amser yn sero ac un sydd yn yno, dde? Oherwydd ein bod yn defnyddio ein cyfrifiadur drwy'r dydd, ydych chi'n defnyddio'r CS50 IDE neu'r gweinyddion drwy'r dydd hir. Er mwyn i RAM naill ai ganddo rai sero neu rhyw un neu rai sero a rhai. Ni waeth pa un a nad ydych yn eu defnyddio. Nid ydych yn gallu cael yn wag mannau lle rydych am ddarnau. Maent yn naill ai sero a rhai. Felly, mae'n troi allan y temp, oherwydd Nid ydym wedi initialized eto, mae gennym y rhai 32 o ddarnau, ond nid ydynt i wedi wedi'i ymgychwyn i unrhyw werthoedd hysbys. Felly, beth bynnag y maent yn fwyaf a ddefnyddiwyd yn ddiweddar for-- 32 rhai bits-- rydym yn jyst yn gweld y arteffactau rhai defnydd blaenorol o'r rhai 32 arbennig darnau. Cyn gynted ag yr wyf yn clicio Camu Dros fodd bynnag, phew, temp yn mynd i gael y gwerth 1. Ac os wyf yn ei wneud eto, mae hwn yn mynd i gael ei roi gwerth 2 ac yna b yn mynd i yn cael y gwerth 1. Ac felly beth braf nawr ar y pwynt hwn yn y stori yw bod y dadnamydd yn yn dangos i mi, super araf yn fy cyflymder eich hun, beth cyflwr Swap yw. Ond yn sylwi ar y brig yma, rhybudd bod y pentwr galw mewn gwirionedd Mae dwy haen iddo. Nawr bod y un sy'n cael ei amlygu fel Swap, os wyf yn clicio ar Main lle hynny, yn sylwi sut y mae'r newidynnau lleol yn newid oherwydd gall y datblygwr yn unig hop o gwmpas ac yn mynd i mewn i unrhyw le gwahanol. Felly, er ein bod yn gwneud hyn oll yn gweithio a chyfnewid yn gywir aab, os byddaf yn mynd yn ôl ac ymlaen rhwng Swap lle mae yn 2 a b yw 1 a Main, wedi cael Main cael ei effeithio o gwbl? Na Felly beth yw'r prydau parod yma? Wel, mae'n ymddangos fod unrhyw adeg byddwch yn ffonio swyddogaeth fel Swap, ac yr ydych yn ei throsglwyddo dadleuon, beth eich bod yn pasio i'r swyddogaeth Swap yn yr achos hwn yn gopi o ddadleuon hynny. Felly, os x ac y yn y drefn honno bob 32 darnau, pa Swap yn mynd yn yn lleol dwy newydd newidynnau, neu ddadleuon, a elwir yn a b-- ond dyna'r fympwyol names-- ond mae'r patrwm o zeros a rhai tu mewn i a a b yn trefnu i fod yn union x ac y ond nid yw'r ydynt un peth â x ac y. Mae'n fel pe bai Main yn ei gael ar ei ddarn o papur rhif 1 a 2 ar gyfer x ac y, ac yna pan mae'n dwylo bod darn o bapur i gyfnewid, Swap gyflym iawn yn cael ei pen ei hun, yn ysgrifennu i lawr 1 a 2 ar ei ben ei hun ddalen o bapur, dwylo cefnogi'r xy gwreiddiol i Main ac yna gwneud ei hun beth sydd â a b. Ac mae hyn yn awr yn super bwysig oherwydd gan hyn oblygiadau nontrivial am gwirionedd yn ysgrifennu cod cywir oherwydd y byddai'n ymddangos na allwn ni gyfnewid dau newidyn. Rwyf wedi ysgrifennu swyddogaeth Cyfnewid gywir. Rydyn ni wedi rhoi ar waith gyda Lauren fel swyddogaeth cyfnewid gywir mewn gwirionedd, ond mae'n debyg dim o hynny materion os nad ydych yn gallu mewn gwirionedd gyfnewid dau werth yn barhaol. Felly mae angen ffordd arall i gael mewn gwirionedd ar hyn, ac mae angen i ni fod yn gallu mewn gwirionedd yn datrys y broblem hon. Ac mae'n troi out-- a byddwn yn dod yn ôl i'r llun arbennig hwn cyn long-- mae hyn yn un ffordd y efallai y byddwch yn tynnu cof eich cyfrifiadur. Mae'n dim ond petryal. Gallech dynnu unrhyw sawl ffordd ond mae'n gyfleus i dynnu fel petryal am y rheswm canlynol. Rydym yn mynd i ddechrau heddiw a thu hwnt siarad am y pentwr fel y'u gelwir. Ac mae'r pentwr yn unig yw dalp o RAM-- darn o memory-- bod swyddogaethau yn cael mynediad i pan fyddant yn eu galw. Ac felly mae'n ymddangos fod yn waelod y pentwr hwn yw lle i gyd Main yn newidynnau lleol a org C a V org a'r holl bethau hynny yn mynd i fynd yn ddiofyn. Ac os Main yn galw rhyw swyddogaeth eraill fel Swap, yn dda, Swap yn mynd i gael un arall haen o gof i fyny uwch ei ben. Ac felly dim ond i roi frysiog cyflym i chi llun o hyn, os byddaf yn mynd dros Yma-- a gadewch i mi adlewyrchu'r hyn ar y uwchben fel well-- yr hyn mewn gwirionedd yr wyf wedi, os ydym yn gofalu dim ond am y waelod y llun hwn am y tro, yw bod pan fyddaf yn cynnal rhaglen a Main cael ei alw, Prif Rhoddir darn o RAM yn fy chyfrifiadur sydd yn ar waelod y hyn a elwir yn simnai. Ac yr wyf i'n mynd i dynnu ei yn fwriadol fel sgwâr. Felly mae fel 32 o ddarnau neu bedwar bytes. Ac os yw hyn yn brif swyddogaeth mae gan newidyn a elwir x gyda gwerth o 1 ac mae ganddo enw newidyn y gyda gwerth o 2, dyna fel cymryd sliver hwn o gof sy'n Prif wedi cael ei roi gan y gweithredu system ac yn ei rannu i fyny fel bod y newidyn lleol cyntaf yn mynd yma, mae'r ail un yn mynd yma, a dyna ni. Pan fydd Main galwadau Swap, Swap yn cael ei tafell ei hun o gof y byddwn yn tynnu fel hyn oddi wrth y system weithredu, ac mae'n mynd i gael ei yn seiliedig ar newidynnau lleol eu hunain ar ein gweithredu yn gynt gyda newidynnau lleol a b y lle cyntaf cael y gwerthoedd 1 a 2. Ond wedyn, cyn gynted ag y y cod Swap executes, a Lauren mewn gwirionedd cyfnewidiadau y OJ a llaeth, beth sy'n digwydd? Wel, mae hyn yn 2 yn dod yn 1, mae hyn yn 1 yn dod yn 2, a, gyda llaw, mae newidyn dros dro sy'n cael ei Defnyddir yr amser cyfan yn y pen draw yn mynd i ffwrdd. Ond does dim ots faint o waith rydych yn ei wneud yn y llinell hon o- yn y gofod hwn cof, x ac y yn gwbl heb eu cyffwrdd. Felly mae angen rhyw ffordd o roi Swap a swyddogaethau yn ei hoffi mynediad cudd, os mynnwch, i swyddogaethau like-- i gof fel x ac y. Felly, gadewch i ni edrych ar enghraifft sy'n helpu ni weld yn union beth sydd wedi bod mynd ar y tro cyfan. Rydw i'n mynd i fynd yn ei flaen ac yn agor i fyny Cymharu Zero. Ac yr wyf i'n mynd i gau ein dadnamydd, dw i'n mynd i gau'r hyn neges frawychus edrych yr unig dywed, arhoswch funud, ydych yn y debugging canol. Rydw i'n mynd i guddio y tab hwn yma dim ond i fynd yn ôl i'r symlrwydd. Felly peidiwch â phoeni os GDB ei ladd. Mae hynny'n ei olygu yw bod y rhaglen wedi bod rhoi'r gorau iddi, yn fwriadol yn yr achos hwn, gan i mi. Ac yn awr Cymharwch Zero yn gwneud hyn. Im 'yn arfer y CS50 llyfrgell yn I safonol / O. Mae gen i brif swyddogaeth sy'n gyntaf yn dweud, yn dweud rhywbeth, ac yn cael llinyn. Yna, yn dweud ei fod unwaith eto ac yn cael llinyn arall. Ac yn sylwi bod y ddau linyn yn cael eu galw s a t, yn y drefn honno. Ac yn awr y rhaglen hon, Cymharu Zero, ei bwrpas mewn bywyd, mae'n fod i ddweud wrthyf, wnes i deipio yr un peth? Ac felly yr wyf i'n mynd yn ôl i wythnos un. Im 'yn arfer fy gweithredwr cyfartal cyfartal sef y gweithredwr ansawdd. Nid y gweithredwr aseiniad, gweithredwr cydraddoldeb. Im 'jyst yn cymharu s a t. Felly gadewch i ni mewn gwirionedd yn mynd yn ei flaen ac yn gwneud hyn. Ac yr wyf i'n mynd i fynd yn ei flaen ac yn gwneud Cymharwch Zero. Rydw i'n mynd i wneud ./comparezero. Ac yr wyf i'n mynd i fynd ymlaen llaw a dweud rhywbeth fel, gadewch i ni wneud mom mewn llythrennau bach a beth am mom yn priflythyren. Ac wrth gwrs yr wyf yn teipio pethau gwahanol. Iawn. Dyna i'w ddisgwyl. Gadewch i ni redeg eto. Mae'r ddau amseroedd yn gwneud llythrennau bach, llythrennau bach. Sy'n edrych super union yr un fath i mi. Enter. IAWN. Efallai mai dim ond rhyfedd oherwydd bod nid yw'n hoffi fy gramadeg. Felly, gadewch i ni wneud yn MOM cyfalaf, cyfalaf MOM, union yr un fath. Gwahanol bethau. Felly pam yw bod? Wel, beth sy'n mynd mewn gwirionedd ar dan y cwfl yma? Felly gadewch i ni fynd yn ôl dros yma am ychydig funudau'n ac ystyried beth GetString yn ei wneud mewn gwirionedd. Pan fyddwch yn ffonio GetString, dyna swyddogaeth yr ydym ein hunain ysgrifennu ac mae rhywsut yn cael dilyniant o gymeriadau o'r defnyddiwr. A gadewch i ni dybio bod y cyntaf amser Rwy'n galw GetString, sy'n rhoi i mi darn o gof sy'n edrych fel hyn. Ac os wyf yn teipio ym mhob llythrennau bach m-o-m-- a'r hyn sy'n mynd ar ei ôl? Dim ond gwiriad bwyll cyflym. Sero slaes. Rydym yn gwybod hynny. A dwyn i gof bod yn chwarae o gwmpas gyda enw Zamila yn a bagad o enwau eraill pan oedd Rob yn edrych yma ar yr hyn sy'n mynd ymlaen y tu mewn o gof. Er mwyn i stori yn union yr un fath. Dyma beth GetString yn dychwelyd i mi. Yn awr, fy cod funud yn ôl ei storio mae'r gwerth dychwelyd GetString mewn newidyn a elwir s. Ac yna yr ail waith gelwais ef, ei storio mewn newidyn a elwir t. Felly os dwi'n mynd dros yma, mae angen i mi i dynnu hwn variable-- lleol ac rwy'n gyffredinol yn mynd i tynnu llinyn fel just-- ydym chi helpu alw s-- cyn lleied sgwâr yma. Ac yn awr, somehow-- sut mae mom fynd y tu mewn o hyn s amrywiol? Wel, mae angen i ni fynd yn ôl i egwyddorion cyntaf yma. Yr hyn sydd ei GetString mewn gwirionedd yn dychwelyd? Felly, mae'n troi allan y M-O-M slaes sero, ac unrhyw rif o linynnau eraill er cof fel Zamila a Rob neu Andy neu unrhyw bobl eraill, wrth gwrs yn ein RAM neu gof cyfrifiadur. Ac mae eich RAM wedi like-- gennych gig o RAM, dau gigs o RAM, neu biliwn neu dau biliwn o bytes, neu efallai hyd yn oed yn fwy y dyddiau hyn. Felly gadewch i ni dybio, ar gyfer dibenion heddiw, nad yw o bwys sut rydym yn rhifo iddynt, ond gallwn rifo pob o'r rhai biliwn neu dau biliwn o neu i bedwar biliwn o bytes. A gadewch i ni jyst fympwyol dweud bod hwn yw'r brathiad cyntaf, ail brathu, drydydd, pedwerydd. Yn fwriadol Dydw i ddim yn defnyddio sero ar gyfer heddiw, ond byddwn yn dod yn ôl at hynny. Felly, mewn geiriau eraill, os yw hyn yn y tro cyntaf Im 'yn arfer y rhaglen, Im 'jyst yn mynd yn lwcus a'r cyntaf brathiad yw mewn un lleoliad, yna dau Yna tair na phedair. Ac os wyf yn cadw arlunio, rhif blwch Byddai dau biliwn o fod yn ffordd dros yma. Felly beth yn eich barn chi, yna, GetString mewn gwirionedd yn dychwelyd? Dyw hi ddim yn dychwelyd M-O-M slaes sero fel y cyfryw gan fod yn glir Ni fydd yn ffitio yn y blwch fy mod wedi tynnu. Felly, beth arall a allai GetString mewn gwirionedd yn dychwelyd yr holl wythnosau hyn? Yr ateb yw ar y bwrdd yma yn rhywle. Ni allwch ffitio M-O-M slaes sero, felly beth allai wneud synnwyr yn lle hynny? Petai'n rhaid i chi fod yn super glyfar, gan roi ar yr het peirianneg fel y'i gelwir, hyn y gallech ddychwelyd? Beth yw swm lleiaf o wybodaeth gallech ddychwelyd y byddai dal i gadael i chi ddod o hyd i M-O-M yn y cof? Yeah? GYNULLEIDFA: Un. DAVID J. Malan: Un. A pham un? GYNULLEIDFA: Oherwydd y byddai'n dweud chi ble i fynd [Anghlywadwy]. DAVID J. Malan: Yn union. Yr wyf yn mynd i ddychwelyd y cyfeiriad y llinyn yr wyf wedi gotten. Gall y cyfeiriad yn hyn achos yn lleoliad un. Felly beth sydd wir yn cael ei storio yn s-- a phob newidyn llinyn felly far-- wedi newydd fod y cyfeiriad y llinyn. Yn y cyfamser, os galwaf GetString yr eildro, ac rwy'n teipiwch llythrennol yr un thing-- M-O-M gyda lowercase-- M-O-M a slaes arall sero, ac erbyn hyn efallai fy rhaglen bod yn rhedeg ers peth amser felly efallai hwn yw 10, mae hyn yn lleoliad 11, mae hyn yn 12, mae hyn yn 13. Mae'r cyfrifiaduron defnyddio rhai eraill cof am ba reswm bynnag. Yr hyn yn awr yn mynd yn fy ail yn amrywiol o ran fy rhaglen t? 10. Yn union. Ac felly pan fyddwn yn edrych ar y cod ffynhonnell y rhaglen hon lle dwi'n syml yn ceisio i gymharu'r ddau werth, yn s hafal cyfartal i t, beth sydd yr ateb dynol amlwg? Dim ond nid oes gan 1 Nid yw gyfartal 10. Ac felly yma yn gorwedd yn cyfle i ni mewn gwirionedd i ddim ond mynd yn ôl i'r, unwaith eto, yn gyntaf egwyddorion a meddwl am, yn dda, beth sy'n mynd ymlaen o dan y cwfl? Rydyn ni wedi bod yn siarad am darnau a bytes a chof, ond mewn gwirionedd mae'n ddefnyddiol i ddeall oherwydd pan fyddwch yn ffonio GetString, er ein bod yn meddwl am ei fod yn dychwelyd M-O-M neu mom llinyn neu Andy neu Zamila neu yn y blaen, yn dechnegol 'i' jyst yn dychwelyd y cyfeiriad y darn o gof. Ond mae hynny'n iawn. Oherwydd sut ydw i'n gwybod lle y llinyn yn dod i ben? Os ydw i'n dim ond o ystyried y dechrau? Wel, mae'r slaes sero, dde? Dim ond mewn amser llinol gallaf argraffwch gyda phrint def M-O-M. A chyn gynted ag yr wyf yn gweld slaes sero, nid wyf yn poeni ble i mi ddechrau, Rwyf eisoes yn gwybod yn ymhlyg lle mae angen i mi ddod i ben. Ac felly heddiw yn nodi beginning-- a gadewch i mi wneud hyn yn sylweddol oherwydd ein aeth trwy lawer o drafferth i gael y rhain hyfforddiant wheels-- yma felly heddiw mae'r olwynion hyfforddiant yn dechrau i ddod oddi ar ac rydym yn datgelu leiaf-- [Cymeradwyaeth] Dyna oedd yn werth y daith i dargedu y bore yma, ie? Felly now-- oes, mae'n troi allan, oes y fath beth â llinyn. Nid yw Llinynnol yn bodoli. Mae'n cyfystyr yr ydym wedi cael du mewn y llyfrgell CS50. O hyn allan, rydyn ni'n mynd i ddechrau galw s a t Nid yw llinynnau ond sêr torgoch. A seren torgoch ydym chi helpu canfod ar wahân cyn bo hir. Ond mae hyn yn ei ddweud, bod hyd yn oed os byddwn yn parhau gan ddefnyddio GetString am y tro, dechnegol dylwn yn dweud seren torgoch a'r seren torgoch. Ac mae'n troi allan yr hyn y seren yn mynd i ddynodi yn rhywbeth a elwir yn pwyntydd neu gyfeiriad. Ac yn wir, mae ymlid ar gyfer yr hyn sydd i ddod mae hyn yn 20 eiliad clip oddi wrth ein cyfaill Nick Parlante yn Stanford sydd, yn eithaf beth amser yn ôl, yn treulio swm chwerthinllyd o amser, fel y gorau gallaf ddweud yn ei cegin neu ei islawr, gan wneud claymation cyflwyno i'r byd cymeriad o'r enw Binky byddwn yn â hwy yn cael eu cyflwyno y tro nesaf i awgrymiadau. Felly dyma yn rhagolwg o'r hyn sydd i ddod. [VIDEO Playback] -Hey, Binky. Deffro. Mae'n amser am hwyl pwyntydd. -Beth yw hwnna? Dysgu am awgrymiadau? O, nwyddau. [DIWEDD Playback] DAVID J. Malan: Ac ar y nodyn hwnnw, byddwn yn eich gweld ar ddydd Mercher. Iawn. Pwy 'di dawnsio? Dewch ar. Pwy 'di dawnsio? Ydych am i mi gael iddo ddechrau? Byddaf yn cael ei ddechrau. Woooo! LAUREN: ffansi Sweet Moses.