[CHWARAE CERDDORIAETH] ROB Boden: Pob hawl. Felly, y peth cyntaf yn gyntaf, fideo o wyneb cyfarwydd. [VIDEO Playback] -Mae pob hawl. Mae hyn yn CS50, ac mae hyn yn dechrau'r wythnos tri. Mae'n ddrwg gen i na allwn i fod yno gyda chi heddiw, ond yn caniatáu i mi gyflwyno Rob Boden CS50 ei hun. [DIWEDD VIDEO chwarae] [Gymeradwyaeth a CHEERS] ROB Boden: Y filmography yn y fideo yn wych. Mae pob hawl. Felly yn gyntaf, mae cinio arall. Mae'n yfory am 1:15. Does dim cinio ddydd Gwener. Y mae gyda Quora. Ac nid Tommy sydd yma eto, ond un o y bobl yno yn gyn CF pen, Tommy McWilliam. Felly, ei fod yn ddyn hwyl. Dylech ddod. Mae pob hawl. Felly wythnos diwethaf, rydym yn dechrau torri ar wahân am yr hyn y llinyn mewn gwirionedd. Rydym wedi hysbys ers y dechrau mae'n dilyniant o gymeriadau. Ond yr wythnos diwethaf, rydym yn ymchwilio i'r ffaith bod yr hyn sydd mewn gwirionedd dilyniant o cymeriadau, yn dda, mae gennym bellach araeau o gymeriadau. Ac rydym yn gwybod bod llinyn, mae'n arae o gymeriadau, ar y diwedd un, gennym y beit null arbennig, mae hyn yn slaes 0, sy'n dangos y diwedd y llinyn. Ac felly mae llinyn yn amrywiaeth o cymeriadau, ond gallwn gael mwy na dim ond amrywiaeth o gymeriadau, gallwn gael amrywiaeth o unrhyw y math o beth yr ydym ei eisiau. Felly, os ydych yn cofio o wythnos diwethaf, Rhaglen Oed y mae David a gyflwynwyd yn gyflym iawn. Beth felly yn gyntaf rydym yn mynd i wneud yw gofyn i'r defnyddiwr am gyfanrif, y nifer y bobl yn yr ystafell. Unwaith y byddwn yn cael y cyfanrif, rydym yn datgan arae. Sylwi ar hyn cystrawen braced. Rydych yn mynd i ddod i arfer â hynny. Felly, rydym yn datgan amrywiaeth o gyfanrifau a elwir yn oed, ac mae n chyfanrifau yn amrywiaeth hwn. Felly, mae hyn batrwm iawn yma, mae hyn yn 4 int i yn hafal i 0, fi yn llai na n, fi yn ogystal â yn ogystal, sydd hefyd yn mynd i fod yn batrwm eich bod yn dod i arfer iawn. Oherwydd dyna 'n bert lawer sut yr ydych chi'n bob amser yn mynd i ailadrodd dros arrays. Felly cofiwch mai n yw hyd ein amrywiaeth. Ac felly dyma, rydym yn gofyn dro ar ôl tro ar gyfer oed o berson i yn yr ystafell. Ar ôl hyn, rydym yn mynd i lawr, ac am ba bynnag reswm mympwyol, byddwn wedyn yn argraffu pa mor hen y maent yn mynd i fod yn flwyddyn o hyn. A rhedeg y rhaglen honno, gadewch i ni gwneud oedran, dot oedrannau slaes. Felly, nifer y bobl yn yr ystafell, gadewch i ni ddweud mae tri. A dywed, y person cyntaf yn 13, nesaf yw 26, a'r olaf yw 30. Felly, yna bydd yn ailadrodd dros gyfnod o dair y rhai pobl, argraffu 14, 27, a 31. Felly cofiwch, pan fyddwn yn datgan amrywiaeth o faint n, mynegeion yn y amrywiaeth, mae gan yr amrywiaeth gwerthoedd ac mynegeion 0, 1, 2, yr holl ffordd hyd at n minws 1. Felly, pan rydym yn dweud bod tri o bobl yn yr ystafell, ac rydym yn rhoi i mewn yma iteriad cyntaf drwy'r dolen, fi yn mynd i fod yn 0. Felly, yn y mynegai 0. Rydym yn pennu y cyntaf oedran y defnyddiwr yn mynd i mewn. Yna, yn yr un nesaf, rydym yn mynd i mewn i'r ail n y defnyddiwr yn mynd i mewn, ac yn nesaf i ddau, y n diwethaf. Felly sylwi bod amrywiaeth o faint nid yw tri oes unrhyw beth yn y mynegai tri. Nid yw hyn yn ddilys. Mae pob hawl. Felly, yn mynd yn ôl yma. Felly, yn awr ein bod wedi delio â arrays, mae gennym rai gyfarwydd. Nawr rydym yn mynd i symud ymlaen i orchymyn dadleuon llinell, sydd yn mynd i fod yn 'n bert yn berthnasol i'r broblem hon a osodwyd. Felly, hyd yn hyn, pryd bynnag eich bod wedi datgan eich prif swyddogaeth, rydym wedi Dywedodd prif ddi-rym int. Felly, yn ddi-rym yn unig yn golygu bod nid ydym yn pasio unrhyw dadleuon i'r swyddogaeth hon. Nawr rydym yn mynd i weld y prif Gall gymryd rhai dadleuon. Yma rydym yn eu galw int argc a bracedi argv llinyn. Mae'r cromfachau, unwaith eto, gan ddangos ein bod yn delio â arrays. Felly dyma, cromfachau argv llinynnol, rydym yn delio gydag amrywiaeth o linynnau. Felly argc, mae hynny'n mynd i ddangos faint o ddadleuon rydym wedi drosglwyddo i'r rhaglen hon. Ac i weld beth mae hynny'n ei olygu, gadewch i ni gau'r hyn. OK. Felly, hyd yn hyn, rydym wedi rhedeg bob rhaglen fel oedrannau slaes dot. Gallwn hefyd, ar y llinell orchymyn, yn y gorffennol pasio dadleuon, felly mae'r term, gorchymyn dadleuon llinell. Felly, y ddadl gyntaf, helo byd. Felly yma, yn argc tri. Mae'n y cyfrif ar y dadleuon ar y llinell orchymyn. Argc bob amser o leiaf 1, gan fod dot slaes oedran, ei hun, yn cyfrif fel un o y dadleuon llinell orchymyn. Yna helo yw'r cyntaf. Os oedrannau slaes dot yw'r 0, yna helo yw'r cyntaf, a'r byd yn y ymresymiad llinell orchymyn ail. Felly, y argv llinyn, rydym yn mynd i weld, yn cynnwys y llinynnau, dot slaes oedran, helo, a byd. Ac, ar gais Dewi Sant, rydym yn mynd i chwarae fideo gyflwyno hynny. [VIDEO Playback] -Hyd yn hyn mewn rhaglenni rydym wedi ysgrifenedig, rydym wedi datgan prif prif ddi-rym yn int. A'r holl amser hwn, y bwlch wedi yn syml bod yn nodi bod y Nid yw rhaglen yn cymryd unrhyw dadleuon llinell gorchymyn. Mewn geiriau eraill, pan fydd defnyddiwr yn rhedeg rhaglen, gall ef neu hi ddarparu gorchymyn dadleuon lein drwy ysgrifennu ychwanegol geiriau neu ymadroddion ar ôl y rhaglen enwi wrth yr anogwr. Wel, os ydych chi eisiau i'ch rhaglen i cymryd dadleuon llinell gorchymyn, un neu mwy o eiriau o'r fath, mae angen inni gymryd lle gwag gyda chwpl o ddadleuon. Felly, gadewch i ni wneud hynny. Cynnwys CS50.h. Cynnwys io.h. safonol Int brif. Ac yn awr, yn hytrach na ddi-rym, dw i'n mynd i pennu int enw argc, a amrywiaeth o linynnau a elwir yn argv. Yn awr, argc a argv yn confensiynau yn syml. Gallem fod wedi galw y dadleuon hyn y rhan fwyaf o unrhyw beth yr ydym ei eisiau. Ond yr hyn sy'n bwysig yw bod argc yn yn int oherwydd, trwy ddiffiniad, mae'n mynd i gynnwys y cyfrif ddadl, y nifer y geiriau yn gyfanswm bod y defnyddiwr wedi teipio yn ei neu hi brydlon. argv, yn y cyfamser, fector dadl, yn mynd i mewn gwirionedd fod yn arae storio pob un o'r geiriau y mae'r defnyddiwr yn teipio yn ei neu hi brydlon. Gadewch i ni fynd ymlaen i wneud rhywbeth yn awr gydag un neu fwy o'r rhain dadleuon llinell gorchymyn. Yn arbennig, gadewch i ni fynd yn ei flaen ac argraffu beth bynnag air y mathau o ddefnyddwyr ar ôl enw'r rhaglen wrth yr anogwr. Braced agored. Braced Close. Cant printf s slaes a choma. Ac yn awr mae angen i mi ddweud wrth printf pa werth i lenwi'r i mewn i'r dalfan. Yr wyf am i'r gair cyntaf bod y defnyddiwr wedi teipio ar ôl enw'r rhaglen, ac felly yr wyf i'n mynd i bennu argv braced 1, yn agos parenthesis, hanner colon. Nawr, pam braced 1 ac nid braced 0? Wel, mae'n troi allan, eu storio yn awtomatig yn argv 0 yn mynd i fod y enw gwirioneddol rhaglen. Felly, y gair cyntaf bod y mathau o ddefnyddwyr ar ôl enw'r rhaglen yw, gan confensiwn, yn mynd i fod yn storio mewn argv 1. Gadewch i ni yn awr yn llunio a redeg y rhaglen hon. Gwneud argv 0, argv slaes dot 0. Ac yn awr gair fel helo. Enter. Ac mae gennym, helo. [DIWEDD VIDEO chwarae] ROB Boden: Pob hawl. Caewch hynny. Felly, yn edrych ar y rhaglen sy'n rydym yn unig cyflwyno i ni, wel, dim ond i ddangos, os ydym argraffu argv 0, yn gwneud, yn awr beth ydyw, argv 0, argv slaes dot 0. Felly, yn ôl y disgwyl, mae'n argraffu y enw'r rhaglen, gan argv 0 yn bob amser yn mynd i fod yn enw'r rhaglen. Ond gadewch i ni wneud rhywbeth ychydig yn fwy diddorol. Felly, yn y broblem set, byddwch yn cyflwyno i swyddogaeth hon, atoi. Felly, beth ydym yn defnyddio atoi amdano? Mae hynny'n mynd i drosi llinyn i cyfanrif. Felly os wyf yn llwyddo yn y llinyn, un dau tri, i atoi, bydd yn trosi bod i'r cyfanrif, un dau tri. Felly, rydym yn mynd i newid y cyntaf ymresymiad llinell orchymyn i cyfanrif, ac yna dim ond print that gyfanrif. Felly y bôn, rydym yn fath o reimplementing getint, dim ond y cyfanrif ei gofnodi yn y gorchymyn lein yn hytrach nag yn y rhaglen rhyngweithiol. Felly, yna, gan wneud argv 0, gadewch i ni wneud yn y fan hon, a chau'r hynny. Felly, yn rhedeg argv 0, a gadewch i ni fynd i mewn i'r cyfanrif, un dau tri pedwar un dau. Felly, bydd yn argraffu'r cyfanrif, un dau tri pedwar un dau. Mae rhai cynnil i atoi bod bydd yn rhoi'r gorau i ofalu am unrhyw beth y tu hwnt i gymeriad rhifol ddilys, ond nid yw hynny'n bwysig. Felly, beth yn eich barn chi fydd yn digwydd os wyf yn gwneud hyn? Wall. Felly pam hynny? Os ydych yn edrych yn ôl ar ein rhaglen, rydym yn trosi argv 1, mae'r ddadl gyntaf ar ôl enw'r rhaglen, i cyfanrif. Ond nid oes unrhyw ddadl pasio ar ôl enw'r rhaglen. Felly dyma, rydym yn gweld bod hyn yn buggy rhaglen, ers hynny, os ydym yn ceisio ei redeg heb unrhyw ddadleuon, bydd yn dim ond damwain. Felly batrwm cyffredin arall byddwch yn gweld yn rhywbeth fel, os argc yn llai na dau, gan nodi nad oedd o leiaf enw a rhaglen ddadl yn gyntaf, yna byddwn yn gwneud rhywbeth fel printf, nid oes digon o dadleuon llinell gorchymyn. Nid yw hyn yn ôl pob tebyg yn un da i argraffu, mae'n debyg rhywbeth, fel dylech nodi'r yn gyfanrif ar y llinell orchymyn. 'N annhymerus' jyst yn dod i ben yno. Ac yna yn dychwelyd 1. Felly cofiwch fod ar ddiwedd ein rhaglen, os byddwn yn dychwelyd 0, math yna o yn dangos llwyddiant. A phrif hefyd yn awtomatig yn dychwelyd 0 os nad ydych yn ei wneud. Felly dyma, rydym yn aildiwnio 1 i ddangos nad yw hynny'n llwyddiant. A gallwch ddychwelyd beth bynnag yr ydych ei eisiau, yn unig, 0 yn dangos llwyddiant, a unrhyw beth arall yn dangos methiant. Felly, gadewch i ni redeg y fersiwn hwn o bethau. Felly yn awr, os nad ydym yn mynd i mewn i llinell orchymyn ddadl, bydd yn dweud yn gywir ni, nid oes digon llinell orchymyn. Ddim wedi gorffen y frawddeg. Else, os ydym mewn gwirionedd yn pasio yn un, gall gwblhau'r rhaglen. Felly, mae hyn yw sut y byddech yn defnyddio argc yn er mwyn dilysu nifer y dadleuon llinell gorchymyn sy'n yn cael eu trosglwyddo mewn gwirionedd. Felly, gadewch i ni wneud y rhaglen hon ychydig yn fwy gymhleth, ac edrych ar yr ail iteriad o bethau. Felly nawr, rydym yn nid dim ond argraffu'r ymresymiad llinell orchymyn cyntaf. Yma, rydym yn bwysleisio'r o gydradd i int 0, fi yn llai na argc, fi yn ogystal â yn ogystal, a argv argraffu, mynegai i. Felly patrwm hwn, eto, mae hyn yr un fath patrwm fel o'r blaen, ac eithrio yn lle hynny o alw newidyn n, ein bod yn defnyddio argc. Felly, mae hyn yn bwysleisio'r dros bob mynegai yn yr arae, a phrintio pob elfen yn y rhesi. Ac felly, pan fyddwn yn rhedeg y rhaglen hon, yn dda, Doeddwn i ddim yn mynd i mewn i unrhyw linell orchymyn dadleuon, felly mae'n dim ond printiau enw'r rhaglen. Os byddaf yn mynd i mewn i criw o bethau, mae'n annhymerus ' argraffu un, pob un ar ei linell ei hun. OK. Felly, gadewch i ni fynd â hyn un cam ymhellach. Ac yn hytrach na argraffu pob ddadl ar ei linell ei hun, gadewch i argraffu pob cymeriad pob ddadl ar ei linell ei hun. Felly cofiwch bod argv yn amrywiaeth o linynnau. Felly beth yw llinyn, ond amrywiaeth o gymeriadau? Felly mae hynny'n golygu bod argv yn wir yn amrywiaeth o amrywiaeth o gymeriadau. Felly, yn cymryd mantais o hynny, gadewch i ni anwybyddu hyn am y tro. Gadewch i ni dim ond yn ystyried y argv llinyn 0. Felly, os ydym am ddod â phob cymeriad argv 0 ar ei linell ei hun, yna yr wyf am i wneud y patrwm rydym yn ei ddefnyddio i, fi yw llai na hyd y rhesi, sydd yma, yn cael ei strlen o, dyna Nid yr hyn yr wyf am ei wneud, llinyn s hafal argv 0. Felly, fi yn llai na hyd ein array, sydd yn yr achos hwn arae o gymeriadau, fi yn ogystal a mwy. Ac felly, fel y gwelsom yr wythnos diwethaf, mae'n ddelfrydol os byddwn yn symud y tu allan strlen y cyflwr, bydd gan n yn ychwanegu y strlen o s bob tro y byddwn yn mynd drwy'r ddolen, ac mae'n ddim yn mynd i gael eu newid. Felly, byddwn yn ei osod yn hafal i n dros yma. OK. Felly nawr, rydym yn bwysleisio'r dros pob mynegai yn y rhesi. Ac felly, os ydym am i argraffu pob cymeriad yn y casgliad, y cant c yn y faner yr ydym am ei ddefnyddio ar gyfer cymeriadau. Ac yn awr a i braced yn mynd i fod y llinyn, cymeriad mynegai i, felly os yw'r llinyn oedd helo. Yna s 0 yn mynd i fod yn h, s braced Bydd 1 fydd e, ac yn y blaen. Felly, nawr rydym am i gyfuno y ddau beth. Rydym am i argraffu pob cymeriad bob ymresymiad llinell orchymyn. Felly, rydym yn mynd i gael yn nythu ar gyfer dolen. Ac yn gonfensiynol, y cownter cyntaf yn i, mae'r nesaf yn mynd i fod j, n fydd y strlen oi argv, i yn llai na n, fi yn ogystal a mwy. Ac yn awr yn hytrach na argraffu i argv, felly argv braced i yn mynd i mynegai - mae hynny'n mynd i fod yn y llinell orchymyn i-fed dadl, argv i, j yn mynd i fod cymeriad jth o y ddadl i-fed. 'N annhymerus' cael gwared ar hyn i fyny yma nawr ers i ni ei roi i mewn i'r ddolen. Felly, yn cyfateb i gydradd llinyn s argv i, ac yna s braced j. Wel, nid oes angen i ni ddatgan hwn s amrywiol. Yn hytrach, byddwn yn unig cyfuno'r rhain dau i mewn i hyn a oedd gennym, argv i, j. SIARADWR 1: [Anghlywadwy]. ROB Boden: galwadau da. Felly, mae hyn yn cael ei dorri. Os wyf mewn gwirionedd yn rhedeg ei, byddem wedi sylweddoli hyn. Felly y cownter Rwy'n poeni am yn y arbennig i ddolen yn j, y iterator. Felly byddech wedi rhedeg i mewn i faterion, yn ôl pob tebyg dolen ddiddiwedd, os ydym nid oedd wedi sefydlog hynny. Dyna pam rydym hefyd yn siarad am debugging heddiw. OK. Felly, gadewch i ni redeg y rhaglen hon. A gadewch i ni mewn gwirionedd yn ychwanegu printf ar wahân i'r dde yma a fydd yn unig argraffu llinell arall, gan fod hyn yn golygu pan fyddwn yn rhedeg y rhaglen, bydd yna wag linell rhwng pob cymeriad pob ymresymiad llinell orchymyn. Wel, byddwn yn gweld beth mae hynny'n ei olygu. OOP. Got rhai bug. Gwall ymhlyg datgan swyddogaeth llyfrgell strlen. Felly, mynd yn ôl i mewn i'n rhaglen, yr wyf yn anghofio hash cynnwys string.h. Felly string.h yn mynd i fod y ffeil flaen sy'n datgan y swyddogaeth strlen. OK, mae'n llunio. Yn awr, gadewch i ni redeg. Felly dim ond hynny. Mae'n mynd i argraffu ein enw'r rhaglen, helo byd. Mae'n mynd i argraffu pob peth, pob un cymeriad, ar ei linell ei hun. OK. Felly, gadewch i ni mewn gwirionedd yn cymryd hyn un cam ymhellach. Ac yn hytrach na defnyddio string.h, gadewch i ni feddwl am sut y byddwn yn gweithredu ein hunain swyddogaeth strlen. Felly, byddaf yn rhoi ar unwaith llofnod swyddogaeth. Felly, gadewch i ni alw i mewn my_strlen, ac mae'n mynd i gymryd llinyn fel dadl, ac yr ydym yn disgwyl i ddychwelyd y hyd y llinyn. Felly, ble y boi? Ie. OK. Felly cofiwch oddi wrth y sleid yn gynharach y Roedd hefyd gan yr wythnos diwethaf, bod amrywiaeth o gymeriadau, yn dda, llinyn, felly gadewch i ni yn dweud hyn yw ein s llinyn. Felly, os yw ef yw'r llinyn, helo, yna, H-E-L-L-O, er cof, sy'n mynd i fod, ac yna slaes hwn 0 cymeriad. Felly, sut rydym yn cael hyd s? Wel, y gamp yn chwilio am hyn adlach 0 cymeriad, null hwn terminator. Felly mae'r algorithm yw mynd i fod yn rhywbeth fel ychydig o digon o gymeriadau hynny - gadewch i gael ei llaw hwn yn cynrychioli rhai cownter, gadewch i ni yn galw hyn hyd int. Felly, gan ddechrau o dros yma, rydym yn mynd i ailadrodd dros ein llinyn. Felly, y nod cyntaf, mae'n H, ac nid yw'n ôl slaes 0, felly hyd yn 1. Ailadrodd i gymeriad nesaf, E, ac nid yw'n slaes 0. Hyd yn 2. L, 3. L, 4. O, 5. Ac yn olaf, rydym yn cyrraedd slaes 0, ac felly mae hynny'n golygu, yn dda, llinyn hwn i ben. Felly, gadewch i ni yn dychwelyd 5. Felly, mewn gwirionedd yn gweithredu, yn gyntaf, fy hyd n hafal i 0, fy llaw dde. Ac rydym yn mynd i ailadrodd - SIARADWR 1: [Anghlywadwy] ROB Boden: O, saethu. Galwadau da. Boom. Felly, n hyd yn dychwelyd 0. Felly nawr, nid tra s hyd yn gyfartal ac yna, slaes 0. Felly cofiwch, slaes hwn 0, mae'n chymeriad gwirioneddol, ac mae'n nodi diwedd y llinyn. Yn union fel, hefyd, slaes n yn gymeriad go iawn. Slaes 0 yn mynd i ddangos diwedd ein llinyn. Dydw i ddim eisiau rhoi hynny yno. Ac er nad s mynegeio gan hyd yn hafal i'r terminator null, yna rydym yn jyst yn mynd i gynyddiad hyd. Felly, yna, ar ddiwedd ein rhaglen, hyd yn y pen draw yn mynd i fod yn 5 yn yr achos hwn. A byddwn yn unig yn dychwelyd hyd. OK. Felly nawr i lawr yma, nid wyf yn wneud my_strlen. Gadewch i ni llunio i wneud yn siŵr popeth yn rhedeg yn esmwyth. A oedd yr wyf yn ei wneud mewn 2? Neu oedd bod 1? Dylai hynny wneud. Mae pob hawl. Felly, mae hyn yn argv 2. Gweithio fel y rhagwelwyd, er oedd bod y un yr wyf yn gwneud hynny i mewn? Ie. OK. Nid yw'r fersiwn o bethau oedd gan y llinell newydd printf ar ôl, ond mae'n nid yw'n gwneud unrhyw wahaniaeth. OK. Felly, yn gweithio yn ôl y disgwyl. Nawr gallwn hyd yn oed gyfuno hyn un cam bellach, lle rhybudd yma, yn dda, yn gyntaf, rydym yn gydio yn y strlen o argv i, ac yna rydym yn bwysleisio'r dros pob cymeriad yn y llinyn. Felly, yn hytrach na gwneud hynny, beth os ydym yn dim ond cyfuno rhesymeg hwn o aros nes i ni gyrraedd slaes 0 hawl i mewn i hyn ar gyfer dolen? Felly ailadrodd tra fi argv, j yn slaes yn hafal 0. Felly, gadewch i ni redeg gyntaf. Mae pob hawl. Felly dyma, y ​​cyflwr hwn yn ei ddweud - gadewch i ni glirio'r hynny. Felly nawr, gadael i hyn fydd ein argv. Felly, pan Fi jyst yn rhedeg y rhaglen honno o'r blaen, argv llu o linynnau. Ac felly, os wyf yn ei redeg gyda argv slaes dot 2, helo byd, yna bydd y argv ei hun yn hyd 3, ar gyfer argv sero, helo, a byd. Ac y tu mewn o bob un o'r mynegeion hyn, ei hun amrywiaeth, lle byddwch hyn yn dot, bydd hyn yn slaes, nid wyf yn gwybod os mai dyna'r cyfeiriad cywir, yr wyf yn nid ydynt yn credu ei fod yn. A-R-V dash, mae angen mwy o le. Gadewch i dorri i mewn i amrywiaeth hwn. Dash 0, ac yna slaes 0 A-R-V. Ac yna mewn anhrefn yn helo. Gadewch i ni ddweud, H-E slaes 0. Ac yn olaf, W-O slaes 0. Felly mae'r algorithm yr ydym newydd ei ysgrifennu, y nythu ar gyfer dolenni, beth maen nhw'n ei wneud yw, yn gyntaf yn cael y cownter i ac yna j. Byddai hyn yn haws gyda cod ar y sgrin, Gadewch i ni fynd yn ôl at hyn. OK. Felly, yn sylwi bod fi yw'r iterator sy'n bwysleisio'r dros bob gorchymyn ymresymiad llinell. Ac j yw'r bwysleisio'r iterator dros bob cymeriad yn y ymresymiad llinell orchymyn. Felly, beth mae hyn yn printf dyfnaf yn ei wneud yw, yr ydym wedi printf argv 0 0, printf argv 0 1, argv printf 0 2, 0 3, 0 4, 0 5, 0 6, ond yn awr, argv 0 7 yn mynd i slaes cyfartal 0. Felly, yna rydym yn gadael hynny ar gyfer dolen, ac yn awr fi ailadrodd i 1. Ac yn awr rydym yn mynd i argraffu argv 1 0, argv 1 1 - yn dda, yn awr, ers i mi dorri helo byr, argv 1 2 unwaith eto yn mynd i fod slaes 0. Ac felly, ychwanegiad i ac yn parhau, a yn y blaen, nes i ni argraffu pob un byd, ac mae'r rheini'n dair llinell orchymyn dadleuon, a byddwn yn gadael y tu allan i y ddolen pellaf, a gorffen ein rhaglen. OK. Felly, gadewch i ni ddod yn ôl yma. Felly, byddwch yn cael rhywfaint o gyfarwydd â dadleuon llinell gorchymyn ar y broblem benodol a osodwyd. Yn awr, debugging. Felly, mae'n debyg eich bod eisoes wedi gorfod gwneud rhywfaint o debugging gyda'ch blaenorol broblem a osodwyd. Ac un ffordd hawdd iawn o debugging, yn gyntaf, gadewch i ni edrych ar y rhaglen bygi. Wel, cerdded drwy'r rhaglen hon, rydym yn mynd i ofyn i'r defnyddiwr am cyfanrif, chrafangia y cyfanrif, ac yna, fympwyol, mae gennym dolen tra bod yn unig yn mynd i lleihau a i hyd nes ei fod yn hafal i 10. Gadewch i ni gymryd yn ganiataol fy mod yn mynd i mewn cyfanrif fwy na 10. Felly, lleihau a fi nes ei fod yn hafal i 10. Ac yna mae gennym dolen tra bod un arall , er i nid yw'n gyfartal 0, rydym yn mynd i lleihau a ff erbyn 3. Felly, os ydych yn gweld y bwriad y byg yma, mae'n y bydd hyn yn lleihau a fi i fod yn 10, ac yna mae hyn dolen tra bydd lleihau a ff o 10, i 7, i 4, i 1, i negyddol 2, i negyddol 5, ac yn y blaen, i anfeidredd negyddol, ers i fi yn byth yn hafal 0. Ac yna ar ddiwedd y rhaglen hon, mae gennym y swyddogaeth foo sy'n mynd ar brint allan bod fi. Felly, mae hyn yn rhaglen fer a ddibwys, ac y byg yn amlwg, yn enwedig ar ôl i mi yn unig ddywedodd beth oedd y byg. Ond mae'r bwriad yma yn, wel, gallai hyn mewn gwirionedd yn edrych fel rhai o'ch atebion o barus o'r olaf broblem a osodwyd, ac efallai oes gennych rhywfaint o dolen ddiddiwedd yn eich rhaglen, ac nad oes gennych syniad beth sy'n ei achosi. Felly dechneg debugging ddefnyddiol iawn ydy at jyst ychwanegu printfs ar hyd a lled eich cod. Felly dyma fi eisiau printf y tu allan i dolen tra gyntaf. Ac yma rwyf eisiau printf, ac fe Fi jyst argraffu i. 'N annhymerus' hyd yn oed wneud gyntaf tra ddolen, i. Y tu allan, yn ail tra ddolen. Unwaith eto, argraffwch y tu mewn o yma, mae'r gwerth i. A gadewch i ni redeg y. Dadfygio slaes Felly dot. Rhowch yn gyfanrif. Gadewch i ni wneud 13. A ffyniant. Rydym yn gweld ein bod yn dolennu ddiddiwedd tu mewn i'r ail ddolen tra. Felly, yn awr rydym yn gwybod beth yw'r nam yn. Ond debugging printf yn gwbl wych, ond unwaith y bydd eich rhaglenni yn cael hirach a mwy cymhleth, mae yna atebion mwy soffistigedig i cael pethau'n gweithio. Felly, gadewch i ni gael gwared ar yr holl printfs hyn. A gadewch i ni wneud yn siwr nad i ddim torri unrhyw beth. OK. Felly, y rhaglen rydym yn mynd yn cael ei alw i gyflwyno GDB, ar gyfer GNU dadfygiwr. Wel, mewn gwirionedd, gadewch i ni gael gwared ar debug ar gyfer ail, ac yn gwneud debug eto. Wel, mewn gwirionedd yn gyntaf, gwers dda mewn dadleuon llinell gorchymyn. Sylwch fod y gorchymyn chlang sy'n llunio popeth yn cael ei basio ar y llinell orchymyn, mae'r rhain yn dadleuon llinell gorchymyn. Felly, yn union sut yr ydych yn mynd i gael ei ddefnyddio dadleuon llinell gorchymyn, wrth i ni o'r blaen, ac wrth i chi bydd yn PSET 2, dyna sut chlang yn eu defnyddio. Felly, yn sylwi bod y faner yn gyntaf, llinell doriad ggdb3, beth mae hynny'n ei ddweud yw, chlang, dylech lunio y ffeil gyda'r bwriad y byddwn yn y pen draw Mae angen i debug iddo. Felly, cyn belled ag y byddwch yn cael y faner, Yna, gallwn GDB debug. A bydd yn agor y GNU dadfygiwr. Felly, mae llawer o orchmynion bod angen i chi ddod i arfer â. Chi'n un cyntaf y bydd yn ôl pob tebyg ar unwaith ei angen yw Run. Felly, yr hyn a Run mynd i'w wneud? Mae'n mynd i ddechrau ein rhaglen. Felly rhedeg, y rhaglen yn dechrau, y rhaglen gofyn i ni am cyfanrif, 13. Ac yna mae'n dolennu anfeidrol fel disgwyl, ac eithrio fy mod yn symud y printfs, felly nid ydym hyd yn oed yn gweld hynny. Dod ohonynt fel arfer. Oh. Mae'n bosibl ei fod wedi'i lapio yr holl ffordd o gwmpas, yn ôl i - ac anwybyddu hynny. Gymryd yn ganiataol na oedd yn gadael fel arfer. Mae yna ateb cymhleth i hynny. Felly nawr, nid yw hynny'n ddefnyddiol iawn. Felly, dim ond rhedeg ein rhaglen tu mewn Nid yw debugger hwn yn ein helpu mewn unrhyw ffordd, gan y gallai yr ydym newydd ei wneud dot slaes debug o'r tu allan GDB. Felly mae'r un gorchymyn sy'n wnewch chi helpu yn ôl pob tebyg - a byddaf yn rhoi'r gorau iddi hwn. Control-d neu roi'r gorau iddi, gwaith. Felly, gadewch i ni agor i fyny eto. Gorchymyn arall y mae'n debyg y byddwch am unwaith i ddod i arfer â yw Egwyl. Felly, byddwn yn torri ar y prif am y tro, ac yna byddaf yn esbonio hynny. Wel, dyma ni yn gweld ein gosod torbwynt yn y llinell hon yn debug.c. Felly, beth yw ystyr toriad yw bod pan fyddaf yn deipio rhedeg, mae'r rhaglen yn mynd i barhau i redeg hyd nes Yr wyf yn taro torbwynt. Felly, pan fyddaf yn taro rhedeg, y rhaglen yn dechrau, ac yna mae'n torri cyn gynted ag y mynd i mewn i'r brif swyddogaeth. Egwyl prif yn mynd i fod yn rhywbeth chi 'n bert yn gyffredin yn ei wneud. Ac yn awr, er mwyn eich cyflwyno i rywfaint yn fwy gorchmynion. Sylwch yma, ei fod yn dweud ein dorrodd yn llinell 11, sydd yn printf, nodwch yn gyfanrif. Felly, y gorchymyn nesaf yn mynd i fod sut rydym yn mynd i'r llinell nesaf o god. Mae hyn yn mynd i'n galluogi i gamu trwy ein llinell rhaglen drwy linell. Felly nesaf. Nawr llinell 12, rydym yn mynd i gael y cyfanrif. Nesaf. Ac os ydych yn unig daro Chofnoda eto, mae'n annhymerus ' ail-wneud y peth olaf a wnaeth i chi. Felly nid oes angen i mi deipio nesaf bob tro. Felly gofnodi cyfanrif, 13. Felly nawr, llinell 14, tra fi yn fwy na 10, a byddaf yn ei wneud nesaf. Ac rydym yn gweld ein bod yn mynd i lleihau a i. Felly, rydym yn mynd i lleihau a fi eto. Felly nawr, defnyddiol arall gorchymyn yn Argraffu. Felly Print yn mynd i argraffu gwerth y newidyn. Gadewch i ni ennyn y gwerth oi amrywiol. Gadewch i argraffu i. Mae'n mynd i ddweud i 11. Nawr rydym Nesaf eto tra i yn fwy na 10. Felly, fi yn dal i fod yn fwy na 10, gan ei fod yn 11. i minws minws. Gadewch i argraffu i eto. Yn ôl y disgwyl, mae'n 10. Felly yn awr, nesaf. Mae'n mynd yn ôl i'r cyflwr, i yn fwy na 10, ond fi yn awr yn 10, felly nid yw'n fwy na 10, felly rydym yn disgwyl iddo i syrthio allan o'r ddolen tra. Ac yn awr rydym yn is na llinell o god. Ac gorchymyn arall, Rhestr, yn unig yw mynd i arddangos blaenorol ac nesaf cwpl o linellau o god, yn rhag ofn i chi golli eich hun. Felly, rydym yn unig wedi gadael y dolen tra, ac yn awr rydym wedi mynd hon tra bod dolen, llinell 18. Felly, er i nid yw'n gyfartal 0. Ac, yn nesaf, fi hafal i minws 3, ac rydym yn annhymerus ' rhybudd, bydd hyn yn unig yn cadw i fynd. A gallwn argraffu i. Math o Mae gan bob gorchymyn llwybrau byr. Felly p yn fyr ar gyfer Print. Felly, gallwn p i. Dim ond yn cadw cynnal n, neu barhau i wneud Next. Argraffu i eto. Byddwch yn gweld nawr mae'n negyddol 167. Felly, bydd hyn yn mynd ymlaen am byth, ond nid wir am byth, ers i chi jyst yn gweld, mae'n mewn gwirionedd yn dod i ben ar ryw bwynt. Fel bod Dechrau GDB. Ond gadewch i ni wneud un peth arall yn GDB. Uh, dadfygio. Felly, yn yr achos arbennig hwn, mae'r ddigwyddodd dolen ddiddiwedd i fod tu mewn y prif swyddogaeth. Ac ar hyn o bryd, dim ond yn derbyn bod fy mod yn mynd i symud y dolen ddiddiwedd i y swyddogaeth foo. Dim ond cofiwch, ar ddiwedd y rhaglen, yn dda, roedd hyn yn wreiddiol galw foo, sef ychydig yn fynd i'r wasg i. Ond yn awr yr ydym yn galw foo, sy'n mynd i lleihau a fi nes ei fod yn 0, ac Yna, print that amrywiol. OK. Arbed hynny. Gwneud dadfygio. Ac yn awr, debug gdb. OK. Felly, os Fi jyst Rhedeg yna nid wyf ddim yn mynd i yn gallu camu mewn gwirionedd drwy fy linell wrth linell rhaglen. Felly, gadewch i ni dorri yn y prif, ac yna teipiwch rhedeg. Felly fynd drwy hyn, printf, rhowch cyfanrif, yn cael y cyfanrif, 13. Felly, rydym yn mynd i gadw decrementing nes i yn fwy na 10. Yna, rydym yn mynd i ddisgyn drwy'r tra bod dolen, ac yn cyrraedd y llinell - gadewch i ni agor i fyny mewn ffenestr ar wahân. Felly, rydym ostwng o hyd nes i mi oedd bellach yn fwy na 10, ac yna rydym yn a elwir yn swyddogaeth, foo. Felly, yr hyn a ddigwyddodd cyn gynted ag y taro foo swyddogaeth, yn dda, yr wyf yn galw foo, a yna nid oes bellach cefais rheolaeth dros GDB. Felly, cyn gynted ag y taro Nesaf yn y llinell hon, pethau barhaodd tan hyn yn digwydd, lle mae'r rhaglen wedi gadael pryd - cymryd yn ganiataol nad oedd yn bodoli yn y pen draw. Gwelsoch ei oedi am ychydig er. Felly pam wnes i yn colli rheolaeth dros y rhaglen ar y pwynt hwnnw? Wel, pan fyddaf yn teipio nesaf, sy'n mynd i llinell llythrennol nesaf o god sy'n , yn gweithredu. Felly, ar ôl llinell 21, y llinell nesaf o god a fydd yn gweithredu yn llinell 22, sydd, cyffrous o brif. Felly, nid wyf am i jyst yn mynd i'r llinell nesaf o god. Dw i eisiau mynd i mewn i'r swyddogaeth, foo, ac yna hefyd yn camu drwy y llinellau hynny o god. Felly, ar gyfer hynny, mae gennym ddewis arall. Gadewch i ni roi'r gorau iddi hynny eto. Egwyl prif. Uh, 1, nesaf, nesaf, 13, nesaf, nesaf, nesaf, yn ofalus, cyn i ni gyrraedd foo llinell. OK. Felly nawr, rydym yn yn y llinell 21, lle rydym yn galw foo. Nid ydym am i deipio nesaf, ers hynny Bydd ffoniwch y foo swyddogaeth, a mynd i'r llinell nesaf o god. Yr hyn yr ydym am ei ddefnyddio yw Cam. Felly, mae gwahaniaeth rhwng y Cam a Next, lle mae Cam camau i mewn i'r weithredu, a Next mynd dros y swyddogaeth. 'I jyst yn executes y cyfan o'r y swyddogaeth ac yn cadw i fynd. Felly Cam yn mynd i ddod â ni i mewn i'r swyddogaeth, foo. Ac rydym yn gweld yma, yn awr, rydym yn ôl yn hwn dolen er bod hynny yn, mewn theori, mynd i barhau am byth. Ac os byddwch yn taro Cam, pan nad yw hyd yn oed swyddogaeth i alw, yna mae'n union Nesaf. Felly, dim ond pan fyddwch chi yn y llinell sy'n yn galw swyddogaeth sy'n Cam yn mynd i wahanol Nesaf. Felly, bydd Cam dod â ni yma. Gam, cam, cam, cam, cam, cam, a byddwn ni dim ond dolen ddiddiwedd am byth. Felly efallai y byddwch yn dod i arfer â hynny fel eich ffordd o adnabod dolenni anfeidrol, yn dim ond cynnal y fysell Enter i gweld ble rydych yn mynd yn sownd. Mae yna ffyrdd gwell i wneud hynny, ond ar hyn o bryd, mae hynny'n berffaith ddigonol. Ac yn arddull, i gydymffurfio â Style 50, dylwn fod wedi gwneud hyn. OK. Felly, un gorchymyn ddiwethaf i gyflwyno. Wel, gadewch i ni gdb debug i mewn Felly, yn hytrach na thorri yn y prif, os wyf yn gwybod y swyddogaeth foo hefyd yn broblem, yna gallwn gael yn unig Dywedodd, yn torri ar foo, yn lle hynny. Lets 'ddeud torraf yn yn brif a foo. Felly, gallwch osod cymaint o torbwyntiau ag y dymunwch. Pan fyddaf yn teipio rhedeg, mae'n mynd i stopio yn y - www, gadewch i ni ail-grynhoi, gan Newidiais pethau. Byddwch yn gweld y llinell hon, Rhybudd, ffynhonnell ffeil yn fwy diweddar na gweithredadwy. Felly mae hynny'n golygu bod Fi jyst yn mynd i mewn yma ac wedi newid hyn i gydymffurfio â Style 50, ond doeddwn i ddim yn ail-grynhoi y rhaglen. Felly GDB yn fy ngwneud yn ymwybodol o hynny. 'N annhymerus' rhoi'r gorau iddi, yn gwneud debug eto, taro dadfygio gdb. OK. Felly nawr, yn ôl at yr hyn yr wyf yn ei wneud. Break prif, foo egwyl. Nawr, os wyf yn rhedeg y rhaglen, felly mae'n mynd i barhau hyd nes yn taro torbwynt. Mae hynny'n torbwynt yn digwydd i fydd yr un gyntaf yn brif. Yn awr, yn hytrach na gwneud nesaf, nesaf, nesaf, nesaf, nesaf, hyd nes i mi daro foo, yr wyf yn Gall deipio barhau, a fydd yn parhau hyd nes y byddwch yn cyrraedd y torbwynt nesaf. Rhaid i mi fynd i mewn i'r cyfanrif gyntaf. Parhau yn parhau hyd nes i mi gyrraedd y torbwynt nesaf, sef bod swyddogaeth foo. Felly bydd Run rhedeg tan byddwch yn taro torbwynt, ond dim ond deipio redeg pan eich bod yn dechrau ar y rhaglen, ac yna, o hynny ymlaen, mae'n parhau. Os byddaf yn unig oedd yn torri brif a Yna, yn rhedeg, bydd yn torri ar prif, ac yna parhau. Gan nad oes gennyf bwynt egwyl foo, mynd i mewn i'r cyfanrif, yna nawr rwy'n ddim yn mynd i dorri ar foo. Dim ond ei fod yn mynd i 'n Anfeidraidd dolen tan hynny. OK. Felly dyna Cyflwyniad i GDB. Dylech ddechrau ei ddefnyddio yn eich setiau problem. Gall fod yn ddefnyddiol iawn i nodi bugs. Os ydych mewn gwirionedd dim ond, llinell wrth linell, ewch drwy eich cod, a chymharu hyn sy'n mewn gwirionedd yn digwydd gyda hyn yr ydych yn ei ddisgwyl i ddigwydd, yna mae'n eithaf anodd i'w golli eich chwilod. OK. Felly, yr wythnos diwethaf David magu hon pethau cryptograffeg gyfrinach-allweddol ar gyfer y tro cyntaf, lle nad ydym am cyfrineiriau yn unig yn cael ei storio ar ein cyfrifiadur mewn rhai ffeil testun plaen, lle gall rhywun ddod draw a dim ond agor i fyny ac yn eu darllen. Yn ddelfrydol, byddent yn cael eu hamgryptio mewn rhyw ffordd. Ac yn Problem Set 2, byddwch yn delio gydag un dull o amgryptio, neu, yn dda, ddau ddull, ond nid ydynt yn mor fawr. Os byddwch yn gwneud y rhifyn haciwr, rydych yn hefyd yn mynd i fod yn delio â decrypting rhai pethau. Felly, y mater yn awr yw, yn dda, hyd yn oed os mae gennym y amgryptio cryfaf algorithm yn y byd, os byddwch yn dewis cyfrinair arbennig o wael, yna mae'n Ni fydd yn eich helpu yn fawr iawn, gan fod pobl bydd yn dal yn gallu chyfrif 'ii maes. Hyd yn oed os gweld y llinyn amgryptio a mae'n edrych fel llanast o garbage sy'n golygu dim iddyn nhw, os ydynt yn dal i fod yn jyst angen i roi cynnig ar ychydig o cyfrineiriau at chyfrif 'ii maes, yna rydych nid ydynt yn ddiogel iawn. Felly, gwylio fideo sy'n yn gwneud y pwynt hwnnw. [VIDEO Playback] -Helmed, rydych fiend. Beth sy'n digwydd? Beth ydych chi'n ei wneud i fy merch? -Caniatáu i mi gyflwyno'r gwych llawfeddyg plastig ifanc, Dr Phillip Schlotkin, y trwyn mwyaf dyn swydd yn y cyfan bydysawd, a Beverly Hills. -Eich Uchelder. -Trwyn swydd? Nid wyf yn deall. Mae hi eisoes wedi cael swydd trwyn. Roedd yn un ar bymtheg melys yn bresennol. -Dim. Dyw hi ddim yn beth yw eich barn. Mae'n llawer, llawer gwaeth. Os na fyddwch yn rhoi cyfuniad i mi y darian aer, Dr Schlotkin yn rhoi eich merch yn ôl ei hen trwyn. -Dim. Ble wnaethoch chi gael y? -Mae pob hawl. Byddaf yn dweud. Byddaf yn dweud. Na, dad. Na, rhaid i chi beidio. -You're dde, fy annwyl. 'N annhymerus' yn colli eich trwyn newydd. Ond ni fyddaf yn dweud wrth y cyfuniad wrtho, waeth beth. -Iawn yn dda. Dr Schlotkin, gwneud eich gwaethaf. -Fy pleser. [OFFER CAEL miniogi] -Dim. Aros. Aros. Byddaf yn dweud. Byddaf yn dweud. -I yn gwybod y byddai'n gweithio. Mae pob hawl. Yn ei roi i mi. -Mae'r cyfuniad yn un. -Un. -Un. -Dau. -Dau. -Dau. -Tri. -Tri. -Tri. -Four. -Four. -Four. -Five. -Five. -Five. -Felly mae'r cyfuniad yn un, dau, tri, pedwar, pump. Dyna y cyfuniad stupidest Yr wyf yn clywed erioed yn fy mywyd. Dyna'r math o beth idiot yn ei gael ar ei bagiau. -Diolch i chi, eich Uchelder. -Beth wnaethoch chi ei wneud? -I troi oddi ar y wal. -Na na wnaethoch. Rydych yn troi oddi ar y ffilm gyfan. -I fod wedi pwyso'r botwm anghywir. -Wel, roi yn ôl ar. Rhowch y ffilm yn ôl ar. -Oes, syr. Oes, syr. -Gadewch i ni fynd, Arnold. Dewch, Gretchen. Wrth gwrs, eich bod yn gwybod 'n annhymerus' yn dal i rhaid i bil i chi am hyn. [DIWEDD VIDEO chwarae] ROB Boden: Pob hawl. Rydym Felly nawr bod eisoes yn siarad am diogelwch mewn rhai ffyrdd, 'n glws ychydig poster ffilm, felly yn ddiweddar diwrnod, mae'r materion hyn gyda'r NSA monitro popeth. Gall fod yn anodd i deimlo fel chi gael rhyw fath o breifatrwydd yn y byd ar-lein, er na allwn ddweud chi y rhan fwyaf o'r manylion PRISM. Felly, symud y tu hwnt PRISM, nid ydym yn mynd i fod yn siarad am hynny, sydd bellach yn yn meddwl am eich gliniadur. Felly i fyny yma, yr wyf am newid at fy nghyfrif gwirioneddol, gyda fy pengwin bach. Felly mae gen i set cyfrinair, a bod cyfrinair yn beth bynnag rwyf am iddo fod. Ond cofiwch fod yr hyn yr wyf i'n logio gyda, felly mewngofnodiad hwn brydlon, rhywfaint rhaglen. Mae'n rhywfaint o raglen a oedd yn ysgrifennwyd gan ryw berson. Ac felly, y person hwnnw, os ydynt yn yn arbennig maleisus, gallent wedi dweud, iawn, felly os y cyfrinair fy mod yn mynd i mewn yn hafal i fy cyfrinair gwirioneddol, neu ei fod yn gyfartal i ryw cyfrinair arbennig - Mae David yn wych neu rywbeth - yna gadewch nhw i mewn Felly gallai rhaglennydd maleisus wedi mynediad i bob un o'ch Macs, neu Ffenestri, neu unrhyw beth. Felly nid yw bod llawer o bryder, ers hynny, Yr wyf yn golygu, y rhaglen mewngofnodi yn sy'n cael ei gludo gyda OS X, cannoedd neu filoedd o bobl adolygu cod hwn. Ac felly, os, yn eich cod yn rhywle, i chi ddweud os llinyn hwn yn hafal hafal Mae David yn anhygoel, mewngofnodi, yna rhywun yn mynd i fod, fel, aros. Nid yw hyn yn iawn. Ni ddylai hyn fod yma. Felly dyna un ffordd yr ydym yn cael pethau i fod yn fath o ddiogel. Ond meddyliwch am raglenni, hyd yn oed eich bod yn ysgrifennu. Dewch i ddweud eich ysgrifennodd y rhaglen mewngofnodi. Felly, y rhaglen mewngofnodi eich bod wedi ysgrifennu, felly mae'n amlwg, yr ydych yn dda rhaglennydd. Nad ydych yn mynd i roi unrhyw maleisus os x yn hafal hafal i David yn anhygoel i mewn i'ch cod. Ond rhaglen hon, yr hyn yr ydych yn ei wneud defnyddio i lunio'r rhaglen hon? Rhywbeth fel chlang. Felly beth os bydd y person a ddigwyddodd i ysgrifennu chlang arbennig Mewn Casys yn chlang rhywbeth fel, os wyf yn llunio'r rhaglen mewngofnodi, yna rhowch y cod hwn yn y rhaglen mewngofnodi, sy'n dweud, os x yn hafal hafal i David yn awesome? Felly, nid yn eithaf eto, ond mae gennym yr un gyhoeddi yma, lle mae chlang, yn dda, miloedd, os nad degau o filoedd o bobl, wedi edrych ar chlang, wedi edrych ar ei linellau o god, a dywedodd, iawn, does dim byd drwg yma. Yn amlwg, nid oes unrhyw un yn ei wneud unrhyw beth hwn maleisus. Ond yr hyn a chlang ei hun, fel, beth os byddaf yn llunio chlang? Beth os oes gennyf ryw compiler sy'n llunio chlang sy'n mewnosod i mewn i chlang hon darnia arbennig sy'n dweud, iawn, pan fyddaf yn llunio chlang, yna bydd y gweithredadwy dylwn gael edrych yn arbennig tu mewn i'r rhaglen mewngofnodi a mewnosoder cyfrinair hwn, yn hafal i gydradd Dave yn awesome? Felly, cofiwch fod eich casglwr ei hun Mae angen i gael eu llunio ar ryw bwynt. Felly, os yw'r hyn ydych yn dewis i lunio chlang gyda, ei hun yn faleisus, yna rydych gellid eu sgriwio y cyfan ffordd i lawr y lein. Felly dyma, rydym wedi Ken Thompson a Dennis Ritchie. Felly mae hwn yn llun eiconig. Dennis Ritchie ar y dde. Mae'n bwysig - 'n bert lawer Ysgrifennodd C. Felly gallwch diolch iddo am y dosbarth hwn. Ken Thomson sydd ar y chwith. Mae'r ddau ohonynt yn y bôn ysgrifennodd UNIX. Wel, roedden nhw'n gyfranwyr pwysig yn UNIX. Roedd rhai eraill. Felly Ken Thompson, ar ryw adeg, yn ennill y Wobr Turing. A gwobr Turing, yr wyf wedi clywed bob amser yn mae'n cyfeirio at y modd hwn, 'i' y Gwobr Nobel gwyddoniaeth gyfrifiadurol. Felly, ar y Wobr Turing, mae'n rhaid iddo rhoi ei araith dderbyn. Ac mae'n rhoi hwn araith enwog iawn yn awr, a elwir yn Myfyrdodau ar Trusting Ymddiriedolaeth, yr ydym wedi cysylltu atynt ar y wefan y cwrs. Ac yn yr araith hon, meddai, yn iawn, felly ysgrifennais UNIX, ac yn awr yr holl chi bobl yn defnyddio UNIX. Nawr, cofiwch heddiw bod Linux yn yn ddisgynnydd uniongyrchol o UNIX. OS X yn uniongyrchol yn defnyddio UNIX. Nid yw Windows yn gwneud hynny llawer, ond mae llawer o syniadau eu cymryd o UNIX. Felly, mae'n mynd i fyny i'r llwyfan ac yn dweud, iawn, ysgrifennais UNIX. A dim ond er mwyn i chi guys yn gwybod, rwy'n gallu mewngofnodi i mewn i bob un unigol ar eich cyfrifiaduron. Ers i mi yn rhoi un o'r rhain yn arbennig os oes x hafal hafal i Ken Thomson yn anhygoel, yna rwyf i'n cael mewngofnodi. Felly mae pobl yn debyg, yn dda, how'd chi wneud hynny? Rydym yn edrych ar y rhaglen mewngofnodi a dim byd yno. Mae'n debyg, yn dda, yr wyf yn newid y casglwr i logio i mewn i'r rhaglen mewngofnodi fel bod y rhaglen mewngofnodi yn awr bydd yn rhaid i bod x yn hafal hafal i Ken Thompson yn awesome. Ac maent yn dweud, yn dda, nid yw hynny'n wir. Rydym yn edrych ar y casglwr, ac mae'r Nid oes gan compiler unrhyw linellau cod fel 'na. Mae'n debyg, iawn, ond beth yr ydych yn llunio'r compiler â nhw? Ac maent yn meddwl, ac mae'n, fel, yn dda, Fi yw'r un a roddodd y compiler chi rydych yn ei ddefnyddio i lunio'r compiler, felly eich bod yn llunio casglwr, bod ei hun yn faleisus, a bydd yn torri'r rhaglen mewngofnodi. Felly y bôn, ar y pwynt hwnnw, mae unrhyw ffordd y gallech edrych ar y ffynhonnell cod y rhaglen mewngofnodi i weld beth sydd o'i le. Nad oeddech yn gallu hyd yn oed yn edrych yn y ffynhonnell cod y casglwr i weld beth sydd o'i le. Byddai angen i chi edrych ar y peiriant cod, mae'r deuaidd gwirioneddol y compiler llunio i weld, aros, mae'r rhain yn Ni ddylai llinellau o god fod yma. Ond cymerodd Ken Thompson yn un cam ymhellach a dweud, yn dda, mae yna y rhaglenni arbennig sydd mewn gwirionedd yn helpu i ddarllen y binary o raglenni, ac felly os bydd rhywun yn defnyddio y rhaglen i darllen y binary, byddent yn gweld y rhain linellau o god. Roedd haddasu rhaglenni hynny i ddweud, pob iawn, os ydych yn edrych ar y compiler, nid ydynt yn dangos hyn yn arbennig set o deuaidd. Felly mae angen i chi gymryd y cam ymhellach ac yn y bôn, a allai gael lefelau lluosog a gymerwyd o indirection, ac ar ryw adeg, nid oes unrhyw un mewn gwirionedd mynd i gael eu gwirio. Felly, y moesol y stori yw, rydych yn ddim yn mynd i gael ei ysgrifennu Chlang yn y dosbarth hwn. Rydych yn mynd i gael ei ddefnyddio dringo Chlang llawer yn y dosbarth hwn. Ar gyfer pob eich bod yn gwybod, chlang yn maleisus rhaglen sy'n cael ei sabotaging pob un rhaglen yr ydych wedi llunio erioed. Ac i adael i chi ar y ominous iawn nodi, gweld chi ar ddydd Mercher. [Cymeradwyaeth] SIARADWR 2: Yn y CS50 nesaf. SIARADWR 3: Onid ydych yn meiddio dweud hynny. Gallwch chi wneud hyn. Rydych chi wedi gwneud hyn o'r blaen, gallwch wneud hyn heddiw, gallwch wneud hyn yfory. Rydych chi wedi bod yn gwneud hyn ers blynyddoedd. Dim ond yn mynd i fyny yno ac yn gwneud hyn. Gallwch chi wneud hyn. [CHWARAE CERDDORIAETH]