[Powered by Google Translate] Problem Adran Set 2: Argraffiad Hacker Rob Bowden, Prifysgol Harvard Mae hyn yn CS50. CS50.TV Felly, rwy'n Rob. Rwy'n uwch yn Kirkland. Mae hyn yn fy nhrydedd flwyddyn TFing CS50. Dyma'r tro cyntaf i ni yn newid o'r adran traddodiadol y ddarlith-arddull, lle rydym yn unig fath o adolygiad yr hyn a ddigwyddodd mewn darlith, ac yna rydych guys yn gofyn cwestiynau, yn awr i fod yn llawer mwy problem sy'n seiliedig ar, lle rydym yn defnyddio Mannau, ac - O, felly mae'r syniad yw i fynd i'r ddolen a anfonais chi ac yna byddwch yn fy Space. Nid oes gan unrhyw un gliniadur? Iawn. Felly, rydym yn mynd i gael ei defnyddio hyn, ac rydym yn mynd i fod yn gwneud problemau yn byw yn adran a'u trafod a figuring gwybod beth sydd o'i le ac efallai y byddwn yn tynnu rhywfaint o'ch cod, ac efallai y byddaf yn trafod eich syniadau. Felly, mae unrhyw un yn cael trafferth? Gallwch chi sgwrsio ar yr ochr, nid wyf yn gwybod os bydd gennym reswm am hynny. Yn awr, fel y supersection blaenorol, os oeddech yn y dosbarth, byddwch yn gwybod beth mae hynny'n ymwneud. Ar bob un setiau P mae mynd i fod yn yr adrannau hyn. Felly P-set 2, manylebau, yr wyf yn dyfalu chi ei weld ar P-set 1 eisoes. Ond gallwn edrych ar P-set 2 am yr hyn rydym yn mynd i fod yn mynd dros heddiw. A byddwch yn gweld adran o gwestiynau. Felly, bydd hyn ym mhob un o'r P-setiau; bydd yna adran o gwestiynau. Hyd yn hyn rydym wedi dweud, "Ystyriwch hyn yn gyfle i ymarfer." Ni fydd gofyn i chi gyflwyno rhaglen hon. Y syniad yw bod y rhain i fod i fath o gymorth i chi ddechrau arni gyda'r broblem a osodwyd. Amcana ar y rhifyn Hacker, mae llawer ohonynt i fod i ddim ond fod yn newydd, pethau diddorol i ddysgu. Efallai nad ydynt yn uniongyrchol berthnasol i'r broblem a osodwyd. Ac ar hyn o bryd nid ydym yn cael i chi eu cyflwyno, ond mewn theori, ar gyfer setiau problem yn nes ymlaen, efallai y byddwch yn eu cyflwyno, ac felly gallwch naill ai ddod i adran neu gwyliwch yr adran i gael yr atebion, neu gallwch eu cael ar eich pen eich hun os nad ydych yn teimlo fel mwynhau fy mhresenoldeb. Felly y - Rwy'n credu bod hyn yn yr un cyntaf. Oh. Hefyd, o dan yr adrannau hyn o gwestiynau rydym hefyd wedi gofyn cwestiynau am y shorts. Felly mae'n debyg, mewn theori, rydych yn fod i wylio rhain cyn dod i'r adran, ond mae'n iawn os nad ydych yn ei wneud; byddwn yn mynd dros nhw beth bynnag. Felly, gallwn ddechrau gyda'r rhain: "Sut mae dolen tra wahanol i ddolen do-sbel? Pryd mae yr olaf yn arbennig o ddefnyddiol? " Felly mae gan unrhyw un -? [Myfyrwyr] Mae'r do-tra bydd dolen bob amser yn gweithredu o leiaf unwaith. Ydw. Felly, dyna'r gwahaniaeth. Mae dolen tra - I'll wneud dim ond ar yma - tra dolen, mae gennym y cyflwr i'r dde yma, tra bod do-tra, nid oes gennych gyflwr nes i ni fynd i lawr yma. Ac felly, pan fydd eich rhaglen ei gweithredu, ac mae'n mynd i'r ddolen tra, ar unwaith os yw hyn yn gwirio cyflwr yn wir. Os nad yw'r cyflwr yn wir, bydd yn unig sgip dros y ddolen yn gyfan gwbl. Do-tra dolen, gan fod y rhaglen yn gweithredu, mae'n mynd i "wneud." Nid oes dim yn digwydd ar yr adeg hon, dim ond yn parhau gweithredu. Yna, pan fydd yn taro'r "tra," os yw'r cyflwr yn wir, bydd yn cefnogi ac yn ddolen yn ei wneud eto ac eto ac eto hyd nes nad yw'r cyflwr yn wir ac yna dim ond yn methu. Felly, y gwahaniaeth yw, y gall hyn sgip gywir o'r cychwyn cyntaf. Hyn o reidrwydd yn executes unwaith ac wedyn caiff gweithredu gwaith yn fwy os yw'r cyflwr yn dal yn wir. Felly, bydd y ddolen a dim ond gwneud hyn unwaith, neu - y ddolen er - efallai na fydd angen i ni wneud hynny o gwbl, ers cyn gynted ag y cyrhaeddwn hynny, os yw'r cyflwr yn ffug, byddwn yn unig sgip hawl drosto. Tra ei wneud-tra ddolen, byddwn yn gweithredu unwaith, o reidrwydd. Yna, pan fyddwn yn cyrraedd y cyflwr, rydym yn gwirio os yw'n gywir neu'n anghywir. Os yw'n wir, byddwn yn gwneud hynny eto; os yw'n ffug, byddwn yn unig yn parhau i fynd. Felly pan mae yr olaf yn arbennig o ddefnyddiol? Felly gallaf ddweud bod yn y cyfan o'r 4 blynedd, 3 blynedd, beth bynnag, fy mod wedi bod yn rhaglennu, rwyf wedi defnyddio hyn, fel, o dan 10 gwaith. Ac yn ôl pob tebyg 5 ohonynt yn CS50 pan fyddwn ni'n cyflwyno ei wneud-tra dolenni. Felly, pryd ydych chi wedi defnyddio ei wneud-tra dolenni? Pryd fydd y - ie? [Myfyrwyr] Pan fyddwch yn ceisio cael, mewnbwn defnyddiwr neu rywbeth rydych am ei wirio - Yeah. Felly, yn ei wneud-tra dolenni, defnyddiwr mewnbwn yn yr un mawr. Dyna pam ar y setiau problem cwpl cyntaf, pan fyddwch eisiau gofyn i'r defnyddiwr, fel, "Yn rhoi i mi llinyn," Ni allwch barhau nes i chi gael y llinyn. Ac er mwyn i chi, o reidrwydd, mae angen i ofyn ar gyfer y llinyn o leiaf unwaith. Ond yna, os ydynt yn ateb rhywbeth drwg, yna mae angen i chi dolen yn ôl a gofyn eto. Ond ar wahân i fewnbwn y defnyddiwr, mae'n brin iawn fy mod yn dod ar draws achos lle yr wyf yn awyddus i ddolen "o leiaf unwaith" ond mwy o bosibl. Cwestiynau neu -? Oes unrhyw un wedi defnyddio do-tra dolen yn unrhyw le arall? Iawn. Felly, yr un nesaf yw, "Beth mae heb eu datgan dynodwr fel arfer yn dangos os outputted gan clang? " Felly, pa fath o god Byddaf yn ysgrifennu at gael 'dynodwr heb ei ddatgan?' [Myfyrwyr] Dyna x = 2? Felly gallwn ddim rhoi cynnig arni yma, x = 2. Byddwn yn rhedeg y - oh, doeddwn i ddim yn ei glicio. Felly, yma rydym yn ei gael - yn iawn. "Defnyddio x dynodwr heb ei ddatgan." Felly dyna'r dynodwr heb ei ddatgan, newidyn. Bydd yn aml yn galw amrywiol yn dynodydd. Felly, efallai na fydd yn gwybod ei fod mewn gwirionedd yn newidyn; nid yw'n gwybod beth ydyw. Felly mae'n dynodwr. Felly pam mae'n cael ei heb eu datgan? Yeah. Felly, i fod yn glir ar derminoleg, y datganiad o newidyn yw pan fyddwch yn dweud "x int," neu "llinyn y," beth bynnag. Y initialization y newidyn, neu aseiniad y newidyn, pryd bynnag y byddwch yn dweud "x = 2." Felly, gallwn wneud y rhain yn gamau ar wahân, int x, x = 2, a hyd nes - gallwn gael bagad o bethau yn y fan hon - ond hyd nes y llinell hon yn digwydd, x yn cael ei uninitialized o hyd, ond mae wedi cael ei ddatgan. Ac felly y gallwn ei wneud yn amlwg yn 1 llinell, ac yn awr rydym yn datgan ac yn ymgychwyn. Cwestiynau? Ac yn olaf, "Pam nad yw'r Cipher Cesar yn ddiogel iawn?" Felly, yn gyntaf, oes unrhyw un eisiau i ddweud beth yw'r Cipher Cesar yw? [Myfyrwyr] Cesar Cipher yn unig yw eich bod yn mapio, ydych yn symud i bob llythyr, nifer penodol o lythyrau yn mynd drosodd, a symud yn ôl dros, ac nid yw'n ddiogel iawn oherwydd mae dim ond 26 opsiynau posibl ac nid oes ond rhaid i chi roi cynnig ar bob 1 y rheini tan i chi ei gael. Oh. Felly, hoffwn ailadrodd? Mae'r Cipher Caesar, it's - yr wyf yn golygu, byddwch yn delio ag ef ar y problemau yr ydych yn - neu yr wyf yn dyfalu y rhifyn safon y set broblem nad sydd ar y rhifyn haciwr. Felly, ar yr argraffiad safonol i'r broblem a osodwyd, byddwch yn cael neges fel, "Helo, byd," a byddwch hefyd yn cael rhif, er enghraifft 6, a byddwch yn cymryd y neges honno, a phob cymeriad unigol, ydych yn cylchdroi yn o 6 swyddi yn y wyddor. Felly, yr 'h' byddai hello dod yn h-i-j-k-l-m-n. Felly, byddai'r llythyr cyntaf yn n. Rydym yn gwneud yr un peth gydag e. Os oes gennym, fel, z neu rywbeth, yna rydym yn lapio o gwmpas yn ôl i 'a.' Ond mae pob cymeriad yn cael gylchu 6 nod yn ddiweddarach yn y wyddor, ac nid yw'n ddiogel iawn gan fod dim ond 26 posibiliadau ar gyfer faint o ffyrdd y gallech chi lapio llythyr unigol. Felly, gallwch roi cynnig ar bob un o'r 26 ohonyn nhw ac, yn ôl pob tebyg, am neges digon hir, dim ond 1 o'r rhai 26 posibl pethau yn mynd i fod yn ddarllenadwy, ac yn yr un ddarllenadwy yn mynd i fod y neges wreiddiol. Felly nid yw'n ffordd dda iawn o amgryptio unrhyw beth o gwbl. Ddim yn perthyn i'r shorts, "Beth yw swyddogaeth?" Felly beth yw swyddogaeth? Ydw. [Myfyrwyr] Mae fel darn arall o god y gallwch ffonio i fynd ymlaen, a chael y gwerth dychwelyd beth bynnag. Yeah. Felly, byddaf yn ateb iddo gan hefyd ateb y nesaf - neu ailadrodd drwy hefyd yn unig ateb yr un nesaf. Gallwch ddefnyddio swyddogaethau hytrach na dim ond copïo a gludo cod drosodd a throsodd. Dim ond yn cymryd y cod hwnnw, ei roi mewn fuction, ac yna fe allech chi ffoniwch y swyddogaeth ble bynnag yr ydych wedi bod yn copïo a gludo. Felly swyddogaethau yn ddefnyddiol. Felly nawr byddwn yn gwneud problemau gwirioneddol. Mae'r un cyntaf. Felly, y syniad o yr un cyntaf yw, byddwch yn mynd heibio ei fod yn llinyn, ac yn waeth - neu a yw'n dweud yr holl llythrennau bach? Nid yw'n dweud yr holl llythrennau bach. Felly, gall y neges fod yn unrhyw beth, a - oh dim. Mae'n gwneud. "Er hwylustod, gallwch gymryd yn ganiataol bod y defnyddiwr yn unig fewnbwn llythrennau bach a mannau." Felly, byddwn yn ei throsglwyddo neges gyda dim ond llythrennau bach ac yna rydym yn ail rhwng cyfalaf bach a mawr - rydym yn newid y llinyn i fod cyfalaf a llythrennau bach, bob yn ail. Felly, cyn i ni roi i chi ail i hyd yn oed neidio i mewn i'r broblem, beth yw'r peth cyntaf y mae angen ei wneud? O, beth wnes i jyst cliciwch ar? O, Fi jyst clicio ar e-bost yma. Felly, y peth cyntaf mae angen i ni ei wneud - ydw i'n edrych ar yr un anghywir? A yw hyn yn rhan o'r un yma? Na, y rhai yn dal i fod yno, er. Iawn, yma o hyd. Nawr ni allwn gymryd yn ganiataol -? Ydw. Yma ni allwn gymryd yn ganiataol mai dim ond llythrennau bach a mannau. Felly, yn awr mae'n rhaid i ni ddelio â'r ffaith y gall y llythrennau fod beth bynnag yr ydym am iddynt fod. Ac felly y peth cyntaf yr ydym am ei wneud yw cael y neges. Rydym yn unig angen i chi gael llinyn, llinyn s = GetString, iawn. Nawr y broblem hon, mae yna gwpl o ffyrdd o wneud hynny. Ond rydym yn mynd i eisiau i ddefnyddio gweithredwyr bitwise yma. A oes pobl sydd naill ai oedd yn y supersection, neu rywbeth, ac nid ydynt yn gwybod beth gweithredwyr bitwise chi? Neu sut y maent yn ymwneud â ASCII mewn unrhyw ffordd? [Myfyrwyr] Nid oeddwn yn y supersection, ond yr wyf yn gwybod beth gweithredwyr bitwise yn cael eu. Iawn. Felly, yna nid oes rhaid i mi fynd dros y pethau sylfaenol ohonynt, ond byddaf yn esbonio beth rydym yn mynd i eisiau ei ddefnyddio yma. Felly 'A': cynrychiolaeth deuaidd cyfalaf A, y rhif yw 65. Im 'jyst yn mynd i edrych ar - 41 yn mynd i fod 01,000,001. Felly, dylai hynny fod 65 yn degol; felly mae hyn yn gynrychiolaeth ddeuaidd y cyfalaf cymeriad A. Yn awr, mae'r gynrychiolaeth deuaidd y cymeriad lythrennau bach 'a' yn mynd i fod yr un peth, bron. A yw hynny - 6, yeah. Mae hyn yn iawn. Cyfalaf fel deuaidd Mae llythrennau bach, deuaidd 'a.' Felly, yn sylwi bod y gwahaniaeth rhwng A a 'a' yn y darn sengl. Ac mae hyn yn digwydd i fod yn 32 bit, y darn yn cynrychioli'r rhif 32. Ac mae hynny'n gwneud synnwyr gan fod A yn 65; 'a' yw 97. Y gwahaniaeth rhyngddynt yw 32. Felly, nawr rydym yn gwybod y gallwn droi o A i 'a' drwy gymryd i ac bitwise ORing, gyda - sy'n edrych fel 1. Mae hwn yn bitwise NEU, gyda 00100000, a bydd hynny'n rhoi i ni 'a.' A gallwn ei gael o 'a' i A gan bitwise anding gyda 11, 0 yn y fan honno, 11,111. Felly, bydd hyn wedyn yn rhoi i ni yn union beth 'a' oedd, ond canslo allan y darn unigol, felly bydd gennym 01000001, nid wyf yn gwybod os ydw i'n cyfrif gywir. Ond mae hyn yn dechneg o bitwise ORing i fynd o gyfalaf i lythrennau bach, ac nid bitwise anding i fynd o lythrennau bach i gyfalaf yn unigryw i A. Mae pob un o'r llythyrau, K vs k, Z vs z, pob un ohonynt yn unig yn mynd i fod yn wahanol gan y bit sengl. Ac fel y gallwch ddefnyddio hwn i newid o unrhyw lythyr lythrennau bach i unrhyw lythyr cyfalaf ac i'r gwrthwyneb. Iawn. Felly ffordd hawdd o fynd o hyn - felly yn hytrach na gorfod ysgrifennwch beth bynnag yw 1011111 - ffordd hawdd o gynrychioli nifer hwn, ac nid yw hyn yn un i mi fynd drosodd yn y supersection, ond tilde (~) yn weithredwr arall bitwise. Beth ~ ei wneud yw ei fod yn edrych ar y gynrychiolaeth bit. Gadewch i ni gymryd unrhyw nifer. Mae hyn yn dim ond rhai rhif deuaidd, a beth ~ yn ei wneud yw i jyst yn fflipio yr holl ddarnau. Felly, roedd hwn yn 1, sydd bellach yn 0, mae hwn yn 0, bellach yn 1, 010,100. Felly dyna i gyd ~ wneud. Felly 32 ei mynd i fod yn y rhif - cael gwared o hynny - felly 32 ei mynd i fod y rhif 00100000, ac felly ~ o hyn yn mynd i fod y rhif hwn i fyny yma fy mod yn anded 'a' gyda nhw. Ydy pawb yn gweld hynny? Mae hyn yn eithaf cyffredin, fel pan fyddwch am i chyfrif i maes gyfer pethau yn nes ymlaen y gallai byddwn yn gweld, pan fyddwn am weld os - neu rydym am bopeth, pob set ychydig yn unigol, ac eithrio ar gyfer 1 rydych yn tueddu i'w wneud o ~ yw'r darn nad ydym yn eisiau gosod. Felly, nid ydym am y set 32 ​​bit, felly rydym yn ~ o 32. Iawn. Felly, gallwn ddefnyddio pob un o'r rheiny yma. Mae pob hawl, felly mae'n iawn os nad ydych chi'n ei wneud, byddwn yn araf gerdded dros ei gilydd, neu gerdded dros hyn, felly - drwy hyn. Cerddwch drwy hyn. Felly, rydym wedi ein llinyn, ac rydym am ddolen dros bob cymeriad yn y llinyn a gwneud rhywbeth iddo. Felly sut ydym yn ddolen dros llinyn? Beth ddylem ni ei ddefnyddio? Dydw i ddim yn mynd i wneud hynny ar yma. Yeah. Felly, yr wyf wedi fy iterator, ac efe a ddywedodd hyn, ond sut ydw i'n gwybod faint o gymeriadau sydd yn y llinyn? Strlen (au), yna i + +. Felly, nid yr hyn yr wyf wedi ei wneud yma yw'r ffordd orau o wneud pethau. Oes rhywun yn gwybod pam? Oherwydd eich bod yn gwirio iaith y llinyn bob tro. Felly, rydym yn mynd i eisiau symud strlen, gallwn ddweud yma, int hyd = strlen (au), ac yna ydw i'n > 1 did. Gallai fod yn fwy nag 1 did, ar yr amod fod yr holl o'r darnau isod y sefyllfa hon yr un fath. Felly mae angen o leiaf 26 cymeriadau - neu, mae 26 o gymeriadau. Felly mae angen o leiaf 26 rhifau i gynrychioli'r gwahaniaeth - Y gwahaniaeth rhwng A a 'a' fod yn o leiaf 26, neu fel arall ni fyddem wedi cynrychioli holl rifau cyfalaf. Mae hynny'n golygu bod A, os ydym yn dechrau am 1, mae'n mynd i ddefnyddio pob un o'r darnau, pob un o'r rhain 5 cyntaf darnau, i gynrychioli popeth drwy Z. Dyna pam y darn nesaf, neu y darn, y rhan nesaf yw'r un sydd wedi dewis i wahaniaethu rhwng A a 'a.' Dyna hefyd pam, yn y tabl ASCII, mae 5 symbolau llythrennau gwahanu cyfalaf o lythrennau bach. Gan mai'r rheiny yw'r symbolau, y 5 ychwanegol sy'n dod i fyny 32 oedd y gwahaniaeth rhyngddynt. [Myfyrwyr] Felly gallem ei wneud, oherwydd ASCII gynlluniwyd y ffordd honno. Ydw. Ond ASCII - gallai'r gwahaniaeth hefyd fod y ddau o'r rhain ddarnau. Fel, os yw A yn oedd 10000001, a 'a' oedd 11100001 - yr wyf yn anghofio, beth bynnag. Ond pe bai hyn, yna gallem yn dal i ddefnyddio 'a' - A. Dim ond yn awr y gwahaniaeth rhwng A a 'a' yn dal i fod y 2 ddarnau. Rwy'n credu ei fod wedi ysgrifennu 48. A yw'n 32 + 64? Rwy'n credu ei fod? Byddai'n dal yn 2 darnau, pob un cymeriad, fel, Z a z, K a k, byddent yn dal i gael y darnau yn union yr un a osodwyd ac eithrio ar gyfer y 2 ddarnau. Felly, cyn belled â bod bob amser yn wir, ni waeth os ydym yn defnyddio ASCII neu ryw system arall, cyn belled â bod dim ond nifer penodol o ddarnau sy'n wahanol ar gyfer pob cymeriad, yna mae hynny'n gweithio iawn. Dim ond bod 32 a sefydlwyd gan ei fod yr un cyntaf gallem o bosibl defnyddio. >> Cool. Dwi'n tueddu i well gennych, rhag ofn nad ydych wedi gweld, os yw'r bloc yn unig un llinell, gallwch gael gwared ar y braces cyrliog, ac felly yr wyf yn tueddu i ffafrio gwneud hyn. Hefyd, eich bod yn gwybod sut y gallwn wneud pethau fel s [i] + = 1? Gallwch hefyd wneud s [i] bitwise A = 32. Ac bitwise OR = 32. Hefyd, cyfrif mod 2 == 0. Felly cofiwch hynny - ni fyddaf yn ei ysgrifennu - unrhyw werth nad yw'n sero yn wir, a 0 yn ffug. Felly, "os cyfrif mod 2 == 0" yr un fath â dweud "os nad cyfrif mod 2." Rwyf debyg y byddai wedi gwrthdroi dim ond y llinellau a dywedodd, "os cyfrif mod 2, yn y NEU 1, arall y mae'r AC 1, "fel nad oedd angen i mi y" peidio. " Ond mae hyn yn gweithio'n llawn cystal. A beth arall y gallaf ei wneud yma? Gallech eu cyfuno gyda deiran os ydych chi eisiau, ond yna byddai hynny'n unig yn gwneud pethau anniben ac mae'n debyg yn fwy anodd ei ddarllen, felly ni fyddwn yn gwneud hynny. Dylai unrhyw un gennych unrhyw awgrymiadau eraill? Ai dyna'r cyfan y broblem gofynnodd amdano? Oh yeah. Felly, yn cael gwared ar y llinellau gwag, yn awr byddwn yn argraffu f,% s yw'r un ar gyfer llinynnau, Byddwn yn argraffu f, s. Nawr gadewch i ni redeg. A wnes i wneud unrhyw beth o'i le? Dyna \ "; wyf am gael n. Iawn. Nawr byddwn yn ei rhedeg. Bydd yn debyg gweiddi arna i. Strlen yn string.h. Felly, mae hyn yw'r peth braf am Clang mae'n dweud wrthych beth 'i' yn, Cyngor Gwynedd yn lle a dim ond dweud, "Hey, rydych yn anghofio rhywbeth, nid wyf yn gwybod beth oedd." Ond bydd hyn yn dweud wrthyf, "Rydych yn golygu i gynnwys string.h." Felly doeddwn i ddim yn brydlon ar gyfer unrhyw beth, felly nid yw'n dweud unrhyw beth. Ond byddwn yn gwneud eu hesiampl, "Diolch 4 ychwanegu". Mae hynny'n edrych yn iawn. Hwre. Felly dychwelyd i'ch prif, nid wyf erioed bron yn ei wneud. Mae'n ddewisol. A yw prif swyddogaeth yn unig y mae'n ddewisol. Os na fyddwch yn dychwelyd unrhyw beth o brif, mae'n cymryd yn ganiataol eich bod yn golygu dychwelyd 0. Cwestiynau? Iawn. Felly yn awr, ail broblem. "Dwyn i gof o ddarlith 2 wythnos yn ail cyfnewid gwerthoedd 2 newidynnau 'trwy basio Nid yw hynny 2 newidynnau i swyddogaeth (hyd yn oed os gelwir cyfnewid) yn union yn gweithio, o leiaf nid heb 'awgrymiadau'. " Ac yn anwybyddu arwyddion tan i ni gael iddynt. Rydym yn awyddus i gyfnewid 2 newidynnau; nid ydym yn defnyddio swyddogaeth i wneud hynny. Rydym yn dal yn mynd i wneud hynny yn y brif fel y mae'n ei ddweud. Ond i ddefnyddio hynny 2 newidynnau, nid ydym am i ddefnyddio newidyn dros dro. Mae 2 ffordd o wneud hyn. Gallwch wneud hyn drwy ddefnyddio eich gweithredwyr deuaidd traddodiadol. Felly, mae unrhyw un yn gwybod yn ffordd gyflym ac yn frwnt o wneud hynny? Gallai fod mewn gwirionedd yn cymryd munud o feddwl. Os oes gen i - 'N annhymerus' yn gosod y broblem i fyny fel eu gofyn. Felly os gen i 2 newidynnau, A, sydd ychydig yn gyfanrif bod yn rhoi i mi, a B amrywiol swm, sef un o gyfanrif fy mod yn rhoi. Felly os oes gen y 2 newidynnau, yn awr yr wyf am eu cyfnewid. Mae'r traddodiadol, gan ddefnyddio eich gweithredwyr deuaidd rheolaidd, yr wyf yn golygu, fel +, -, ÷. Nid yw gweithredwyr bitwise sy'n gweithredu ar deuaidd. Felly ddefnyddio -, +, ÷, a phawb. Gallem gyfnewid drwy wneud rhywbeth fel a = a + b, ac b = a - b, a = a - b. Felly, pwyll gwirio, ac yna byddwn yn gweld pam mae hynny'n gweithio. Lets 'ddeud a = 7, b = 3, yna a + b yn mynd i fod yn 10. Felly, rydym yn awr yn gosod 10 =, ac yna rydym yn ei wneud b = a - b. Felly, rydym yn ei wneud b = a - b, sydd yn mynd i fod yn 7, ac yn b = a - b unwaith eto, neu a = a - b. Pa yn mynd i fod yn 10-7 sydd 3. Felly nawr, yn gywir, 'a' yn 7, b yn 3, ac yn awr yn b 7 a 'a' yw 3. Felly y math hwnnw o wneud synnwyr; 'a' yw cyfuniad o rifau 2. Ar y pwynt hwn, 'a' yw'r cyfuniad, ac yna rydym yn tynnu allan y b gwreiddiol, ac yna rydym yn tynnu allan beth oedd y gwreiddiol 'a.' Ond nid yw hyn yn gweithio ar gyfer pob rhif. I weld hyn, gadewch i ni ystyried system, felly byddwn fel arfer yn meddwl am gyfanrifau fel 32 catiau. Gadewch i ni weithio ar rywbeth sy'n dim ond tebyg i 4 ddarnau. Rwy'n gobeithio fy mod yn dod o hyd i enghraifft dda ar hyn o bryd. Felly, yr wyf yn gwybod, bydd hyn yn hawdd. Lets 'ddeud o'n 2 niferoedd yn 1111, a 1111, felly rydym yn deuaidd ar hyn o bryd. Mewn degolion gwirioneddol, os ydych am i feddwl am y peth y ffordd honno, a. = 15 a b = 15 Ac felly rydym yn disgwyl, ar ôl i ni gyfnewid nhw - dydyn nhw ddim hyd yn oed yn rhaid i chi fod yr un rhifau, ond yr wyf yn gwneud hynny fel hyn. Gadewch i ni beidio eu gwneud yn yr un rhifau. Gadewch i ni wneud 1111 a 0001. Felly, a = 15 a b = 1. Ar ôl i ni eu cyfnewid, rydym yn disgwyl 'a' i fod yn 1 a b i fod yn 15. Felly, ein cam cyntaf yw a = a + b. Mae ein rhifau dim ond 4 darnau eang, felly 'a,' sef 1111, + b, sef 0001, yn mynd i roi diwedd ar i fyny yn 10,000, ond dim ond gael 4 ddarnau. Felly nawr a = 0. Ac yn awr rydym yn awyddus i osod b = a - b - mewn gwirionedd, mae hyn yn dal i weithio allan yn berffaith. a = a - gadewch i ni weld os yw hyn yn gweithio allan yn berffaith - b. Felly, yna b = 0 - 1, a fyddai'n dal i fod yn 15, ac yna a = a - b, a fyddai'n 1. Efallai fod hyn yn gweithio. Rwy'n teimlo fel oes rheswm nad yw'n gweithio gan ddefnyddio rheolaidd. Iawn, felly mae gweithio ar y dybiaeth nad yw'n gweithio gyda gweithrediadau deuaidd rheolaidd, a byddaf yn edrych am - byddaf yn Google i weld os yw hynny'n wir. Felly rydym eisiau ei wneud gan ddefnyddio gweithredwyr bitwise, ac y cliw yma yn XOR. Felly, cyflwyno XOR (^) os nad ydych wedi ei weld eto. Mae'n, unwaith eto, gweithredwr bitwise felly mae'n gweithredu fesul tipyn, a it's - Os oes gennych y darnau 0 ac 1, yna bydd hyn yn 1. Os oes gennych 1 darnau a 0, bydd yn cael ei 1, mae gennych y 0 darnau a 0 bydd yn cael 0, ac os oes gennych 1 darnau ac 1 bydd yn fod yn 0. Felly, mae fel OR. Os yw unrhyw un o'r darnau yn wir, mae'n 1, ond yn wahanol NEU, ni all fod yn ddau darnau sydd yn wir. Byddai NEU wedi hyn fod yn 1, byddai XOR gael y fod yn 0. Felly, rydym yn mynd i eisiau defnyddio XOR yma. Meddyliwch am y peth am funud; Rydw i'n mynd i Google. Wel, na allwch ddarllen hynny; wyf ar hyn o bryd ar y dudalen algorithm gyfnewid XOR. Y gobaith yw y bydd hyn yn egluro pam yr wyf yn Methu â - Dyma'r union algorithm yr ydym newydd ei wneud. Dwi dal ddim yn gweld pam - mae'n rhaid i mi wedi dewis dim ond esiampl ddrwg, ond mae hyn yn achos lle 'a' ddigwyddodd i fod yn 0, ar ôl cael i 5 darnau, felly nawr 'a' yw 0, bod yn hyn a elwir "gorlif cyfanrif." Yn ôl Wikipedia, "Yn wahanol i'r cyfnewid XOR, mae hyn yn amrywiad ei gwneud yn ofynnol ei fod yn defnyddio rhai dulliau i warantu nad yw x + y yn achosi gorlif cyfanrif. " Felly, mae hyn yn cael problemau; roedd hyn yn gorlif cyfanrif, ond yr wyf wedi gwneud rhywbeth o'i le. Dwi ddim yn siŵr. Byddaf yn ceisio dod o hyd i un arall. [Myfyrwyr] Wel, ddim yn gorlifo cyfanrif pan fyddwch yn ceisio rhoi nifer i mewn 'na fwy na swm y darnau yr ydych wedi dyrannu? Yeah. Mae gennym 4 ddarnau. That's - rydym wedi 4 darnau, byddwn wedyn yn ceisio ychwanegu 1 iddo, felly rydym yn y pen draw gyda 5 ddarnau. Ond y rhan 5 yn unig yn cael ei dorri i ffwrdd, yeah. Mae'n bosibl bod hyn mewn gwirionedd - [Myfyrwyr] yw hynny'n taflu i chi gamgymeriad, neu yn gwneud hynny - byddai hynny'n taflu gwall? Rhif Felly, does dim camgymeriad. Pan fyddwch yn cyrraedd y lefel gwasanaeth, ychydig yn arbennig rhywle yn gosod y dywedodd nad oedd yn orlif, ond yn C i chi fath o nid yn unig yn delio â hynny. Ni allwch mewn gwirionedd yn delio ag ef oni bai eich bod yn defnyddio cyfarwyddiadau gwasanaeth arbennig yn C. Gadewch i ni feddwl am gyfnewid XOR. Ac yr wyf yn credu y gallai'r erthygl Wikipedia hefyd wedi bod yn dweud hynny - Felly, mae hefyd yn magu rhifyddeg modiwlaidd, felly rhaid mi yn, mewn theori, yn gwneud rhifyddeg modiwlaidd pan ddywedais bod 0 - 1 yn 15 eto. Felly, a allai mewn gwirionedd - ar brosesydd rheolaidd sy'n o 0 - 1 = 15. Ers i ni yn y pen draw ar 0, rydym yn tynnu 1, felly, yna dim ond lapio yn ôl o gwmpas i 1111. Felly, gallai hyn algorithm gweithio mewn gwirionedd, yr a + b, y a - b, b - a, gallai fod yn iawn. Ond mae rhai proseswyr nad ydynt yn gwneud hynny, ac felly ni fyddai'n iawn yn y rhai penodol. Bydd cyfnewid XOR yn gweithio ar unrhyw brosesydd. Iawn. Y syniad yw ei fod yn fod i fod yr un fath, er. Pan fyddwn yn defnyddio XOR i rhywsut gael y wybodaeth o'r ddau i 1 o newidynnau, ac yna dynnu allan y wybodaeth o'r newidynnau unigol unwaith eto. Felly, oes rhywun a syniadau / yr ateb? [Ateb Myfyrwyr, annealladwy] Felly, dylai hyn weithio, a hefyd, XOR yn cymudol. Waeth mha drefn y 2 rhifau yn digwydd bod mewn hyd yma, y canlyniad hwn yn mynd i fod yr un fath. Felly ^ b yn b ^ a. Efallai y byddwch hefyd yn gweld hyn yn ysgrifenedig fel ^ = b, b ^ = a, a ^ = b eto. Felly, mae hyn yn iawn, ac er mwyn gweld pam mae hyn yn gweithio, meddwl am y darnau. Gan ddefnyddio nifer eithaf bychan, gadewch i ni ddweud 11,001, a 01,100. Felly dyma 'a', mae hyn yn b. Felly ^ = b. Rydym yn mynd i gael eu gosod 'a' = i XOR y 2 beth. Felly, 1 ^ 0 yw 1, 1 ^ 1 yw 0; 0 ^ 1 yw 1, a 0 ^ 0 yn 0, 1 ^ 0 yw 1. Felly 'a,' os ydych yn edrych ar y rhif degol, mae'n mynd i fod - nad ydych yn mynd i weld llawer o berthynas rhwng y gwreiddiol 'a' a'r newydd 'a,' ond o edrych ar y darnau, 'a' yn awr fel rhwyll o'r wybodaeth o'r ddau y gwreiddiol 'a' a'r b gwreiddiol. Felly, os ydym yn cymryd b ^ a, gwelwn y byddwn yn y pen draw ar y gwreiddiol 'a.' Ac os ydym yn cymryd y gwreiddiol 'a' ^ y newydd 'a,' rydym yn gweld yn y pen i fyny ar y b gwreiddiol. Felly (a ^ b) ^ b = y gwreiddiol 'a.' Ac (a ^ b) ^ a = b gwreiddiol. Mae - ffordd arall o weld hyn yn XOR unrhyw beth ei hun bob amser yn 0. Felly, 1101 ^ 1101, yr holl ddarnau yn mynd i fod yr un fath. Felly, nid oes byth yn mynd i fod yn achos lle mae 1 yn o 0 ac mae'r llall yn 1. Felly, mae hyn yn 0000. Mae'r un peth â hyn. (A ^ b) ^ b yn debyg i ^ (b ^ b). (B ^ b) yn mynd i fod yn 0, a ^ 0 yn unig yn mynd i fod yn ',' gan fod yr holl ddarnau yn 0. Felly, yr unig rai sy'n mynd i fod yn lle 'a' yn wreiddiol 1 - cael rhai. Ac mae'r un syniad yma; Rwy'n eithaf siwr ei fod yn hefyd yn cymudol. Yeah. Wnes i ddim dweud cyn ei bod yn cymudol. Mae'r ^ 'a,' ac mae'n cysylltiadol, felly, yn awr (b ^ a) ^ a. A gallwn wneud b ^ (a ^ a). Ac felly eto, rydym yn cael y b gwreiddiol. Felly 'a' yn awr yn y cyfuniad o 'a' a b gyda'i gilydd. Gan ddefnyddio ein combo newydd 'a' rydym yn dweud b = combo 'a' ^ y b gwreiddiol, rydym yn cael y gwreiddiol 'a.' Ac yn awr mae combo = 'a' ^ y b newydd, a oedd y gwreiddiol - neu sydd nawr beth oedd 'a' neu b. Dyna yr achos hwn i lawr yma. Mae hyn yn b =, b oed. Felly nawr mae popeth yn ôl yn y drefn cyfnewid. Os ydym mewn gwirionedd yn edrych ar y darnau, b = a ^ b, yn mynd i XOR y 2, ac mae'r ateb yn mynd i fod yn hyn, ac yna a = a ^ b yn XORing y 2 a'r ateb yw hyn. Cwestiynau? Iawn. Felly mae'r un olaf yn braidd yn llawer mwy anodd. [Myfyrwyr] Rwy'n credu ei fod ganddo gwestiwn am y peth. >> O, sori. [Myfyrwyr] Beth mewn gwirionedd yn gyflymach? Os ydych yn defnyddio hyn XOR, neu os ydych chi'n datgan amrywiol newydd? Felly beth yn union sy'n gyflymach, datgan amrywiol newydd neu ddefnyddio XOR i gyfnewid? Yr ateb yw, yn ôl pob tebyg, newidyn dros dro. Ac mae hynny oherwydd unwaith y bydd wedi llunio i lawr - felly ar y lefel cynulliad, nid oes y fath beth â newidynnau lleol neu unrhyw newidynnau dros dro neu unrhyw un o'r pethau hyn. Maent yn unig yn hoffi - mae cof, ac mae cofrestri. Cofrestrau yw lle mae pethau'n mynd ati digwydd. Nad ydych yn ychwanegu 2 beth yn cof; byddwch yn ychwanegu 2 beth yn y cofrestri. A ydych yn dod â phethau o'r cof i mewn cofrestrau i'w yna ychwanegwch nhw, ac yna efallai y byddwch yn eu rhoi yn ôl i mewn cof, ond mae'r holl gamau sy'n digwydd yn y cofrestri. Felly, pan fyddwch chi'n defnyddio'r ymagwedd amrywiol tuag dros dro, fel arfer yr hyn sy'n digwydd yw y 2 rhifau eisoes yn cofrestri. Ac yna, o hynny ymlaen, ar ôl i chi cyfnewid nhw, bydd yn dim ond dechrau defnyddio'r gofrestr arall. Unrhyw le i chi wedi bod yn defnyddio b, fe 'i jyst yn defnyddio'r gofrestr a oedd eisoes yn storio' a. ' Felly nid oes angen i wneud unrhyw beth i wneud mewn gwirionedd y cyfnewid. Yeah? [Myfyrwyr] Ond mae hefyd yn cymryd mwy o gof, dde? Yn unig y bydd yn cymryd mwy o gof os oes angen i storio y newidyn dros dro. Fel os ydych yn ddiweddarach defnyddio y newidyn dros dro unwaith eto yn rhywle, yna - neu os ydych yn neilltuo rhywbeth i'r newidyn dros dro. Felly, os ar unrhyw bwynt mewn amser ',' b mewn adeiladau dros werthoedd gwahanol neu rywbeth, yna mae'n mynd i gael lleoliadau gwahanol er cof, ond mae'n wir bod mae yna lawer o newidynnau lleol a fydd ond yn bodoli mewn cofrestri. Os felly, nid yw byth yn rhoi ar gof, ac felly nad ydych erioed yn gwastraffu cof. Iawn. Cwestiwn olaf ychydig yn fwy. Felly dyma, yn yr offer CS50, mae geiriadur. A'r rheswm am hyn yw oherwydd [?? B66] yn gwirydd sillafu lle byddwch yn ysgrifennu ddefnyddio tablau hash neu gais neu ryw strwythur data. Rydych yn mynd i gael ei ysgrifennu gwirydd sillafu, a ydych yn mynd i fod yn defnyddio'r geiriadur hwn i wneud hynny. Ond ar gyfer y broblem hon, rydym yn jyst yn mynd i edrych i fyny i weld a oes un gair yn y geiriadur. Felly, yn lle storio'r geiriadur cyfan yn rhywfaint o strwythur data ac yna edrych dros ddogfen gyfan i weld a oes unrhyw beth wedi camsillafu, rydym yn unig am ddod o hyd 1 gair. Felly, gallwn ni jyst sganio dros y geiriadur cyfan a byth os byddwn yn dod o hyd i'r gair yn y geiriadur cyfan, yna nid oedd yno. Os byddwn yn sganio dros y geiriadur cyfan ac yn gweld y gair, yna rydym yn dda, gwnaethom ei ganfod. Mae'n dweud yma bod yn awyddus i ddechrau edrych ar C ffeil trin swyddogaeth, ers i ni eisiau darllen y geiriadur, ond byddaf yn rhoi awgrym yma ynglŷn â pha swyddogaethau y dylech feddwl amdano. 'N annhymerus' eu hysgrifennu ar Fannau. Felly, y prif rai y byddwch am edrych ar eu f agored ac yna, yn anochel, f gau, a fydd yn mynd ar ddiwedd eich rhaglen, a f f sgan. Gallech hefyd ddefnyddio f darllen, ond mae'n debyg nad oes eisiau oherwydd hynny - nad ydych yn darfod i fyny angen hynny. F sgan f yr hyn yr ydych yn mynd i gael ei defnyddio i sganio dros y geiriadur. Ac felly nid oes angen i godio'r i fyny 'r ateb, nid yn ceisio ac yn hoffi ffug-god eich ffordd i ateb, ac yna byddwn yn ei drafod. Ac mewn gwirionedd, gan fy mod eisoes yn rhoi i chi y rhain, os byddwch yn mynd i mewn i unrhyw terfynol neu gragen eich offer, gan Byddai I - yr wyf fel arfer - os nad ydych wedi gweld eto, nid wyf yn gwybod os ydych yn gwneud yn y dosbarth, ond mae gan ddyn, felly y tudalennau dyn, yn eithaf defnyddiol ar gyfer edrych ar 'n bert lawer unrhyw swyddogaeth. Felly gallaf ei wneud, fel, f dyn, sgan f. Mae hwn bellach yw'r wybodaeth am y teulu f sgan o swyddogaethau. Gallwn hefyd wneud f dyn, yn agored, a bydd hynny'n rhoi i mi manylion hynny. Felly, os ydych yn gwybod beth swyddogaeth yr ydych yn defnyddio, neu os ydych yn darllen cod a byddwch yn gweld rhywfaint o swyddogaeth a ydych chi fel, "Beth mae hyn yn ei wneud?" Dim ond swyddogaeth dyn enw. Mae cwpl o enghreifftiau rhyfedd lle gallai rhaid i chi ddweud hoffi. dyn 2 bod, enw swyddogaeth neu ddyn 3 bod enw swyddogaeth, ond dim ond rhaid i wneud hynny os nad yw dyn enw swyddogaeth yn digwydd i weithio y tro cyntaf. [Myfyrwyr] Felly rwy'n darllen y dudalen dyn am agor, ond rwy'n dal yn ddryslyd ar sut i'w ddefnyddio a'r rhaglen. Iawn. Mae llawer o'r tudalennau dyn yn llai na defnyddiol. Maent yn fwy defnyddiol os ydych chi eisoes yn gwybod beth maent yn ei wneud ac yna 'ch jyst angen i chi gofio trefn y dadleuon neu rywbeth. Neu gallant roi trosolwg cyffredinol, ond mae rhai ohonynt yn hynod llethol. Fel f f sgan, hefyd. Mae'n rhoi gwybodaeth i chi am yr holl swyddogaethau hyn, ac 1 llinell i lawr yma yn digwydd i ddweud, "F f sgan yn darllen o'r pwynt ffrwd llinyn neu." Ond f agor. Felly, sut yr ydym yn defnyddio f agored? Mae'r syniad o raglen sydd angen i wneud ffeil I / O yw bod mae angen i chi agor y ffeil rydych am ei wneud pethau gyda, ac yn anochel, darllen pethau o'r ffeil a gwneud pethau gyda nhw. F agored hyn yr ydym yn eu defnyddio i agor y ffeil. Y peth rydym yn mynd yn ôl, felly, pa ffeil ydym ni eisiau agor, mae'n rhoi i ni - yma mae'n dweud "/ defnyddiwr / share / ngeiriadur / geiriau." Mae hyn yn y ffeil yr ydym am ei agor, ac rydym am ei agor - mae'n rhaid i ni yn benodol nodi a ydym am agor i ddarllen neu os ydym am agor i ysgrifennu. Mae cwpl o gyfuniadau a phethau, ond rydym am i agor hyn ar gyfer darllen. Rydym yn awyddus i ddarllen o'r ffeil. Felly beth mae hyn dychwelyd? Mae'n dychwelyd ffeil (*) seren, a byddaf yn dangos popeth yn y f amrywiol, felly *, unwaith eto, mae'n pwyntydd, ond nid ydym am i ddelio â awgrymiadau. Gallwch chi feddwl f fel, f yn awr y newidyn rydych chi'n mynd i'w ddefnyddio i gynrychioli y ffeil. Felly, os ydych chi eisiau darllen o'r ffeil, eich bod yn darllen o f. Os ydych am i gau ffeil, chi gau f. Felly, ar ddiwedd y rhaglen pan fyddwn yn anochel yn awyddus i gau'r ffeil, beth ddylem ei wneud? Rydym am i gau f. Felly, yn awr y swyddogaeth ffeil diwethaf ein bod ni'n mynd i eisiau i'w defnyddio yn sgan f, f f sgan. A beth a wna hynny yw ei sganio dros y ffeil chwilio am batrwm i gyd-fynd. O edrych ar y dudalen dyn yma, gwelwn f sgan f int, anwybyddu gwerth dychwelyd am y tro. Mae'r ddadl gyntaf yn y ffeil ffrwd *, felly mae'r ddadl gyntaf rydym ni'n mynd i eisiau i basio ei f. Rydym yn sganio dros f. Yr ail ddadl yn llinyn fformat. Byddaf yn rhoi i chi llinyn fformat ar hyn o bryd. Rwy'n credu ein bod yn digwydd i ddweud, 127s \ n, mae llawer o hynny'n ddiangen. Mae'r syniad o beth yw'r llinyn fformat yw, yn y gallwch chi feddwl am sgan f fel y gwrthwyneb i f print. F print Felly, f print rydym hefyd yn defnyddio'r math hwn o paramedr fformat, ond mewn print f yr hyn rydym yn ei wneud yw - gadewch i ni edrych ar gyfwerth. Felly argraffu f, ac mae mewn gwirionedd hefyd f f print, lle mae'r ddadl gyntaf yn mynd i fod yn f. Pan fyddwch yn argraffu f, gallem ddweud rhywbeth fel, "print 127s \ n" ac yna, os byddwn yn ei throsglwyddo o linyn, mae'n mynd i argraffu'r dudalen hon, llinyn ac yna llinell newydd. Beth 127 yn golygu, rwy'n eithaf siwr, ond dydw i erioed wedi cyfyngu fy hun iddo, Ni fyddech hyd yn oed angen i ddweud '127 'yn y f print, ond yr hyn y mae'n ei olygu yw argraffu 127 nod cyntaf. Felly, Rwy'n eithaf siwr mai dyna'r achos. Gallwch Google am hynny. Ond yn yr un nesaf rwy'n bron yn gadarnhaol, mae'n golygu bod. Felly, mae hyn yn argraffu 127 o nod cyntaf, ac wedyn llinell newydd. F f sgan yn awr, yn hytrach nag edrych ar amrywiol ac argraffu arno, mae'n mynd i edrych ar rai llinyn, ac yn storio'r patrwm yn y newidyn. Gadewch i ni mewn gwirionedd yn defnyddio f sgan mewn enghraifft wahanol. Felly, gadewch i ni ddweud ein bod wedi cael rhywfaint o int, x = 4, ac rydym yn awyddus i greu cyfres o - am greu y llinyn bod yn hoffi, bydd hyn yn dod i fyny yn ddiweddarach o lawer, rhywbeth sy'n union fel 4.jpg. Felly, gallai hyn fod yn rhaglen lle byddwch yn cael swm cownter, crynhoi gwrthsefyll i, ac yr ydych am i achub criw o ddelweddau. Felly rydych chi am arbed i.jpg, lle i rhyw fersiwn o'ch ddolen. Felly, sut rydym yn gwneud y llinyn ar gyfer y JPEG? Os ydych eisiau argraffu 4.jpg, gallem ddweud, f print d.jpg%, ac yna byddai'n argraffu ar gyfer y JPEG. Ond os ydym am achub y 4.jpg llinyn, rydym yn defnyddio f sgan. Felly llinyn s - mewn gwirionedd rydym Methu â - cymeriad, cols s, gadewch i ni fynd 100. Felly, Fi jyst datgan rhywfaint o amrywiaeth o 100 o nodau, a dyna beth rydym yn anochel yn mynd i gael eu storio y JPEG i mewn Felly, rydym yn mynd i ddefnyddio sgan f, a fformat, sut y byddem yn dweud d.jpg% er mwyn argraffu 4.jpg, y fformat o hyn yn mynd i fod yn d.jpg%. Felly y fformat yw, d.jpg% hyn yr ydym am i gymryd lle'r d% â hi yw x, ac yn awr mae angen i storio y llinyn yn rhywle. A ble rydym yn mynd i storio llinyn yma yn y s arae. Felly, ar ôl y llinell hon o god, s, os ydym yn argraffu s f%, o'r au amrywiol, mae'n mynd i argraffu 4.jpg. Felly f f sgan yr un fath â sgan f, ac eithrio awron 'i' yn edrych dros y ffeil ar gyfer beth i'w storio yn y s. Dyna beth y ddadl olaf yn mynd i fod. Rydym yn awyddus i gadw - "teulu f Sgan o sganiau swyddogaethau yn y ddwy yn ôl fformat geisio isod. Os oes unrhyw yn cael eu storio yn y pwyntiau lleoliad efallai y byddwch yn dychwelyd - " Na, efallai y byddwn yn dda. Gadewch i mi feddwl am eiliad. Felly nid sgan f wneud - hyn y mae'r Heck yw swyddogaeth sy'n gwneud hynny? Felly nid sgan f yn mynd i gymryd cyfanrif a gwneud dot jpg. Mae'n mynd i [Mwmbwls]. Achub amrywiol int yn llinyn int C. Beth yw newidyn hwn, neu beth yw swyddogaeth hon enw? Ydw. That's - ie. Felly, beth oeddwn i'n ei diffinio i chi cyn oedd s print f, sydd - bod yn gwneud synnwyr llawer mwy, pam y dywedais ei fod yn llawer mwy tebyg f print. Scan f yn dal yn fath o fel f print, ond f print s yn mynd i sganio dros ac yn disodli Rheoliadau newidynnau ac yn awr storio mewn llinyn. Yn hytrach na argraffu, mae'n ei storio mewn llinyn. Felly anwybyddu hynny'n llwyr. Gallwch ddal i feddwl am y rhagnodwr fformat fel bod o f print. Felly yn awr, os oeddem am wneud y peth 4.jpg, byddem yn gwneud f print s, x o hyn. Felly beth sgan f yn ei wneud - beth oedd eich cwestiwn yn mynd i fod? [Myfyrwyr] Rydw i'n drysu ychydig ar yr hyn rydym yn ceisio ei wneud iawn yma gyda'r JPEG. Allwch chi esbonio bod amser 1 yn fwy? Felly roedd hyn - mae'n llai sydd yn berthnasol i f f sgan nawr; gobeithio, bydd yn cyd-fynd yn ôl mewn rhyw fath o ffordd. Ond roedd yr hyn yr wyf yn bwriadu cychwyn i ddangos - mae hyn mewn gwirionedd yn uniongyrchol berthnasol i'r [?? F5] Rydych yn mynd i gael ei ddefnyddio f print s, lle, ddweud ein bod wedi 100 o ddelweddau, ac rydych chi eisiau darllen delwedd 1.jpg, 2.jpg, 3.jpg. Felly, er mwyn gwneud hynny, mae angen i chi f agored, ac yna rhaid i chi basio yn y llinyn yr ydych eisiau agor. Felly, byddem yn awyddus i agor 1.jpg; er mwyn creu y llinyn sy'n 1.jpg, f print rydym yn ei wneud s% d.jpg--nid ydym yn ei wneud ar gyfer int i = 0. i <40, i + +. Felly s print% f d.jpg o i. Felly, ar ôl y llinell hon, sydd bellach yn amrywiol neu s amrywiaeth yn mynd i 1.jpg. Neu, 0.jpg, 1.jpg, 2.jpg. Ac er mwyn i ni agor, yn ei dro, mae pob delwedd ar gyfer darllen. Felly, dyna beth s argraffu f yn ei wneud. A ydych yn gweld yr hyn s argraffu f ei wneud yn awr? [Myfyrwyr] Iawn, felly mae'n cymryd - mae'n creu llinyn, something.jpg, ac yna ei storio. Ydw. Mae'n creu - mae hwn yn bluen arall fformat, yn union fel sgan f f a print, lle mae'n mewnosod yr holl newidynnau i mewn i'r ail ddadl, fod s yn hytrach na i. Efallai - yr wyf yn golygu, dyna'r achos. Ond beth bynnag fo'r drefn dadleuon yn. Mae'n mynd i fewnosod yr holl newidynnau i mewn i'r llinyn fformat ac yna'i storio yn ein byffer; yr ydym yn galw y darperir clustog, mae'n lle rydym yn storio y llinyn. Felly, rydym yn cadw tu mewn s y llinyn yn gywir-fformatio, d% wedi cael eu disodli gyda 4. [Myfyrwyr] Felly, os ydym yn gwneud hyn, yw'r f amrywiol jyst yn mynd i gael eu hailneilltuo? Ydw. Felly, dylem gau'r f wreiddiol cyn gwneud hyn. Ond - ac yna hefyd, os nad oedd yn f agor yma, yna byddai angen i ni ddweud - Yeah. Ond byddai'n agor cant o ffeiliau gwahanol. [Myfyrwyr] Ond ni fyddem yn gallu cael mynediad neu - iawn. Iawn. Felly sgan f, f f sgan, yn fath o un syniad, ond yn lle, yn hytrach na storio i mewn i llinyn, mae'n fwy fel chi nawr mynd dros pigiad a phatrwm cyfateb yn erbyn y llinyn a storio'r canlyniadau yn newidynnau. Gallwch ddefnyddio f sgan i gramadegu dros rhywbeth fel 4.jpg, a storio y 4 cyfanrif yn int x swm. Dyna beth y gallwn ei ddefnyddio f sgan ar gyfer. F f sgan yn mynd i wneud hynny ar y llinell orchymyn. Im 'mewn gwirionedd yn eithaf siŵr bod hyn yn beth y llyfrgell CS50 yn ei wneud. Felly, pan fyddwch yn dweud, "yn cael int," mae'n sgan f-ing dros - sgan f yn y ffordd rydych yn cael mewnbwn defnyddwyr. F f sgan yn mynd i wneud yr un peth ond gan ddefnyddio ffeil i sganio dros. Felly yma, rydym yn sganio dros y ffeil hon. Mae'r patrwm yr ydym yn ceisio i gyfateb rhywfaint llinyn sy'n 127 nod o hyd ddilyn gan linell newydd Felly, Rwy'n eithaf sicr y gallem hyd yn oed dim ond dweud "yn cyd-fynd s," ers yn y geiriadur digwydd bod yma, rydym yn gwarantu oes gair yw bod hir, a hefyd f f sgan, a fyddaf yn meddwl, stopio wrth y llinell newydd waeth beth. Ond byddwn yn cynnwys y llinell newydd yn y gêm, ac - [Myfyrwyr] Os nad ydym yn cynnwys y llinell newydd, ni fyddai dod o hyd rhannau o'r gair? It - yr un - edrych ar y geiriadur - Felly, yn y geiriadur, mae'r rhain yn ein holl eiriau. Mae pob un ar linell newydd. Mae'r f sgan yn mynd i godi y gair hwn. Os nad ydym yn cynnwys y llinell newydd, yna mae'n bosibl y bydd y f sgan nesaf dim ond darllen y llinell newydd. Ond yn cynnwys llinell newydd fydd yna dim ond anwybyddu'r llinell newydd. Ond byth yn cael rhan o air, gan ein bod bob amser yn darllen hyd at linell newydd, waeth beth. [Myfyrwyr] Ond beth os ydych yn chwilio am y gair "cissa," fel cissa. A fydd yn dod o hyd i hynny, a dweud ei fod yn gêm? Felly dyma ni - bydd yn darllen i mewn - mae hyn mewn gwirionedd yn bwynt da. Nid ydym erioed yn defnyddio'r hyn o bryd - y gair rydym yn chwilio amdano yw'r ymresymiad llinell orchymyn cyntaf. Felly llinyn, gair = argv 1. Felly, y llinyn rydym yn chwilio amdano yw argv 1. Nid ydym yn chwilio am air o gwbl yn ein f sgan. Yr hyn yr ydym yn ei wneud gyda sgan f yn cael pob gair yn y geiriadur, ac yna ar ôl i ni gael y gair yr ydym yn mynd i ddefnyddio strcmp eu cymharu. Rydym yn mynd i gymharu ein gair a beth rydym newydd ei ddarllen i mewn Felly, yn anochel, rydym yn mynd i roi diwedd ar i fyny yn gwneud criw o sgan fs hyd nes dim ond fel y digwydd y bydd f sgan dychwelyd - bydd yn dychwelyd un, cyn belled â'i fod wedi cyfateb gair newydd, a bydd yn dychwelyd rhywbeth arall cyn gynted ag y mae wedi methu â chyfateb y gair. Rydym yn darllen dros y geiriadur cyfan, storio fesul llinell bob gair yn y au amrywiol. Yna, rydym yn cymharu gair gyda s, ac os bydd y gymhariaeth == 0, strcmp yn digwydd i ddod 0 os gêm ei wneud. Felly, os oedd yn 0, yna gallwn argraffu f, cyfatebol, neu air mewn geiriadur, neu beth bynnag yr ydych eisiau argraffu f. Ac yna - nid ydym am i f gau dros dro ar ôl tro. Dyma'r math o beth yr ydym am ei wneud, ac nid ydym yn unig yn chwilio am air yn y geiriadur. Felly, gallem wneud hynny, os ydym am i chwilio am eu patrwm, cissa, fel y dywedasoch o'r blaen, os oeddem am edrych am y patrwm hwnnw, yna byddai'n methu yn yr achos oherwydd nid yw mewn gwirionedd gair, ond un o'r geiriau yn y geiriadur yn digwydd i gael y ynddo. Felly, byddai'n cyd-fynd y gair hwn, ond nid yw hyn is-set o'r gair yn air ei hun. Ond nid dyna sut rydym yn ei ddefnyddio, rydym yn darllen ym mhob gair ac yna gymharu y gair sydd gennym gyda'r gair hwnnw. Felly, rydym bob amser yn cymharu geiriau llawn. Gallaf anfon y datrysiadau terfynol yn ddiweddarach. Mae hyn yn fath o bron yr ateb cywir, dwi'n meddwl. [Sylwadau Myfyrwyr, annealladwy] O, oedd i mi gael gwared ar y blaen? Torgoch, yr wyf yn dyfalu y dywedasom 127 - nid wyf yn cofio beth yw'r mwyaf yw. Byddwn dim ond yn gwneud 128; felly yn awr yn ddigon hir. Nid oes angen i argraffu unrhyw beth. Rydym ni hefyd yn mynd i eisiau gorfod cau ein ffeil, a dylai hynny fod am yr ateb cywir. CS50.TV