[CHWARAE CERDDORIAETH] DAVID J. Malan: pob hawl. Mae hyn yn CS50, ac mae hyn yw diwedd Wythnos 2. Felly heddiw, rydym yn mynd i barhau â'n golwg ar sut yr ydym yn cynrychioli pethau dan y hood-- symud i ffwrdd o rhifau fel gyfanrifau ac fel y bo'r angen gwerthoedd phwynt a chanolbwyntio ar dannau a rhaglenni yn y pen draw yn fwy diddorol. Ond byddwn hefyd yn edrych ar y cwpl o problems-- parth-benodol y cyntaf a fydd yn yn cynnwys cryptograffeg, y grefft o sgrialu gwybodaeth, lle byddwch yn gweld uchod yma mae llun o Radio Orphan Annie Modrwy decoder gyfrinach rhag fu. Mae hyn mewn gwirionedd ffurf gyntefig iawn a ffurf addas i blant o cryptopgraphy lle mae gan fodrwy hon ddau disks-- un y tu mewn a thu allan un. A thrwy gylchdroi un o'r rheiny, byddwch yn gallu hanfod yn llinell i fyny llythrennau fel A trwy Z gyda llythrennau eraill fel B trwy A. Mewn geiriau eraill, gallwch llythrennol cylchdroi y wyddor, a thrwy hynny yn dod i fyny gyda mapio gan llythyrau i lythyrau fel bod, os ydych yn eisiau anfon neges gudd i rhywun fel Annie, gallech ysgrifennu i lawr eich neges ac yna cylchdroi y llythyrau, sy'n golygu, os ydych yn golygu i ddweud "A," chi yn hytrach na dweud "B," ydych yn ei olygu i ddweud "B," chi yn hytrach na dweud "C" - neu rywbeth ychydig yn fwy clyfar na that-- ac yna, yn y pen draw, ar yr amod bod Annie wedi decoder hwn modrwy, gall hi decode y neges. Nawr, efallai y byddwch yn cofio, mewn gwirionedd, bod hyn yn cael ei ddefnyddio mewn ffilm enwog iawn sy'n chwarae nauseum ad yn ystod tymor y Nadolig. Gadewch i ni edrych yma. RALPHIE PARKER: "Byddwch yn ei hysbys i bawb yn y crynodeb bod Ralph Parker yn cael ei benodi drwy hyn yn aelod o Little Orphan Annie Secret Cylch ac mae ganddo hawl i holl anrhydedd a budd-daliadau sy'n digwydd iddynt. " RALPHIE PARKER (narrating): Llofnodwyd Little Plant Amddifad Annie. Gydlofnodi, Pierre Andre! Mewn inc. Anrhydeddau a budd-daliadau, eisoes yn oed o naw. [CHWARAE CERDDORIAETH] [Glebran RADIO] RALPHIE PARKER: Dewch ymlaen. Gadewch i ni fwrw ymlaen ag ef. Nid oes angen yr holl jazz fy mod am smyglwyr a môr-ladron. CYHOEDDWR RADIO: Gwrando yfory nos ar gyfer yr antur i gloi o The Black Pirate Ship. Nawr, mae'n amser i Annie Neges Secret i chi aelodau o'r Cylch Secret. Cofiwch plant, dim ond aelodau o Secret Cylch Annie Gall dadgodio neges gyfrinach Annie. Cofiwch, Annie yn dibynnu ar chi. Gosodwch eich pinnau i B-2. Dyma'r Message-- 12, 11, 2-- RALPHIE PARKER (narrating): Yr wyf yn wyf yn fy nghyfarfod cyfrinachol cyntaf. CYHOEDDWR RADIO: --25, 14, 11, 18, 16-- RALPHIE PARKER (narrating): O, Roedd Pierre yn llais mawr heno. Gallwn ddweud bod heno neges yn wirioneddol bwysig. CYHOEDDWR RADIO: --3, 25. Dyna neges gan Annie ei hun. Cofiwch, peidiwch â dweud wrth neb. [Panting] RALPHIE PARKER (narrating): Naw deg eiliad yn ddiweddarach, rwy'n yn yr unig ystafell yn yr ty lle mae bachgen o naw Gallai eistedd mewn preifatrwydd a dadgodio. Ah. "B." [Chuckles] RALPHIE PARKER (narrating): Es i i'r nesaf. "E." Y gair cyntaf yw "fod." Ie! Roedd yn dod yn haws nawr. "U." [Chuckles] Randy PARKER: Aw, yn dod ar, Ralphie. Yr wyf yn gotta fynd! RALPHIE PARKER: 'n annhymerus' fod yn iawn i lawr, Ma. Whizz Gee. "T." "O." "Byddwch yn siwr i. "" Byddwch yn siwr i "beth? Beth oedd Little Orphan Annie ceisio ei ddweud? "Byddwch yn siwr i" beth? FAM: Ralphie, Randy wedi mynd i fynd. A wnewch chi os gwelwch yn dda dod allan? RALPHIE PARKER: pob hawl, Mom! 'N annhymerus' fod allan yn iawn! RALPHIE PARKER (narrating): Yr oeddwn yn dod yn nes nawr. Roedd y tensiwn yn ofnadwy. Beth oedd hi? Mae tynged y blaned Gall hongian yn y cydbwysedd. Got Ralphie, Randy i fynd: FAM! RALPHIE PARKER: 'n annhymerus' fod yn iawn allan, ar gyfer crio yn uchel! RALPHIE PARKER (Narrating): Mae bron yno! Hedfan fy mysedd! Fy meddwl oedd trap dur. Mae pob mandwll vibrated. Yr oedd bron yn amlwg! Ie! Ie! Ie! Ie! RALPHIE PARKER: "Byddwch yn siwr i yfed eich Ovaltine. " Ovaltine? Mae masnachol crummy? [CHWARAE CERDDORIAETH] RALPHIE PARKER: Mab ast. [Chwerthin] DAVID J. Malan: Felly hynny wedyn yn cipolwg ar yr hyn y cryptograffeg Gall fod ar gyfer this-- yn diod o fu. Felly cyhoeddiad cyflym. Os ydych yn rhad ac am ddim hwn Dydd Gwener am 1:15 a byddai hoffi ymuno â ni ar gyfer CS50 cinio, ewch i'r URL hwn yma. Yn gyntaf i'r felin caiff falu fel arfer. Ond dros gyfnod o amser, byddwn yn gwneud yn siŵr bod y rhan fwyaf o unrhyw un a hoffai gymryd rhan Gall drefnu-ddoeth. Felly llinynnau. Rydym wedi Zamyla-- bwy ydych yn awr wedi cwrdd fwyaf tebygol yn Problem Set 1-- y mae eu enw ei sillafu'n felly. Ac mae'n debyg eich teipio ei henw i mewn i raglen gyfrifiadurol sy'n defnyddio rhywbeth fel getString. Er mwyn adfer keystrokes hynny, sut ydyn ni'n mynd ati i gynrychioli llinyn, gair, mae paragraff, neu luosog lythyrau fel y rhain fan hyn? Buom yn siarad am y tro olaf cyfanrifau a phroblemau sy'n codi gyda gorlif cyfanrif ac fel y bo'r angen gwerthoedd phwynt a phroblemau sy'n codi o fewn trachywiredd. Gyda llinynnau, yr ydym o leiaf yn cael ychydig mwy o hyblygrwydd oherwydd strings-- unig yn y world-- go iawn Gall fod yn hyd eithaf mympwyol. Pretty fyr, 'n bert hir. Ond hyd yn oed wedyn, rydym yn mynd i canfod y gall cyfrifiaduron weithiau rhedeg allan o gof ac nid hyd yn oed yn storio digon llinyn mawr. Ond am nawr, gadewch i ni ddechrau i ddychmygu llinyn fel rhywbeth yn y blychau hyn yma. Felly chwe blwch o'r fath, pob un ohonynt yn cynrychioli cymeriad neu "char." Felly, yn cofio bod "char" - c-h-a-r-- yn un o'r mathau adeiledig mewn data yn C. A beth braf yw y gallwch ei ddefnyddio y math yna o fel bloc adeiladu, darn pos, os mynnwch, i ffurfio math mwy o faint o ddata y byddwn yn parhau i alw yn "llinyn." Nawr, beth sy'n ddefnyddiol am feddwl am bethau fel tannau yn y modd hwn? Wel, mae'n troi allan y gallwn mewn gwirionedd yn trosoledd strwythur hwn i mewn gwirionedd yn cael mynediad cymeriadau unigol mewn ffordd eithaf syml. Rydw i'n mynd i fynd yn ei flaen a chreu ffeil o'r enw "stringzero.c," ond gallwch ei alw'n beth bynnag yr hoffech. Ac ar wefan y cwrs yw eisoes yn yr enghraifft hon o flaen llaw, felly nid oes angen i chi deipio popeth allan. Ac yr wyf i'n mynd i fynd yn ei flaen ac yn gyntaf yn gwneud phrif ddi-rym int. Ac o fewn ychydig ddyddiau, byddwn yn dechrau mynd at wraidd wahân pa ddi-rym yn fan hyn, pam ei fod yn int nesaf i'r prif, ac yn y blaen. Ond am nawr, gadewch i ni barhau i copi past hynny. Rydw i'n mynd i ddatgan llinyn o'r enw s. Ac yr wyf i'n mynd i ddychwelyd o GetString beth bynnag y mathau o ddefnyddwyr yn. Mae hyn yn mynd i fod yn syml rhaglen, dim cyfarwyddiadau, Im 'jyst yn mynd i blindly yn disgwyl bod y defnyddiwr yn gwybod beth i'w wneud i gadw'n syml. Ac yn awr yr wyf i'n mynd i gael ar gyfer dolen. Ac tu mewn fy gyfer dolen rwy'n mynd i gael int ff cael sero. A fi yw, unwaith eto, dim ond confensiwn, newidyn mynegai ar gyfer cyfrif, ond allwn i alw hyn beth bynnag rwyf eisiau. Rydw i'n mynd i wneud i yn llai than-- dda Enw Zamyla yw chwe llythyr hir. Felly dw i'n mynd i galed cod sy'n yno am y tro. Ac yna i ++. Ac yn awr y tu mewn o'r rhain cyrliog bresys Rydw i'n mynd i wneud printf, ac yr wyf am i argraffu un cymeriad ar y tro. Felly dw i'n mynd i ddefnyddio% c ar gyfer efallai y tro cyntaf. Ac yna yr wyf am i argraffu pob un gymeriad ar ei linell ei hun. Felly dw i'n mynd i roi Ychydig slaes n yno. Dyfyniad Close. Ac yn awr yr wyf am wneud rhywbeth yma. Rwyf am argraffu'r llythyr penodol yn y llinyn, s, gan fy mod yn ailadrodd o sero ar hyd at chwech. Mewn geiriau eraill, yr wyf am argraffu'r cymeriad i'th o s. Nawr, sut y gallaf wneud hyn? Wel yn debyg iawn i'r blychau yn gynrychiolaeth hon yma, math o, greu'r syniad o bocsio llythyrau yn, gallwch wneud hynny yn yr un modd syntactically yn C gan syml gan nodi, Rwyf am i argraffu s yn i'th gymeriad. Defnyddio'r cromfachau sgwâr ar bysellfwrdd eich cyfrifiadur hynny ar fysellfwrdd Unol Daleithiau yn gyffredinol yn uwch eich allwedd dychwelyd. Felly, nid yw hyn yn hollol iawn eto, gan y gallech fod wedi sylwi. Ond dw i'n mynd i fath o blindly fwrw ymlaen yma. Ac yr wyf i'n mynd i wneud gwneud llinyn 0. Ond cyn i mi wneud hyn, gadewch i ni weld os byddwn yn Ni ellir rhagweld rhai camgymeriadau cyffredin. A yw hyn yn mynd i lunio? Nac ydw, dw i'n colli criw cyfan o bethau. Llyfrgelloedd Clywais. Felly pa header ffeiliau efallai y byddwn eisiau ychwanegu fan hyn? Yeah. CYNULLEIDFA: Mae angen i chi Rwyf safonol / O [Anghlywadwy] DAVID J. Malan: Ardderchog. Felly mae angen safon I / O fy mod. Ar gyfer yr hyn pwrpas gwneud Rwyf am fy mod safonol / O? Ar gyfer printf. Felly cynnwys stdio.h. A ydych hefyd yn cynnig fy mod yn cynnwys y llyfrgell CS50 am ba reswm? I gael llinynnau. Felly byddwn yn gweld beth Llyfrgell CS50 yn ei wneud i greu'r syniad hwn o linyn. Ond am nawr, gallwch chi jyst yn meddwl ohono fel math data gwirioneddol. Felly, mae hynny'n ymddangos i fod ychydig yn glanhau i fyny. Ac yn awr yr wyf i'n mynd i fynd yn ei flaen ac yn wir yn gwneud llinyn 0. Lluniwyd. Felly dyna dda. Felly, gadewch i mi ./string0 chwyddo i mewn, felly gallwn gweld yn agosach beth sy'n digwydd. Enter. Z-A-M-Y-L-A mynd i mewn. Ac rydym wedi hargraffu allan i enwi Zamyla yn. Felly dyna 'n bert da. Felly nawr gadewch i ni fynd yn ei flaen a redeg y rhaglen hon eto, a theipio allan enw llawn Daven yn. Surprise, syndod. Enter. Hmm. Nid ydym wedi argraffu Daven yn Enw cyntaf llawn yn gywir. Nawr dylai hyn fod yn amlwg yn adolwg oherwydd yr hyn, fath o, penderfyniad dylunio dwp? Yeah, yr wyf yn chodio caled y chwech tu mewn fy gyfer dolen. Nawr rwy'n gwneud hynny dim ond oherwydd Roeddwn i'n gwybod ei enw Zamyla yn mynd i fod chwe llythyr. Ond yn sicr nid yw hyn yn ateb cyffredinol. Felly, mae'n troi allan ein gallu ddeinamig chyfrif i maes hyd llinyn drwy ffonio swyddogaeth o'r enw strlen. Unwaith eto, yn fwriadol a enwir yn unig gryno i'w gwneud yn fwy cyfleus i deipio. Ond mae hynny'n gyfystyr â cael y hyd llinyn. Rydw i'n mynd i fynd yn ôl i mewn i fy terfynell ffenestri ac ail-redeg y compiler. Ond mae'n gweiddi arnaf. Ymhlyg datgan swyddogaeth llyfrgell strlen â'r math heb ei arwyddo int const-- Rwy'n goll. Hollol. Felly, yn enwedig gan eich llygaid yn dechrau pylu gyda negeseuon gwall fel hyn, yn canolbwyntio yn onest ar yr ychydig eiriau cyntaf. Rydym yn gwybod bod y broblem yn llinell 8, fel y dangosir yma. Ac mae'n mewn llinyn-0.c. Ymhlyg datgan strlen swyddogaeth llyfrgell. Fel bod yn gyffredinol yn mynd i fod yn batrwm o negeseuon gwall. Ymhlyg datgan rhywbeth. Felly, yn fyr, yr hyn mae'n rhaid i mi yn ymddangos i wedi ei wneud mewn perthynas â llinell 8, yma. Beth allai fod yr ateb fod hyd yn oed os nad ydych erioed wedi defnyddio strlen chi eich hun? CYNULLEIDFA: Rhan o lyfrgell wahanol? DAVID J. Malan: Rhan o'r llyfrgell gwahanol. Felly mae'n ei ddatgan, fel petai. Mae'n cael ei grybwyll mewn rhai ffeil ac eithrio stdio.h a CS50.h. Nawr, ble mae'n cael ei diffinio? I fod yn onest, rhaid i ddim ond naill ai chi gwybod hyn oddi ar frig eich pen, neu os ydych yn Google hwn a chael gwybod. Neu yn gwybod hyn, rwyf wedi agor yn y CS50 llosgydd y rhaglen derfynell, a oedd yn yn unig yw fersiwn mawr, sgrin lawn o beth sydd yn y waelod y ffenestr gedit yn. Ac mae'n ymddangos fod yna gorchymyn yn yr un modd cryno, a elwir yn dyn am llaw, lle os ydych yn teipio enw swyddogaeth a daro Chofnoda, byddwch yn mynd yn ôl yn deg dogfennaeth ddirgel. Dim ond testun sydd ar y cyfan yn edrych yn rhywbeth bach fel hyn. Mae'n ychydig yn llethol ar yr olwg gyntaf. Ond dweud y gwir yr wyf i'n mynd i gadael i fy llygaid pylu a dim ond yn canolbwyntio ar y rhan Rwy'n poeni am am y tro. Pa un yw hyn. Sy'n edrych yn strwythurol fel rhywbeth rwy'n gyfarwydd â. Yn wir, mae'r dudalen ddyn, felly i siarad, bydd yn dweud wrthych yn yr hyn pennawd ffeil swyddogaeth fel strlen ei ddiffinio. Felly, yr wyf i'n mynd i fynd yn ôl yn awr at gedit. Ac yr wyf i'n mynd i fynd yn ei flaen a ychwanegu i mewn yma #include ac arbed y ffeil. Rydw i'n mynd i glir y sgrin gyda Rheoli L Os ydych chi wedi bod yn meddwl. Ac yr wyf i'n mynd i ail-redeg gwneud string.0, yn llunio y tro hwn. ./string.0 Zamyla. Mae hynny'n ymddangos i weithio Gadewch i mi fynd yn ei flaen ac ailgynnal gyda Davenport. Enter. Ac mae hynny, hefyd, yn ymddangos i weithio. Felly gallwn wneud ychydig yn well na hyn, fodd bynnag, gallwn ddechrau i bethau daclus i fyny dim ond ychydig bach. Ac yr wyf i'n mynd i mewn gwirionedd cyflwyno un peth arall yn awr. Rydw i'n mynd i fynd yn ei flaen a gadw hyn mewn ffeil gwahanol. Ac yr wyf i'n mynd i alw y ffeil hon yn unig string1.c mwyn bod yn gyson â'r cod byddwch yn gallu dod o hyd ar-lein. A gadewch i ni ganolbwyntio ar union yr un cod. Mae'n ymddangos fy mod i wedi bod yn garedig o gymryd yn ganiataol y ffaith bod fy laptop, ac yn ei dro, mae'r peiriant CS50 Mae gan lawer o gof, mae llawer o RAM, mae llawer o bytes o le lle gallaf storio llinynnau. Ond y gwir amdani os byddaf yn teipio hir ddigon, a digon o keystrokes, Gallwn yn y math theori mewn mwy cymeriadau na fy chyfrifiadur Mae cof am yn gorfforol. Ac mae hyn yn broblematig. Mae llawer yn hoffi y gall i int unig cyfrif mor uchel, yn ddamcaniaethol, gallwch ond gwasgu cymaint o gymeriadau i mewn i RAM eich cyfrifiadur neu ar hap Cof Mynediad. Felly, yr wyf yn well wedi rhagweld broblem hon, hyd yn oed er y gallai fod yn brin achos cornel, fel petai. Nid yw'n digwydd yn aml, gallai ddigwydd. Ac os bydd yn digwydd ac nid wyf yn ei wneud rhagweld a rhaglen ar ei gyfer, Gallai fy rhaglen yn gwneud pwy a ŵyr beth. Rhewi, hongian, reboot, beth bynnag. Rhywbeth ragwelir allai ddigwydd. Felly, yr hyn yr wyf i'n mynd i wneud erbyn hyn, o hyn ymlaen mewn gwirionedd, yw cyn i mi erioed blindly defnyddio newidyn fel s sy'n wedi cael ei neilltuo i'r gwerth dychwelyd rhyw swyddogaeth eraill fel getstring, Rydw i'n mynd i wneud yn siŵr bod ei werth yn ddilys. Felly, yr wyf yn gwybod yn unig o ôl darllen Dogfennaeth CS50 ar gyfer getstring, yn y pen draw byddwn yn eich pwyntio at, bod getstring dychwelyd symbol arbennig Gelwir NULL, N-U-L-L ym mhob capiau, os oes rhywbeth yn mynd o'i le. Felly, fel arfer, mae'n dychwelyd llinyn. Ond fel arall os bydd yn dychwelyd N-U-L-L-- byddwn yn y pen draw yn gweld beth sydd wir yn yw-- mai dim ond yn golygu rhywbeth ddigwyddodd drwg. Yn awr mae hyn yn golygu, yn debyg iawn yn Scratch, Gallaf wirio cyflwr yma yn C, os nad yw'n s NULL cyfartal. Felly os nad ydych chi wedi gweld hyn o'r blaen, nid yw hyn yn unig yn golygu gwneud gyfartal. Felly mae'n y gwrthwyneb i hafal cyfartal, a oedd, yn galw i gof, yn wahanol i un yn hafal i, sef aseiniad. Felly os s nid yw'n gyfartal NULL, dim ond wedyn yn gwneud Rwyf am i gyflawni y llinellau hyn o god. Felly, mewn geiriau eraill, cyn i mi plymio yn blindly a dechrau ailadrodd dros s, a'i drin yn fel pe ei fod yn dilyniant o cymeriadau, dw i'n mynd i wirio yn gyntaf, arhoswch funud, mae s bendant nid hafal i'r gwerth hwn arbennig, NULL? Oherwydd os ydyw, gall pethau drwg yn digwydd. Ac am y tro, yn cymryd yn ganiataol pethau sy'n ddrwg digwydd yn golygu eich dyrfau rhaglen, ac ni allwch o reidrwydd adennill. Felly dweud y gwir, mae'n edrych yn uglier. mae'n fath o ddryslyd nawr i cipolwg ar. Ond bydd hyn yn dod yn fwy cyfarwydd cyn bo hir. Ond dw i'n mynd i gynnig bellach yn un gwelliant arall. Dyna welliant i'w chywirdeb. Mae fy rhaglen yn awr yn fwy cywir, oherwydd yn yr achos prin nad oedd digon o gof bodoli, byddaf yn ymdrin â hi, a 'n annhymerus' jyst yn gwneud dim. Yr wyf o leiaf ni fydd damwain. Ond gadewch i ni wneud fersiwn derfynol yma. Ac mae ffeil o'r enw string2.c. Rydw i'n mynd i bastio bod un cod am ddim ond ennyd, ac yr wyf i'n mynd i dynnu sylw at hyn llinell, 11, yma, am ddim ond ennyd. Nawr bod y realiti yw bod crynoadyddion smart fel y gallai chlang atgyweiria hyn i ni tu ôl i'r llenni heb ein erioed wybod. Ond gadewch i ni feddwl am hyn sylfaenol fel dyluniad problemus. Mae'r llinell o god yw, wrth gwrs, gan ddywedyd, ymgychwyn rhyw newidyn fi i 0. Dyna 'n bert syml. A beth unwaith eto mae hyn yn datganiad, yma, fi ++, yn ei wneud? Rydym wedi ei weld o'r blaen, ond yr ydym yn nid oedd yn wir yn siarad am y peth. CYNULLEIDFA: incrementing i. DAVID J. Malan: incrementing i. Felly, ar bob iteriad drwy dolen hwn, pob cylch, rydych yn incrementing ff erbyn un. Felly, mae'n mynd yn fwy, ac yn fwy, a mwy hyd nes y ddolen i ben. Sut mae'n terfynu? Wel mae canol hwn cyflwr yr ydym wedi defnyddio o'r blaen. Rydych chi wedi gweld ac yn walkthroughs yn y P a osodwyd. Ond beth yw yr ymadrodd hwn? A yw'r ddolen ganlynol fel belled â fi yn llai na beth? CYNULLEIDFA: Mae hyd y llinyn. DAVID J. Malan: Y hyd y llinyn. Felly mae'n eithaf lân cyfieithu i'r Saesneg yn yr ystyr hwnnw. Nawr bod y broblem yw bod bob tro rwy'n ailadrodd drwy'r ddolen hon mewn theori, Rwy'n gofyn y cwestiwn hwn. Yn ff llai na hyd y llinyn s? Yn ff llai na hyd y llinyn s? Nawr yn ff yn newid ar bob iteriad? Mae'n. Oherwydd y ++. Felly pob iteriad i yn mynd yn fwy. Ond a yw s mynd yn fwy, neu llai, neu newid o gwbl? Rhif Felly, o ran dyluniad, un o'r echelinau ar hyd yr ydym yn ceisio werthuso cod yn y dosbarth, mae hyn yn teimlo fath o dwp. Fel chi yn llythrennol, ar bob iteriad y ddolen hon yn gofyn i'r un cwestiwn damn eto, ac unwaith eto, ac unwaith eto, ac yn llythrennol nid yw byth yn mynd i newid. O leiaf os nad wyf yn cyffwrdd ac ceisio newid cynnwys y s. Fel y gallaf ei wneud ychydig yn well na hyn. A hyn yr wyf i'n mynd i wneud nid yw datgan dim ond un ff amrywiol, ond ail newidyn annhymerus 'fympwyol, ond yn gonfensiynol, alw yn n. Neilltuo n gyfartal i'r hyd llinyn o s. Ac yna dros yma, yr wyf i'n mynd i gwneud Optimization bach clyfar, felly i siarad, bod ar ddiwedd y dydd dim mwy cywir neu ddim llai cywir nag o'r blaen. Ond mae'n well dyluniad. Yn y ffaith fy mod i'n defnyddio llai o amser, llai o gylchoedd CPU, felly i siarad, ateb yr un cwestiwn, ond dim ond unwaith. Unrhyw gwestiynau am y cyffredinol egwyddor gwella, dweud, effeithlonrwydd rhaglen yn? Yeah? CYNULLEIDFA: Pam ydych chi'n defnyddiwch y [Anghlywadwy]? DAVID J. Malan: Cwestiwn da. Felly, pam yr ydym yn rhoi'r ++ ar y diwedd ff yn hytrach na dechrau'r ff? Yn yr achos hwn, mae wedi dim effaith swyddogaethol. Ac yn gyffredinol, yr wyf yn tueddu i defnyddio'r gweithredwr Postfix fel ei bod yn ychydig yn fwy eglur fel i'r adeg y llawdriniaeth yn digwydd. Ar gyfer rhai sy'n anghyfarwydd, mae yna un arall datganiadau lle gallech wneud ++ i. Mae'r rhain yn swyddogaethol cyfatebol yn yr achos hwn oherwydd does dim byd arall o gwmpas y incrementation. Ond gallwch ddod o hyd i achosion a llinellau o god lle sy'n gwneud gwahaniaeth. Felly ar y cyfan, nid ydym yn ei wneud hyd yn oed yn siarad am yr un yma. Oherwydd dweud y gwir, mae'n gwneud eich cod sexier, ac yn fath o fwy slic, a llai o gymeriadau. Ond y gwir amdani yw ei fod yn llawer caletach, Rwy'n credu, hyd yn oed i mi i lapio fy meddwl o'i gwmpas weithiau, trefn y gweithrediadau. Felly, wrth fynd heibio, os ydych yn ddim wir yn hoffi hyn, er bod hyn yn fath o sexy edrych, gallwch hefyd wneud i + = 1, sef y fersiwn uglier y un syniad ar gyfer incrementation Postfix. Yr wyf yn dweud hyn ac rydych Dylid gwneud hwyl am ei fod, ond byddwch yn dod i weld cod fel rhywbeth prydferth cyn bo hir. [Chwerthin] DAVID J. Malan: Iawn? Yeah. Cwestiwn yn y canol. CYNULLEIDFA: A oes angen i chi ddweud int n? DAVID J. Malan: Yr ydych yn gwneud oes angen i ddweud int n. Felly, gan ein bod eisoes wedi dweud int, Nid oes angen i chi ei ddweud eto. Mae'r dal yw bod n rhaid i fod yr un math data ag i. Felly dyna dim ond cyfleustra yma. Yeah. CYNULLEIDFA: Allwch chi fynd dros y cymeriad print s braced i eto? DAVID J. Malan: Yn hollol. Felly% c, yn cofio o ddiwethaf amser, yn unig yw dalfan. Mae'n golygu rhoi torgoch yma. slaes n, wrth gwrs, dim ond modd rhoi toriad llinell yma. Fel bod dim ond yn gadael, yn awr, darn hwn o gystrawen newydd. Ac mae hyn yn ei ddweud yn llythrennol, chrafangia y llinyn o'r enw s ac yn mynd yn cael ei i'th cymeriad, fel petai. Ac yr wyf yn dal i ddweud cymeriad i'th oherwydd ar bob fersiwn o'r ddolen hon 'i' fel petaem yn argraffu allan, s braced cyntaf 0, fel y gallai rhaglennydd ddweud. Yna s braced 1, yna s braced 2, yna 3, yna 4. Ond wrth gwrs ei fod yn amrywiol, felly Fi jyst yn mynegi 'i ag i. Allweddol, fodd bynnag, yw gwireddu, yn enwedig os nad ydych wedi bod yn acclimating i'r byd hwn o raglennu, lle'r ydym i gyd ymddangos i gyfrif o sero, gotta dechrau cyfrif o sero nawr. Gan fod llinynnau, cymeriad gyntaf, mae'r z yn Zamyla yw er gwell neu er gwaeth mynd i fyw yn rhif lleoliad sero. Mae pob hawl, felly gadewch i mi ddod â ni yn ôl yma i Zamyla a gweld beth sy'n digwydd mewn gwirionedd ar o dan y cwfl. Felly mae yna syniad hwn o'r math castio. Efallai eich bod mewn gwirionedd yn rhaid chwarae â hyn eisoes, efallai am y haciwr rhifyn o P sefydlu un. Ond math castio yn unig yn cyfeirio at y gallu mewn C a rhai ieithoedd eraill i drosi un math ddata i un arall. Nawr sut y gallem yn gweld hyn 'n bert yn ddirwystr? Felly, mae hyn, galw i gof, yn ddechrau o'r wyddor Saesneg. A'r cyd-destun, yn galw i gof, o fel wythnos yn ôl yn ASCII. Mae'r Cod Safonol America gyfer Cyfnewidfa Gwybodaeth. Sydd ychydig yn ffordd hir iawn o ddweud mapio o lythyrau i rifau, ac o rifau i lythyrau. Felly A thrwy M yma, dot dot dot, llinellau i fyny gyda, galw i gof, y nifer degol 65 ar i fyny. Ac nid oeddem yn siarad am hyn yn benodol, ond yn sicr mae 'na debyg niferoedd ar gyfer llythrennau bach. Ac yn wir, mae yna. Mae'r byd Penderfynodd rhai blynyddoedd yn ôl bod ychydig, llythrennau bach a, yn mynd i fod 97. Ac ychydig b yn mynd i fod yn 98, ac yn y blaen. Ac ar gyfer unrhyw allweddol eraill ar eich bysellfwrdd, mae mynd i fod patrwm tebyg o ddarnau. Neu equivalently, rhif degol. Felly, y cwestiwn dan sylw, Yna, yw sut y gallwn mewn gwirionedd yn gweld hyn o dan y cwfl? Felly, yr wyf i'n mynd i fynd drosodd i gedit eto. Ac yn hytrach na math yr un yma o'r dechrau, Rydw i'n mynd i fynd yn ei flaen a jyst agor i fyny rhywbeth o cod heddiw o'r enw ASCII sero. A ASCII sero edrych fel hyn. Felly gadewch i lapio ein meddyliau o gwmpas hyn. Felly, yn gyntaf, yr wyf wedi gwneud sylwadau y cod, sydd yn braf. Oherwydd ei fod yn llythrennol yn dweud wrthyf beth i'w ddisgwyl, arddangos mapio ar gyfer llythyrau priflythyren. Nawr, nid wyf yn hollol yn gwybod beth yr wyf yn olygu wrth hynny, felly gadewch i ni gasglu. Yn y Saesneg, efallai Saesneg braidd yn techie, beth mae llinell 18 yn ymddangos i fod yn ei wneud i ni? Dim ond llinell 18. Beth sy'n ei ysgogi? Sut beth yw mynd i gychwyn yma? CYNULLEIDFA: Mae dolen. DAVID J. Malan: Mae dolen. A sawl gwaith yn bod yn mynd i ailadrodd? CYNULLEIDFA: [gosod eu hunain yn LLEISIAU] chwe gwaith. DAVID J. Malan: Heb chwe gwaith. CYNULLEIDFA: 26 gwaith. DAVID J. Malan: 26 gwaith. Yeah, mae'n ddrwg gennyf. 26 gwaith. Pam? Wel, mae'n ychydig yn rhyfedd, ond Rydw i wedi dechrau cyfrif o 65. Pa yn rhyfedd, ond nid yn anghywir. Dyw hi ddim yn ddrwg fesul dweud. Ac yr wyf i'n ei wneud mai dim ond oherwydd, er enghraifft hon, Im 'yn fath o ragweld bod cyfalaf A yn 65 oed. Yn awr nid yw hyn yw'r mwyaf cain ffordd o wneud hyn, i fath o cod caled gwerthoedd esoterig nad oes unrhyw un Disgwylir byth i'w gofio. Ond am y tro, yn sylwi fy mod i'n gwneud hyn i fyny trwy 65 plws 26. Oherwydd mae'n debyg Dydw i ddim hyd yn oed am i wneud y rhifyddeg yn fy mhen. Felly byddaf yn gadael y compiler wneud hynny. Ond yna ar bob dolen, pob iteriad y ddolen, rwy'n incrementing i. Felly nawr mae hyn yn edrych ychydig yn cryptig. Ond dylem gael yr adeilad sylfaenol blociau â hwy i ddeall hyn. % C yn unig yw placeholder gyfer torgoch. % Ff yn placeholder gyfer int. Ac mae'n troi allan bod drwy ddefnyddio'r hyn cystrawen newydd, rhwng cromfachau hwn, felly i siarad, felly fath ddata y tu mewn cromfachau, Gallaf orfodi'r compiler i drin ff Nid yn gyfanrif, ond fel torgoch. A thrwy hynny yn dangos cymeriad i mi cyfatebol y nifer hwnnw. Yn awr i lawr yma, y ​​cod hwn 'n bert lawer yr un fath. Fi jyst eisiau gwneud super eglur y ffaith fy mod yn cychwyn am 97, sy'n cael ei llythrennau bach a. Ar i fyny drwy 26 mwy o lythyrau. A dwi'n doing-- eto, castio fi, fel petai. Neu math castio fi, fel petai. O int i torgoch. Felly, y canlyniad terfynol yn mynd i fod, a dweud y gwir, wybodaeth yr ydym eisoes yn ei wybod. Rydw i'n mynd i wneud Ni dot-- ascii-0 dot c. Rhybudd, mae'n debyg ei wneud bod camgymeriad gan fy mod yn unig oedd yn ddamweiniol. Gwneud ascii-0. Nawr rwy'n mynd i wneud ./ascii-0. 'N annhymerus' chwyddo i mewn, ac yn anffodus mae'n mynd i sgrolio oddi ar y sgrin. Ond rydym yn gweld siart gyfan lle mae mapiau i 97, b mapiau i 98, ac os ydym yn sgrolio i fyny ymhellach A, wrth gwrs, mapiau i 65. Felly mae hyn yn dim ond i ddweud bod yr hyn yr ydym wedi bod yn pregethu, mae cywerthedd hwn, yn cael ei mewn gwirionedd yr achos mewn gwirionedd. Felly addasiad cyflym o hyn. Gadewch i mi agor i fyny ascii-1.c. Ac yn sylwi ar hyn yn glyfar, didoli o, eglurhad o hyn. Mae hyn yn ascii-1.c, a sylwi ar y peth crazy. Ac mae hyn yn wir yn mynd at galon o'r hyn y cyfrifiaduron yn ei wneud. Hyd yn oed er y byddai i ni bodau dynol Nid yw cyfrif yn nhermau letters-- Nid wyf yn dechrau meddwl, bob hawl, yna b, ac yn defnyddio hynny i gyfrif gwrthrychau corfforol. Gallwch sicr yn dweud fy mod eisiau ymgychwyn rhyw newidyn o'r enw c-- ond allwn i wedi galw anything-- hwn felly c yn ymgychwyn i gyfalaf A. Gan fod ar ddiwedd y dydd, mae'r cyfrifiadur Nid yw gofal yr hyn yr ydych yn storio, dim ond yn poeni sut yr ydych am i gyflwyno'r wybodaeth honno. Sut ydych chi am i'r cyfrifiadur i dehongli bod patrwm o ddarnau? Felly, nid yw hyn yn rhywbeth yr wyf yn Byddai yn gyffredinol yn argymell yn ei wneud. Mae'n wir yn unig esiampl i cyfleu eich bod yn gallu gwbl ymgychwyn yn gyfanrif i torgoch. Gan fod o dan y cwfl o torgoch, wrth gwrs, yn unig yw nifer 0-255. Felly, gallwch yn sicr roi y tu mewn o int. A beth mae hyn hefyd dangos ei bod yn Gall trosi o un deipio i un arall, yma, yn y pen draw argraffu yr un peth. Ac yn wir, mae hyn y byddaf yn atgyweiria online-- oedd i fod i ddweud hyn, unwaith eto, yma. Gadewch i mi lanhau hyn i fyny ar-lein, ac rydym annhymerus gweld mewn walkthrough ar-lein yn ôl yr angen, hyn a fwriadwyd yno. OK. Enghraifft Felly olaf nawr yn cynnwys a a b, ac yna byddwn annhymerus cymryd pethau i fyny hollt. Hynny gyda a b, ac c yn y cyfalafu a'r cywerthedd hynny, gadewch i ni yn edrych ar yr enghraifft hon, yma. Enghraifft arall cod. Un sy'n byddwn yn agor a wnaed yn barod, felly rydym Nid oes rhaid i deipio i gyd allan o'r dechrau. Ac yn sylwi gan ddisgwyl rydym yn defnyddio header lluosog ffeil, ymhlith sydd yn ein ffrind newydd, string.h. Yn awr mae hyn yn edrych, ar y dechrau olwg, ychydig yn cryptig. Ond gadewch i ni weld os na allwn resymu drwy'r hyn sy'n digwydd yma. Yn gyntaf yr wyf yn cael llinyn gan y defnyddiwr, ac yr wyf yn rhoi y llinyn mewn newidyn Gelwir s. Copïwch past o'r blaen. Yn llinell 22, Im 'yn ôl pob golwg gwneud yn union beth Fe wnes eiliad yn ôl, rwy'n ailadrodd dros y cymeriadau yn s. Ac y triciau yn newydd yma yn cael eu defnyddio hyd llinyn, mae'r mân Optimization o storio hyd llinyn yn n, yn hytrach na alwedigaeth strlen eto, ac unwaith eto, ac unwaith eto. A dim ond gwirio bod fi yn llai na n. Nawr dyma, pethau'n mynd yn ychydig yn ddiddorol. Ond mae'r un cais o hyn un syniad newydd. Yr hyn yn Saesneg yn ei wneud s braced i gynrychioli? CYNULLEIDFA: Gan gyfrif pob cymeriad [Anghlywadwy]. DAVID J. Malan: Gan gyfrif pob cymeriad. A hyd yn oed yn fwy cryno, s braced i gynrychioli beth? A fyddech chi'n dweud. Peidio â rhoi chi ar y fan a'r lle yma. CYNULLEIDFA: Well-- DAVID J. Malan: Felly, os y gair yw-- os y llinyn yn Zamyla, sy'n starts-- CYNULLEIDFA: --you delio â y cymeriadau separately-- DAVID J. Malan: Da. Yn union. Mae'r nodiant braced sgwâr yn caniatáu i chi i gael gafael ar bob cymeriad yn unigol, felly s braced 0 yn mynd i fod y cymeriad cyntaf yn y llinyn. s braced 1 yn mynd i fod yr ail, ac yn y blaen. Felly, y cwestiwn rwy'n gofyn, yma, yn y cyflwr hwn yw beth? A yw'r cymeriad i'th o s mwy na neu'n hafal i lythrennau bach a? A beth yw ystyr hyn, fan hyn, gyda'r ampersands dwbl? CYNULLEIDFA (YNGHYD): Ac. DAVID J. Malan: A. Mae'n jyst yn cyfateb i hyn. Ac nid yw'r gair allweddol yn C, rhaid i chi defnydd, annoyingly, ampersand ampersand. Ac mae hyn, i'r gwrthwyneb, yn gofyn yn s yn gymeriad i'th llai na neu'n hafal i lythrennau bach z? Ac eto, dyma lle deall y sylfaenol gweithredu cyfrifiadur yn gwneud synnwyr. Sylwch fod, er bod gen i y dot dot dot dros yno, edrych fel trwy z mewn llythrennau bach yn cael eu pob gwerth cydgyffwrdd i fyny o 97 ar i fyny. Ac un peth ar gyfer priflythyren yn dechrau am 65. Felly mae'r tecawê, yna, yw ei fod yn Saesneg, sut fyddech chi'n disgrifio pa llinell 24 yn ei wneud? Yeah? CYNULLEIDFA: Ar 24 ei fod yn edrych i weld a yw pob cymeriad yn llythrennau bach. DAVID J. Malan: Mae'n gwirio a bob cymeriad yn llythyr llythrennau bach. Felly hyd yn oed yn fwy cryno, yw'r gymeriad i'th o s llythrennau bach? Dyna'r cyfan rydym yn mynegi yma yn rhesymegol, ychydig yn gryptig, ond yn y pen draw 'n bert yn ddirwystr. Yn s yn llythrennau bach i'th gymeriad? Os felly, a dyma lle mae pethau cael plygu ychydig o feddwl am ddim ond ennyd, os felly, ewch ymlaen ac argraffu gymeriad. Felly, mae hyn yn unig yw dalfan, ond pa gymeriad? Pam ydw i'n ei wneud s braced i minws ymadrodd hwn fan hyn? Sylwi ar y patrwm yma yn dda. Nid yw'r niferoedd gwirioneddol yn bwysig cymaint. Ond yn sylwi bod 97 yn pa mor bell i ffwrdd o 65? CYNULLEIDFA: 32. DAVID J. Malan: 32. Pa mor bell yw 98 o 66? CYNULLEIDFA: 32. DAVID J. Malan: Little c oddi C mawr? 32. Felly mae 'na 32 o hopys o un llythyr i un arall. Felly, yr wyf yn dweud y gwir, gallai symleiddio'r hyn at hynny. Ond wedyn dw i'n godio fath o galed ddealltwriaeth hon lefel isel nad oes unrhyw darllenydd yn byth mynd i'w ddeall. Felly, yr wyf i'n mynd i cyffredinoli fel, yr wyf yn adnabod y llythrennau bach yn fwy o faint. Rwy'n gwybod y llythrennau cyfalaf yn gwerthoedd llai, yn eironig. Ond mae hyn yn effeithiol cyfateb i gan ddweud tynnu 32 o s braced i. Felly, yng nghyd-destun y llythyrau, os bydd y llythyr digwydd bod yn, llythrennau bach a, ac yr wyf yn tynnu 32, pa effaith y mae hynny'n ei gael, fathemategol, ar a llythrennau bach? CYNULLEIDFA: Capitalizes-- DAVID J. Malan: manteisio arno. Ac yn wir, dyma pam ein Gelwir rhaglen yn manteisio sero. Mae'r rhaglen hon naill ai manteisio llythyr, ar ôl gwirio os yw'n yn wir llythyr llythrennau bach. Fel arall, yn unol 30, beth ddylwn i ei wneud os nid yw'n llythyr llythrennau bach fy mod yn edrych ar ar benodol iteriad yn y ddolen. Dim ond ei hargraffu. Felly peidiwch â newid pethau nid yw hynny'n hyd yn oed yn llythrennau bach. Cyfyngu eich hun i ychydig trwy ychydig z. Yn awr mae hyn yn eithaf ddirgel. Ond ar ddiwedd y dydd, mae hyn yw sut yr ydym, unwaith ar un adeg, roedd yn rhaid i weithredu pethau. Os byddaf yn lle agor cyfalafu un, oh diolch i dduw. Mae swyddogaeth galw i uwch sy'n gallu gwneud popeth rydym yn unig yn gwneud ar lefel weddol isel. Nawr i uchaf yn ddiddorol oherwydd ei fod yn cael ei ddatgan mewn ffeil, a byddech yn unig yn gwybod hyn drwy edrych ar y ddogfennaeth, neu cael gwybod, dyweder, yn y dosbarth, lle ei fod yn bodoli, mewn ffeil o'r enw ctype.h. Felly mae hyn yn ffrind newydd arall o ein un ni. Ac i gwneud yn union uchaf beth yw ei enw yn ei awgrymu. Gallwch drosglwyddo mewn, fel dadl, rhwng cromfachau hyn, mae rhai cymeriad. Rydw i'n mynd i basio yn y cymeriad i'th o s ddefnyddio ein nodiant newydd ffansi sy'n cynnwys cromfachau sgwâr. A mynd â dyfalu, beth yw'r ffurflen gwerth i uchaf yn ôl pob golwg yn mynd i fod? Mae llythyr cyfalaf. Mae llythyr cyfalaf. Felly, os wyf yn pasio mewn llythrennau bach a, gobeithio, yn ôl y diffiniad o i'r uchaf, mae'n mynd i ddychwelyd i priflythyren A. Fel arall, os nad yw'n llythyr llythrennau bach yn y lle cyntaf, Fi jyst ei hargraffu. Ac yn wir, yn sylwi ar y ail ffrind yma. Nid yn unig i uchaf yn bodoli, ond yn is, sef mewn gwirionedd yn ateb y cwestiwn hwnnw i mi. Nawr pwy bynnag ysgrifennodd y pethau hyn, 10au o flynyddoedd yn ôl, eich bod yn gwybod beth? Gweithredu i uchaf ac mae'n is ddefnyddio cod fel hyn. Ond unwaith eto, yn gyson â syniad hwn o tynnu i ffwrdd, fath o, lefel is Manylion gweithredu. Ac yn sefyll ar ysgwyddau pobl a ddaeth ger ein bron, gan ddefnyddio swyddogaethau hoffi i uchaf ac yn is, sef ddigon rhyfeddol yn 'n glws enwyd i ddweud yr hyn maent yn ei wneud, yn patrwm gwych i fabwysiadu. Yn awr, mae'n ymddangos fod os wyf yn darllen y dudalen dyn am, dyweder, i uwch, Rwy'n dysgu rhywbeth arall. Felly dyn toUpper. Mae'n ychydig yn llethol. Ond rhybudd, dyma sy'n sôn am y ffeil flaen y dylwn ei ddefnyddio. Fel o'r neilltu, gan fod hyn yn gamarweiniol, mae'r swyddogaeth defnyddio ints yn lle chars am resymau o wirio gwall. Ond byddwn efallai yn dod yn ôl at hynny yn y dyfodol. Ond sylwi, yma, i converts uchaf y llythyr c i priflythyren os yn bosibl. Felly dyna eithaf syml. Ac yn awr gadewch i ni fod ychydig yn fwy penodol. Gadewch i ni edrych ar y rhan o'r tudalen dyn dan werth dychwelyd. Mae'r gwerth a ddychwelwyd yw bod o'r llythyr wedi'i drosi. Neu c, os bydd yr addasiad Nid oedd yn bosibl, lle c yw mewnbwn gwreiddiol. A gwn oddi yma, o y ddadl i i'r uchaf. Felly beth yw bwyd parod o hyn? Mae'r gwerth a ddychwelwyd yw bod o'r llythyr a addaswyd, neu c, y llythyr gwreiddiol, os Nid yw'r trosiad oedd yn bosibl. Pa gwella gallu i mi, felly, ei wneud i ddylunio fy cod yn? Yeah? CYNULLEIDFA: Gallwch chi gael gwared ar y arall. DAVID J. Malan: gallaf cael gwared ar y datganiad arall, ac nid dim ond y datganiad arall. CYNULLEIDFA: Gallwch dynnu [Anghlywadwy]. DAVID J. Malan: gallaf gwared ar y fforch cyfan yn y ffordd, mae'r os arall yn gyfan gwbl. Felly, yn wir, gadewch i mi agor y fersiwn derfynol o hyn, cyfalafu-2 a sylwi pa mor, os chi fydd, sexy, mae'r cod yn awr yn cael, yn fy mod wedi gostwng o rai saith neu felly linellau i ddim ond pedwar, ymarferoldeb yr oeddwn yn bwriadu gan syml yn galw i uchaf, pasio mewn s braced i, ac argraffu allan, gyda'r dalfan% c, bod cymeriad arbennig. Yn awr gellir dadlau, mae nam, neu o leiaf y risg o nam, yn y rhaglen hon. Felly, dim ond i ddod yn ôl i tecawê cynharach, beth ddylwn i ei wneud yn ôl pob tebyg hefyd yn rhaglen hon i'w wneud yn fwy cadarn, fel nad oes dim ffordd y gall damwain, hyd yn oed mewn achosion prin? CYNULLEIDFA: Gwnewch yn siwr nad yw'n NULL. DAVID J. Malan: Gwnewch yn siwr nad yw'n NULL. Felly mewn gwirionedd, i wneud super hwn briodol, dylwn i ei wneud rhywbeth fel, os nad yw s yn NULL, yna mynd yn ei flaen a gweithredu llinellau hyn o god, a oedd yn Gallu Yna indent fel 'na, ac yna ei roi yn fy brês agos. Mor dda clymu at ei gilydd y ddau syniadau. Yeah? CYNULLEIDFA: A allech chi ddefnyddio a wneud tra dolen, yn lle hynny? DAVID J. Malan: Allai Rwy'n gwneud do tra dolen? CYNULLEIDFA: --you eisiau gwneud yn siŵr bod chi mewn gwirionedd [Anghlywadwy]. DAVID J. Malan: Allai chi ddefnyddio do tra? Yr ateb byr, dim. Oherwydd eich bod chi ar fin cyflwyno achos cornel arall. Os yw'r llinyn yn o sero hyd. Os, er enghraifft, Fi jyst daro Mewnbynnu, heb erioed teipio Zamyla. Rydw i'n mynd i law yn ôl yn wirioneddol llinyn, gan y byddwn yn y pen draw yn gweld, sydd â sero cymeriadau. Mae'n dal i fod yn llinyn, 'i' jyst super fyr. Ond os ydych yn defnyddio do tra, ydych yn mynd i blindly ceisio gwneud rhywbeth gyda parchu at y llinyn, a dim byd yn mynd i fod yno. CYNULLEIDFA: Wel, os wnaethoch chi wneud [Anghlywadwy] tra s-- DAVID J. Malan: O rwy'n gweld, cadwch cael llinyn gan y defnyddiwr. Ateb mor fyr, byddwch yn Gallai, a chadw aflonyddu iddynt roi llinyn dyna i chi yn ddigon byr i ffitio i mewn cof. Yn hollol. Fi jyst dewis peidio â. Os nad ydynt yn rhoi'r wyf llinyn mi eisiau, dw i'n rhoi'r gorau iddi, dw i'n rhoi'r gorau iddi. Ond yn gwbl, at y diben hwnnw, Gallai chi'n hollol wneud hynny. Felly ffeiliau header y llyfrgell sydd rydym yn awr yn gyfarwydd â hwy yn hyn, yma. Safon I / O, CS50.h, string.h, ctype.h, ac mae, yn wir, mae eraill. Mae rhai ohonoch wedi darganfod y llyfrgell mathemateg mewn math.h. Ond gadewch i mi gyflwyno i chi, yn awr, i adnodd hwn bod staff CS50, Davin, a Rob, a Gabe arbennig wedi rhoi at ei gilydd. A fydd yn cysylltu yn fuan ar wefan y cwrs. Mae'n cael ei alw cyfeirnod CS50. A dim ond i roi i chi yn gyflym blas ohono, yn gweithio fel a ganlyn. Gadewch i mi fynd i reference.cs50.net. Byddwch yn gweld ar y llaw chwith ochr rhestr llethol swyddogaethau sy'n dod gyda c. Ond os wyf yn gofalu, am y tro, am rywbeth fel strlen, Gallaf deipio yno. Mae'n hidlo i lawr y rhestr i ddim ond yr hyn yr wyf yn poeni am. Rydw i'n mynd i glicio iddo. Ac yn awr ar y chwith, byddwch yn gweld yr hyn yr ydym yn gobeithio yn fwy syml, dynol esboniad cyfeillgar o sut swyddogaeth hon yn gweithio. Dychwelyd y hyd llinyn. Dyma grynodeb, dyma sut yr ydych ei ddefnyddio o ran y ffeil flaen, ac o ran yr hyn mae'r swyddogaeth edrych fel o ran ei ddadleuon. Ac yna yma, ffurflenni hyd y llinyn. Ond ar gyfer y rhai ohonoch yn fwy cyfforddus, alli 'n weithredol glicio fwy cyfforddus, a chynnwys hyn dudalen, yn awr, yn newid i fod y gwerthoedd diofyn o'r hyn a gewch drwy ddefnyddio'r dudalen ddyn. Mewn geiriau eraill, CS50 cyfeirio yn symleiddiad o dudalennau dyn gan y staff, ar gyfer myfyrwyr. Yn enwedig, y rhai llai cyfforddus ac yn y canol, er mwyn i chi nid oes rhaid iddynt geisio lapio eich meddwl o gwmpas, a dweud y gwir, rhywfaint o gystrawen eithaf cryptig a dogfennaeth rhywbryd. Felly cadwch hynny mewn cof yn y dyddiau i ddod. Felly yma, unwaith eto, yn Zamyla. Gadewch i ni yn awr yn gofyn cwestiwn sy'n ychydig yn fwy dynol hygyrch. Diolch i Chang, sydd wedi bod argraffu mwy o eliffantod nonstop dros y dyddiau diwethaf. Mae gennym gyfle i roi o leiaf un ohonynt i ffwrdd. Pe gallem gael dim ond un gwirfoddolwr i ddod ar hyd i dynnu ar y sgrîn. Beth am fan hyn? Dewch ar i fyny. Beth yw eich enw? ALEX: Alex. DAVID J. Malan: Alex. Mae pob hawl. Alex, yn dod ar i fyny. Rydym chi ar fin weld eich llawysgrifen ar y sgrin yma. Mae pob hawl, neis i gwrdd â chi. ALEX: Nice i chi gwrdd â chi. DAVID J. Malan: pob hawl. Felly, ymarfer corff super syml. Nid yw bar yn uchel i cael eliffant heddiw. Rydych yn chwarae rôl getstring. Ac yr wyf i'n mynd i jyst yn dweud wrthych y llinyn eich bod wedi gotten. Ac yn debyg eich bod chi, getstring, wedi cael eu galw. A'r dynol, fel fi, mae gan teipio yn Zamyla, Z-A-M-Y-L-A. Dim ond yn mynd yn ei flaen ac ysgrifennu Zamyla ar y sgrîn fel pe baech wedi gotten ei a'i storio yn rhywle yn y cof. Gan adael lle ar gyfer hyn a fydd yn nifer words-- arall mae hynny'n iawn, yn dal i fynd. [Chwerthin] Felly Zamyla, Ardderchog. Felly nawr mae'n debyg eich bod chi, getstring, a elwir yn cael eu eto. Ac am hynny, yr wyf yn rhoi i chi, yn y bysellfwrdd, gydag enw arall, Belinda. Mae pob hawl. Ac yn awr y tro nesaf getstring yn o'r enw, yr wyf deipio i mewn rhywbeth fel Gabe, G-A-B-E. Eich bod yn cymryd 'n sylweddol i galon cof mynediad ar hap. Pa yn tynnu popeth yn gyfan gwbl ar hap. OK. [Chwerthin] ALEX: Mae'n ddrwg gennyf fy llawysgrifen yn ddrwg. DAVID J. Malan: Na, mae hynny'n iawn. A beth am Rob, R-O-B. OK. Da. Felly doeddwn i ddim ydych yn rhagweld y byddai math o osod pethau allan fel hyn. Ond gallwn wneud y gwaith hwn. Felly, sut yr aethoch chi ati i osod allan chars hyn mewn cof? Mewn geiriau eraill, os ydym yn meddwl am y sgrîn du hirsgwar â chynrychioli RAM, neu gof cyfrifiadur. A dwyn i gof bod RAM yn unig criw cyfan o bytes, ac bytes yn criw cyfan o ddarnau. A darnau yn rhywsut rhoi ar waith, ar y cyfan gyda rhyw fath o trydan mewn caledwedd. Felly dyna fath o yr haenu rydym wedi trafod ac yn awr yn gallu cymryd yn ganiataol. Sut aethoch chi ati i penderfynu ble i ysgrifennu Rob yn erbyn Gabe yn erbyn Belinda yn erbyn Zamyla? ALEX: Fi jyst yn gwneud hynny yn y gorchymyn eich bod yn dweud wrthyf. DAVID J. Malan: Ac mae hynny'n wir. Ond beth llywodraethu lle'r ydych yn rhoi Belinda yn enw ac enw'r Gabe yn? ALEX: Dim byd? DAVID J. Malan: [Chwerthin] Felly mae hynny'n gweithio, mae hynny'n iawn. Felly cyfrifiaduron yn ychydig yn fwy trefnus na hynny. Ac felly pan implement-- i ni aros yno am ddim ond mae moment-- pan fyddwn mewn gwirionedd yn gweithredu rhywbeth fel getstring mewn cyfrifiadur, Efallai Zamyla cael eu gosod allan 'n bert lawer fel y gwnaethoch ar y sgrin, yno. A beth yn allweddol i hysbysiad yma, yr hyn a wnaeth Alex, mae yna fath o llinell derfyn ymhlith pob un o'r geiriau hyn, dde? Doeddech chi ddim yn ysgrifennu Z-A-M-Y-L-A-B-E-L-I-N-D-A-G-A-B-- mewn geiriau eraill, mae yna rhyw fath o ffiniau sy'n ymddangos i fod, math o, gofod ar hap rhwng y geiriau gwahanol. Ond mae hynny'n dda, oherwydd gallwn ni bodau dynol nawr dychmygu bod y rhain yn pedwar llinynnau gwahanol. Nid dim ond un dilyniant o lawer o gymeriadau. Felly cyfrifiadur, yna, yn y cyfamser, Gallai cymryd llinyn fel Zamyla, rhoi pob un o'r llythyrau hynny tu mewn beit o gof. Ond y rhif yn fwy o lawer, wrth gwrs, na chwe nod. Mae criw cyfan o RAM. Ac felly o hyn ymlaen, mae hyn grid o flychau yn mynd i gynrychioli'r hyn Alex yn unig wnaeth yma ar y sgrin. Ac yn awr, Alex, gallwn gynnig i chi yn glas neu oren eliffant o Chang. ALEX: 'n annhymerus' yn cymryd eliffant glas. DAVID J. Malan: A eliffant glas. Felly rownd fawr o gymeradwyaeth, pe gallem, ar gyfer Alex yma. [Cymeradwyaeth] ALEX: Diolch yn fawr. DAVID J. Malan: Diolch yn fawr. Felly mae'r cludfwyd yw bod, er bod y patrwm fath o newid dros amser, dyma ar y bwrdd, yr oedd hyn yn llinell derfyn ymhlith y gwahanol llinynnau bod Alex got i ni. Nawr cyfrifiaduron, a dweud y gwir, allai wneud yr un peth. Gallent fath o sw n plopian llinynnau unrhyw le yn RAM. Hyd yma, dros yma, lawr yma, i lawr yma. Gallent wneud yn union hynny. Ond, wrth gwrs, mae hynny'n yn ôl pob tebyg nid yw'r cynllunio gorau. Hawl? Os byddaf yn cadw gofyn i Alex i cael enwau, yn ôl pob tebyg fe Id rhoi rhywfaint yn fwy i lawr yma, efallai i fyny yma, dros yma, dros yma, yn y pen draw dros yma. Ond gydag ychydig mwy o gynllunio, yn sicr, gallem osod pethau allan yn fwy lân. Ac yn wir, dyna beth cyfrifiadur yn ei wneud. Ond mae'r dal yw bod os yw'r llinyn nesaf i mi gael ar ôl Zamyla yn rhywbeth fel y Belinda, cynnig lle gallem ysgrifennu'r llythyr b mewn perthynas â grid hwn? Ble fyddech chi'n mynd? I'r dde o'r a, islaw'r z, islaw'r a? Beth fyddai eich greddf cyntaf fod? CYNULLEIDFA: O dan y z. DAVID J. Malan: Felly, o dan y z. A dyna 'n bert syml, dde? Mae'n fath o daclus, 'i' yr hyn rydym yn ei wneud ar fysellfwrdd pan fyddwn daro Enter, neu e-bost wrth wneud rhestr pwyntiau bwled o bethau. Ond y gwir amdani yw bod cyfrifiaduron ceisio bod yn fwy effeithlon, ac yn sicr yn gwthio cymaint data i mewn i RAM ag y bo modd, fel nad ydych yn gwastraffu unrhyw bytes. Fel nad ydych yn gwastraffu unrhyw screen ystad go iawn. Ac mae'r broblem, fodd bynnag, yw bod os ydym yn llythrennol rhoi'r llythyr b ar ôl, sut ydym yn mynd i gwybod ble enw Zamyla yn dod i ben ac enw'r Belinda yn dechrau? Felly rydych mae pobl eu newydd arfaethedig, yn dda, daro 'r Chofnoda agoriad, yn y bôn. Rhowch ef i lawr isod. Neu hyd yn oed fel y gwnaeth Alex, dim ond dechrau ysgrifennu yr enw nesaf yn is na'r un blaenorol, ac yn is na'r hyn un, a wedyn yn is na hynny un. Dyna ciw gweledol. Cyfrifiaduron wedi ciw gweledol arall, ond mae'n ychydig yn fwy cryno. Mae'n gymeriad hon ffynci. Slaes 0, sydd yn bosibl atgoffa rhywun o slaes n, ac yn y blaen, yn awr. Mae'r dilyniannau dianc arbennig. Slaes 0 yw'r ffordd o cynrychioli wyth sero didau yn olynol. 0000 0000. Nid at y ffordd y byddwch yn mynegi hynny yn daro 'r rhif sero ar eich bysellfwrdd, oherwydd mewn gwirionedd sydd yn torgoch ASCII. Mae'n edrych yn debyg i rif, ond mewn gwirionedd rhif degol sy'n cynrychioli'r cylchlythyr glyph, mae'r ffurfdeip cylchlythyr. Yn y cyfamser, slaes sero yn golygu, yn llythrennol rhoi wyth sero bytes yma i mi. Felly mae hyn yn braidd yn fympwyol. Gallai Rydym wedi defnyddio unrhyw batrwm o ddarnau, ond yn y byd Penderfynodd rhai blynyddoedd ôl, fod i gynrychioli y pen llinyn mewn cof, rhowch criw cyfan o sero. Oherwydd gallwn ganfod hynny. Nawr mae hynny'n golygu nad oes llythyr o'r Gellir wyddor gael ei gynrychioli gyda sero. Ond mae hynny'n iawn, yr ydym wedi gweld yn barod ein bod yn defnyddio 65 ar i fyny yn 97 ar i fyny. Doedden ni ddim yn cael unrhyw le cau i bob seroau. Felly Belinda mewn cof cyfrifiadur yn mewn gwirionedd yn mynd i fynd yma. Rwyf wedi tynnu ei fod mewn melyn yn unig i dynnu ein sylw ato. A rhybudd, hefyd, mae hyn yn gwbl fympwyol. Rwyf wedi tynnu fel grid. Fel, RAM yn unig ryw wrthrych ffisegol. Nid yw o reidrwydd rhesi a cholofnau, fel y cyfryw. Jyst 'i' got criw cyfan o bytes rhoi ar waith mewn caledwedd rhywsut. Ond os ar ôl Belinda wyf teipio yn enw'r Gabe yn, mae'n mynd i roi diwedd ar i fyny yma mewn cof, ac os byddaf yn teipio yn enw'r Daven yn, er enghraifft, mae'n mynd i roi diwedd ar i fyny yma. Ac yr wyf yn gallu parhau i ysgrifennu'n hyd yn oed mwy o enwau. Yn anffodus, os byddaf yn ceisio ysgrifennu enw super hir, Efallai fy mod yn y pen draw yn rhedeg allan o gof. Ac os felly, getstring yn mynd i ddychwelyd NULL, wrth i ni ddweud. Ond diolch byth, o leiaf yn y gweledol yma, ni chawsom yn eithaf mor bell â hynny. Nawr beth braf yw bod hyn syniad cyffredinol o drin pethau fel rhai sydd mewn blychau yn gynrychioliadol o nodwedd o C ac mae llawer o ieithoedd, elwir yn arae. Amrywiaeth yn fath arall o ddata. Mae'n strwythur data, os mynnwch. Strwythur yn yr ystyr o 'n sylweddol, math o, yn edrych fel bocs, o leiaf yn llygad eich meddwl yn. Arae yn cydgyffwrdd dilyniant o fathau o ddata unfath, gefn wrth gefn wrth gefn wrth gefn. Felly llinyn, mewn eraill geiriau, yn amrywiaeth o chars. Amrywiaeth o gymeriadau. Ond mae'n troi allan y gallwch ei gael araeau o sypiau o bethau. Yn wir, gallwn roi hyd yn oed niferoedd mewn arae. Felly y ffurf y rydym yn mynd i ddechrau datgan data hwn strwythur a elwir yn arae hefyd yn mynd i ddefnyddio cromfachau sgwâr. Ond bachau petryal yma yn mynd i ystyr gwahanol yn y cyd-destun hwn. A gadewch i ni weld ei fod fel a ganlyn. Gadewch i ni dybio fy mod hagor i fyny ffeil newydd yma. Ac yr wyf yn arbed hyn fel ages.c. A byddaf yn arbed hyn yn fy ffolder yma. Ac yn awr yr wyf i'n mynd i fynd yn ei flaen a dechrau teipio rhywbeth fel cynnwys CS50.h, yn cynnwys stdio.h, int brif ddi-rym. Ac yna y tu mewn o fan hyn, rwyf am i yn gyntaf gael int o'r enw oedran. Ac yr wyf i'n mynd i ddefnyddio hynny i gael int gan y defnyddiwr ar gyfer ei oedran. Ond mae'r rhaglen hon i fod i gael ei ddefnyddio gan pobl lluosog, am ba bynnag gyd-destun. Mae gen i linell o bobl. Mae'n rhaid i bob un ohonynt i deipio yn eu oedran ar gyfer efallai rai, nid wyf yn gwybod, cystadleuaeth, neu ddigwyddiad eu bod wedi cyrraedd ar gyfer. Felly, y person nesaf, yr wyf yn angen newidyn arall. Oherwydd os Fi jyst yn ei wneud oedran yn cael getInt, dyna mynd i trosysgrifo'r, neu trosysgrifo oedran y person flaenorol. Felly dyna dda i ddim. Felly, fy ngreddf gyntaf allai fod, oh, yn iawn, os ydw i am gael pobl lluosog yn ages-- gadewch i ni yn galw oed1 hwn, int age2 cael int, int age3 cael getInt. Ac yn awr yr wyf i'n mynd i ddefnyddio rhywfaint o cod pseudocode yma. Wneud rhywbeth gyda niferoedd hynny. Byddwn yn gadael ar gyfer diwrnod arall yr hyn rydym yn ei wneud yno, gan mai dim ond yn gofalu am y tro am oed1, age2, age3. Yn anffodus, ar ôl i mi llunio rhaglen hon a'i roi o flaen y defnyddwyr go iawn, beth yw'r dyluniad yn sylfaenol gwael penderfyniad yr wyf yn ymddangos i fod wedi gwneud? Yeah? CYNULLEIDFA: [Anghlywadwy] DAVID J. Malan: Yeah, Nid wyf wedi rhoi cynnig hyd yn oed yn at chyfrif i maes faint o oedrannau Nid Fi 'n weithredol yn poeni am? Os byddaf yn cael llai na thri o bobl yma, ac felly llai na thair oed, Rwy'n dal blindly ddisgwyl tri. Duw yn gwahardd pedwar o bobl yn dangos i fyny. Fy rhaglen, ni fydd dim ond hyd yn oed yn eu cefnogi. Ac felly mae hyn, stori hir byr, nid yw'n arfer da. Hawl? Roeddwn yn y bôn copïo a gludo cod a dim ond tweaking enwau amrywiol. Ac, fy duw, os oedd gennych, nid yw tri oed, ond 10, neu 100, neu hyd yn oed 6,500 israddedigion, er enghraifft. Nid yw hyn yn mynd i fod yn arbennig o cod cain, nac yn gynaliadwy. Rydych yn mynd i gael i ailysgrifennu'r rhaglen bob tro eich nifer o newidiadau bobl. Felly, diolch byth, yn ein gwir ffeil ages.c ar gyfer heddiw, mae gennym ateb mwy clyfar. Yn gyntaf, yr wyf i'n mynd i fenthyg yr adeiladu ein bod wedi defnyddio ychydig o weithiau, mae hyn yn ei wneud tra dolen, er mwyn cael mae nifer y bobl yn yr ystafell. Im 'jyst yn mynd i plagio y defnyddiwr, unwaith eto ac unwaith eto, hyd nes y bydd yn rhoi i mi gwerth o n hynny'n cyfanrif positif. Gallwn fod wedi defnyddio, ddiwethaf amser yn cael int cadarnhaol. Ond nid ydym yn cael y ar gyfer go iawn, felly yr wyf yn mynd yn ei flaen ac ail syniad hwn ar waith. Yn awr i lawr yma, mae hyn yn y gamp newydd. Yn llinell 27, gan fod y sylwadau yn llinell 26 yn awgrymu, datgan arae lle i storio oedran pawb. Felly os ydych chi am gael, nid un int, nid dau ints, ond criw cyfan o ints. Yn benodol n cyfanrifau, n oedd efallai fydd tri, a allai fod yn 100, a allai fod yn 1,000. Gystrawen, yn syml iawn, yw dyweder, pa fath ddata ydych chi eisiau? Beth ydych chi eisiau i alw bod darn o gof? Beth ydych chi am ei alw i'r grid sy'n edrych fel hyn yn ddarluniadol? Ac mewn cromfachau yma, yr ydych yn dweud pa mor fawr ydych am i'r casgliad fod. Ac felly yn gynharach, pan ddywedais y cystrawen yn ychydig yn wahanol yma, rydym yn dal i ddefnyddio cromfachau sgwâr, ond pan dwi'n datgan arae, y nifer tu mewn i'r cromfachau sgwâr yn golygu pa mor fawr ydych chi am yr amrywiaeth fod. Ar y llaw arall, pan oeddem yn defnyddio s braced i funud yn ōl, s, llinyn, yn wir amrywiaeth o chars, ond pan nad ydych yn datgan newidyn, fel gyda gair allweddol hyn yma, eich bod yn cael yn syml mynegai benodol, mae benodol elfen o'r arae. Unwaith y byddwn yn gwybod bod, mae'r gweddill o hyn yn syml. Pe newydd yr wyf i'n mynd yn gyntaf i argraffu beth yw'r oedran rif person i. Ble Fi jyst dweud person rhif un, person rhif dau, person rhif tri. A dwi'n jyst yn gwneud rhifyddeg, fel bod pobl normal yn hoffi, rydym yn cyfrif o un ar gyfer hyn rhaglen, ac nid o sero. Yna, yr wyf yn galw getint, ond yr wyf yn storio yr ateb mewn braced oedran i. Pa un yw'r oedran i'th yn y rhesi. Felly, tra tro diwethaf roeddem yn trin blychau hyn fel chars ar gyfer enw Zamyla yn, ac eraill. Yn awr, y blychau hyn yn cynrychioli 32 darnau, neu bedwar bytes y gallwn storio yn int, mae int, mae int. Mae pob un sydd, unwaith eto, yr un math data. Nawr rwy'n gwneud rhywbeth gwirion, fel amser fynd heibio, dim ond i gyfiawnhau ysgrifennu rhaglen hon. Ac yna i lawr yma, yr wyf unwaith eto ailadrodd dros y casgliad yn dweud y flwyddyn o hyn, Rhif person un ewyllys flynyddoedd yn rhywbeth oed. Ac i chyfrif i maes bod math-- Yr wyf yn golygu, mae hyn Nid yn gymhleth iawn arithmetic-- Fi jyst yn ychwanegu un at eu hoedran. Dim ond er mwyn dangos, unwaith eto, mae hyn. Yn union ag y gallaf mynegai i mewn llinyn, s, felly alla i mynegai i mewn i amrywiaeth o oedrannau, fel 'na yno. Felly, lle mae hyn yn mynd i fod yn mynd â ni? Felly, byddwn yn gweld, yn y pen draw, mae ychydig o bethau yn y dyddiau i ddod. Un, yr holl amser hwn, pan ysgrifennu eich rhaglenni eu hunain, fel Mario, barus, credyd. Rydych chi wedi bod yn teipio enw y rhaglen a'r taro Enter. Ac wedyn yn cael mewnbwn y defnyddiwr. Gyda getString, getInt, getLongLong, neu yn y blaen. Ond mae'n troi allan bod yn cefnogi C rhywbeth o'r enw llinell orchymyn dadleuon, sydd yn mynd i adael i ni mewn gwirionedd yn cael ar eiriau eich bod yn teipio, wrth yr anogwr amrantu, ar ôl enw eich rhaglen. Felly, yn y dyddiau i ddod, byddwch yn Efallai deipio rhywbeth fel Cesar, neu ./caesar rhif 13, ar ôl hynny. Byddwn yn gweld sut mae hynny'n gweithio. Oherwydd yn wir, yn problem yn gosod dau, rydym yn mynd i gyflwyno i chi i rhywbeth bach atgoffa rhywun o Ralphie yn herio cynharach o cartograffeg. Y grefft o sgrialu gwybodaeth. Mae hyn, mewn gwirionedd, yn iawn atgoffa rhywun o'r hyn a wnaeth Ralphie. Mae hon yn enghraifft o amgryptio o'r enw algorithm rot13, R-O-T 13. Sy'n golygu cylchdroi y llythyrau yn yr wyddor 13 o leoedd. Ac os ydych yn gwneud hynny, byddwch yn gweld nawr yr hyn sydd, o bosibl, yn ymadrodd cyfarwydd. Ond mae'r ffordd yr ydym yn mynd i ddefnyddio hyn, yn y pen draw, yn fwy cyffredinol. Yn P gosod dau, yn yr argraffiad safonol, byddwch yn gweithredu un neu ddau o seifferau, un o'r enw Cesar, un o'r enw Vigenere. Mae'r ddau ohonynt yn cylchdro seifferau, yn hynny rywsut chi troi un llythyr yn llythyr gwahanol. Ac Cesar yn super syml. Rydych yn ychwanegu un, byddwch yn ychwanegu 13, neu ryw rhif hyd at 26. Vigenere yn gwneud hynny ar sail fesul llythyren. Felly Vigenere, fel y byddwch yn gweld yn y fanyleb, yn fwy diogel. Ond ar ddiwedd y dydd yr hyn byddwch yn gweithredu a P yn gosod dau, yw bod allwedd eich bod yn defnyddio i amgryptio a dadgriptio. Gan gyfeirio at y broses o droi testun plaen, mae rhai neges wreiddiol, i mewn i destun seiffr, sy'n yn rhywbeth amgryptio. Ac yna decrypting eto. Yn y rhifyn haciwr, yn y cyfamser, byddwch yn dasg o rywbeth tebyg mewn ysbryd, lle y byddwn yn rhoi i chi ffeil, o Linux nodweddiadol, neu Mac, neu Unix Etsy elwir gyfrifiadur cyfrinair, sy'n cynnwys ei gyfanrwydd criw o enwau defnyddwyr a chyfrineiriau. A chyfrineiriau rheini i gyd wedi wedi'i amgryptio, neu hashed, fel petai, yn fwy priodol fel y byddwch yn gweld yn y fanyleb. A bydd y rhifyn haciwr herio chi gymryd mewnbwn fel hyn, ac yn cracio y cyfrinair. Hynny yw, figuring allan yr hyn y mae'r cyfrinair dynol mewn gwirionedd oedd. Oherwydd, yn wir, cyfrineiriau yn gyffredinol, nid ei storio yn y glir, a chyfrineiriau gyffredinol Dylai fod yn anodd dyfalu. Nid yw hyn yn aml yn wir. A hyn yr wyf yn meddwl y bydden ni'n ei wneud yw i ben gyda cwpl o funudau cipolwg ar y arbennig Dewis gwael o cyfrineiriau o ffilm efallai y byddwch yn cofio annwyl. Ac os nad yw, dylech rhentu. [VIDEO Playback] -Helmet, Rydych fiend, beth sy'n mynd ymlaen? Beth ydych chi'n ei wneud i fy merch? -Permit Mi gyflwyno i'r llawfeddyg plastig ifanc disglair, Doctor Phillip Schlotkin. Mae'r trwyn dyn swyddi mwyaf yn y bydysawd cyfan a Beverly Hills. -Eich Uchelder. Swydd -Nose? Nid wyf yn deall. Mae hi eisoes wedi cael swydd trwyn. Yr oedd hi melys 16 yn bresennol. -Dim, Nid yw'n beth yw eich barn. Mae'n llawer, llawer gwaeth. Os nad ydych yn rhoi 'm' r cyfuniad i'r darian aer, Bydd meddyg yn Schlotkin rhoi eich merch yn ôl ei hen trwyn. - [Gasps] Nooooooooooooo. Be ydy hynny? -Mae Pob hawl. 'N annhymerus' yn dweud, 'n annhymerus' yn dweud. -Dim, Dad, dim. Ni Rhaid i chi. -You're Iawn fy annwyl. 'N annhymerus' yn colli eich trwyn newydd. Ond ni fyddaf yn dweud wrthynt y cyfuniad waeth beth. -Very Dda. Doctor Schlotkin, gwneud eich gwaethaf. Pleser -My. -Dim! Arhoswch, aros. 'N annhymerus' yn dweud. 'N annhymerus' yn dweud. -I Yn gwybod y byddai'n gweithio. Mae pob hawl, yn ei roi i mi. -Y Cyfuniad yn un. -Un. -Un. -Two. -Two. -Two. -Three. -Three. -Three. -Four. -Four. -Four. -Five. -Five. -Five. -So Mae'r cyfuniad yn un, dau, tri, pedwar, pump. Dyna y cyfuniad stupidest Rwy'n clywed erioed yn fy mywyd. Dyna'r math o beth Byddai idiot yn ei gael ar ei bagiau. -Thank Chi, eich uchelder. [Gliciau BELL] -Beth Wnaethoch chi? -I Troi oddi ar y wal. -Dim, Na wnaethoch chi, byddwch yn troi oddi ar y ffilm gyfan. Must've -I gwasgu'r botwm anghywir. -Well, Ei roi yn ôl ar y! Rhowch y ffilm yn ôl ar! -Yes, Syr! Oes, syr. -Let I ni fynd, Arnold. Dewch, Gretchen. Wrth gwrs eich bod yn gwybod fy mod chi helpu rhaid i bil atoch am hyn. -Well? A oedd yn gweithio? Ble mae'r brenin? -Mae'n Gweithio, syr, yr ydym yn cael y cyfuniad. -Great. Nawr gallwn gymryd pob anadl olaf o awyr iach o blaned Druidia. Beth yw'r cyfuniad? -Un, dau, tri, pedwar, pump. -Un, dau, tri, pedwar, pump? -Yes. -bod Anhygoel. Mae gen i'r un cyfuniad ar fy bagiau. Paratoi Spaceball 1 ar gyfer ymadael ar unwaith. -Yes, Syr. -a'r Newid y cyfuniad ar fy bagiau. [SOUND CAU DRWS] [Clink DRYSAU taro HELMED] -Ahh. [DIWEDD Playback VIDEO] DAVID J. Malan: Dyna ni am CS50, byddwn yn gweld chi yr wythnos nesaf. Adroddwr: Ac yn awr, Deep Meddyliau, gan Daven Farnham. DAVEN FARNHAM: Codio yn C yw gymaint yn anoddach nag Scratch. printf, Scratch oedd yn gelwydd. [Slogan Chwerthin]