[CHWARAE CERDDORIAETH] SIARADWR 1: pob hawl, mae hyn yn CS50, ac mae hyn yn dechrau wythnos pedwar, ac fel y efallai eich bod wedi clywed neu darllen, mae'r byd wedi bod yn dod i ben. Mynd o amgylch y rhyngrwyd wedi bod gwybodaeth ac ymwybyddiaeth o nam mewn rhaglen, a iaith raglennu o'r enw Bash. Mae hyn wedi cael ei frandio rhyfeddol fel Shellshock, neu y drws Bash, ond mae erthyglau fel y rhain Nid yw wedi bod yn anghyffredin. Ac yn wir, mae llawer ohonynt yn dod â atgofion cefn Heartbleed, sydd efallai eich bod wedi sylwi yn y pwyso yn ôl y gwanwyn hwn yn y gorffennol, a oedd yn Roedd yr un modd eithaf dramatig. Yn awr y rhai ohonoch yma heddiw, faint sydd gennych, hyd yn oed os nad ydych yn deall yr hyn y mae'n ymwneud, clywed am Shellshock? Mae pob hawl, a faint ohonoch chi gyfrifiaduron sy'n agored i niwed? OK, dylai fod yn llawer, llawer mwy o ddwylo i fyny ar hyn o bryd, am resymau cawn weld. Gadewch i ni edrych ar beth sydd bod yn mynd ymlaen yn y cyfryngau ac yna esbonio ychydig yma i ni yn dechnegol. SIARADWR 2: arbenigwyr diogelwch wedi rhybuddio y gallai nam difrifol fod ar fin effeithio ar gannoedd o miliynau o ddefnyddwyr y we yn y byd. Felly beth yn union yw y byg sydd wedi bod trosleisio'r Shellshock, a beth mae'n ei wneud? Wel, Shellshock ei adnabod hefyd fel y Bug Bash, mae'r meddalwedd yn manteisio. Hacwyr yn defnyddio'r firws i sganio yn agored i niwed systemau sy'n rhedeg Linux a Unix gweithredu systemau ac yna eu heintio. Bash yn gragen llinell orchymyn. Mae hyn yn gadael y mater i ddefnyddwyr gorchmynion i lansio rhaglenni a nodweddion o fewn meddalwedd trwy deipio testun. Mae'n cael ei ddefnyddio fel arfer gan rhaglenwyr, a Ni ddylai fod yn agored i'r byd ehangach, er Shellshock yn newid hynny. Wel, worringly, mae rhai dadansoddwyr rhybuddio y gallai fod yn fygythiad mwy, oherwydd Shellshock yn caniatáu cwblhau rheolaeth peiriant wedi'i heintio, tra Heartbleed yn unig a ganiateir hacwyr i sbïo ar gyfrifiaduron. Mae mor ddifrifol, mae'n eu graddio o 10 allan o 10 ar gyfer difrifoldeb gan y National Cronfa Ddata Agored i niwed. 2/3 o'r holl gweinyddwyr gwe mewn risg, gan gynnwys rhai cyfrifiaduron Mac. Wel, gwnewch yn siŵr eich chlytia eich systemau yn awr. Unrhyw un sy'n cynnal gwefan rhedeg y systemau gweithredu effeithir Dylai gymryd camau cyn gynted â phosibl. Gall unrhyw un sy'n gallu fforddio dylai edrych i'w cais monitro a gwe waliau tân gadw golwg am unrhyw ymosodiadau. SIARADWR 3: Y peth gwaethaf a allai ddigwydd yn y byddai rhywun yn ysgrifennu cod sy'n yn mynd yn awtomatig ac yn sganio Byddai y rhyngrwyd ac yn effeithio ar pob un o'r cyfrifiaduron hyn. Ac unwaith y byddant yn gwneud hynny, yn dda, y peth gwaethaf y gallent ei wneud yn unig yw dileu popeth, neu eu cau i lawr y safleoedd. Felly, gallem weld difrod o safbwynt hwnnw, lle byddai gennym bobl maleisus sydd ond yn penderfynu creu hafoc trwy ddod â systemau i lawr neu ddileu ffeiliau, a phethau fel 'na. SIARADWR 2: Mae rhai yn dweud mae hwn yn un o'r rhai mwyaf anodd i'w fesur bugs yn ystod y blynyddoedd, ac mae'n Gall gymryd wythnosau neu hyd yn oed mis i benderfynu ar ei effaith yn y pen draw. SIARADWR 1: Felly yr holl o'r hynny'n wir, ond y peth rhyfedd yw, mae bron pob o'r ddelweddaeth 'ch jyst yn gweld, ac eithrio ar gyfer efallai y bysellfwrdd, wedi ddim i'w wneud â y byg o gwbl. Gweinyddwyr a gwifrau ac yn y blaen, mae'n gysylltiedig â math o meysydd sy'n gysylltiedig, ond ar yr graidd 'i' mewn gwirionedd 'n bert gyfarwydd beth sy'n digwydd yma. Yn wir, gadewch i mi fynd i mewn i ein peiriant CS50. Gadewch i mi fynd yn ei flaen ac yn gwneud y gorau y ffenestr terfynell yma. Ac rydych guys wedi bod yn defnyddio'r hyn, neu'r fersiwn gwreiddio ohono, mewn gedit er mwyn ysgrifennu rhaglenni, teipio gorchmynion, ac yn y blaen, ac mae hyn yn mewn gwirionedd, ac mae ganddo wedi bod am wythnosau, Bash, B-A-S-H. Dyma'r Bourne-unwaith eto gragen, sydd ychydig yn ffordd ffansi o ddweud, mae hon yn rhaglen sydd â amrantu brydlon, yn effeithiol, sy'n eistedd yno aros ar gyfer mewnbwn i chi. Ac mae'n y gorchymyn rhyngwyneb lein drwy sy'n chi guys wedi bod yn rhedeg gorchmynion a yn y pen draw llunio ac yna'n rhedeg rhaglenni. Ond mae Bash hefyd yn rhaglennu iaith yn yr ystyr ganlynol. Rydych chi'n gwybod bod yna gorchmynion tebyg cd a ls a hefyd chlang ac eraill, ond gallwch ddiffinio eich gorchmynion hun drwy eu rhoi ar waith yn Bash. Nawr, nid ydym yn mynd i mynd i fanylder mawr ag i Bash iaith raglennu, ond yn gwybod, er enghraifft, fod ar hyn o bryd, does dim Gelwir command "helo." Fel bod modd ei gweld yn un o'r pecynnau hyn. Dyw hi ddim yn osod ar fy nghyfrifiadur. Gofynnwch i'ch gweinyddwr. Ond os wyf am yno i fod yn rhaglen o'r enw "helo" yn Bash neu yn fy brydlon, Gall Fi 'n weithredol ddefnyddio cystrawen dyna yn eithaf tebyg i C. Nid yw'n union yr un fath, ond mae'n edrych yn eithaf tebyg i un swyddogaeth, er goll rhai manylion. Nid oes dim yn ymddangos i ddigwydd, ond erbyn hyn os byddaf deipio "helo," alli 'n weithredol ysgrifennu rhaglen, nid yn C, nid yn Java, nid mewn rhaglennu arall iaith, ond yn Bash ei hun. Nawr bod y allweddol yma yw fy mod ysgrifennodd y enwi oeddwn am roi y gorchymyn newydd, ac mae'r cromfachau hefyd symbolaidd o hyn fod yn swyddogaeth. Gyda llaw, gallwch hefyd wneud hwyl pethau, ac yn wir, hyd yn oed ar Mac OS, mae hon yn rhaglen o'r enw Terfynell. Mae'n dod adeiladu i mewn unrhyw un gyfrifiadur sydd â Mac yn yr ystafell hon, a gallwch wneud pethau tebyg yn Mac AO, ond gallwch fynd yn fwy y tu hwnt i hynny. Ac mae hyn yn ychydig yn ymylol, ond mae'n fath o hwyl. Cefais fy atgoffa y bore yma, wrth feddwl hyn drwy, o ychydig o gêm yr wyf yn arfer chwarae gydag un o gyn TFS CS50 yn lle unrhyw bryd byddai'n cerdded i ffwrdd oddi wrth ei bysellfwrdd gyda'i sgrîn datgloi, Byddwn yn gweithredu gorchymyn fel this-- "ddweud helo." Ac yn awr unrhyw adeg daeth yn ôl at ei bysellfwrdd ar ôl i mi glirio y sgrin a byddai'n eistedd i lawr, ceisio gwneud rhywfaint o waith, rhestru cynnwys ei directory-- [SAIN Playback] -Hello. Helo. SIARADWR 1: Felly, a bod yn deg, nid oedd mewn gwirionedd yn "helo." Mae fel arfer yn rhywbeth debycach i that-- [SAIN Playback] -Beep. SIARADWR 1: --that wyf would-- felly byddai ei gyfrifiadur rhegi arno unrhyw adeg ei fod mewn gwirionedd eistedd i lawr ar ei bysellfwrdd. Ac yn gyflym iawn, efe a cyfrifedig allan beidio â gadael ei sgrin ddatgloi. Ond mae hyn yn awgrymu y math o hwyl dwp sy'n eich Gall gael gyda rhywbeth fel Bash. Ond mae'n ychydig yn fwy difrifol, i fod yn sicr, na hynny. Ac yn wir, mae hyn yn un o'r y rhan fwyaf o chwilod peryglus a hir-barhaol sydd wedi taro y byd 'n sylweddol yn fyd-eang. Mae'r byg wedi bod o gwmpas am ryw 20 mlynedd, a byddwch yn taro mewn dim ond hyn o bryd gan ei symlrwydd cymharol. Felly mae hwn yn gynrychiolydd gorchymyn, os ydych yn berchen ar Mac, yn llythrennol ar hyn o bryd pan fyddwch yn cael eich caead ar agor, gallwch roi cynnig teipio i mewn i hynny rhaglen o'r enw Terfynell. Terfynol yn dan Ceisiadau Utilities-- am unwaith, nid oes rhaid i ddefnyddwyr Windows phoeni am hyn threat-- penodol ond gall y rhai ohonoch sydd â Macs deipio hyn i mewn i ffenestr fel y bydda i'n ei wneud yma, ac os ydych yn teipio hynny yn y rhaglen hon Gelwir Terminal, fel 'n annhymerus' ei wneud yn awr, os ydych yn gweld y gair "agored i niwed," eich cyfrifiadur yn agored i gael eu hecsbloetio. Nawr beth mae hynny'n ei olygu mewn gwirionedd? Ac mae hyn yn rhaid cyfaddef rhywfaint o gystrawen eithaf gwallgof, ond gadewch i ni o leiaf yn tynnu allan rhai o'r agweddau diddorol. Felly, mae rhywfaint o gystrawen sy'n edrych ychydig yn gyfarwydd, o leiaf o C a rhaglennu yn fwy cyffredinol. Rwy'n gweld rhai cromfachau, hanner colon, bresys cyrliog, ac o'r fath, ond mae'n troi allan bod hyn beth gwirion yma mewn melyn yn ei hanfod yn swyddogaeth sy'n gwneud dim. Y dull colon yn gwneud dim, ac mae'r hanner colon yn golygu rhoi'r gorau i wneud dim byd. Felly, y tu mewn o'r rhain braces cyrliog, mae'r ffaith fy mod yn cael gyfartal arwyddo i'r chwith, mae hyn yn creu ei hanfod gorchymyn, neu newidyn, Gelwir x, ac yn aseinio ei bod ychydig melyn o god yno. Gallai hynny fod yn rhywbeth fel "eco helo "neu" yn dweud Canu "neu rywbeth debyg i hynny. Ond yn sylwi os yw eich llygaid crwydro ymhellach ar y dde, mae yna fwy i'r llinell hon nag dim ond diwedd y hanner colon. "Echo agored i niwed," ac yna tu hwnt i hynny mae hyd yn oed mwy. Hanner colon, -c arall bash :. Mor fyr stori hir, y llinell hon o god yn ddigonol ar gyfer cymhellol cyfrifiadur dyna agored i wneud rhywbeth eich bod am iddo ei wneud, oherwydd mae 'na bug yn Bash lle er bod Bash oedd i fod i roi'r gorau i llinellau darllen o gorchymyn hawl yno ar ôl y testun melyn, ar gyfer 20-plws oed bug flwyddyn, Bash mewn gwirionedd wedi bod yn darllen y tu hwnt i'r hanner colon a 'n bert llawer yn gwneud yr hyn y mae'n ei hadrodd. Felly beth yw'r goblygiadau o hynny yn y pen draw? Wyf newydd ei ddweud "helo echo" neu "adleisio agored i niwed," ond beth os ydych yn gwneud rhywbeth mewn gwirionedd yn faleisus, fel rm -rf *, nad ydych efallai wedi teipio erioed o'r blaen, a dweud y gwir mae'n debyg y ddylai heb fod yn rhy fuan, oherwydd gallwch wneud llawer o ddifrod ag ef. Pam? rm sy'n gwneud beth, wrth gwrs? Cael gwared. * Yn golygu beth? All. Felly mae'n hyn a elwir yn cerdyn gwyllt, felly mae'n golygu dileu popeth yn y cyfeiriadur cyfredol. -r digwydd i olygu recursive, sy'n golygu os bydd hyn yr ydych yn dileu yn gyfeiriadur, ac y tu mewn o yno yn ffeiliau eraill a chyfeiriaduron eraill, recursively plymio i mewn yno ac yn dileu popeth o hynny. Ac -f yw'r gwaethaf ohonynt i gyd. Unrhyw un yn gwybod beth -f ei olygu fan hyn? Heddlu. Felly grym yn golygu, hyd yn oed os yw hyn yn syniad drwg, wneud hynny heb anogaeth i mi am gadarnhad pellach. Felly, chi'n gwybod, rydym yn chwerthin ar hyn, ond dweud y gwir, yr wyf yn ôl pob tebyg teipiwch hyn sawl gwaith y dydd, gan fod y realiti yw ei fod yn y ffordd gyflymaf i dileu criw cyfan o bethau. Ond hyd yn oed yr wyf wedi gwneud rhywfaint o niwed. Ond os ydych yn twyllo cyfrifiadur mewn i ddiffinio rhai newidyn dwp neu swyddogaeth o'r enw x, ond yna twyllo'r y cyfrifiadur i mewn i gweithredu tu hwnt i ffiniau hynny swyddogaeth, y tu hwnt i'r hanner colon, Gallai yn wir i chi twyllo cyfrifiadur i mewn i weithredu rhywbeth fel rm -rf neu'r Ebost gorchymyn neu y gorchymyn Copy. Unrhyw beth llythrennol y gallwch ei wneud gyda'r cyfrifiadur, boed yn dileu ffeiliau, creu ffeiliau, spamio rhywun, ymosod peth gweinydd o bell, os gallwch fynegi ei gyda meistrolaeth, rydych Gall castia cyfrifiadur i mewn i wneud hynny. Nawr beth yw enghraifft o sut y byddwch yn gwneud hyn? Wel, mae llawer o gyfrifiaduron ar y Bash rhedeg y rhyngrwyd. Mae pob un ohonom defnyddwyr Mac yn eu plith. Mae llawer o weinyddion Linux ymhlith nhw hefyd, a gweinyddwyr Unix. Ffenestri unwaith eto yn cael gymharol oddi ar y bachyn oni bai eich bod wedi gosod meddalwedd arbennig. Erbyn hyn, mae llawer o weinyddion, ar gyfer enghraifft, gweinyddwyr gwe yn rhedeg, ac mewn gwirionedd Linux efallai yw'r y rhan fwyaf o system weithredu poblogaidd i redeg ar gyfrifiaduron ar y rhyngrwyd sydd yn gwasanaethu i fyny tudalennau gwe. Nawr fel y byddwn yn gweld yn nes ymlaen yn y semester, pan i chi anfon cais gan eich Chrome browser--, Internet Explorer, whatever-- i weinydd anghysbell, mae'n ymddangos bod hyd yn oed er 'ch jyst deipio www.example.com, eich porwr yn anfon neges dyna ychydig yn fwy dirgel, fel hyn. Ond sylwi rhywbeth bach rhyfedd. Mae'r ddwy linell gyntaf Dwi erioed wedi gweld o'r blaen, ond nid ydynt yn edrych arbennig o fygythiol. Ond sylwi ar hyn yr wyf wedi dwyn am y drydedd linell yma. Os bydd dyn drwg yn anfon neges fel hyn o'i gyfrifiadur i'r Mac neu agored i niwed gweinydd Linux sy'n agored i niwed, y peth rhyfedd yw bod Bash, hynny brydlon gorchymyn bach syml, yn hollbresennol ac yn aml defnyddio i weithredu yn y bôn gynnwys y neges y mae'n ei dderbyn. Ac erbyn y rhesymeg, gallwch castia gweinydd gwe, felly, drwy anfon rhywbeth fel Defnyddiwr-Asiant, sydd fel arfer i fod i ddweud y enwi eich porwr. Defnyddiwr-Asiant Chrome, Defnyddiwr-Asiant Rhyngrwyd Explorer, Defnyddiwr-Asiant Firefox, mae hyn yn unig yw eich porwr ffordd o adnabod ei hun. Ond os bydd dyn drwg iawn Dywed gelfydd, mm-mm, rwy'n ddim yn mynd i ddweud wrthych beth yw fy porwr yn, Im 'yn lle mynd i anfon chi yma cryptig-edrych beth gyda -rf rm * Ynddo, gallwch llythrennol castia a weinydd y we sy'n agored i niwed ar y rhyngrwyd i mewn i gweithredu yn union hynny yn yno ar gyfer dileu pob un o'r ffeiliau. Ac yn dweud y gwir, nid yw hynny'n hyd yn oed y gwaethaf ohono. Gallwch chi wneud unrhyw beth. Gallech ddechrau ddosbarthu ymosodiad gwrthod gwasanaeth os ydych yn anfon y neges hon at sypiau cyfan o gweinyddwyr gwe ac yna roedd nhw i gyd yn disgyn, am enghraifft, ar weinyddion Harvard.edu, a gallwch ddatrys o bang y Heck allan ohonynt gan draffig rhwydwaith a oedd sbarduno fel arall gan y dyn drwg. Felly, stori fer hir, bron pawb yn yr ystafell hon sy'n berchen ar Mac yn agored i hyn. Mae'r ymyl arian yw bod oni bai eich bod rhedeg gweinydd gwe ar eich gliniadur, ac oni bai eich bod wedi ffurfweddu mewn gwirionedd iddo i ganiatáu rhywbeth fel SSH i mewn iddo, eich bod mewn gwirionedd yn ddiogel. Mae'n agored i niwed, ond nid oes un yn ceisio at ca i mewn eich gliniadur, er mwyn i chi fath o yn dawel eich meddwl. Fodd bynnag, bydd Apple yn fuan yn diweddaru ateb ar gyfer hyn. Mae byd Linux eisoes wedi rhyddhau nifer o atebion ar gyfer Fedora a Ubuntu a fersiynau eraill o'r Linux, ac yn wir os ydych yn rhedeg diweddariad 50 yn y peiriant, hyd yn oed y bydd hefyd yn diweddaru a'u cywiro. Ond nad yw hefyd wedi 'n sylweddol wedi bod yn agored i niwed, oherwydd oni bai eich bod wedi tinkered gyda'r offer a gwneud eich gliniadur yn gyhoeddus hygyrch ar y rhyngrwyd, ac nid yw at ball, eich bod wedi bod yn iawn oherwydd mewn gwirionedd o mur gwarchod a thechnegau eraill. Ond ei fod yn enghraifft eithafol o nam ein bod ni wedi byw am dros llythrennol 20 flynyddoedd, a phwy a ŵyr os bydd rhywun i gyd y tro hwn wedi hysbys am y peth? Ac yn wir, mae hyn yn un o yr heriau sylfaenol y byddwn yn gweld yn nes ymlaen yn y semester am ddiogelwch, yw bod yn union fel yn y byd go iawn, y guys da wrth anfantais. I gadw'r guys ddrwg allan, mae'n rhaid i ni gwneud yn siŵr bod pob drws wedi ei gloi, bod pob ffenestr yn ddiogel, bod pob pwynt mynediad i gartref yn ddiogel i gadw'r guys drwg allan. Ond beth sydd gan y dyn drwg yn rhaid i ei wneud i mewn gwirionedd yn peryglu eich cartref a dwyn oddi wrthych? Ef neu hi jyst wedi i ddod o hyd i un heb ei gloi drws, un ffenestr wedi torri, neu rywbeth ar y llinellau hynny, ac mae'n y un peth mewn diogelwch cyfrifiadurol. Gallwn ysgrifennu miliynau o llinellau o god rhaglennu ac yn gwario cannoedd neu filoedd o oriau yn ceisio at ca yw'n gywir, ond os byddwch yn gwneud dim ond un gamgymeriad mewn cywirdeb, gallwch roi y system gyfan a yn wir yn yr achos hwn, y rhyngrwyd cyfan a byd mewn perygl. Felly os hoffech chi ddysgu mwy am hyn, ewch i'r URL hwn yma. Does dim angen i weithredu heno oni bai eich bod ymhlith y rhai yn fwy cyfforddus bod wedi bod yn rhedeg eich gwe eich hun gweinyddwr, ac os felly dylech, mewn gwirionedd, diweddaru eich meddalwedd. Ac mae hyn hefyd yw teitl araith, ac yn awr papur, ein bod wedi cysylltu ar y wefan y cwrs ar gyfer heddiw. Yr oedd gan gyd o'r enw Ken Thompson, a oedd yn derbyn enwog iawn wobr mewn gwyddoniaeth gyfrifiadurol, a rhoddodd araith hon rai blynyddoedd yn ôl, yn y bôn ar yr un pwnc. Gofyn Folks y cwestiwn, Dylai chi wir ymddiriedaeth, yn y pen draw, mae'r meddalwedd ydych wedi bod yn ei roi? Er enghraifft, yr ydym i gyd wedi bod yn ysgrifennu rhaglenni, ac rydym wedi bod yn llunio iddynt chlang. Ac i eich gwybodaeth, ydych chi wedi ysgrifennu unrhyw raglenni ar gyfer CS50 lle mae drws cefn o ryw fath, mae ffordd bod dyn drwg, os redeg eich rhaglen, Gallai cymryd drosodd eich cyfrifiadur? Nid yn ôl pob tebyg, dde? Mario, a barus, a Chredyd. Mae'r rhain i gyd yn y rhaglenni eithaf bach. Byddai'n rhaid i chi fod yn eithaf drwg os ydych mewn gwirionedd yn gwneud eich cyfrifiadur cyfan sy'n agored i niwed ar ôl ysgrifennu 10 neu 20 llinell o god, neu o leiaf yn ymwybodol o rai o'r goblygiadau diogelwch. Nawr yr wyf yn dweud hynny gellweirus ond rydym yn mynd i weld heddiw ac yr wythnos hon ei fod yn mewn gwirionedd mewn gwirionedd, hawdd iawn i fod yn wael ac yn gwneud hyd yn oed yn raglenni byr sy'n agored i niwed. Ond am y tro, o leiaf, yn sylweddoli bod y cwestiwn a ofynnir yma yn ymwneud chlang mewn compiler. Pam ydym ni wedi bod yn ymddiried chlang ar gyfer y ddwy neu dair wythnos diwethaf? Pwy yw i ddweud bod pwy bynnag ysgrifennodd chlang Nid oedd gan "os" cyflwr mewn 'na hynny yn y bôn chwistrellu rhai seroau a rhai i mewn i bob rhaglen y mae'n llunio a fyddai'n gadael iddo neu iddi fynediad pan fydd eich cyfrifiadur eich bod yn cysgu a bod eich gliniadur caead ar agor a bod eich cyfrifiadur yn rhedeg? Hawl? Mae gennym y math hwn o system anrhydedd hawl awr lle'r ydym yn hyderu y chlang yn legit. Ydych yn ymddiried bod y peiriant yn legit. Ydych yn ymddiried bod llythrennol pob rhaglen ar eich Mac neu PC yn ddibynadwy. Ac fel y bug syml yn awgrymu, hyd yn oed os nad yw'n faleisus, dyna gwbl nad debygol o fod yn wir. Felly, dylech fod yn ofnus fel uffern. Dweud y gwir, does dim syml ateb i hyn eraill na rhyw fath o ymwybyddiaeth cymdeithasol o'r cymhlethdod cynyddol ein bod yn adeiladu ar ben ein systemau cyfrifiadurol, a pha mor fwyfwy agored i niwed efallai y byddwn yn dda iawn fod. Nawr gyda dweud hynny, Breakout. Felly Breakout yn broblem gosod tri, a Breakout yn gêm oddi fu y gallai byddwch yn cofio, ond i ni yn broblem gosod tri, mae'n ein galluogi i gymryd pethau yn ôl i fyny hollt fel bod pan fyddwn yn ysgrifennu rhaglenni, hyd yn oed mewn ffenestr Derfynnell fel hyn, allwn ni mewn gwirionedd yn rhedeg, yn y pen draw, Nid yw rhaglenni graffigol yn wahanol i'r rhai rydym yn cael mynediad ato yn Scratch. Felly mae hwn yn y staff gweithredu Breakout, sydd ychydig y brics-dorri gêm, eich bod yn symud eich padlo yn ôl ac ymlaen, ac i chi taro'r bêl yn erbyn y brics lliw y rhai i fyny top. Felly, mae hyn yn dod â ni fath o yn ôl i lle roeddem yn gallu bod yn gyflym iawn gyda Scratch, ac yn awr gyda C, gweithredu ein hunain rhyngwynebau defnyddwyr graffigol. Ond yn fwy na hynny, mae hyn yn set problem yn cynrychioli'r cyntaf lle rydym yn rhoi chi griw o god. Ac yn wir, yr wyf yn dod â eglur sylw at hyn, gan fod yn arbennig ar gyfer y rhai llai cyfforddus, mae hyn broblem a osodwyd, o leiaf ar yr olwg gyntaf, yn mynd i deimlo fel rydym wedi cymryd i fyny hollt. Oherwydd ein bod wedi ei roi i chi, gyfer rhai o'r chwiliad a didoli problemau yn y pset, criw o cod sy'n ysgrifenasom, ac un neu ddau o sylwadau sy'n dweud "i'w wneud," lle mae'n rhaid i lenwi'r bylchau. Felly, heb fod yn rhy frawychus, ond 'i' y tro cyntaf rydym yn trosglwyddo i chi cod y mae angen i chi yn gyntaf ddarllen, deall, ac yna ychwanegu at a'i gwblhau. Ac yna gyda Breakout, ydym yn mynd i wneud yr un peth, gan roi ychydig dwsin mwy linellau chi o god hynny, a dweud y gwir, yn rhoi i chi llawer o'r fframwaith ar gyfer y gêm ond yn rhoi'r gorau i byr o weithredu'r brics ac y bêl ac y Stemars, ond rydym yn ei wneud yn gweithredu rhai nodweddion eraill. A hyd yn oed fod ar yr olwg gyntaf, unwaith eto, yn enwedig os oes llai cyfforddus, Gallai ymddangos yn arbennig o frawychus a ydych yn credu bod cymaint o swyddogaethau newydd mae angen i chi lapio eich meddwl gwmpas, ac mae hynny'n wir. Ond yn cadw mewn cof, mae'n yn eithaf tebyg i Scratch. Groes yn nad oeddech yn defnyddio'r holl y darnau pos yn Scratch. Groes yn nad oeddech yn gofalu i lapio eich meddwl o amgylch pob un ohonynt oherwydd y cyfan fe gymerodd roedd yn cipolwg cyflym i ddeall, oh, dyna beth y gallaf ei wneud gyda'r darn pos. Ac yn wir, yn y broblem a osodwyd 3 spec, byddwn yn pwyntio i chi ar y dogfennau a fydd eich cyflwyno i rai swyddogaethau newydd, ac yn y pen draw, mae'r rhaglenni yn adeiladu a ddefnyddiwch. Amodau, dolenni, newidynnau, a swyddogaethau fydd yn union yr un fath hyn yr ydym wedi ei weld hyd yn hyn. Felly yn wir, yr hyn y byddwn yn rhoi chi rhywfaint o cod sampl sy'n yn gadael i chi greu ffenestr Nid yw yn edrych yn wahanol hyn, ac yn y pen draw troi i mewn rhywbeth eithaf fel hyn. Felly, yn cymryd mantais o CS50, trafod oriau swyddfa ac yn fwy, ac yn cymryd cysur yn y ffaith bod faint o cod yn rhaid i chi ysgrifennu mewn gwirionedd nid yw pob bod llawer. Yr her gyntaf yn unig i acclimate eich hun i ryw cod rydym wedi ysgrifennu. Unrhyw gwestiynau am pset3, Shellshock, neu fel arall? CYNULLEIDFA: Mae'n ymddangos fel mynd drwy gyda Breakout bod y cod yn bron arddull gwrthrych-oriented, ond roeddwn i'n meddwl C yn rhaglen gwrthrych-oriented. SIARADWR 1: Mae cwestiwn ardderchog. Felly, wrth edrych drwy'r cod dosbarthu, mae'r cod ysgrifennom am pset3, ar gyfer y rhai cyfarwydd, mae'n edrych fel ei fod yn Ychydig gwrthrych-oriented. Yr ateb byr yw, mae'n. Mae'n amcangyfrif o sut yr ydych yn Gallai wneud cod gwrthrych-oriented gan ddefnyddio iaith fel C, ond mae'n dal i fod yn y pen draw gweithdrefnol. Nid oes unrhyw ddulliau tu mewn y newidynnau, fel y byddwch yn gweld. Ond mae'n ein hatgoffa o hynny. A byddwn yn gweld y nodwedd honno eto pan fyddwn yn mynd i PHP a JavaScript tuag at ddiwedd y semester. Ond am nawr, meddwl amdano fel awgrym o beth sydd i ddod. Gwestiwn da. Mae pob hawl. Felly yn uno fath oedd sut yr ydym yn chwith bethau tro diwethaf. Ac yn uno fath yn oer yn y ystyr ei fod mor llawer cyflymach, o leiaf yn seiliedig ar y profion arwynebol y gwnaethom yr wythnos diwethaf, na, dyweder, swigen didoli, didoli dewis, didoli gosod. A beth oedd yn daclus hefyd yn unig pa mor gryno ac yn lân gallwch fynegi ei. A beth wnaethon ni ei ddweud ei fod yn uwch rhwymo ar yr amser yn rhedeg o uno didoli? Yeah? CYNULLEIDFA: n log n? SIARADWR 1: n log n, ar y dde. n log n. A byddwn yn dod yn ôl at yr hyn sy'n olygu mewn gwirionedd, neu pan fo hynny'n dod, ond roedd hyn yn well na'r hyn y tro yn olynol a welsom am swigen dethol a didoli gosod? Felly n sgwâr. n sgwario yn fwy na hyn, a hyd yn oed os nad yw'n hollol amlwg, gwybod bod log n yn llai na n, felly os ydych yn gwneud amseroedd n rhywbeth llai na n, mae'n mynd i fod yn llai na'r sgwâr n. Mae'n dipyn o greddf yno. Ond rydym yn talu pris ar gyfer hyn. Yr oedd yn gyflymach, ond yn thema a ddechreuodd i ddod i'r amlwg yr wythnos diwethaf oedd tradeoff hwn. Cawn gwell perfformiad doeth o amser, ond yr hyn oedd rhaid i mi wario ar y llaw arall llaw, er mwyn cyflawni hynny? CYNULLEIDFA: Cof. SIARADWR 1: Dweud eto? CYNULLEIDFA: Cof. SIARADWR 1: Cof, neu o le yn fwy cyffredinol. Ac nid oedd yn super amlwg gyda'n bodau dynol, ond yn dwyn i gof bod ein gwirfoddolwyr yn camu ymlaen ac yn camu yn ôl fel pe mae 'na amrywiaeth yma, ac fel pe mae ail amrywiaeth yma y gallent ei ddefnyddio, oherwydd ein bod Thrafod Roedd ei angen i uno Folks hynny. Ni allem unig yn eu cyfnewid yn eu lle. Felly uno trosoledd fath yn fwy o le, a oedd yn doedden ni ddim yn angen â y algorithmau eraill, ond mae'r upside yw ei fod yn llawer cyflymach. Ac yn dweud y gwir, yn y lle a byd go iawn mae'r rhain RAM days--, disg galed space-- yn gymharol rhad, ac felly dyna nid o reidrwydd yn beth drwg. Felly, gadewch i ni edrych yn sydyn, ychydig fwy yn drefnus, yn hyn a wnaethom a pham yr ydym yn dweud ei fod yn n log n. Felly dyma yw'r rhifau wyth a'r wyth o wirfoddolwyr oedd gennym y tro diwethaf. A'r peth cyntaf sy'n Uno Trefnu yn dweud wrthym i wneud oedd beth? CYNULLEIDFA: Rhannwch yn ddau. SIARADWR 1: Dweud eto? CYNULLEIDFA: Rhannwch yn ddau. SIARADWR 1: Divide mewn dau, ar y dde. Mae hyn yn atgoffa rhywun iawn o y llyfr ffôn, o rhaniad a gorchfygu yn fwy cyffredinol. Felly, buom yn edrych ar yr hanner chwith. Ac yna ar ôl i ni ei ddweud, didoli yr hanner chwith y elfennau, yr hyn a wnaethom ni ddweud nesaf? Didoli'r hanner chwith y chwith hanner, a oedd yn caniatáu i ni, ar ôl rhannu mewn dau, canolbwyntio ar bedwar a dau. Sut ydych chi'n datrys rhestr yn awr, yn melyn, o faint dau, gan ddefnyddio Cyfuno Sort? Wel rannu yn ei hanner, ac yn didoli'r hanner chwith. Ac roedd hyn yn lle mae pethau got ychydig yn fyr dwp. Sut ydych chi'n datrys rhestr dyna o un maint, fel y nifer hwn pedwar yma? Mae'n datrys. Rydych yn ei wneud. Ond yna sut ydych chi'n trefnu rhestr o maint un pryd mae'n y rhif dau? Wel, un peth, ond erbyn hyn beth oedd y trydydd a'r cam allweddol yn Merge Sort? Bu'n rhaid i chi gyfuno y chwith hanner a hanner cywir. Ac unwaith baem yn gwneud hynny, buom yn edrych mewn pedwar, buom yn edrych ar ddau. Rydym yn penderfynu i gyd yn iawn, amlwg dau yn dod yn gyntaf, felly rydym yn rhoi dau yn ei lle, ac yna bedwar. Ac yn awr mae'n rhaid i chi fath o ailddirwyn, ac mae hyn yn fath o nodwedd o algorithm fel Merge Didoli, ail-ddirwyn yn y cof. Beth oedd y llinell nesaf y stori? Beth ddylwn i fod yn canolbwyntio ar nesaf? Mae hanner dde o'r chwith hanner, Pa yn chwech ac wyth. Felly, gadewch i mi dim ond cam drwy hyn heb belaboring pwynt gormod. Chwech ac wyth, yna chwech yn didoli, wyth yn cael ei datrys. Uno at ei gilydd fel 'na, ac yn awr y cam mawr nesaf yw, wrth gwrs, yn didoli'r hanner cywir o y cam cyntaf un o algorithm hwn. Felly, rydym yn canolbwyntio ar un, tri, saith, pump. Yna, rydym yn canolbwyntio ar yr hanner chwith. Mae hanner chwith hynny, mae'r hanner cywir o hynny, ac yna uno mewn un a thri. Yna yr hanner i'r dde, yna i'r chwith hanner o hynny, yna yr hanner dde ohono. Cyfuno i mewn, ac yn awr pa gam yn parhau i fod? Cyfuno yr hanner chwith mawr a'r mawr hanner cywir, felly un yn mynd i lawr yno, Yna, dau, yna dri, yna pedwar, yna phump, yna chwech, ac yna saith, ac yna wyth. Felly nawr pam fod hyn yn y pen draw datgelu, yn enwedig os n a logarithmau mwy gyffredinol yn hytrach chi ddianc, o leiaf yn y cof yn ddiweddar? Wel, yn sylwi ar y uchder y peth hyn. Roedd gennym wyth elfen, ac rydym yn Rhennir iddo gan ddau, gan ddau, gan ddau. Felly log sylfaen dau o wyth yn rhoi i ni dri. Ac yn ymddiried mi ar hynny os ychydig yn aneglur ar hynny. Ond log sylfaen dau o wyth yw tri, felly rydym wedi gwneud tair haen o uno. A phan fyddwn yn uno elfennau, faint o elfennau wnaeth rydym yn edrych ar ar bob un o'r rhesi hynny? Mae cyfanswm o n, dde? Gan fod i uno y rhes uchaf, er ein bod yn gwneud hynny bob yn dipyn, rydym yn y pen draw cyffwrdd pob rhif unwaith. Ac yn yr ail reng, i uno rhestrau rhai o faint dau, roedd rhaid i ni gyffwrdd pob elfen unwaith. Ac yna dyma mewn gwirionedd glir yn y rhes olaf, roedd yn rhaid i gyffwrdd pob un o'r rhai a elfennau unwaith, ond dim ond unwaith, felly yma yn gorwedd, yna, mae ein n log n. Ac yn awr yn unig i wneud pethau ychydig yn mwy ffurfiol ar gyfer dim ond hyn o bryd, os ydych yn Roedd yn hyn dadansoddi'r hyn mewn rhyw fath o lefel uwch ac yn ceisio penderfynu, yn dda sut efallai y byddwch yn mynd ati i fynegi yr amser yn rhedeg y algorithm hwn dim ond drwy edrych arno ac nid drwy ddefnyddio enghraifft ddyfeisgar? Wel, faint o amser fyddech chi'n dweud yn cam fel y byddai hyn yn melyn yn cymryd, os n <2 yn dychwelyd? Mae hynny'n O fawr o beth? Felly rwy'n gweld un, felly un cam, efallai dau gam am ei fod os ac yna dychwelyd, ond mae'n amser yn gyson, dde? Felly dywedasom O (1), a dyna sut 'N annhymerus' yn mynegi hyn. T, dim ond yn rhedeg amser. n yw maint y mewnbwn, felly T (n), dim ond ffordd ffansi o ddweud rhedeg amser mewnbwn penodol o faint n yn mynd i fod ar y drefn o amser yn gyson, yn O (1). Ond fel arall, beth am hyn? Sut y byddech yn mynegi y rhedeg amser y llinell felen hon? T o beth? Gallwch fath o twyllo yma ac ateb fy nghwestiwn gylchol. Felly, os bydd yr amser yn rhedeg yn cyffredinol yr ydym newydd ei ddweud yw T (n). Ac yn awr eich bod yn fath o punting yma ac gan ddywedyd, yn dda, dim ond didoli'r hanner chwith, ac yna ddatrys y hanner cywir. Sut y gallem symbolaidd yn cynrychioli yr amser yn rhedeg y llinell felen hon? T o beth? Beth yw maint y mewnbwn? n dros ddwy. Pam nad ydw i'n jyst yn dweud hynny? Ac yna mae hyn yn T un arall (n / 2) ac yna eto, os wyf yn uno dau hanner ddidoli, faint o elfennau ydw i'n mynd i fod i gyffwrdd cyfanswm? n. Felly gallaf fynegi hyn, dim ond i fod yn fath o ffansi, fel yr amser yn rhedeg yn gyffredinol. T (n) yn unig yw yr amser yn rhedeg o T (dd / 2), ynghyd T (dd / 2), gadawodd hanner a hanner i'r dde, plws O (n), sydd yn ôl pob tebyg n grisiau, ond efallai, os wyf yn defnyddio dau fys, 'i' ddwywaith yn fwy o grisiau, ond mae'n llinol. Mae'n rhywfaint o nifer o gamau mae hynny'n ffactor o n, er mwyn i ni fynegi'r hyn fel hyn. A dyma lle erbyn hyn byddwn yn punt at y nghefn ein gwerslyfr mathemateg ysgol uwchradd rydym yn y pen draw digwydd eto yn dod i ben i fyny gyfartal hyn, amseroedd n log n, os ydych yn ei wneud allan y cwestiwn yn fwy ffurfiol. Felly dyna safbwyntiau dim ond dau. Mae un yn rhifol gyda caled-godio Enghraifft cynrychioliadol gan ddefnyddio wyth rhifau, ac mae mwy Golwg gyffredinol ar y modd yr ydym yn cyrraedd yno. Ond yr hyn sy'n ddiddorol iawn yma yw, unwaith eto, syniad hwn o feicio. Dydw i ddim yn defnyddio ar gyfer dolenni. Im 'yn fath o ddiffinio rhywbeth o ran ei hun, nid yn unig gyda hyn swyddogaeth mathemategol, ond hefyd o ran y cod ffug. Mae'r cod ffug yn recursive gan fod dau o'i linellau yn y bôn yn dweud iddo fynd defnyddio ei hun i ddatrys llai problem o faint llai, ac yna dro ar ôl tro ac eto hyd nes y byddwn naddu ei i lawr at yr achos sylfaenol fel y'u gelwir. Felly gadewch i ni mewn gwirionedd yn tynnu mwy cymhellol i'w fwyta allan o hyn fel a ganlyn. Gadewch i mi fynd i mewn i gedit ac yn cymryd edrych ar rai o'r cod ffynhonnell heddiw, yn arbennig yr enghraifft yma. Sigma 0, sydd yn ôl pob golwg yn ychwanegu y rhifau un drwy n. Felly, gadewch i ni weld beth sy'n gyfarwydd ac anghyfarwydd yma. Yn gyntaf mae gennym un neu ddau o yn cynnwys, felly dim byd newydd yno. Prototeip. Rwy'n ychydig yn niwlog ar hyn ar ôl ychydig ddyddiau, ond yr hyn a wnaethom ni ddweud prototeip o swyddogaeth yw? CYNULLEIDFA: [Anghlywadwy]. SIARADWR 1: Beth sy'n bod? CYNULLEIDFA: Rydym yn cyhoeddi ei. SIARADWR 1: Rydym yn cyhoeddi ei. Felly yr ydych yn addysgu chlang, hey, Nid mewn gwirionedd yn gweithredu hyn eto, ond yn rhywle yn y ffeil, yn ôl pob tebyg, yn mynd i gael ei swyddogaeth o'r enw beth? Sigma. Ac mae hyn yn unig yw addewid sy'n mae'n mynd i edrych fel hyn. Mae'n mynd i gymryd yn gyfanrif fel input-- a gallaf fod yn fwy eglur a dweud int n --and mae'n mynd i ddychwelyd yn int, ond mae dulliau hanner colon, mm, yr wyf bydd symud o gwmpas i weithredu hyn ychydig yn ddiweddarach. Unwaith eto, chlang yn fud. Dim ond yn mynd i wybod beth chi ddweud ei top i'r gwaelod, felly mae angen i ni o leiaf yn rhoi mae'n awgrym o beth sydd i ddod. Nawr gadewch i ni edrych ar brif yma. Gadewch i sgroliwch i lawr yma ac weld beth prif yn ei wneud. Dyw hi ddim yn bod hir o swyddogaeth, ac yn wir y lluniad yma yn gyfarwydd. Yr wyf yn datgan newidyn n, ac yna Rwy'n plagio y defnyddiwr dro ar ôl tro ar gyfer cyfanrif positif gan ddefnyddio getInt, a dim ond allanfa allan o'r ddolen hon unwaith y bydd y defnyddiwr wedi cydymffurfio. Ydyn Er, rydym wedi defnyddio i plagio y defnyddiwr yn y ffordd honno. Yn awr mae hyn yn ddiddorol. Yr wyf yn datgan int o'r enw "ateb." Trosglwyddaf ei werth dychwelyd swyddogaeth o'r enw "sigma." Nid wyf yn gwybod beth y mae hynny'n ei wneud eto, ond Dwi'n cofio datgan ei fod funud yn ôl. Ac yna i ddim yn pasio yn y gwerth y mae'r defnyddiwr yn teipio i mewn, n, ac yna yr wyf yn rhoi gwybod yr ateb. Wel gadewch i sgrolio yn ôl am ddim ond ennyd. Gadewch i ni fynd yn ei flaen i mewn i cyfeiriadur, gwneud sigma 0, ac mewn gwirionedd yn rhedeg y rhaglen hon a gweld beth sy'n digwydd. Felly, os wyf yn mynd yn ei flaen ac yn rhedeg rhaglen hon, ./sigma-0, ac yr wyf yn teipio mewn ffordd gadarnhaol cyfanrif fel dwy, Sigma, gan fod y symbol Groeg yn awgrymu, yn unig mynd i ychwanegwch yr holl rhifau o sero ar hyd at ddwy. Felly 0 plws 1 a 2. Felly, dylai hyn, gobeithio, roi i mi 3. Dyna i gyd mae'n ei wneud. Ac yn yr un modd, os wyf yn rhedeg hyn eto ac yr wyf yn rhoi y rhif tri, dyna 3 a 2, felly dyna 5, ynghyd ag 1 Dylai roi i mi 6. Ac yna os byddaf yn cael 'n sylweddol crazy a dechrau teipio mewn niferoedd mwy, dylai roi i mi symiau fwy ac yn fwy. Felly, dyna i gyd. Felly beth mae sigma yn edrych? Wel, mae'n eithaf syml. Mae'n sut y gallem fod wedi rhoi ar waith hyn ar gyfer yr ychydig o wythnosau diwethaf. "Int" yn mynd i fod y math dychwelyd. Sigma yw enw, ac mae'n cymryd m amrywiol yn lle n. 'N annhymerus' newid hynny i fyny top. Yna, mae hyn yn unig yw gwirio bwyll. Byddwn yn gweld pam mewn munud. Nawr yr wyf yn datgan newidyn arall, swm, ymgychwyn i sero. Yna mi gael hyn Ar gyfer dolen ailadrodd, yn ôl pob golwg er eglurder, oddi i = 1 ar hyd at = m, sydd yn beth bynnag y defnyddiwr deipio i mewn, ac yna yr wyf yn cynyddiad y swm fel hyn. Ac yna dychwelyd y swm. Felly, ychydig o gwestiynau. Un, i'n hawlio yn fy sylw bod hyn yn osgoi risg o dolen ddiddiwedd. Pam y byddai pasio mewn nifer negatif cymell, o bosibl, dolen ddiddiwedd? CYNULLEIDFA: Fyddwch chi byth yn cyrraedd m. SIARADWR 1: Peidiwch byth yn cyrraedd m. Ond m cael ei basio i mewn, felly gadewch i ni ystyried enghraifft syml. Os yw m yn cael ei basio i mewn gan y defnyddiwr fel un negyddol. Heb ystyried brif. Main yn ein diogelu rhag mae hyn hefyd, felly Im 'jyst bod yn wir yn rhefrol gyda sigma i hefyd yn gwneud yn siŵr na all y mewnbwn fod yn negyddol. Felly os m yn negyddol, rhywbeth fel un negyddol. Beth sy'n mynd i ddigwydd? Wel, fi yn mynd i cael initialized i un, ac yna fi yn mynd i fod llai na neu'n hafal i m? Sefyll yn ôl. Na was-- gadewch i ni, gadewch i Nix y stori hon. Ni ofynnais y cwestiwn hwnnw, oherwydd y risg yr wyf yn cyfeirio ato Nid yn mynd i ddigwydd oherwydd i yw bob amser yn mynd yn fwy iawn than--, Yr wyf yn retract y cwestiwn hwnnw. OK. Gadewch i ganolbwyntio yn unig ar y rhan hon yma. Pam wnes i ddatgan rhai tu allan i'r ddolen? Hysbysiad ar lein 49 rwyf wedi datgan ff tu mewn i'r ddolen, ond ar-lein 48 rwyf wedi Datganodd rhan tu allan. Yeah. CYNULLEIDFA: [Anghlywadwy]. SIARADWR 1: Cadarn. Felly, yn anad dim yn sicr nid ei wneud yn awyddus i ddatgan a ymgychwyn swm i sero du mewn y dolen ar bob iteriad, gan y byddai hyn yn groes glir y bwrpas grynhoi fyny y rhifau. Byddwn yn cadw newid y gwerth yn ôl i sero. A hefyd, beth arall yn fwy dirgel rheswm dros yr un penderfyniad dylunio? Yeah. CYNULLEIDFA: [Anghlywadwy]. SIARADWR 1: Yn union. Yr wyf am i gael mynediad ato y tu allan o'r ddolen hefyd ar yr hyn y lein? Ar 53. Ac yn seiliedig ar ein synnwyr y fawd o un neu ddau o ddarlithoedd yn ôl, newidynnau yn cael eu cwmpasu, mewn gwirionedd, at y braces cyrliog sy'n eu cwmpasu. Felly os nad wyf yn datgan swm y tu mewn o'r rhain braces cyrliog allanol, Nid wyf yn gallu ei ddefnyddio yn unol 53. Mewn geiriau eraill, os wyf yn datgan swm i mewn yma, neu hyd yn oed o fewn y Ar gyfer dolen, allwn i ddim cael mynediad iddo yn 53. Byddai'r newidyn yn effeithiol yn mynd. Felly, un neu ddau o resymau yno. Ond yn awr gadewch i ni fynd yn ôl a gweld beth sy'n digwydd. Felly sigma yn cael ei alw. Mae'n ychwanegu i fyny 1 a 2, neu 1 a 2 ynghyd â 3, ac yna'n dychwelyd y gwerth, siopau yn ateb, a printf yma Dyna pam rydw i'n gweld ar y sgrin. Felly mae hyn yn yr hyn y byddwn yn galw ailadroddol dull, lle mae ailadroddiad union golygu defnyddio dolen. A Ar gyfer dolen, dolen Er, mae Do Er bod dolen, dim ond gwneud rhywbeth eto ac dro ar ôl tro. Ond sigma yn fath o swyddogaeth daclus mewn y gallwn i weithredu yn wahanol. Beth am hyn, a oedd yn dim ond i fod yn fath o oer, gadewch i mi mewn gwirionedd yn cael gwared o lawer o tynnu sylw oherwydd bod y swyddogaeth hon sydd mewn gwirionedd yn eithaf syml. Gadewch i Whittle i lawr dim ond at ei pedair llinell graidd a chael gwared ar yr holl sylwadau a braces cyrliog. Mae hwn yn fath o meddwl chwiban gweithredu amgen. Mae pob hawl, efallai nad meddwl-chwythu, ond mae'n fath o sexier, i gyd yn iawn, i edrych ar hyn yn llawer mwy cryno. Gyda dim ond pedair llinell o god, Cyntaf i mi gael y gwiriad pwyll. Os yw m yn llai na neu'n hafal i sero, sigma yn gwneud unrhyw synnwyr. Dim ond i fod i fod yn yr achos hwn ar gyfer rhifau positif, felly Im 'jyst yn mynd i dychwelyd sero fympwyol fel ein bod o leiaf yn cael rhai hyn a elwir yn achos sail. Ond dyma y harddwch. Y cyfan o'r syniad hwn, gan ychwanegu y rhifau o 1 i n, neu m yn yr achos hwn, y gellir ei wneud drwy fath o daflu'r baich. Wel, beth yw'r swm o 1 i m? Wel, chi'n gwybod beth? Mae yr un fath â'r swm o m yn ogystal â'r swm o 1 i m minws 1. Wel eich bod yn gwybod beth? Beth yw sigma o m minws 1? Wel, os ydych yn fath o ddilyn hyn rhesymegol, 'i' yr un fath â m minws 1 ynghyd sigma o m minws 2. Felly, gallwch fath o just-- mae hyn yn debyg, os ydych yn unig ceisio cythruddo ffrind ac maent yn gofyn cwestiwn i chi, chi fath o ymateb gyda chwestiwn, gallwch chi fath o gadw daflu'r baich. Ond yr hyn sy'n allweddol yw bod os ydych yn cadw gwneud y cwestiwn yn llai ac yn llai ac yn llai o faint, rydych yn Nid yw yn gofyn beth sydd sigma o n, beth sydd sigma o n, beth sydd sigma o n? Ydych yn gofyn beth sydd sigma o n, beth sydd sigma o n minws 1, beth sydd sigma o n minws 2? Yn y pen draw eich cwestiwn yn mynd i ddod yn beth? Beth yw sigma o un neu sero, rhywfaint o werth bach iawn, a chyn gynted ag y byddwch yn cael hynny, eich ffrind, Nid ydych yn mynd i ofyn yr un cwestiwn eto, ydych ond yn mynd i ddweud, oh ei fod yn sero. Rydym chi wedi gorffen chwarae math hwn o gêm cylchol dwp. Felly recursion yw'r weithred yn rhaglennu o swyddogaeth galw ei hun. Mae'r rhaglen hon, pan llunio a'u rhedeg, yn mynd i ymddwyn yn union yr un ffordd, ond yr hyn sy'n allweddol yw bod y tu mewn swyddogaeth o'r enw sigma, mae llinell o god wherein rydym yn galw ein hunain, fyddai fel rheol yn ddrwg. Er enghraifft, beth os byddaf yn gyntaf luniwyd hyn, felly gwnewch sigma-- gwneud sigma 1 ./sigma-1. Cyfanrif positif, os gwelwch yn dda, 50 1275. Felly beth mae'r swyddogaeth yn ymddangos i fod, yn seiliedig ar un prawf, yn gywir. Ond beth os wyf yn cael ychydig yn beryglus a dileu'r achos sylfaenol hyn a elwir, a dim ond dweud, yn dda Im 'jyst yn gwneud mae hyn yn fwy cymhleth nag y mae. Gadewch i jyst gyfrifo y sigma drwy gymryd m ac yna ychwanegu mewn sigma o un m minws? Wel, beth sy'n mynd i ddigwydd yma? Gadewch i chwyddo allan. Gadewch i ni ail-grynhoi y rhaglen, gadw, ail-grynhoi y rhaglen, ac yna'n barod ./sigma-1 chwyddo i mewn, mynd i mewn cyfanrif positif os gwelwch yn dda, 50. Faint ohonoch chi yn fodlon i fess i fyny at weld hynny? OK. Felly, gall hyn ddigwydd am nifer o resymau, a dweud y gwir yr wythnos hon rydym yn fin rhoi mwy ohonyn nhw i chi. Ond yn yr achos hwn, rhowch gynnig i resymu'n ôl beth allai fod wedi digwydd yma? Fai segmentu, dywedasom ddiwethaf amser, yn cyfeirio at segment o gof. Mae rhywbeth drwg wedi digwydd. Ond beth oedd ei fecanyddol a aeth o chwith yma oherwydd fy symud yr achos sylfaenol fel y'u gelwir, lle yr wyf yn dychwelyd gwerth godio-galed? Beth ydych chi'n feddwl aeth o'i le? Yeah. CYNULLEIDFA: [Anghlywadwy]. SIARADWR 1: Ah. Gwestiwn da. Felly, maint y rhif yr oeddwn yn ei grynhoi i fyny got mor fawr ei fod yn mynd y tu hwnt maint y gofod cof. Syniad da, ond nid yn y bôn mynd i achosi damwain. A allai achosi gorlif cyfanrif, lle y darnau yn union troi drosodd ac yna rydym yn camgymryd yn fawr iawn rhif ar gyfer fel rhif negatif, ond na fydd ynddo'i hun yn achosi damwain. Gan fod ar ddiwedd y dydd mae int yn dal i fod 32 o ddarnau. Nid ydych yn mynd i ddamweiniol dwyn ychydig yn 33ain. Ond mae meddwl da. Yeah. CYNULLEIDFA: [Anghlywadwy]. SIARADWR 1: Y Dull byth yn stopio rhedeg, ac yn wir mae'n galw ei hun eto ac dro ar ôl tro ar ôl tro ac unwaith eto, ac nid oes yr un swyddogaethau hynny erioed gorffen oherwydd bod eu llinell unig cod yn galw nhw eu hunain dro ar ôl tro ac unwaith eto. A beth '' n sylweddol digwydd yma, ac yn awr rydym Gall math o dynnu lluniau. Gadewch i mi fynd drosodd i llun am ddim ond ennyd. Mae hwn yn ddarlun, bod Bydd cnawd ar esgyrn y pen draw yn fanylach, yr hyn sy'n digwydd tu mewn cof eich cyfrifiadur. Ac mae'n ymddangos bod ar waelod y llun yn rhywbeth a elwir yn y pentwr. Mae hwn yn dalp o cof, darn o RAM, sydd newydd eu defnyddio unrhyw bryd cael ei alw'n swyddogaeth. Unrhyw tro y byddwch, yn rhaglennydd, yn galw swyddogaeth, y system weithredu, fel Mac OS, Windows, neu Linux, grabs criw o bytes, efallai ychydig kilobytes, efallai ychydig megabeit y cof, yn eu dwylo i chi, ac yna'n gadael i ydych yn rhedeg eich swyddogaeth ddefnyddio newidynnau beth bynnag eu hangen arnoch. Ac os ydych yn, yna ffoniwch un arall swyddogaeth a swyddogaeth arall, byddwch yn cael sleisen arall o gof a sleisen arall o gof. Ac yn wir, os yw'r hambyrddau gwyrdd hyn o Annenberg yn cynrychioli y cof, dyma beth sy'n digwydd y cyntaf tro y byddwch yn galw sigma swyddogaeth. Mae fel rhoi hambwrdd fel hyn ar yr hyn sydd i ddechrau yw pentwr wag. Ond wedyn os yw'r hambwrdd galw ei hun, fel petai, galw achos arall o sigma, dyna fel gofyn y system weithredu, ooh, mae angen ychydig mwy o gof, roi i mi hynny. Ac yna mae'n mynd yn pentyrru ar ar ei ben. Ond yr hyn sy'n allweddol yma yw bod yr hambwrdd cyntaf yn dal i fod yno, oherwydd ei fod yn galw i rym yr ail hambwrdd. Yn awr yn y cyfamser, sigma yn galw sigma, dyna fel gofyn am fwy o gof. Gets pentyrru ar dros yma. sigma yn galw sigma, dyna un arall hambwrdd sy'n cael eu pentyrru ar yma. Ac os ydych yn dal i wneud hyn, yn y pen draw, math o map hwn gweledol at y siart, beth sy'n mynd i digwydd gyda'r pentwr o hambyrddau? Mae'n mynd i fod yn fwy na'r swm o gof ar eich cyfrifiadur. A chyn gynted ag y hambwrdd werdd yn fwy na'r llinell lorweddol uwchben pentwr ac uwch y gair hwnnw domen, y byddwn yn dod yn ôl ato yn y dyfodol, hynny yn beth drwg. Mae'r domen yn wahanol segment o gof, ac os ydych yn gadael y rhain hambyrddau pentwr a pentwr ar, ydych yn mynd i fod yn fwy na segment eich hun o gof, ac mae rhaglen yn wir yn mynd i ddamwain. Yn awr wrth fynd heibio, y syniad hwn o recursion, felly, Gall arwain yn glir at broblemau, ond nid yw o reidrwydd yn beth drwg. Gan fod yn ystyried, ar ôl gyd, how-- ac efallai mae hyn yn cymryd ychydig amser i ymgyfarwyddo i --how cain neu pa mor syml bod gweithredu sigma oedd. Ac nid ydym yn mynd i ddefnyddio recursion i gyd bod llawer yn CS50, ond yn CS51, ac yn wir unrhyw ddosbarth lle rydych yn trin strwythurau data fel coed, neu goed teuluol, sydd â rhywfaint o hierarchaeth, 'i' super, super defnyddiol. Yn awr, wrth fynd heibio, er mwyn i chi fel darpar wyddonwyr cyfrifiadurol yn gyfarwydd â rhai o Google jôcs y tu mewn, os byddwch yn mynd i Google a ydych yn edrych i fyny yr hyn yw'r ddiffiniad o, dyweder, recursion, nodwch. Uh-huh. Wrth fynd heibio, yr wyf yn tynnu i fyny ychydig. Roedd hyn fel 10 munud o oedi y bore yma. Os ydych hefyd yn Google "Askew," hysbysiad drwy tilting eich pen slightly-- ac yna yr un yma, efallai, mwyaf erchyll o bob gan fod rhywun yn cael ei wario fel eu diwrnod gweithredu hyn rai blynyddoedd ago-- dod ymlaen. O, wait-- dyna a bug. Felly, yn rhedeg ar un o'r gwefannau mwyaf byd yw'r rhain wyau Pasg ychydig yn dwp. Maent yn ôl pob tebyg yn bwyta yn nontrivial nifer o linellau o god yn union fel y gallwn gael ychydig bethau hwyl fel 'na. Ond o leiaf yn awr byddwch yn cael rhai o'r jôcs y tu mewn hynny. Nawr gadewch i ni edrych ar rai o'r gwyn yn gorwedd rydym wedi bod yn dweud yn ddiweddar, a dechrau plicio yn ôl rhai haenau dechnegol fel eich bod wir yn deall beth sydd wedi bod yn mynd ymlaen a gallwch ddeall rhai o'r bygythiadau, fel Shellshock, bod bellach wedi dechrau dod yn ar y blaen o ran pawb sylw, o leiaf yn y cyfryngau. Felly dyma yn swyddogaeth syml iawn sy'n dychwelyd dim byd, yn ddi-rym. Mae ei enw i yw cyfnewid. Mae'n cymryd mewn dau newidyn ac yn dychwelyd dim byd. Yn cymryd mewn a b. Felly arddangosiad cyflym. Rydym yn dwyn y rhain i fyny. Efallai y byddwn yn ogystal yn cymryd ychydig egwyl yma am ychydig funudau'n ac mae ganddynt ychydig o rywbeth i'w yfed. Os na fyddai rhywun yn meddwl ymuno fi yma am ychydig funudau'n. Beth am i chi yn y crys marwn? Dewch ar i fyny. Dim ond yr un heddiw. Diolch i chi, er. Mae pob hawl, ac mae gennym dod i fyny pwy fan hyn? Beth yw eich enw? SIARADWR 4: Laura. SIARADWR 1: Laura. Dewch ar i fyny. Felly Laura, her syml iawn heddiw. Neis i gwrdd yo. Mae pob hawl. Felly, mae gennym ychydig o laeth dros yma ac mae gennym rai sudd oren dros yma a rhai chwpanau yr ydym benthyg o Annenberg heddiw. SIARADWR 4: Fenthycwyd. SIARADWR 1: Ac yn mynd i fynd yn ei flaen ac yn rhoi hanner gwydr o hyn i chi. Mae pob hawl. A byddwn yn rhoi i chi hanner gwydraid o laeth. O, ac yn union fel y gallwch cofio beth roedd hyn yn debyg, Yr wyf yn cofio i ddod â hyn i fyny ac ar heddiw. Iawn. Os na fyddech yn meddwl, gadewch i ni weld, rydym yn Gellir eu rhoi dros eich sbectol eich hun os ydych yn dymuno. Bydd hyn fod yn y byd o lygaid Laura. Mae pob hawl. Felly eich nod, o gofio dau gwpan o hylif yma, llaeth a sudd oren, yn cyfnewid y ddau cynnwys fel bod y sudd oren yn mynd i mewn i'r cwpan llaeth ac y llaeth yn mynd i mewn i y cwpan sudd oren. SIARADWR 4: A fyddaf yn cael gwpan arall? SIARADWR 1: Rydw i mor falch i chi ofyn, er bod byddai wedi bod yn llawer gwell ffilm os nad ydych wedi gofyn. Ond ie, gallwn gynnig i chi un rhan o dair cwpan sy'n wag, wrth gwrs. Mae pob hawl. Felly cyfnewid y cynnwys yno. Iawn 'n glws. Da iawn. Rydych yn gwneud hyn yn hynod o ofalus. Ac yn gam tri. Mae pob hawl. Ardderchog. Mae rownd fawr o gymeradwyaeth Byddai yn dda i Laura. Mae pob hawl. Mae gennym ychydig anrheg Parting i chi, ond gadewch i mi gymryd y rhain. Ddiolch 'ch ogystal. Felly, enghraifft syml, fodd bynnag, i ddangos bod os ydych yn gwneud am gyfnewid y cynnwys o dau gynhwysydd, neu gadewch i ni alw newidynnau nhw, bydd angen rhywfaint o storio dros dro i gam un o'r cynnwys i'r y gallwch chi ei wneud mewn gwirionedd y cyfnewid. Felly yn wir, ffynhonnell hon cod fyny yma yn C yn cynrychioli union hynny. Os bydd y sudd oren oedd a'r llaeth oedd b, ac roeddem yn awyddus i gyfnewid y ddau, gallech roi cynnig ar rywbeth creadigol trwy dywallt un i'r llall, ond nad oedd yn ôl pob tebyg fyddai yn dod i ben yn arbennig o dda. Ac felly rydym yn defnyddio cwpan drydydd, ffoniwch mae'n tmp, T-M-P yn ôl confensiwn, a rhowch y cynnwys y OJ yn hynny, ac yna cyfnewid un cwpan, Yna rhowch y OJ mewn i'r cwpan gwreiddiol, a thrwy hynny cyflawni, yn union fel y Wnaeth Laura, mae'r cyfnewid. Felly gadewch i ni wneud yn union hynny. Gadewch i mi fynd yn ei flaen ac yn agor fyny enghraifft sy'n mewn gwirionedd a elwir yn "na cyfnewid, "oherwydd nid yw hyn yn wneud mor syml ag y byddech yn ei feddwl. Felly, yn y rhaglen hon, sylwch fod Im 'yn arfer stdio.h, ein hen gyfaill. Yr wyf yn cael y prototeip gyfer cyfnewid i fyny yno, a oedd yn golygu ei weithredu yn yn ôl pob tebyg i lawr isod, a gadewch i ni weld beth mae hyn yn brif rhaglen yn mynd i wneud i mi. Yr wyf yn datgan yn gyntaf int x yn cael un, ac int y cael dau. Felly, meddwl am hynny fel OJ a llaeth, yn y drefn honno. Ac yna Fi jyst cael printf dweud x yw hyn yn ac y mae hyn, yn union fel y gallaf ar eu golwg yn gweld beth sy'n digwydd. Hynny rwyf wedi printf hawlio fy mod yn cyfnewid y ddau, ac yna yr wyf yn argraffu honni eu bod yn cyfnewid, ac yr wyf yn argraffu x ac y eto. Felly i lawr yma yn cyfnewid yn yn union yr hyn a wnaeth Laura, ac yn union yr hyn a welsom ar y y sgrin funud yn ôl. Felly, gadewch i ni fynd yn ei flaen a fod yn enfawr ar ei ôl siomedig. Peidiwch â gwneud cyfnewid, ac yn rhedeg dim cyfnewid, chwyddo i mewn ar yr allbwn yma. Rhowch x yw 1, y yn 2, cyfnewid cyfnewid. x yn dal i 1, ac y mae'n dal i fod yn 2. Felly hyd yn oed er, a dweud y gwir, mae hyn yn edrych yn yn union yn hoffi, er yn dechnegol, yr hyn a wnaeth Laura, nid oedd yn ymddangos i weithio. Felly pam yw bod? Wel, mae'n ymddangos fod pryd rydym yn ysgrifennu rhaglen fel hon sydd wedi ddau brif, a amlygir yma, ac yna swyddogaeth arall, megis cyfnewid, hamlygu yma, a oedd yn mae'n galw, y byd bach yn edrych yn rhywbeth fel hambyrddau hyn funud yn ôl. Pan fydd prif cyntaf yn cael ei alw, dyna fel gofyn system weithredu am dipyn o gof ar gyfer unrhyw leol newidynnau fel x ac y sydd phrif wedi, ac maent yn y pen draw yn iawn yno. Ond os prif alwadau cyfnewid, a phrif pasio i gyfnewid dwy ddadl, a a b, sudd oren a llaeth, nid yw'n debyg trosglwyddo y sudd oren a'r llaeth i Laura. Yr hyn cyfrifiadur yn ei wneud, a yw'n pasio copïau o'r sudd oren a chopïau o'r llaeth i Laura, fel bod beth sydd yn y pen draw tu mewn hambwrdd hwn yw gwerth un a dau, neu OJ a llaeth, ond mae copïau ohono, fel eu bod ar hyn o bryd yn y stori, mae yw OJ a llaeth ym mhob un o'r hambyrddau hyn. Mae 'na un a dwy ym mhob un o'r hambyrddau hyn, a'r swyddogaeth ffeirio yn wir yn gweithio. Mae wedi eu cyfnewid y tu mewn o'r hambwrdd ail topmost, ond nad cyfnewid yn cael unrhyw effaith. Ac yn seiliedig ar dim ond rhai egwyddor sylfaenol rydym wedi siarad am o'r blaen, ac yn wir dim ond ychydig funudau yn ôl, beth Gallai esbonio pam newid a a b tu mewn cyfnewid cael unrhyw effaith ar x ac y, er bod Yr wyf yn pasio x ac y i'r swyddogaeth cyfnewid. Beth yw'r gair allweddol yma fod Gallai esbonio simplistig? Rwy'n credu fy mod glywed yma? CYNULLEIDFA: Dychwelyd. SIARADWR 1: Dychwelyd? Nid yw dychwelyd. Gadewch i ni fynd ag un arall. Beth sy'n bod? CYNULLEIDFA: [Anghlywadwy]. SIARADWR 1: Iawn, felly return-- gallem gwneud gwaith yn dychwelyd yn y stori, ond mae 'na esboniad hyd yn oed yn symlach. CYNULLEIDFA: Scope. SIARADWR 1: Cwmpas. 'N annhymerus' cymryd cwmpas. Felly cwmpas, cofio lle ein x ac y datgan. Maent yn datgan y tu mewn o brif i'r dde i fyny yma. a a b, yn y cyfamser, yn cael eu datgan yn effeithiol tu mewn cyfnewid, ddim yn hollol mewn y braces cyrliog ond yn dal yn yr ardal gyffredinol o gyfnewid. Ac felly yn wir, a a b ond yn bodoli o fewn y hambwrdd hwn o Annenberg, mae hyn ail darn o god. Felly, rydym yn wir yn newid y copi, ond nid dyna'r wir bob un sy'n ddefnyddiol. Felly, gadewch i ni edrych ar lefel ychydig yn is hyn. Rydw i'n mynd i fynd yn ôl i mewn i Cyfeirlyfr Source, ac yr wyf i'n mynd i yn gyntaf chwyddo i mewn yma, a dim ond i gadarnhau fy mod yn hyn o ffenestr terfynell fwy, mae'r rhaglen yn dal i ymddwyn fel 'na. Tybiwch yn awr fod hyn Nid yn fwriadol. Yn amlwg Roeddwn i eisiau cyfnewid i gwaith, felly mae'n teimlo fel bug. Nawr gallwn i ddechrau ychwanegu llawer o printf i fy cod, argraffu x dros yma, y ​​dros yma, mae dros yma, b dros yma. Ond dweud y gwir, yn ôl pob tebyg dyna beth rydych wedi bod yn ei wneud am ychydig o wythnosau yn awr, yn ystod oriau swyddfa ac yn y cartref wrth weithio ar psets ceisio dod o hyd rhai bugs. Ond byddwch yn gweld, os nad ydych wedi gwneud hynny'n barod, y broblem honno yn gosod tri yn cyflwyno i chi i orchymyn o'r enw GDB, lle mae GDB, GNU debugger, ei hun wedi criw cyfan o nodweddion y gall mewn gwirionedd gadewch i ni i ddeall sefyllfaoedd fel hyn, ond yn fwy nerthol, datrys problemau a dod o hyd i chwilod. Felly dw i'n mynd i wneud hyn. Yn hytrach na ./noswap, Im 'yn lle hynny mynd i redeg GDB ./noswap. Mewn geiriau eraill, yr wyf i'n mynd i redeg fy rhaglen nid yn Bash, ein ffrind newydd heddiw. Rydw i'n mynd i redeg fy noswap rhaglen yn y tu mewn o'r rhaglen arall o'r enw GDB, sef dadfygiwr, a oedd yn rhaglen sydd wedi'i chynllunio i helpu chi mae pobl eu ddod o hyd a chael gwared ar bugs. Felly, os wyf yn taro Rhedeg fan hyn, mae swm echrydus o destun sydd byth yn wir yn rhaid i chi ei ddarllen. Mae'n y bôn yn tynnu sylw o'r brydlon, sy'n Rydw i'n mynd i daro Control-L i fynd i fyny ar y brig yno. Mae hyn yn y brydlon GDB. Os ydw i eisiau i redeg y rhaglen hon yn awr, gan fod hyn yn taflen twyllo ychydig ar heddiw sleid yn awgrymu, Run yw'r cyntaf gorchmynion i ni i fod i'w gyflwyno. A dwi'n jyst yn mynd i deipio cyfnod yn arwain yma tu mewn GDB, ac yn wir ei fod yn rhedeg fy rhaglen. Nawr mae rhywfaint ychwanegol allbynnau y sgrin fel hyn, ond mae hynny'n GDB rhefrol dim ond bod a dweud wrthym beth sy'n mynd ymlaen. Nid oes rhaid i chi wir i chi boeni am y manylion hyn ar hyn o bryd. Ond yr hyn sy'n wir yn cŵl am GDB, os wyf yn gwneud hyn again-- Rheoli-L clirio'r screen-- gadael i mi fynd ymlaen a math "dorri prif," a thrwy hynny, pan wnes i daro Enter, gan osod yr hyn sydd Gelwir pwynt egwyl yn noswap.c, llinell 16, a dyna lle mae GDB cyfrifedig allan fy rhaglen mewn gwirionedd yn yw, fy swyddogaeth mewn gwirionedd. Hyn byddwn yn anwybyddu am y tro ond dyna y cyfeiriad mewn cof yn benodol y swyddogaeth hon. Felly nawr pan fyddaf r math rhedeg, sylwi ar beth sy'n oer yma. Mae fy rhaglen yn torri ar yr wyf llinell Dywedodd GDB i oedi gweithredu ar. Felly does dim rhaid i mi yn awr newid fy cod, ychwanegu ychydig o printf, yn ail-grynhoi iddo, ailgynnal iddo, yn newid, ychwanegu ychydig o printf yn, gadw, ail-grynhoi ei, redeg. Gall Fi jyst cerdded trwy fy rhaglen gam wrth gam wrth gam ar gyflymder dynol, nid ar fath Intel-tu mewn cyflymder. Felly nawr sylwi ar y llinell hon ymddangos yma, ac os byddaf yn mynd yn ôl at fy rhaglen mewn gedit, sylwi bod hynny mewn gwirionedd yn y llinell gyntaf iawn o god. Mae llinell 16 yn gedit. Mae llinell 16 o fewn GDB, a hyd yn oed er bod hyn rhyngwyneb du a gwyn Nid yw bron mor defnyddiwr gyfeillgar, mae hyn yn golygu Nid yw fod 16 llinell wedi cael ei ddienyddio eto, ond mae'n ymwneud i fod. Felly, yn wir, os wyf yn fath print x, nid yn printf, dim ond print x, Rwy'n cael rhywfaint o werth ffug yno o sero, gan nad yw x wedi'i ymgychwyn eto. Felly dw i'n mynd i deipio nesaf, neu, os ydych yn am fod yn ffansi, dim ond N am nesaf. Ond pan fyddaf yn mynd i mewn r math nesaf, yn awr sylwi mae'n symud ymlaen i linell 17. Felly yn rhesymegol, os wyf i wedi eu gweithredu llinell 16 ac yr wyf yn awr deipio print x, beth ddylwn i ei weld? Un. Ac yn awr mae hyn yn rhaid cyfaddef ddryslyd. $ 2 yn unig yw ffordd ffansi o, os ydych yn am gyfeirio at y gwerth hwnnw yn nes ymlaen, gallwch ddweud "doler lofnodi dau." Mae'n debyg i gyfeiriad cefn. Ond am y tro, yn ei hanwybyddu. Yr hyn sy'n ddiddorol yw beth sy'n ar y dde o'r arwydd cyfartal. Ac yn awr os wyf deipio nesaf eto ac argraffu y, dylwn i weld 2. Gallaf hefyd nawr argraffu x unwaith eto, a dweud y gwir, os ydw i'n cael ychydig yn ddryslyd ynghylch lle yr wyf fi, gallaf deipio rhestr ar gyfer y rhestr a dim ond yn gweld rhywfaint o gyd-destun o gwmpas y pwynt rwy'n mewn gwirionedd yn. Ac yn awr y gallaf deipio nesaf, ac mae x yw 1. Nawr rwy'n deipio nesaf. O, y mae 2. Ac eto, mae'n ddryslyd, oherwydd bod allbwn GDB yn yn cael ei cymysg gyda fy allbwn hun. Ond os ydych yn cadw mewn cof, gan glancing yn ôl ac ymlaen yn eich cod neu wrth ei osod allan ochr yn ochr efallai, wnewch chi helpu gweld sydd wir Im 'jyst camu trwy fy rhaglen. Ond yn sylwi ar yr hyn sy'n digwydd nesaf, yn llythrennol. Dyma llinell 22. Gadewch i mi fynd drosti, a thrwy hynny symud ymlaen i 23, ac os wyf yn argraffu x yn awr, yn dal yn un. Ac os wyf yn argraffu y awr, yn dal yn un. Felly, nid yw hyn yn ymarfer defnyddiol. Felly gadewch i ni ail-wneud hyn. Gadewch i mi fynd yn ôl i fyny at y top a math rhedeg eto. Ac mae'n dweud bod y rhaglen sy'n cael ei debugged eisoes wedi dechrau, dechrau o'r dechrau. Ie, gadewch i ni wneud hyn eto. A'r tro hwn gadewch i ni ei wneud nesaf, nesaf, nesaf, nesaf, nesaf, ond erbyn hyn mae pethau'n mynd yn ddiddorol. Nawr rwyf am i gamu i mewn cyfnewid, felly nid wyf yn teipio nesaf. Wyf yn fath gam, ac yn awr yn sylwi arno wedi fy neidio i linell noswap.c 33. Os byddaf yn mynd yn ôl i'r gedit, beth sy'n llinell 33? Dyna y cyntaf gwirioneddol llinell o god tu mewn cyfnewid. Pa yn neis, oherwydd erbyn hyn gallaf math o brocio o gwmpas a chael chwilfrydig ynghylch yr hyn sy'n digwydd yn wirioneddol i mewn 'na. Gadewch i mi argraffu tmp. Pwy yw. Pam mae tmp cael rhywfaint o crazy, gwerth garbage ffug? CYNULLEIDFA: Nid yw wedi ei ymgychwyn. SIARADWR 1: Nid yw wedi'i ymgychwyn. Ac yn wir, pan fyddwch yn rhedeg rhaglen, eich bod yn rhoi criw cyfan o gof gan y system weithredu, ond yr ydych Nid yw wedi initialized unrhyw werthoedd, felly beth bynnag darnau rydych yn gweld yma, hyd yn oed er 'i' hwn negyddol fawr crazy rhif, dim ond yn golygu bod y rheini yw'r gweddillion o peth defnydd blaenorol o'r RAM, er nad wyf wedi fy hun ei angen eto. Felly, yn awr yr wyf i'n mynd i fynd yn ei flaen a math nesaf, ac os wyf yn awr deipio print tmp, beth ddylwn i ei weld? Beth bynnag werth a oedd, a yw'r ddadl gyntaf, dim ond fel x oedd y cyntaf beth sy'n cael ei basio i mewn, felly mae a dylai x fod yr un fath, felly dylai argraffu tmp argraffu mi un. Felly, beth byddwch yn gweld mewn set problem tri yn tiwtorial o ryw fath ar GDB, ond yn sylweddoli bod hyn yn ddechrau o edrych ar offeryn a fydd mewn gwirionedd yn eich helpu i ddatrys problemau llawer mwy effeithiol. Yr hyn rydym yn y pen draw mynd i'w wneud ar ddydd Mercher yn dechrau plicio yn ôl ychydig o haenau a dileu rhai olwynion hyfforddiant. Y peth a elwir yn llinyn sy'n rydym wedi ei ddefnyddio ers peth amser, rydym yn mynd i gymryd y ffwrdd yn araf oddi wrthych ac yn dechrau siarad am rhywbeth mwy esoterically a elwir yn torgoch *, ond yr ydym yn mynd i wneud 'n glws hwn a ysgafn ar y dechrau, er bod awgrymiadau, gan eu bod yn gelwir, yn gallu gwneud rhai pethau drwg iawn os cam-drin, drwy edrych ar ychydig o animeiddio clai oddi ein ffrind Nick Parlante o Stanford Brifysgol, yn athro yn y cyfrifiadur gwyddoniaeth a rhoi at ei gilydd rhagolwg hwn o'r hyn sydd i ddod Dydd Mercher hwn. [VIDEO Playback] -Hey, Binky. Wake i fyny. Mae'n amser am hwyl pwyntydd. -Beth Yw hwnna? Dysgu am awgrymiadau? O, anrhegion! [DIWEDD Playback VIDEO] SIARADWR 1: Bod yn eich disgwyl ar ddydd Mercher. Byddwn yn eich gweld yna. [VIDEO Playback] -ac Awr, Thoughts Deep, gan Daven Farnham. -Pam Ydyn ni'n dysgu C? Pam na A +? [Chwerthin] [DIWEDD Playback VIDEO]