[Powered by Google Translate] [Adran 4] [Llai cyfforddus] [Nate Hardison] [Harvard University] [Mae hyn yn CS50.] [CS50.TV] Mae pob hawl, yn croesawu yn ôl i adran. Yn yr adran yr wythnos hon, rydym yn mynd i wneud un neu ddau o bethau. Rydym yn mynd i ailadrodd cyntaf 2 Set Problem, sef y broblem a osodwyd Cesar a Vigenère. Ac yna rydym yn mynd i ddeifio i mewn i adolygiad Cwis 0 ac yn treulio ychydig o amser yn ailadrodd yr hyn yr ydym wedi siarad am ym mhob un o'r darlithoedd hyd yma, a byddwn hefyd yn gwneud ychydig o broblemau o cwisiau flwyddyn flaenorol. Y ffordd yr ydych guys gael yn ffordd dda o baratoi ar gyfer hynny. I ddechrau, yr wyf wedi booted i fyny cwpl o atebion da ar gyfer y set problem blaenorol, Datrys Set 2, i mewn i'r gofod. Os ydych yn guys i gyd daro y cyswllt hwn, ac os ydych yn clicio fy enw a chliciwch ar fy adolygiad cyntaf byddwch yn gweld caesar.c, sef yr union beth yr wyf i'n edrych ar. Gadewch i ni siarad am hyn yn gyflym iawn. Mae hyn yn unig yw ateb sampl. Nid yw hyn o reidrwydd yr ateb perffaith. Mae yna nifer o ffyrdd gwahanol i ysgrifennu hwn, ond mae yna ychydig o bethau fy mod am dynnu sylw at a welais gan fy mod yn graddio, camgymeriadau cyffredin yr wyf yn meddwl ateb hwn yn gwneud gwaith da iawn o drin. Y cyntaf yn cael rhyw fath o sylwadau pennawd ar y brig. Ar linellau 1 hyd 7 eich bod yn gweld y manylion, beth yn union y rhaglen hon yn ei wneud. Mae arfer safon dda pan fyddwch yn ysgrifennu C cod waeth beth os ydy'ch rhaglen yn cael ei gynnwys mewn ffeil sengl neu boed yn rhannu dros ffeiliau lluosog yn cael rhyw fath o orienting sylwadau ar y brig. Mae hyn hefyd ar gyfer pobl sy'n mynd allan ac ysgrifennu cod yn y byd go iawn. Dyma lle y byddant yn rhoi gwybodaeth hawlfraint. Isod mae'r cynnwys #. Ar llinell 16 mae hyn yn # diffinio, y byddwn yn dod yn ôl i mewn dim ond ychydig. Ac yna unwaith y bydd y swyddogaeth yn dechrau, yn dechrau unwaith y bydd prif oherwydd bod y rhaglen hon wedi cael ei gynnwys i gyd mewn un swyddogaeth y peth cyntaf sy'n digwydd-ac mae hyn yn idiomatig ac yn nodweddiadol o raglen C sy'n cymryd mewn llinell orchymyn dadleuon-yw ei fod ar unwaith yn gwirio ar gyfer y cyfrif ddadl, argc. Hawl yma rydym yn gweld bod y rhaglen hon yn disgwyl 2 dadleuon yn union. Cofiwch mae y ddadl gyntaf yw'r un arbennig bod bob amser yn enw'r rhaglen sy'n cael ei rhedeg, enw'r ffeil gweithredadwy. Ac felly beth yw hyn yn ei atal y defnyddiwr rhag rhedeg y rhaglen gyda mwy o ddadleuon neu lai. Y rheswm rydym am i chwilio am yr hawl i ffwrdd oherwydd ni allwn mewn gwirionedd gael mynediad i'r amrywiaeth argv dde yma ddibynadwy hyd nes y byddwn wedi gwirio i weld pa mor fawr ydyw. Un o'r camgymeriadau cyffredin a welais oedd y byddai pobl yn syth mynd i mewn a gafael argv [1]. Roedden nhw chrafangia 'r ddadl allweddol allan y rhesi, ac nid y mae i wirio i arno, ac yna byddent yn gwneud y prawf ar gyfer argc yn ogystal â'r prawf nesaf, a oedd y ddadl gyntaf yn wir yn cyfanrif ar yr un pryd, ac nad yw hynny'n gweithio oherwydd yn yr achos nad oes dadleuon a gyflenwir byddwch yn crafangio dadl nad yw ar gael neu geisio bachu un nad yw'n yno. Y peth mawr arall y dylech sylwi arno yw fod byddwch bob amser yn awyddus i argraffu rhyw fath o neges gwall defnyddiol i'r defnyddiwr i Dwyrain nhw. Rwy'n siŵr eich bod i gyd wedi cynnal rhaglenni lle mae pob yn sydyn mae'n damweiniau, a byddwch yn cael yr ymgom bach chwerthinllyd a pops i fyny ac yn dweud rhywbeth ofnadwy cryptig ac efallai yn rhoi i chi côd gwall neu rywbeth fel 'na sy'n gwneud dim synnwyr. Dyma lle chi wir eisiau darparu rhywbeth defnyddiol ac wedi'u targedu at y defnyddiwr fel bod pan fyddant yn rhedeg yn mynd "O," wyneb palmwydd. "Rwy'n gwybod yn union beth i'w wneud. Rwy'n gwybod sut i atgyweiria hon." Os nad ydych yn argraffu neges, yna byddwch yn darfod i fyny mewn gwirionedd gadael y defnyddiwr i fynd archwilio eich cod ffynhonnell at chyfrif i maes beth aeth o'i le. Mae yna hefyd rai adegau y byddwch yn defnyddio codau gwall gwahanol. Yma, rydym yn unig yn defnyddio un i ddweud nad oedd camgymeriad, roedd gwall, roedd gwall. Rhaglenni Bigger, yn aml yn rhaglenni sy'n cael eu galw gan raglenni eraill, yn dychwelyd rhyw fath o godau gwall arbennig mewn sefyllfaoedd gwahanol i programmatically gyfathrebu yr hyn yr ydych fyddai fel arall yn dim ond yn defnyddio neges Saesneg neis ar gyfer. Cool. Wrth i ni weithio i lawr, gallwch weld rydym yn tynnu y tu allan allweddol. Rydym yn profi i weld a yw'r allwedd yn cyd-fynd. Rydym yn cael neges gan y defnyddiwr. Y rheswm rydym yn ei wneud yn hyn o beth tra ddolen-ac mae hyn yn rhywbeth y byddwn yn cwmpasu mewn ychydig bit-ond mae'n troi allan os ydych yn teipio reolaeth D pan fyddwch yn cael y GetString brydlon ar y derfynell yr hyn sydd mewn gwirionedd yn ei wneud yn ei anfon gymeriad arbennig i'r rhaglen. Mae'n cael ei alw y ELF neu ar ddiwedd y cymeriad ffeil. Ac yn yr achos hwnnw, bydd ein llinyn neges yn null, felly nid oedd hyn yn rhywbeth rydym yn gwirio ei gyfer yn y broblem gosod iddo'i hun. Ond wrth i ni fynd ymlaen, yn awr ein bod wedi dechrau siarad am awgrymiadau a dyrannu cof deinamig ar y domen, gwirio null pryd bynnag y byddwch yn cael swyddogaeth a allai dychwelyd null fel gwerth yn rhywbeth y byddwch am i fynd i mewn i'r arfer o wneud. Mae hyn yn fan hyn yn bennaf ar gyfer darlunio. Ond pan fyddwch yn gwneud yn gweld GetString yn y dyfodol, felly o Broblem Set 4 ar, youll 'angen at cadw hyn mewn cof. Unwaith eto, nid yw hyn yn broblem i Problem Set 3 naill ai gan nad ydym wedi trafod hyn eto. Yn olaf, rydym yn cael y rhan hon lle rydym yn cyrraedd y ddolen amgryptio prif, ac mae un neu ddau o bethau sy'n mynd ymlaen yma. Yn gyntaf, rydym yn ailadrodd dros y llinyn neges gyfan ei hun. Yma, rydym wedi cadw yr alwad strlen yn y cyflwr, Nid y mae nifer ohonoch wedi dangos yn ffordd wych i fynd. Mae'n troi allan yn yr achos hwn nid hefyd yn wych, yn rhannol oherwydd ein bod yn addasu cynnwys y neges ei hun y tu mewn i'r ddolen am, felly os oes gennym neges sef 10 nod o hyd, y tro cyntaf byddwn yn dechrau y bydd am ddolen strlen ddychwelyd beth? 10. Ond os byddwn wedyn yn addasu neges, yn dweud ein bod yn addasu ei gymeriad 5ed, ac rydym yn taflu mewn cymeriad \ 0 yn y sefyllfa 5ed, ar fersiwn dilynol, ni fydd strlen (neges) yn dychwelyd yr hyn a wnaeth y tro cyntaf i ni Ailadroddodd, ond bydd yn hytrach yn dychwelyd 5 oherwydd ein taflu yn y terminator null, a hyd y llinyn yn cael ei ddiffinio gan y sefyllfa honno \ 0. Yn yr achos hwn, mae hyn yn ffordd wych i fynd oherwydd ein bod yn addasu yn ei le. Ond byddwch yn sylwi bod hyn mewn gwirionedd yn syndod o syml i amgryptio os gallwch gael y math cywir. Y cyfan sydd ei angen yw i wirio p'un ai nad oedd y llythyr eich bod yn edrych ar yn priflythyren neu llythrennau bach. Y rheswm yn unig sydd gennym i wirio am hynny ac nid oes gennym i wirio am yr achos alffa yn oherwydd os yw cymeriad yn priflythyren neu os yw'n llythrennau bach yna mae'n bendant yn gymeriad yr wyddor, oherwydd nad oes gennym ddigidau priflythyren a llythrennau bach. Y peth arall yr ydym yn ei wneud-ac mae hyn yn ychydig yn anodd- yn cael ei rydym wedi newid y safon Cesar cipher fformiwla a roddasom yn y set problem fanyleb. Beth sy'n wahanol yma yw ein bod tynnu yn y brifddinas achos priflythyren A, ac yna rydym yn ei llwytho cyfalaf A cefnogi i mewn ar y diwedd. Yr wyf yn gwybod ychydig ohonoch wedi gwneud hyn yn eich cod. A wnaethoch unrhyw un ohonoch yn gwneud hyn yn eich cyflwyniadau? Chi wneud hyn. Allwch chi egluro beth mae hyn yn ei wneud, Sahb? Trwy dynnu allan, oherwydd gwnaethoch mod dde ar ôl hynny, rhaid i chi gymryd allan, fel y ffordd yr ydych yn ei gael [peswch] sefyllfa. Ac yna drwy ychwanegu yn ôl yn ddiweddarach i chi symud dros yr un yr ydych ei eisiau. Yeah, yn union. Beth Sahb ddywedodd oedd pan rydym am ychwanegu ein neges a'n allweddol at ei gilydd ac yna mod hynny, mod, trwy NUM_LETTERS, os nad ydym yn raddfa ein neges i'r briodol 0-25 ystod gyntaf, yna efallai y byddwn yn y pen draw yn cael nifer wirioneddol rhyfedd oherwydd bod y gwerthoedd yr ydym yn edrych ar pan fyddwn yn edrych ar neges [i], pan fyddwn yn edrych ar y cymeriad ith ein blaen-destun neges, yn werth rhywle yn yr ystod 65-122 yn seiliedig ar y gwerthoedd ASCII ar gyfer priflythyren A drwy'r z llythrennau bach. Ac felly pan fyddwn yn mod iddo gan 26 neu drwy NUM_LETTERS, ers hynny oedd ein # diffinio ar y dde uchaf i fyny yma, mae hynny'n mynd i roi i ni gwerth sydd yn y amrediad 0 i 25, ac mae arnom angen ffordd i addasu hynny, yna yn ôl i fyny ac yn ei gael yn yr ystod ASCII priodol. Y ffordd hawsaf o wneud hynny ydy at jyst raddfa popeth i lawr i mewn i'r amrediad 0 i 25 oed i ddechrau, ac yna symud popeth yn ôl i fyny ar y diwedd. Arall gwall cyffredin a welais bobl yn rhedeg i mewn i yw bod os nad ydych mewn gwirionedd yn gwneud hyn graddio ar unwaith ac rydych yn ychwanegu neges ac allweddol at ei gilydd ac rydych yn eu hychwanegu, yn dweud, i mewn newidyn torgoch, y broblem gyda hynny Mae gan neges [i] yn nifer cymharol fawr i ddechrau- cofiwch ei fod yn o leiaf 65 oed os ei fod yn priflythyren gymeriad- os oes gennych allwedd mawr, dyweder, rhywbeth fel 100, a ydych yn ychwanegu hynny 2 at ei gilydd i mewn i golosg wedi'i lofnodi rydych yn mynd i gael orlif. Rydych yn mynd i gael gwerth sy'n fwy na 127, sef y gwerth mwyaf y gall newidyn torgoch dal. Unwaith eto, dyna pam y byddech eisiau gwneud y math yna o beth i ddechrau. Mae rhai pobl yn cael o gwmpas yr achos hwnnw drwy wneud yn os arall a phrofi i weld os byddai'n gorlifo cyn gwneud hynny, ond y ffordd hon yn cael tua hynny. Ac yna yn yr ateb hwn rydym yn argraffu'r y llinyn cyfan ar y diwedd un. Pobl eraill eu hargraffu cymeriad ar y tro. Mae'r ddau yn awesome. Ar y pwynt hwn, a oes gennych guys gennych unrhyw gwestiynau, unrhyw sylwadau am hyn? Pethau ydych yn hoffi, pethau nad ydych yn hoffi? Roedd gen i gwestiwn. Efallai wyf yn colli yn ystod eich esboniad, ond sut mae hyn yn rhaglen hepgor y gofod ar gyfer cysylltu'r allweddol i hyd y testun? Mae hyn yn unig Caesar cipher. >> O, sori, yeah. Yeah, byddwn yn gweld hynny. Yn y cipher Cesar gawsom o gwmpas oherwydd bod rydym yn unig flipped cymeriadau. Rydym yn Dim ond cylchdroi iddynt os ydynt yn priflythyren neu llythrennau bach. Rydych guys teimlo'n eithaf da am hyn? Teimlwch yn rhydd i gopïo cartref hwn, yn ei gymryd, gymharu â hyn yr ydych guys ysgrifennodd. Yn bendant mae croeso i chi anfon cwestiynau am y peth hefyd. Ac eto, yn sylweddoli bod y nod yma gyda eich problem yn gosod Nid yw i fynd â chi guys i ysgrifennu cod perffaith ar gyfer eich setiau problem. Mae'n brofiad dysgu. Yeah. Yn ôl i'r do tra ddolen, os yw'n hafal null, felly null unig yn golygu dim byd, dim ond daro chofnoda? Null yn werth pwyntydd arbennig, ac rydym yn defnyddio null pan fyddwn eisiau ei ddweud mae gennym newidyn pwyntydd sy'n pwyntio at ddim. Ac felly fel arfer mae'n golygu bod y newidyn hwn, y newidyn neges yn wag, ac yma, oherwydd ein bod yn defnyddio'r math CS50 llinyn arbennig, beth yw'r math llinyn CS50? Ydych chi wedi gweld yr hyn ydyw pan David dynnu yn ôl y cwfl yn y ddarlith? Mae'n ffynci-mae'n pwyntydd, dde? Iawn, yeah. >> Mae'n * torgoch. Ac felly mewn gwirionedd y gallai rydym yn cymryd lle'r hyn i'r dde yma gyda neges * torgoch, ac felly mae'r swyddogaeth GetString, os nad yw'n llwyddo i gael llinyn gan y defnyddiwr, Ni all dosrannu linyn, a bod yr achos un lle na all dosrannu llinyn yw os bydd y defnyddiwr mathau diwedd, cymeriad ffeil D reolaeth, nad yw'n rhywbeth yr ydych yn ei wneud fel rheol, ond os bydd hynny'n digwydd yna bydd y swyddogaeth yn dychwelyd y gwerth null fel ffordd o ddweud "Hey, doeddwn i ddim yn cael llinyn." Beth fyddai'n digwydd os na fyddwn yn rhoi neges = null, sy'n rhywbeth nad ydym wedi bod yn ei wneud eto? Pam fyddai hynny'n broblem yma? Gan fy mod yn gwybod ein bod yn siarad ychydig mewn darlith am ollyngiadau cof. Yeah, gadewch i ni wneud hynny, a gadewch i ni weld beth sy'n digwydd. Basil gwestiwn oedd yr hyn fydd yn digwydd os nad ydym mewn gwirionedd wedi neges hon = null prawf? Gadewch i sgrolio i fyny i'r brig. Gallwch guys sylwadau hyn. A dweud y gwir, 'n annhymerus' gadw mewn adolygiad. Bydd hyn yn Revision 3. Beth fydd yn rhaid i chi ei wneud i redeg y rhaglen hon yw y bydd rhaid i chi glicio ar yr eicon hwn gêr i fyny yma, a bydd yn rhaid i chi ychwanegu dadl ato. Bydd rhaid i chi roi y ddadl allweddol ers i ni eisiau i basio mewn llinell orchymyn ddadl. Dyma dw i'n mynd i roi y rhif 3. Rwy'n hoffi 3. Nawr chwyddo yn ôl allan, rhedeg y rhaglen. Mae'n rhedeg, llunio, adeiladu. Yma rydym yn mynd. Mae'n aros i gael ei annog. Os byddaf yn teipio rhywbeth fel helo-lle oedd hynny'n mynd? O, fy rhaglen cymryd gormod o amser i'w rhedeg. Roeddwn yn jawing am gyfnod rhy hir. Yma, mae'n mynd. Nawr rwy'n deipio helo. Rydym yn gweld ei fod yn amgryptio briodol. Nawr, beth sy'n digwydd os ydym yn ei wneud GetString brydlon i ddychwelyd null? Cofiwch, dywedais ein bod yn gwneud hynny drwy wasgu rheolaeth D ar yr un pryd. 'N annhymerus' sgrolio i fyny yma. Byddwn yn rhedeg unwaith eto. Adeiladu. Mae y mae'n mynd. Nawr pan fyddaf yn taro reolaeth D Cawn y llinell hon sy'n dweud opt/sandbox50/bin/run.sh, nam Segmentiad. Ydych chi wedi gweld guys hynny o'r blaen? [Myfyrwyr] Pam nad oes->> Mae'n ddrwg gennym? [Myfyrwyr] Pam nad oes tomen graidd yn yr achos hwn? Mae'r domen craidd yn-y cwestiwn pam nad oes unrhyw domen craidd yma? Y cwestiwn yw y gall fod, ond mae'r domen craidd yn ffeil sy'n cael ei storio ar y disg caled. Yn yr achos hwn rydym wedi anabl dadlwythiadau craidd ar y gweinydd yn rhedeg fel nad oes gennym bobl SEG ffawtio ac adeiladu tunnell o dadlwythiadau craidd. Ond efallai y cewch un. Dadlwythiadau craidd yn y math o beth y gallwch chi yn aml yn anablu, ac weithiau rydych yn ei wneud. Y, i ateb eich cwestiwn, wall Basil, yn dweud ein bod yn ceisio cael mynediad i pwyntydd nad oedd i fod i gyfeirio at unrhyw beth. Cofiwch Binky yn y fideo pan fydd Binky ceisio mynd yn cael mynediad i pwyntydd nid yw hynny'n tynnu sylw i unrhyw beth? Yn yr achos hwn mae'n debyg dechnegol y pwyntydd yn pwyntio at rywbeth. Mae'n pwyntio at null, sy'n dechnegol 0, ond sy'n cael ei diffinio mewn segment nad sy'n hygyrch gan eich rhaglen, er mwyn i chi gael wall oherwydd nad ydych yn cyrchu cof sy'n mewn segment dilys fel y segment domen neu segment stac neu segment data. Cool. Unrhyw mwy o gwestiynau am Cesar? Gadewch i ni symud ymlaen. Gadewch i ni edrych ar Diwygiad 2 yn gyflym iawn. Dyna Vigenère. Yma yn Vigenère byddwn yn cerdded trwy yr un yma yn weddol gyflym oherwydd, unwaith eto, Vigenère a Cesar yn eithaf tebyg. Sylwadau Pennawd yn blaen, # Diffinio yn bod cyn i osgoi defnyddio rhifau hyn hud. Y peth braf yw dweud ein bod am symud i yn wyddor gwahanol neu rywbeth fel 'na. Yn hytrach na gorfod mynd â llaw newid yr holl y 26 yn y cod gallem newid hyn i 27 neu ollwng i lawr os ydym yn defnyddio gwahanol wyddorau, ieithoedd gwahanol. Unwaith eto, rydym wedi cael y gwiriad hwn o'r cyfrif ddadl, ac yn wir bron y gallwch dderbyn hwn fel templed. Dylai 'N bert lawer pob rhaglen i chi ysgrifennu wedi- os bydd yn cymryd llinell orchymyn dadleuon-rhyw dilyniant o linellau sy'n darllen fel hyn ar y cychwyn cyntaf. Dyna un o'r profion cyntaf y byddwch yn bwyll am ei wneud. Yma hyn a wnaethom oedd ein gwneud yn siŵr bod y gair allweddol yn ddilys, a dyna oedd y gwiriad ail waith inni ei wneud. Hysbysiad eto ein bod yn gwahanu oddi wrth hyn argc a 2. Sylwer bod yn yr achos hwn un peth yr ydym yn gorfod ei wneud oedd yn lle hynny o ddefnyddio i i roeddem am i ddilysu y llinyn cyfan, ac er mwyn gwneud yr ydych yn ei rhaid i chi fynd cymeriad gan cymeriad dros y llinyn. Does dim ffordd dda i alw rhywbeth arno oherwydd hyd yn oed, er enghraifft, i fydd i ddychwelyd 0 os na all dosrannu cyfanrif, felly nid yw hyd yn oed yn gweithio. Unwaith eto, neges 'n glws dweud wrth y defnyddiwr yn union beth ddigwyddodd. Yna yma, unwaith eto, rydym hefyd yn ymdrin â'r achos lle y defnyddiwr mathau mewn cymeriad D reolaeth ar hap. Ac yna roedd Charlotte gwestiwn yn gynharach am sut rydym yn rheoli i osgoi mannau yn ein llinyn yma. Roedd hyn yn fath o debyg i'r hyn a wnaethom â'r rhaglen Myspace a wnaethom yn adran, a'r ffordd y gweithiodd yw ein bod yn olrhain nifer y llythyrau yr ydym ni wedi gweld. Wrth i ni gerdded dros y llinyn neges, wrth i ni gerdded dros cymeriad gan cymeriad, rydym yn olrhain mynegai fel rhan o'n gyfer dolen, ac yna rydym hefyd yn olrhain y nifer o lythyrau, felly heb fod yn arbennig cymeriadau, nad ydynt yn-digid, heb fod yn wyn gofod ein bod wedi gweld yn y newidyn ar wahân. Ac yna mae hyn yn ateb yn addasu'r allweddol i gael cyfanrif allweddol go iawn, ac mae'n gwneud hynny ar y hedfan, i'r dde cyn iddo wedyn yn mynd i amgryptio cymeriad negesau ei hun. Mae rhai atebion a oedd yn berffaith yn rhy fawr a fyddai'n newid y allweddol i fyny wrth brofi am ddilysrwydd yr allwedd yn. Yn ogystal â gwneud yn siŵr bod y cymeriad a'r gair allweddol Roedd yn gymeriad yr wyddor mae hefyd yn newid hynny i mewn i gyfanrif yn yr amrediad 0 i 25 yna ewch gorfod gwneud hynny yn nes ymlaen yn hyn ar gyfer dolen. Unwaith eto, byddwch yn gweld yma mae hyn yn wir yr un cod union a ddefnyddiwyd gennym yn y Caesar ar y pwynt hwn. Rydych yn gwneud yr un peth yn union, felly mae'r tric go iawn yn figuring allan sut i droi'r gair allweddol i mewn i gyfanrif. Un peth a wnaethom yma sydd ychydig yn drwchus yn yr ydym ailadrodd yr ymadrodd hwn, yr wyf yn dyfalu y gallai ydych yn ei alw, 3 gwaith ar wahân ar linellau 58, 59, a 61. A all rhywun esbonio beth yn union yr ymadrodd hwn yn ei wneud? Mae'n cael mynediad i gymeriad, fel y dywedasoch. Yeah, mae'n [Anghlywadwy] cymeriad yn y keyword, ac felly mae'n nifer o lythyrau gweld oherwydd eich bod dim ond symud ar hyd y gair allweddol unwaith y byddwch wedi gweld y llythyr, fel bod yn mynd i sgip yn effeithiol mannau a phethau fel 'na. Yeah, yn union. Ac yna unwaith y byddwch wedi gweld y gair allweddol wag 'ch jyst mod er mwyn i chi symud yn ôl o gwmpas. Yn union. Dyna esboniad berffaith. Beth Kevin ddweud yw ein bod yn awyddus i mynegai i mewn i'r gair allweddol. Rydym yn awyddus i gael y cymeriad num_letters_seen, os mynnwch, ond os num_letters_seen yn fwy na hyd y gair allweddol, y ffordd yr ydym yn mynd yn ôl i mewn i'r amrediad priodol yw y byddwn yn defnyddio'r gweithredwr mod yn effeithiol lapio o gwmpas. Er enghraifft, fel yn y tymor byr, mae ein gair allweddol yw cig moch, ac mae'n 5 llythyr hir. Ond rydym wedi gweld 6 llythyr yn ein testun plaen ar y pwynt hwn ac wedi'i amgryptio 6. Byddwn yn dod i ben i fyny cael mynediad i'r num_letters_seen, sydd 6, mod hyd y gair allweddol, 5, ac felly byddwn yn cael 1, ac felly yr hyn y byddwn yn ei wneud yw gallwn eich mynediad i'r tu mewn cymeriad cyntaf ein gair allweddol yn y pwynt hwnnw. Mae pob hawl, unrhyw gwestiynau am Vigenère cyn i ni symud ymlaen? Rydych guys teimlo'n eithaf da am hyn? Cool, mawr. Rwyf am wneud yn siŵr eich bod guys yn cael y cyfle i weld cod ein bod yn meddwl yn edrych yn dda ac yn cael y cyfle i ddysgu oddi wrtho. Mae hyn yn mynd i fod yn yr olaf byddwn yn defnyddio mannau am y tro, ac rydym yn mynd i pontio yn awr, ac yr wyf i'n mynd i fynd i cs50.net/lectures fel y gallwn wneud ychydig o cwis adolygiad. Y ffordd orau Rwy'n credu i ddechrau gwneud cwis adolygiad i ddod at y dudalen Darlithoedd, cs50.net/lectures, ac o dan bob un o'r penawdau wythnos, felly os wyf yn edrych yma yn Wythnos 0, Gwelaf fod gennym restr o bynciau ein bod wedi ymdrin yn Wythnos 0. Os bydd unrhyw un o'r pynciau yn ymddangos yn anghyfarwydd i chi byddwch yn bendant eisiau mynd yn ôl a chwalfa barhaus y mwd y nodiadau darlith ac o bosibl hyd yn oed yn sgimio trwy'r darlithoedd, gwylio nhw eto os ydych eisiau i gael blas ar beth sy'n mynd ymlaen â phob un o'r pynciau. Byddaf yn dweud hefyd y flwyddyn o'r adnoddau oeri rydym wedi cael Dyma'r siorts yr ydym wedi eu creu, ac os ydych yn edrych ar Wythnos 0, Nid oes gennym yr holl o'r pynciau a drafodir, ond mae gennym eithaf ychydig ohonynt, rhai o'r rhai anoddach, felly gwylio hyn shorts eto yn ffordd dda i fynd â chi i fyny i gyflymu. Yn benodol, dw i'n mynd i roi mewn plwg ar gyfer y 3 ar y gwaelod, ers i mi wneud hynny. Ond os ydych yn cael trafferth gyda deuaidd, darnau, hecs, y math o bethau, binary yn lle gwych i ddechrau. ASCII yn un arall sy'n dda i weld hefyd. Gallwch hyd yn oed yn fy ngwylio ar gyflymder 1.5x os ydw i'n mynd yn rhy araf i chi. Ers ei adolygiad, croeso i chi wneud hynny. Dim ond i gychwyn yn gyflym iawn, rydym yn mynd i fynd drwy ychydig o'r problemau hyn cwis yn unig i gorddi yn gyflym drwy'r rhain. Er enghraifft, gadewch i ni edrych ar broblem 16 sy'n gen i'r dde i fyny yma ar y bwrdd. Rydym wedi cael y cyfrifiad canlynol yn binary, ac rydym am ddangos unrhyw waith. Iawn, dw i'n mynd i roi hyn yn ergyd. Dylech guys ddilyn ynghyd â phapur, a byddwn yn gwneud hyn yn gyflym iawn. Rydym yn awyddus i berfformio y cyfrifiad canlynol yn deuaidd. Mae gen i 00,110,010. Ac yr wyf i'n mynd i ychwanegu ato 00,110,010. Ar gyfer y math ysgolheigion yn dilyn ar hyd yn y cartref, hyn yn effeithiol lluosi gyda 2. Gadewch i ni ddechrau. Rydym yn mynd i ddilyn yr algorithm ogystal ag yr ydym yn ei wneud pan fyddwn yn ychwanegu rhifau degol gyda'i gilydd. Really yr unig wahaniaeth yma yw ein bod dolen yn ôl o gwmpas unwaith y byddwn wedi 1 + 1 yn hytrach na ar ôl inni gael i 10. Os byddwn yn dechrau o'r dde, yn gyflym iawn, beth yw'r digid cyntaf? [Myfyrwyr] 0. >> [Nate H.] 0. Great, yr ail ddigid? [Myfyrwyr] 1. [Nate H.] A yw'n 1? 1 + 1 yn? [Myfyrwyr] 10. [Nate H.] Yn union, felly beth yw'r digid mod i'n ysgrifennu i'r dde o dan y 2 rhai hadio at ei gilydd? [Myfyrwyr] 1, 0, neu 0 ac yna gario'r 1. [Nate H.] 0 ac yn cario 1, yn union. Un nesaf i fyny, Basil, rydych yn i fyny. Beth yw'r parti? >> [Basil] 1. [Nate H.] 1, perffaith. Kevin? [Kevin] 0. >> [Nate H.] 0, Charlotte? [Charlotte] 0. >> [Nate H.] Yeah, a beth ddylwn i ei wneud? [Myfyrwyr] Mae'r 1. [Nate H.] A beth ddylwn i ei wneud? Ac yna yr wyf yn cario'r 1. Perffaith, Sahb? >> [Sahb] Nawr eich bod wedi 1. [Nate H.] A ydw i'n gwneud unrhyw beth yma? [Sahb] Yna am yr un nesaf ydych wedi 1 oherwydd eich cario trosodd 1. [Nate H.] Great, felly dyma gallwn orffen i fyny. Cool. [Myfyrwyr] yw 0 + 0 = 0? 0 + 0 = 0. 1 + 1, fel y dywedasoch, yw 10, neu 1, 0, yn hytrach. 10 yn gamarweiniol oherwydd i mi 10 yn golygu y rhif 10, ac mae'n y chwiw o sut yr ydym yn ei chynrychioli pan fyddwn ni'n ysgrifennu. Rydym yn cynrychioli y rhif 2 o 1, 0, ac mae'r rhif 10 yn ychydig yn wahanol. Beth fath o neis am deuaidd yw nad oes mewn gwirionedd yw bod llawer o achosion mae angen i chi ddysgu. Mae 0 + 0 = 0, 0 + 1 = 1, 1 + 1 yn 0, ac yna yn cario 1, ac yna gallwch chi weld yma ar y drydedd golofn o'r dde gawsom y 1, 1, a 1. Ac 1 + 1 + 1 yn 1, a ydych yn cario arall 1. Pan fyddwch chi'n gwneud ychwanegol deuaidd, 'n bert syml. Byddwn yn gwneud mwy ddau o'r rhain i bwyll wirio eich hunain cyn i chi fynd i mewn gan fod hyn yn yn ôl pob tebyg rhywbeth y byddwn yn gweld ar y cwis. Nawr gadewch i ni wneud yr un nesaf yn ogystal. Gadewch i ni wneud problem 17. Rydym yn mynd i drosi'r rhif deuaidd canlynol i degol. Mae gen i 10100111001. Cofiwch yn y fideo deuaidd mod i wedi Yr wyf yn cerdded drwy un neu ddau o enghreifftiau, ac yr wyf yn dangos sut y mae popeth yn gweithio pan fyddwch chi'n ei wneud yn degol. Pan fyddwch yn gweithio mewn cynrychiolaeth degol Rwy'n credu ein bod ar y pwynt hwn yn ein bywydau mor rhugl ynddi y mae'n eithaf hawdd i sglein dros y mecanwaith o sut y mae'n gweithio mewn gwirionedd. Ond i wneud ailadrodd cyflym, os wyf yn cael y rhif 137 hyn yn ei olygu mewn gwirionedd-ac eto, mae hyn yn degol chynrychiolaeth- y rhif 137 yn degol yn golygu bod gen i 1 x 100 + 3 x 10 + 7 x 1. Mae hyn i gyd yn aros ar y sgrin. Ac yna os ydych yn edrych ar y niferoedd hyn yn iawn yma, 100, 10 ac 1, byddwch yn gweld eu bod yn mewn gwirionedd yn holl bwerau o 10. Mae gen i 10 ², 10 ¹, a 10 i sero. Mae gennym un math o beth yn deuaidd, ac eithrio bod ein sylfaen, fel y'i gelwir, yw 2 yn hytrach na 10. Mae'r 10au a ysgrifennais i lawr yma yn y gwaelod, y ² 10, 10 ¹, 10 i'r sero, 10 yw ein sylfaen, a'r ddehonglwr, 0, 1, neu 2, ei awgrymu gan y safle'r digid yn y nifer a rydym yn ysgrifennu. 1, os ydym yn edrych arno, mae hyn 1 yn y sefyllfa 2il. Mae'r 3 yn y sefyllfa 1af, a'r 7 yn y sefyllfa 0. Dyna sut yr ydym yn cael y ddehonglwyr gwahanol isod am ein canolfannau. Yn dilyn hyn i gyd we'll-mewn gwirionedd, eich bod yn gwybod beth? Byddwn yn gwneud-lle oedd fy dadwneud botwm yn mynd? Mae y mae'n mynd. Rwyf wrth fy modd dadwneud hyn beth. Yn dilyn hyn yr wyf yn meddwl i mi o leiaf y ffordd hawsaf i ddechrau trosi rhif deuaidd neu rhif hecsadegol lle y sylfaen yw 16 a bod 10 neu 2 yn mynd yn ei flaen ac ysgrifennu y canolfannau a ddehonglwyr gyfer pob un o'r rhifau yn fy rhif deuaidd ar y brig. Os byddwn yn dechrau o'r chwith i'r dde unwaith eto, sy'n fath o groes i reddf, 'N annhymerus' newid yn ôl i du yma, mae gennym y 2 i'r sefyllfa 0, ac yna mae gennym 2 ¹, 2 ², ac yna 2 i 3, 2 i 4, 2 i 5, 6, 7, 8, 9, a 10. Mae'r niferoedd hyn rwyf wedi ysgrifennu allan yn yr holl esbonyddion. Dim ond ysgrifennodd y canolfannau yma yn y 3 cyntaf yn unig ar gyfer gofod. Ar y pwynt hwn yr wyf i'n mynd i fynd yn ei flaen ac rwy'n wir yn mynd i ddileu y pethau a wnaethom yn degol, os yw hynny'n iawn. Rydych chi wedi cael yr holl hynny. Bydd y rhai ohonoch gwylio ar-lein Rwy'n siŵr y gallu i ailddirwyn mi os hoffech chi. Newid yn ôl i'r gorlan. Nawr, beth y gallwn ei wneud-os nad ydych guys yn hollol i fyny i gyflymu ar eich bwerau o 2, mae hynny'n hollol cŵl. Mae'n digwydd. Yr wyf yn deall. Rwy'n unwaith wedi cael cyfweliad am swydd lle y dywedwyd wrthyf y dylwn wybod yr holl bwerau o 2 i fyny trwy'r 2 i 30. Nid oedd swydd rwy'n got. Beth bynnag, gallwch chi guys mynd yn ei flaen a gwneud y math yma, ond gyda deuaidd nid yw'n gwneud synnwyr mewn gwirionedd, ac nid yw'n gwneud synnwyr gyda degol neu hecsadegol naill ai, i wneud y math allan lle mae gennych sero. Gallwch weld gen i 0 yma, o 0 yma, 0 yma, 0 yma, 0 yma, 0 yma. Pam na gwneud synnwyr i wneud y math gwirioneddol i gyfrifo'r pŵer priodol o 2 ar gyfer y swydd? Yn union, fel Charlotte dywedodd, bydd yn 0. Efallai yn ogystal arbed amser os nad cyfrifo pwerau 2 yn eich siwt cryf. Yn yr achos hwn dim ond angen i gyfrifo am 2 i 0 a yw-? [Myfyrwyr] 1. [Nate H.] 1, 2 i 3 sydd-? [Myfyrwyr] 8. >> [Nate H.] 8. 2 i 4? [Myfyrwyr] 2. Mae'n ddrwg gen i, 1. [Nate H.] 2 i 4 yn 16, yn union. 2 i 5, Kevin? >> 32. [Nate H.] 32, 2 i 8? [Myfyrwyr] 32 x 8, 256. [Nate H.] Perfect. A 2 i'r 10? [Myfyrwyr] 1024. [Nate H.] Yeah, 1024. Unwaith y byddwn wedi cael y niferoedd hyn gallwn grynhoi nhw i gyd i fyny. A dyma lle mae'n bwysig iawn i wneud un neu ddau o bethau. Mae un yn mynd yn araf ac yn gwirio eich gwaith. Gallwch ddweud bod yna 1 ar ddiwedd y rhif hwn, felly dylai yn bendant gael odrif fel fy ganlyniad, oherwydd bod yr holl rai eraill yn mynd i fod hyd yn oed yn nifer ystyried ei bod yn rhif deuaidd. Y peth arall i'w wneud yw os ydych yn cyrraedd y pwynt ar y prawf ac rydych wedi ysgrifennu allan cyn belled â hyn a ydych yn rhedeg allan o amser edrych ar y nifer o bwyntiau bod y broblem hon yn werth. Mae hyn yn broblem, fel y gallwch weld-os byddaf yn troi yn ôl at fy ngliniadur yn gyflym iawn- broblem hon yn werth 2 bwynt, felly nid dyma'r math o ychwanegiad dylech fod yn mynd trwy os ydych yn pwyso yn wir am amser. Ond byddwn yn newid yn ôl i'r iPad, a byddwn yn mynd drwyddo yn gyflym iawn. Rwy'n hoffi gwneud y niferoedd bach cyntaf oherwydd fy mod yn dod o hyd i hynny'n haws. Rwy'n hoffi 32 a 8 oherwydd eu bod yn mynd gyda'i gilydd yn eithaf hawdd, ac rydym yn cael 50. 16 ac 1 yn cael 17. Dyna ni yn cael 57, ac yna gallwn wneud y gweddill o hyn, felly rydym yn gallu ei wneud 57, 156. Dewch ar. Dyn, yn dda, gadewch i ni weld. Roedd gennym 57, 256, a 1024. Ar y pwynt hwn, byddai'n well gen i jyst yn mynd drwyddo. Nid oes gennyf unrhyw syniad. I amlwg bod angen i ddarllen i fyny ar hyn. 7, 6, a 4, byddwch yn cael 17. 1, 5, 5, 2, 13. Yna rydym yn cael 3, ac yna rydym yn cael 1. 1337. Wyau Pasg, unrhyw un? Unrhyw un yn adnabod rhif hwn? Chris yn cydnabod y rhif. Beth mae'n ei olygu, Chris? [Chris] Phentreflys. Phentreflys, felly os ydych yn edrych ar hyn, mae'n edrych fel lît. Pethau haciwr. Gwyliwch allan am y math hwnnw o stwff ar y canol tymor neu cwis, yn hytrach. Os ydych yn gweld y math o bethau ac rydych yn meddwl "Huh," allai fod mewn gwirionedd yn golygu rhywbeth. Nid wyf yn gwybod. David yn hoffi ei roi i mewn Mae'n ffordd dda o bwyll ei wirio. Fel iawn, gallaf weld beth sy'n mynd ymlaen. Dyna Wythnos 0/Week 1 stwff. Os byddwn yn newid yn ôl at ein gliniadur yn awr, chwyddo allan, ac un neu ddau o bethau eraill. Mae ASCII, yr ydym wedi bod yn gwneud llawer o gyda setiau broblem. Mae'r syniad o gyfalaf A. Beth yw hynny mewn gwirionedd? Mae gwybod ei fod yn y cyfanrif degol. 65 yw yr hyn y mae'n ei mapio yn y tabl ASCII, a dyna felly sut y cyfrifiadur yn ysgrifennu iddo, a dyna sut rydym wedi bod yn cael i ffwrdd gyda gwirionedd ysgrifennu cyfalaf cymeriad A a chymeriad lythrennau bach a mewn rhai o'r atebion hyn ac yn gosod problem eich bod wedi bod yn ei wneud. Mae cwpl o bethau eraill. Rydym wedi cael datganiadau, ymadroddion boolean, amodau, dolenni, newidynnau ac edafedd. Mae'r rhai i gyd yn ymddangos i wneud synnwyr ar gyfer y rhan fwyaf? Mae rhai o'r derminoleg yn ffynci ychydig ar adegau. Rwy'n hoffi i feddwl am ddatganiad ag ar gyfer y rhan fwyaf o rywbeth rhan sy'n dod i ben gyda hanner colon. Datganiadau fel x = 7, sy'n gosod amrywiol, a elwir yn ôl pob tebyg x = 7. Mae'n debyg x hefyd yn fath sy'n gallu storio rhif 7, felly ei fod yn int neu efallai arnofio neu gyfnod byr neu golosg, rhywbeth fel 'na. Mae mynegiant boolean yn defnyddio hyn dwbl yn dychwelyd a bang yn hafal i neu os nad yw'r hafal, llai na, mwy na, yn llai na neu'n hafal i, y cyfan sydd math o bethau. Amodau wedyn yn ddatganiadau os arall. Byddwn yn cofio na allwch gael arall heb cyfatebol os. Yn yr un modd, ni allwch gael arall os heb cyfatebol os. Dolenni, dwyn i gof y 3 math o dolenni rydym wedi bod yn curo i mewn i chi ar gyfer yr ychydig olaf o adrannau a setiau problem. Gan ddefnyddio yn tra pan fyddwch chi'n cael mewnbwn defnyddwyr, defnyddio tra dolenni hyd nes y bydd cyflwr penodol yn wir, ac yna defnyddio rhai ar gyfer dolenni os bydd angen i chi yn gwybod pa fersiwn o'r ddolen ydych yn ar hyn o bryd ar dyna sut yr wyf yn meddwl am y peth. Neu os ydych yn gwneud ar gyfer pob cymeriad mewn llinyn Rwyf am wneud rhywbeth, ar gyfer pob elfen mewn arae Rwyf am wneud rhywbeth i gael yr elfen honno. Trywyddau a digwyddiadau. Nid yw'r rhain yr ydym wedi trafod hynny yn benodol yn C, ond cofiwch hyn o Scratch. Dyma syniad o gael sgriptiau gwahanol. Mae hyn hefyd yn syniad hwn o ddarlledu digwyddiad. Nid yw rhai pobl yn defnyddio darlledu yn eu prosiectau i ddechrau, sy'n gwbl oer, ond mae'r rhain yn 2 ffyrdd gwahanol o ddelio â mater hwn mwy o faint o'r enw concurrency, sef sut ydych chi'n cael rhaglenni i weithredu neu ymddangos yn gweithredu ar yr un pryd? Gwahanol dasgau redeg wrth dasgau eraill hefyd yn rhedeg. Dyma sut mae eich system weithredu yn ymddangos i weithio. Dyma pam hyd yn oed er, er enghraifft, Rwyf wedi cydio yn fy porwr yn rhedeg, gallaf droi ar Spotify a chwarae cân. Mae hynny'n fwy o beth cysyniadol i ddeall. Byddwn yn edrych ar yr edafedd byr os hoffech chi ddysgu mwy am hynny. Gadewch i ni weld, rwy'n credu y gallai fod wedi bod yn yn broblem ar hyn mewn un o'r rhain. Unwaith eto, yr wyf yn meddwl nad edafedd a digwyddiadau yn rhywbeth y byddwn yn ymdrin yn C dim ond oherwydd ei fod yn llawer mwy anodd nag mewn Scratch. Ni ddylech boeni am y peth yno, ond yn bendant yn deall y cysyniadau, deall beth sy'n mynd ymlaen. Cyn i ni symud ymlaen, unrhyw gwestiynau am Wythnos 0 deunydd? Mae pawb yn teimlo'n 'n bert da? Newidynnau Dealltwriaeth a beth yw newidyn? Symud ymlaen. Wythnos 1. Mae cwpl o bethau fan hyn nad oedd yn cynnwys yn arbennig yn yr adolygiad o reidrwydd cwis a hefyd yn bethau mwy cysyniadol i feddwl amdano. Y cyntaf yw y syniad o'r hyn y cod ffynhonnell, crynoadyddion a chod gwrthrych yn cael eu. Unrhyw un? Basil. A yw gwrthrych cod-yr wyf yn golygu cod ffynhonnell yr hyn yr ydych ei roi i mewn i clang, a chod gwrthrych yw beth clang rhoi allan fel y gall eich cyfrifiadur ddarllen y rhaglen. Yn union. Cod ffynhonnell yw'r cod C yr ydych yn ei deipio. Cod gwrthrych yw hyn a gewch allan o clang. Dyma'r 0au ac 1 yn y fformat deuaidd. Yna, beth fydd yn digwydd pan fydd gennych criw o ffeiliau gwrthrych, dweud eich bod yn llunio prosiect neu raglen sy'n defnyddio ffeiliau cod ffynhonnell lluosog, sydd erbyn confensiwn yn cael y. estyniad ffeil c. Dyna pam ein bod wedi caesar.c, vigenère.c. Os ydych yn ysgrifennu rhaglenni Java i chi roi iddynt yr estyniad. Java. Rhaglenni Python yn cael yr estyniad. Py aml. Unwaith y byddwch wedi ffeiliau c lluosog., Byddwch yn llunio nhw. Clang poeri allan hyn i gyd junk deuaidd. Yna, oherwydd eich bod dim ond eisiau 1 rhaglen gennych y ddolen linker pob un o'r rhain gwrthrych ffeiliau at ei gilydd i 1 ffeil gweithredadwy. Mae hyn hefyd yn beth sy'n digwydd pan fyddwch yn defnyddio'r llyfrgell CS50, er enghraifft. Mae'r llyfrgell CS50 yn y ddau hynny. Ffeil pennawd h eich bod yn darllen, y # includecs50.h. Ac yna mae hefyd yn ffeil ddeuaidd llyfrgell arbennig sydd wedi cael ei lunio sy'n 0s a 1s, a bod-l faner, felly os ydym yn mynd yn ôl at ein Mannau ac rydym yn edrych yn gyflym iawn ar yr hyn sy'n mynd ymlaen yma pan fyddwn yn edrych ar ein gorchymyn clang, hyn sydd gennym yw hyn yw ein ffynhonnell ffeiliau cod iawn yma. Mae'r rhain yn griw o faneri compiler. Ac yna ar y diwedd un, mae'r rhain yn-l baneri cyswllt yn y ffeiliau deuaidd gwirioneddol ar gyfer y 2 llyfrgelloedd, y llyfrgell CS50 ac yna y llyfrgell mathemateg. Deall pob math o bwrpas ffeiliau ' yn y broses casglu yn rhywbeth youll 'angen at fod yn gallu rhoi o leiaf trosolwg lefel uchel o. Cod ffynhonnell yn dod i mewn cod gwrthrych yn dod allan. Ffeiliau cod gwrthrych cysylltu â'i gilydd, a byddwch yn cael hardd, ffeil gweithredadwy. Cool. Dyma hefyd lle gallwch gael gwallau mewn mannau lluosog yn y broses casglu. Mae hyn yn lle, er enghraifft, os byddwch yn cymryd allan y faner cysylltu, y faner CS50, a byddwch yn hepgor mewn Mannau neu pan fyddwch yn rhedeg eich cod, dyma lle byddwch yn cael gwall yn y cyfnod cysylltu, a bydd y linker yn dweud, "Hey, rydych elwir yn GetString swyddogaeth sydd yn y llyfrgell CS50. " "Rydych yn dweud wrthyf ei fod yn y llyfrgell CS50, ac ni allaf ddod o hyd i'r cod ar gyfer hynny." Dyna lle mae'n rhaid i gysylltu i mewn, a dyna wahân o gwall compiler oherwydd bod y casglwr yn edrych ar gystrawen a bod math o bethau. Mae'n dda i wybod beth sy'n digwydd pryd. Pethau eraill i wybod amdano. Byddwn yn dweud yn bendant eisiau cymryd golwg ar y tymor byr ar stereoteipio a wnaed gan Jordan i ddeall beth ints o dan y cwfl, pa chars o dan y cwfl. Pan fyddwn yn sôn am ASCII, ac rydym mewn gwirionedd yn edrych ar y tabl ASCII, beth mae hynny'n ei wneud yn rhoi i ni o dan y cwfl golwg ar sut y cyfrifiadur mewn gwirionedd yn cynrychioli cyfalaf A a 7 digid a coma a marc cwestiwn. Mae'r cyfrifiadur hefyd ffyrdd arbennig i gynrychioli y rhif 7 fel cyfanrif. Mae ganddo ffordd arbennig i gynrychioli'r rhif 7 fel rhif pwynt arnawf, a'r rhai yn wahanol iawn. Stereoteipio yw sut yr ydych yn dweud wrth y cyfrifiadur "Hey, rwyf am i chi i drosi o un cynrychioliad i un arall gynrychiolaeth. " Pam nad ydym yn edrych ar hynny. Byddwn hefyd yn bwrw golwg ar y tymor byr o ran llyfrgelloedd a byr ar crynoadyddion. Mae'r rhai yn siarad am y broses o gasglu, beth yw llyfrgell, ac ewch dros rai o'r cwestiynau y gallech ofynnir i ni. Cwestiynau ar ddeunydd Wythnos 1? A oes unrhyw bynciau i mewn yma sy'n ymddangos yn frawychus yr hoffech eu cwmpasu? Im 'yn ceisio chwythu trwy'r rhan fwyaf o'r pynciau hyn yn gynharach er mwyn i ni gyrraedd awgrymiadau a gwneud ychydig o dychweliad. Meddyliau? Unrhyw beth i gwmpasu? Amser ar gyfer rhai siocled efallai? Rydych guys yn gweithio drwyddo. Rydw i'n mynd i gadw sipian ar fy nghoffi. Wythnos 2. Galwadau da, ffoniwch da. Yn Wythnos 2 buom yn siarad ychydig mwy am swyddogaethau. Yn y setiau problem rhai cyntaf ni ddim yn ysgrifennu unrhyw swyddogaethau o gwbl heblaw am y swyddogaeth? [Myfyrwyr] Main. >> Main, yn union. Ac felly rydym wedi gweld y gwisgoedd gwahanol prif gwisgo. Mae un y mae'n cymryd unrhyw ddadleuon, ac rydym yn unig yn dweud ddi-rym rhwng y cromfachau, ac yna mae un arall lle rydym yn awyddus i gymryd dadleuon llinell orchymyn, ac fel y gwelsom, dyna lle mae gennych argc int a llinyn argv amrywiaeth neu, yn awr ein bod wedi eu hamlygu mewn gwirionedd llinyn i fod yn * torgoch ei bod yn rydym yn mynd i ddechrau ysgrifennu fel golosg * argv ac yna cromfachau. Mewn 3 Set Problem, 'ch guys yn gweld criw o swyddogaethau, ac rydych yn gweithredu criw o swyddogaethau, tynnu, yn edrych i fyny, sgrialu. Mae'r prototeipiau eu hysgrifennu i gyd yno i chi. Beth oeddwn i eisiau siarad am yma gyda swyddogaethau yn gyflym iawn yw bod mae yna 3 rhan iddynt pryd bynnag y byddwch yn ysgrifennu swyddogaeth. Mae'n rhaid i chi nodi'r math dychwelyd y swyddogaeth. Mae'n rhaid i chi nodi enw ar gyfer y swyddogaeth, ac yna rhaid i chi nodi y rhestr ddadl neu'r rhestr paramedr. Er enghraifft, pe bawn i ysgrifennu swyddogaeth i grynhoi criw o gyfanrifau ac yna dychwelyd i mi y swm yr hyn a fyddai'n fy math dychwelyd os oeddwn i eisiau i grynhoi cyfanrifau, ac yna dychwelyd y swm? Yna enw'r swyddogaeth. Os byddaf yn mynd yn ei flaen ac ysgrifennu mewn gwyrdd, y rhan hon yw'r math dychwelyd. Mae'r rhan hon yn yr enw. Ac yna rhwng cromfachau yw lle yr wyf yn rhoi dadleuon, yn aml yn talfyrru fel args, a elwir weithiau yn params ar gyfer paramedrau. Ac os oes gennych un, 'ch jyst yn nodi'r un. Os oes gennych lluosog byddwch yn gwahanu pob un gyda choma. Ac ar gyfer pob dadl byddwch yn ei rhoi 2 beth sydd-Kevin? [Kevin] rhaid i chi roi y math ac yna'r enw. Ac yna yr enw, ac mae'r enw yr enw yr ydych wedi bod yn mynd i ddefnyddio i gyfeirio at y ddadl o fewn y swyddogaeth swm, o fewn y swyddogaeth eich bod ar hyn o bryd ysgrifennu. Nid oes rhaid i chi-er enghraifft, os ydw i'n mynd i grynhoi, ddweud, amrywiaeth o gyfanrifau-we'll gwneud amrywiaeth int, a byddaf yn rhoi fy hun rhai braces cyrliog yno- Yna, pan fyddaf yn pasio amrywiaeth i'r swyddogaeth swm Imi ei drosglwyddo yn y sefyllfa gyntaf y rhestr ddadl. Ond nid yw'r amrywiaeth a wyf yn pasio oes yn rhaid i gael y arr enw. Arr yn mynd i fod sut yr wyf yn cyfeirio at y ddadl honno o fewn corff y swyddogaeth. Y peth arall y mae angen i ni gymryd i ystyriaeth, ac mae hyn yn ychydig yn wahanol o swyddogaethau, ond yr wyf yn meddwl ei fod yn bwynt pwysig, yw bod yn C pan oeddwn i'n ysgrifennu swyddogaeth fel hyn sut ydw i'n gwybod faint o elfennau yn y casgliad? Mae hyn yn dipyn o gwestiwn tric. Rydym yn siarad am hyn ychydig yn adran yr wythnos diwethaf. Sut ydw i'n gwybod y nifer o elfennau y tu mewn i amrywiaeth yn C? A oes ffordd? Mae'n troi allan nad oes unrhyw ffordd o wybod. Mae'n rhaid i chi basio i mewn ar wahân. Mae dric y gallwch chi ei wneud os ydych yn yr un swyddogaeth y mae'r casgliad wedi cael ei ddatgan, ac rydych yn gweithio gydag amrywiaeth stac. Ond mai dim ond yn gweithio os ydych chi yn yr un swyddogaeth. Unwaith y byddwch yn pasio amrywiaeth i un arall swyddogaeth neu os ydych chi wedi datgan amrywiaeth ac rydych yn rhoi'r amrywiaeth ar y domen, ydych chi wedi defnyddio malloc  a bod y math o bethau, yna nid oes wybod. Yna byddwch mewn gwirionedd yn rhaid i chi basio o gwmpas dadl arbennig neu arall paramedr yn dweud wrthych pa mor fawr yw'r casgliad yn. Yn yr achos hwn, byddwn i eisiau defnyddio atalnod-I'm ddrwg gennym, mae'n mynd oddi ar y sgrin yma- a byddwn yn pasio yn ddadl arall  a galw yn int len ​​ar gyfer hyd. Un peth a allai ddod i fyny ar y cwis yn gofyn i chi ysgrifennu neu weithredu swyddogaeth benodol o'r enw rhywbeth. Os nad ydym yn rhoi i chi y prototeip, felly y peth i gyd yma, y llanast cyfan gelwir y datganiad swyddogaeth neu brototeip swyddogaeth, mae hyn yn un o'r pethau cyntaf y byddwch am roi taw ar i lawr os nad yw'n rhoi i chi ar unwaith ar y cwis. Y gamp arall yr wyf wedi dysgu yw bod dweud ein bod yn rhoi i chi yn brototeip ar gyfer swyddogaeth, ac yr ydym yn dweud, "Hey, mae'n rhaid i chi ysgrifennu." Y tu mewn i'r braces cyrliog sydd gennych ar y cwis os byddwch yn sylwi bod yn fath dychwelyd a byddwch yn sylwi bod y math dychwelyd yn rhywbeth ar wahân i ddi-rym, sy'n golygu nad yw'r swyddogaeth yn dychwelyd unrhyw beth, yna un peth yn bendant am ei wneud yw ysgrifennu rhyw fath o ddatganiad dychwelyd ar ddiwedd y swyddogaeth. Dychwelyd, ac yn yr achos hwn, byddwn yn rhoi wag oherwydd ein bod eisiau i lenwi'r wag. Ond mae hyn yn cael chi feddwl yn y ffordd gywir am sut ydw i'n mynd i ymdrin â'r broblem? Ac mae'n eich atgoffa eich bod yn mynd i gael i ddychwelyd gwerth i'r galwr am y swyddogaeth. Yeah. >> [Myfyrwyr] A yw'r arddull yn berthnasol pan fyddwn yn ysgrifennu cod ar y cwis? O'r fath fel y pant a'r math o bethau? >> [Myfyrwyr] Yeah. Na, ddim cymaint. Rwy'n credu bod llawer o-mae hyn yn rhywbeth y byddwn yn glir ar y cwis ar y dydd o, ond yn nodweddiadol poeni am # yn cynnwys ac yn y math o bethau, mae'n fath o tu allan. [Myfyrwyr] Oes angen i chi roi sylwadau eich cod llawysgrifen? Oes angen i chi roi sylwadau eich cod llawysgrifen? Sylwadau bob amser yn dda os ydych chi'n poeni am gredyd rhannol neu os ydych am i gyfleu eich bwriad i'r graddiwr. Ond yr wyf, eto, yn glir ar y cwis ei hun ac ar y diwrnod cwis, ond nid wyf yn credu y bydd yn ofynnol i chi ysgrifennu sylwadau, dim. Yn nodweddiadol, ond nid yw'n bendant y math o beth lle mae y gallwch gyfleu eich bwriad, fel "Hey, dyma lle yr wyf i'n mynd ag ef." Ac weithiau a all helpu gyda chredyd rhannol. Cool. Basil. [Basil] Beth yw'r gwahaniaeth rhwng ddatgan, dyweder, int lang yn y dadleuon neu baramedrau yn erbyn datgan newidyn o fewn y swyddogaeth? Wow, coffi yn mynd i lawr y bibell wynt. [Basil] Fel y mae pethau rydym am eu rhoi mewn dadleuon. Yeah, dyna gwestiwn mawr. Sut ydych chi'n dewis pa bethau rydych am ei roi yn y dadleuon erbyn yr hyn bethau y dylech eu gwneud tu mewn i'r swyddogaeth? Yn yr achos hwn rydym yn cynnwys y ddau o'r rhain fel dadleuon oherwydd eu bod yn rhywbeth bod pwy bynnag sy'n mynd i ddefnyddio'r swyddogaeth swm Mae angen i nodi pethau hynny. Mae'r swyddogaeth swm, fel yr ydym yn siarad am, nid oes ffordd o wybod pa mor fawr yr amrywiaeth yn gaiff gan ei galwr neu bwy bynnag sy'n defnyddio'r swyddogaeth swm. Nid oes ganddo unrhyw ffordd o wybod pa mor fawr y casgliad yw. Y rheswm rydym yn pasio yn y hyd iawn yma fel dadl oherwydd mae hynny'n rhywbeth yr ydym yn yn y bôn dweud wrth y galwr y swyddogaeth, pwy bynnag sy'n mynd i ddefnyddio'r swyddogaeth swm, "Hey, nid yn unig yn rhaid i chi roi i ni arae o ints, rhaid i chi hefyd ddweud wrthym pa mor fawr y casgliad eich bod wedi rhoi i ni y mae. " [Basil] Bydd y rhai y ddau yn dadleuon llinell orchymyn? Na, mae'r rhain yn ddadleuon gwirioneddol y byddech yn trosglwyddo i'r swyddogaeth. Gadewch i mi wneud tudalen newydd yma. [Basil] Fel y byddai enw pasio- [Nate H.] Os oes gen i int brif (gwag), ac yr wyf i'n mynd i roi yn fy 0 dychwelyd i lawr yma yn y gwaelod, a dweud fy mod am alw swyddogaeth swm. Yr wyf am ddweud int x = swm (); I ddefnyddio'r swyddogaeth swm rhaid i mi basio yn y casgliad yr wyf am ei grynhoi a hyd y rhesi, felly mae hwn yn lle gan dybio Cefais amrywiaeth o ints, dweud Cefais int numbaz [] = 1, 2, 3, math o ddefnydd y hacio i fyny cystrawen iawn yno, yna beth fyddwn i'n ei wneud yn swm y byddai wyf am eu trosglwyddo yn yn numbaz a'r rhif 3 i ddweud wrth y swyddogaeth swm "Iawn, dyma y casgliad rwyf am i chi i grynhoi." "Dyma ei faint." Ydy hynny'n gwneud synnwyr? A yw hynny'n ateb eich cwestiwn? Mewn llawer o ffyrdd y mae'n ei wneud ochr yn ochr hyn yr ydym ni'n ei wneud gyda phrif pan fyddwn yn cael y dadleuon llinell orchymyn. Mae rhaglen fel Cesar cipher, er enghraifft, yr oedd angen Ni fyddai dadleuon llinell orchymyn yn gallu gwneud unrhyw beth. Ni fyddai'n gwybod sut i amgryptio os nad oeddech yn dweud wrthynt beth allweddol i ddefnyddio neu os na wnaethoch ddweud wrth yr hyn a ddywedodd llinyn ydych eisiau i amgryptio. Anogaeth ar gyfer mewnbwn, dyma lle rydym wedi cael 2 gwahanol fecanweithiau ar gyfer cymryd mewnbwn gan y defnyddiwr, am gymryd gwybodaeth i mewn o'r defnyddiwr. Am Problem Set 1 rydym yn gweld hyn GetInt, GetString, ffordd GetFloat o anogaeth ar gyfer mewnbwn, ac mae hynny'n ei alw trwy ddefnyddio llif mewnbwn safonol. Mae'n ychydig yn wahanol. Mae'n rhywbeth y gallwch ei wneud ar un adeg yn hytrach nag pan fyddwch yn galw y rhaglen, pan fyddwch yn dechrau y rhaglen yn rhedeg. Mae'r dadleuon llinell orchymyn gyd yn cael eu nodi pan fyddwch yn dechrau rhedeg rhaglen. Rydym wedi bod yn cymysgu'r ddau o'r rheiny. Pan fyddwn yn defnyddio dadleuon i swyddogaeth, mae'n debyg iawn i ddadleuon llinell gorchymyn i brif. Mae'n pan fyddwch yn galw ar y swyddogaeth angen i chi ddweud ei beth yn union sydd ei angen er mwyn cyflawni ei dasgau. Peth arall da i edrych ar-a byddaf yn gadael i chi edrych arno yn eich amser sbâr, ac wedi ei orchuddio yn y cwis-oedd y syniad o gwmpas a newidynnau lleol yn erbyn newidynnau byd-eang. A oes talu sylw i hynny. Nawr ein bod yn dod ymlaen at y stwff eraill, mewn Wythnos 3 ddechreuon ni siarad am chwilio a didoli. Chwilio a didoli, o leiaf yn CS50, iawn yw cyflwyniad i rai o'r rhannau mwy damcaniaethol gwyddoniaeth gyfrifiadurol. Mae'r broblem o chwilio, y broblem o ddosbarthu yn fawr, problemau canonaidd. Sut ydych chi'n dod o hyd i nifer penodol mewn amrywiaeth o filiynau o gyfanrifau? Sut ydych chi'n dod o hyd i enw penodol y tu mewn llyfr ffôn sydd wedi ei storio ar eich gliniadur? Ac felly rydym yn cyflwyno y syniad o amseroedd rhedeg asymptotic i 'n sylweddol mesur faint o amser, pa mor anodd y broblem yn, pa mor hir y maent yn ei gymryd i ddatrys. Yng Nghymru, yr wyf yn credu, 2011 cwis mae problem yr wyf yn credu rhinweddau cwmpasu yn gyflym iawn, sef yr un yma, problem 12. O na, mae'n Omega. Yma rydym yn sôn am yr amser yn rhedeg cyflymaf posibl ar gyfer algorithm penodol ac yna yr amser yn rhedeg arafaf posibl. Mae hyn yn Omega ac O yn wirioneddol yn unig llwybrau byr. Maent yn llwybrau byr nodiannol dros ddweud pa mor gyflym yn yr achos gorau posibl yn ein redeg algorithm, a sut y bydd yn araf yn yr achos gwaethaf posibl ein algorithm yn rhedeg? Gadewch i ni wneud un neu ddau o'r rhain, ac mae'r rhain yn cael eu cynnwys hefyd yn y tymor byr ar nodiant asymptotic, yr wyf yn argymell. Jackson yn gwneud gwaith da iawn. Gyda chwiliad deuaidd, rydym yn siarad am chwiliad deuaidd â bod yn algorithm, ac rydym fel arfer yn siarad am y peth yn nhermau O. mawr ei Beth yw'r O fawr? Beth yw'r amser yn rhedeg arafaf posibl o chwiliad deuaidd? [Myfyrwyr] N ²? Close, yr wyf yn dyfalu yn debyg i hynny. Mae'n llawer cyflymach na hynny. [Myfyrwyr] Binary? >> Yeah, chwiliad deuaidd. [Myfyrwyr] Mae'n n log. Mewngofnodi n, felly, beth mae mewngofnodi n ei olygu? Mae'n haneri arno bob iteriad. Yn union, felly yn yr achos arafaf posibl, ddweud os oes gennych amrywiaeth datrys miliwn o gyfanrifau a nifer ydych yn chwilio am naill ai yn yr elfen gyntaf yn yr amrywiaeth neu'r elfen olaf un yn y rhesi. Cofiwch, mae'r algorithm chwiliad deuaidd yn gweithio drwy edrych ar yr elfen canol, gweld os yw hynny'n gêm yr ydych yn chwilio amdano. Os ydyw, yna fawr, daethoch o hyd iddo. Yn yr achos gorau posibl, pa mor gyflym mae rhedeg chwiliad deuaidd? [Myfyrwyr] 1. 1, mae'n amser cyson, mawr O o 1. Yeah. [Myfyrwyr] Mae gen i gwestiwn. Pan fyddwch yn dweud mewngofnodi n, rydych yn ei olygu o ran sylfaen 2, dde? Ie, felly dyna y peth arall. Rydym yn dweud n log, ac yr wyf yn dyfalu pan oeddwn i yn yr ysgol yn uchel Rwyf bob amser yn cymryd yn ganiataol bod log yn sylfaen 10. Yeah, felly ydy, ewch 2 sylfaen fel arfer yn yr hyn yr ydym yn eu defnyddio. Unwaith eto, mynd yn ôl i'r chwiliad deuaidd, os ydych yn chwilio am naill ai yr elfen ar y diwedd un neu'r elfen ar y dechrau, oherwydd eich bod yn dechrau yn y canol, ac yna rydych yn ei daflu pa un bynnag nad 1/2 yn bodloni'r meini prawf yr ydych yn chwilio amdano, a byddwch yn mynd i'r hanner nesaf a hanner nesaf a hanner nesaf. Os ydw i'n chwilio am yr elfen fwyaf yn y filiwn amrywiaeth cyfanrif Rydw i'n mynd i haneru ar log y rhan fwyaf o 1 miliwn o weithiau cyn i mi o'r diwedd yn profi ac yn gweld bod yr elfen wyf i'n chwilio am yn y mwyaf neu yn y mynegai uchaf y rhesi, a bydd angen cofnod o n, ewch o 1 miliwn o weithiau. Fath Bubble. Ydych chi'n guys cofio y swigen algorithm fath? Kevin, a allwch roi i mi ailadrodd cyflym o'r hyn a ddigwyddodd yn y math swigen algorithm? [Kevin] Yn y bôn mae'n mynd drwy bopeth yn y rhestr. Mae'n edrych ar y ddau gyntaf. Os yw'r un cyntaf yn fwy na'r ail un ei gyfnewid nhw. Yna mae'n cymharu ail a'r trydydd, un peth, cyfnewidiadau, trydydd a'r pedwerydd, yr holl ffordd i lawr. Bydd niferoedd Bigger dilyn i fyny at y diwedd. Ac ar ôl dolenni ond mae llawer o rydych yn ei wneud. Yn union, felly beth Kevin ddweud yw y byddwn yn gwylio rhifau mwy swigen hyd at ddiwedd y rhesi. Er enghraifft, ydych chi'n meddwl gerdded ni trwy yr enghraifft hon os yw hyn yn ein casgliad? [Kevin] Byddwch yn cymryd 2 a 3. 3 yn fwy na 2, er mwyn i chi eu cyfnewid. [Nate H.] Iawn, felly rydym yn cyfnewid y rhain, ac felly rydym yn cael 2, 3, 6, 4, a 9. [Kevin] Yna byddwch yn cymharu 3 a 6. 3 yn llai na 6, felly byddwch yn eu gadael, a 6 a 4, byddech yn eu cyfnewid am 4 yn llai na 6. [Nate H.] Iawn, felly yr wyf yn cael 2, 3, 4, 6, 9. [Kevin] A 9 yn fwy na 6, er mwyn i chi ei adael. A fyddech chi'n mynd yn ôl trwy hyn eto. [Nate H.] Ydw i'n ei wneud ar y pwynt hwn? >> [Kevin] Rhif A pham nad ydw i'n ei wneud ar y pwynt hwn? Oherwydd ei fod yn edrych fel fy amrywiaeth yn cael ei datrys. Rydw i'n edrych arno. [Kevin] Ewch drwyddo eto ac yn gwneud yn siwr nad oes dim mwy cyfnewid cyn y gallwch yn llawn stopio. Yn union, felly mae angen i chi gadw i fynd drwyddo ac i wneud yn siwr nad oes unrhyw cyfnewid y gallwch ei wneud ar y pwynt hwn. Roedd yn un lwcus, fel y dywedasoch, yr ydym yn dod i ben i fyny mai dim ond i wneud 1 yn mynd trwy ac rydym yn datrys. Ond i wneud hyn yn achos gyffredinol byddwn mewn gwirionedd yn rhaid i ni wneud hyn drosodd a throsodd. Ac mewn gwirionedd, roedd hyn yn enghraifft o achos gorau posibl, fel y gwelsom yn y broblem. Gwelsom fod yr achos gorau posibl yn cael ei n. Aethom drwy 1 yr amrywiaeth amser. Beth yw yr achos gwaethaf posibl ar gyfer y algorithm? [Kevin] N ². A beth mae hynny'n ei olwg ei hoffi? Beth fyddai edrych amrywiaeth fel y byddai cymryd amser ² n? [Kevin] [Anghlywadwy] didoli. Yn union, felly os cefais y array 9, 7, 6, 5, 2, gyntaf 9 Byddai swigen yr holl ffordd i fyny. Ar ôl 1 iteriad byddem wedi 7, 6, 5, 2, 9. Yna y 7 byddai swigen i fyny, 6, 5, 2, 7, 9, ac yn y blaen ac yn y blaen. Byddai'n rhaid i ni fynd drwy'r casgliad cyfan n amseroedd, a gallwch mewn gwirionedd yn cael ychydig yn fwy manwl na hyn oherwydd unwaith rydym wedi symud y 9 yr holl ffordd i fyny i mewn i'w swydd olaf posibl rydym yn gwybod nad ydym byth yn rhaid i gymharu yn erbyn yr elfen honno eto. Unwaith y byddwn yn dechrau byrlymu y 7 i fyny rydym yn gwybod ein bod yn gallu dod i ben unwaith y 7 yn iawn cyn y 9 ers i ni wedi cymharu eisoes y 9 iddi. Os ydych yn gwneud hyn mewn ffordd smart nid yw'n wir, mae'n debyg, bod llawer o amser. Nid ydych yn mynd i gymharu'r holl phosibl [Anghlywadwy] cyfuniadau bob tro byddwch yn mynd drwy bob iteriad. Ond o hyd, pan fyddwn yn siarad am hyn rhwymo uchaf rydym yn dweud bod ydych yn edrych ar n ² cymariaethau yr holl ffordd drwyddo. Gadewch i ni fynd yn ôl, ac ers i ni yn dechrau cael ychydig yn brin ar amser Byddwn yn dweud y dylech bendant yn mynd trwy weddill y tabl hwn, llenwi i gyd allan. Meddyliwch am enghreifftiau. Meddyliwch am enghreifftiau pendant. Mae hynny'n wir yn ddefnyddiol ac o gymorth i'w wneud. Dynnu allan. Dyma'r math o dabl bod wrth i chi fynd drwy mewn gwyddoniaeth gyfrifiadurol ddylasech 'n sylweddol yn dechrau i chwi wybod y galon. Dyma'r math o gwestiynau a gewch mewn cyfweliadau. Mae'r rhain yn fath o bethau sy'n dda i wybod, a meddwl am yr achosion hynny ymyl, mewn gwirionedd figuring allan sut i feddwl am gwybod bod am swigen didoli'r casgliad gwaethaf posibl i ddatrys gyda hynny yw un sydd yn ôl. Pointers. Gadewch i ni siarad ychydig am awgrymiadau. Yn y munudau olaf sydd gennym yma Rwy'n gwybod hyn yn rhywbeth ynghyd â ffeil gallaf / O na braidd yn newydd. Pan fyddwn yn sôn am arwyddion y rheswm rydym am i siarad am awgrymiadau oherwydd, un, pan fyddwn yn gweithio mewn C yr ydym yn wir ar lefel weddol isel o gymharu â ieithoedd rhaglennu mwyaf modern. Rydym yn mewn gwirionedd yn gallu trin y newidynnau mewn cof, chyfrif i maes lle maent yn lleoli mewn gwirionedd o fewn ein RAM. Unwaith y byddwch wedi mynd ymlaen i gymryd dosbarthiadau system weithredu byddwch yn gweld fod hyn yn cael, unwaith eto, math o echdyniad. Dyw hynny ddim yn wir mewn gwirionedd. Rydym wedi cael cof rhith sydd wedi cuddio manylion hynny oddi wrthym. Ond am nawr, gallwch gymryd yn ganiataol bod pan fydd gennych raglen, er enghraifft, pan fyddwch yn dechrau rhedeg eich rhaglen-cipher Caesar 'N annhymerus' newid yn ôl i fy iPad yn gyflym iawn- bod yn iawn dechrau ar eich rhaglen, os oes gennych, yn dweud, 4 gigabeit o RAM ar eich gliniadur, byddwch yn cael neilltuo darn hwn, a byddwn yn galw hyn yn RAM. Ac mae'n dechrau mewn man rydym yn mynd i alw 0, ac mae'n dod i ben mewn man y byddwn yn galw 4 gigabeit. Ni allaf ysgrifennu. Dyn, sy'n cael ei hacio. Pan fydd eich rhaglen yn gweithredu y system weithredu mynd ati i rannu'r RAM, ac mae'n nodi segmentau gwahanol ar gyfer gwahanol rannau o'ch rhaglen i fyw ynddo Down yma y maes hwn yn fath o dir neb. Pan fyddwch yn mynd i fyny ychydig ymhellach yma gennych chi mewn gwirionedd yn y man lle y cod ar gyfer eich bywyd rhaglen. Y cod deuaidd gwirioneddol, y ffeil gweithredadwy mewn gwirionedd yn cael eu llwytho i mewn i gof pan fyddwch yn rhedeg rhaglen, ac mae'n byw yn y segment cod. Ac fel eich rhaglen executes y prosesydd yn edrych ar y segment cod at chyfrif i maes beth yw'r cyfarwyddyd nesaf? Beth yn y llinell nesaf o god angen i mi weithredu? Mae hefyd yn segment data, a dyma lle y cysonion llinyn cael ei storio eich bod wedi bod yn ei ddefnyddio. Ac yna ymhellach i fyny yno yn y lle hwn a elwir y domen. Rydym yn cael mynediad cof yno trwy ddefnyddio malloc, ac yna i gyfeiriad y frig eich rhaglen mae y pentwr, a dyna lle'r ydym wedi bod yn chwarae am y rhan fwyaf o'r dechrau. Nid yw hyn yn raddfa neu unrhyw beth. Mae llawer o hyn yn iawn peiriant dibynnol, gweithredu system dibynnol, ond mae hyn yn gymharol sut mae pethau'n cael eu chunked i fyny. Pan fyddwch yn rhedeg rhaglen a byddwch yn datgan amrywiol o'r enw x- Rydw i'n mynd i dynnu i lawr blwch arall isod, ac mae hyn yn mynd i fod yn RAM yn ogystal. Ac yr wyf i'n mynd i edrych. Byddwn yn tynnu llinellau drosto i nodi hyn yn unig yw darn bach o RAM ac nid yw pob un fel rydym yn tynnu ar y brig. Os byddaf yn datgan newidyn cyfanrif o'r enw x, yna beth yr wyf mewn gwirionedd yn cael yn mapio sy'n cael ei storio yn y tabl symbol o fy rhaglen sy'n cysylltu'r x enw i'r rhanbarth hwn o gof yr wyf wedi tynnu i'r dde yma rhwng y bariau fertigol. Os oes gennyf llinell o god yn fy rhaglen sy'n dweud x = 7 y prosesydd yn gwybod "O, iawn, yr wyf yn gwybod bod bywydau x yn y lleoliad hwn yn y cof." "Rydw i'n mynd i fynd yn ei flaen ac ysgrifennu 7 yno." Sut mae'n gwybod pa leoliad hyn er cof? Wel, sy'n cael ei wneud i gyd ar amser crynhoi. Mae'r casglwr yn cymryd gofal o ddyrannu lle mae pob un o'r newidynnau yn mynd i fynd a chreu mapio arbennig neu yn hytrach cysylltu'r dotiau rhwng symbol a ble mae'n mynd, enw newidyn yn a lle mae'n mynd i fyw yn y cof. Ond mae'n troi allan y gallwn mewn gwirionedd gael mynediad iddo yn ein rhaglenni yn ogystal. Mae hyn yn cael bwysig wrth inni ddechrau sôn am rai o'r strwythurau data, sydd yn gysyniad ein bod ni'n mynd i gyflwyno yn nes ymlaen. Ond am nawr, beth y gallwch ei wybod yw y gall yr wyf yn creu pwyntydd i'r lleoliad hwn, x. Er enghraifft, gallaf greu newidyn pwyntydd. Pan fyddwn yn creu newidyn pwyntydd rydym yn defnyddio'r nodiant seren. Yn yr achos hwn, mae hyn yn dweud fy mod i'n mynd i greu pwyntydd i int. Mae'n fath yn union fel unrhyw un arall. Rydym yn rhoi ei fod yn amrywiol fel y, ac yna rydym yn ei osod yn gyfartal i'r cyfeiriad, i gyfeiriad. Yn yr achos hwn, gallwn osod y bwyntio at x drwy gymryd y cyfeiriad x, yr ydym yn ei wneud â'r ampersand, ac yna rydym yn gosod y i bwynt iddo. Beth mae hyn yn ei hanfod yn ei wneud yw os ydym yn edrych ar ein RAM mae hyn yn creu newidyn ar wahân. Mae'n mynd i alw yn y, a phryd y llinell o god yn gweithredu mae'n wir yn mynd i greu pwyntydd bach yr ydym fel arfer yn tynnu fel saeth, ac mae'n gosod y bwyntio at x. Ydw. [Myfyrwyr] Os x eisoes yn pwyntydd, a fyddech dim ond gwneud int * y = x hytrach na chael y ampersand? Ydw. Os x eisoes yn pwyntydd, yna gallwch gosod 2 awgrymiadau cyfartal i bob eraill, yn yr achos na fyddai cyfeirio at y x, ond byddai'n cyfeirio at ba bynnag x yn pwyntio i. Yn anffodus, rydym yn allan o amser. Beth byddwn yn ei ddweud ar y pwynt hwn, gallwn siarad am hyn oddi ar lein, ond byddwn yn dweud dechrau gweithio trwy'r broblem, # 14. Gallwch weld mae eisoes ychydig yn llenwi ar eich rhan yma. Gallwch weld bod pan fyddwn yn datgan 2 awgrymiadau, int * x y * a, ac yn nodi bod pwyntio y * wrth ymyl y newidyn yn rhywbeth a wnaed y llynedd. Mae'n troi allan bod hyn yn debyg i'r hyn yr ydym ni'n ei wneud eleni. Nid oes ots lle rydych yn ysgrifennu'r * pan fyddwch yn datgan y pwyntydd. Ond rydym wedi ysgrifennu'r * nesaf at y math o oherwydd bod ei gwneud yn glir iawn eich bod yn datgan newidyn pwyntydd. Gallwch weld bod datgan y 2 awgrymiadau rhoi 2 flwch. Yma pan fyddwn yn gosod x cyfartal i malloc beth mae hyn yn ei ddweud yn gosod o'r neilltu cof yn y domen. Mae'r blwch bach i'r dde yma, cylch hwn, wedi ei leoli ar y domen. X yn pwyntio ato. Sylwch fod y yn dal yn pwyntio at unrhyw beth. I gael cof-i storio'r rhif 42 yn x byddem yn defnyddio'r hyn a nodiant? [Myfyrwyr] * x = 42. Yn union, * x = 42. Mae hynny'n golygu dilyn y saeth a thaflu 42 mewn yno. Yma byddwn yn gosod y ac x rydym wedi pwyntio at y x. Unwaith eto, mae hyn yn union fel yr hyn Kevin dweud o ble rydym yn gosod y gyfartal i x. Nid yw Y yn pwyntio i x. Yn hytrach, mae'n pwyntio at yr hyn x yn pwyntio at yn ogystal. Ac yna yn olaf yn y blwch olaf, mae 2 beth yn bosibl y gallem ei wneud. Un yw y gallem ddweud * x = 13. Y peth arall yw y gallem ddweud-Alex, a ydych yn gwybod beth y gallem ei wneud yma? Fe allech chi ddweud * x = 13 neu- [Myfyrwyr] Fe allech chi ddweud beth bynnag int. [Nate H.] Os yw hyn yn cael eu cyfeirio at fel newidyn int gallem wneud hynny. Gallem ddweud hefyd fod * y = 13 oherwydd eu bod yn pwyntio at yr un lle, fel y gallai rydym yn defnyddio naill ai amrywiol i gyrraedd yno. Yeah. >> [Myfyrwyr] Beth fyddai'n edrych fel os ydym yn unig yn dweud x int yn 13? Byddai hynny'n cael ei ddatgan newidyn newydd o'r enw x, na fyddai'n gweithio. Byddem yn cael gwrthdrawiad oherwydd ein bod yn datgan x i fod yn pwyntydd i fyny yma. [Myfyrwyr] Os ydym newydd gael y datganiad hwnnw ei ben ei hun, beth fyddai edrych o ran y cylch? Pe bai gennym x = 13, yna byddai gennym focs, ac yn hytrach na chael saeth dod allan o'r bocs byddem yn tynnu fel dim ond 13. [Myfyrwyr] Yn y blwch. Iawn. Diolch i chi am wylio, a phob lwc ar Cwis 0. [CS50.TV]