1 00:00:00,000 --> 00:00:02,670 [Powered by Google Translate] Problem Adran Set 2: Argraffiad Hacker 2 00:00:02,670 --> 00:00:04,910 Rob Bowden, Prifysgol Harvard 3 00:00:04,910 --> 00:00:07,410 Mae hyn yn CS50. CS50.TV 4 00:00:07,410 --> 00:00:15,770 Felly, rwy'n Rob. Rwy'n uwch yn Kirkland. Mae hyn yn fy nhrydedd flwyddyn TFing CS50. 5 00:00:15,770 --> 00:00:22,220 Dyma'r tro cyntaf i ni yn newid o'r adran traddodiadol y ddarlith-arddull, 6 00:00:22,220 --> 00:00:25,610 lle rydym yn unig fath o adolygiad yr hyn a ddigwyddodd mewn darlith, ac yna rydych guys yn gofyn cwestiynau, 7 00:00:25,610 --> 00:00:32,250 yn awr i fod yn llawer mwy problem sy'n seiliedig ar, lle rydym yn defnyddio Mannau, ac - 8 00:00:32,250 --> 00:00:37,410 O, felly mae'r syniad yw i fynd i'r ddolen a anfonais chi ac yna byddwch yn fy Space. 9 00:00:37,410 --> 00:00:42,410 Nid oes gan unrhyw un gliniadur? Iawn. 10 00:00:42,410 --> 00:00:47,050 Felly, rydym yn mynd i gael ei defnyddio hyn, ac rydym yn mynd i fod yn gwneud problemau yn byw yn adran 11 00:00:47,050 --> 00:00:50,740 a'u trafod a figuring gwybod beth sydd o'i le 12 00:00:50,740 --> 00:00:56,390 ac efallai y byddwn yn tynnu rhywfaint o'ch cod, ac efallai y byddaf yn trafod eich syniadau. 13 00:00:56,390 --> 00:01:02,140 Felly, mae unrhyw un yn cael trafferth? 14 00:01:02,140 --> 00:01:07,000 Gallwch chi sgwrsio ar yr ochr, nid wyf yn gwybod os bydd gennym reswm am hynny. 15 00:01:07,000 --> 00:01:12,270 Yn awr, fel y supersection blaenorol, os oeddech yn y dosbarth, byddwch yn gwybod beth mae hynny'n ymwneud. 16 00:01:12,270 --> 00:01:19,200 Ar bob un setiau P mae mynd i fod yn yr adrannau hyn. 17 00:01:19,200 --> 00:01:22,550 Felly P-set 2, manylebau, yr wyf yn dyfalu chi ei weld ar P-set 1 eisoes. 18 00:01:22,550 --> 00:01:27,400 Ond gallwn edrych ar P-set 2 am yr hyn rydym yn mynd i fod yn mynd dros heddiw. 19 00:01:27,400 --> 00:01:29,460 A byddwch yn gweld adran o gwestiynau. 20 00:01:29,460 --> 00:01:37,530 Felly, bydd hyn ym mhob un o'r P-setiau; bydd yna adran o gwestiynau. 21 00:01:37,530 --> 00:01:41,340 Hyd yn hyn rydym wedi dweud, "Ystyriwch hyn yn gyfle i ymarfer." 22 00:01:41,340 --> 00:01:44,940 Ni fydd gofyn i chi gyflwyno rhaglen hon. 23 00:01:44,940 --> 00:01:48,480 Y syniad yw bod y rhain i fod i fath o gymorth i chi ddechrau arni gyda'r broblem a osodwyd. 24 00:01:48,480 --> 00:01:53,220 Amcana ar y rhifyn Hacker, mae llawer ohonynt i fod i ddim ond fod yn newydd, pethau diddorol i ddysgu. 25 00:01:53,220 --> 00:01:58,590 Efallai nad ydynt yn uniongyrchol berthnasol i'r broblem a osodwyd. 26 00:01:58,590 --> 00:02:01,810 Ac ar hyn o bryd nid ydym yn cael i chi eu cyflwyno, ond mewn theori, 27 00:02:01,810 --> 00:02:07,480 ar gyfer setiau problem yn nes ymlaen, efallai y byddwch yn eu cyflwyno, ac felly gallwch naill ai ddod i adran 28 00:02:07,480 --> 00:02:10,380 neu gwyliwch yr adran i gael yr atebion, neu gallwch eu cael ar eich pen eich hun 29 00:02:10,380 --> 00:02:16,350 os nad ydych yn teimlo fel mwynhau fy mhresenoldeb. 30 00:02:16,350 --> 00:02:21,010 Felly y - Rwy'n credu bod hyn yn yr un cyntaf. 31 00:02:21,010 --> 00:02:29,280 Oh. Hefyd, o dan yr adrannau hyn o gwestiynau rydym hefyd wedi gofyn cwestiynau am y shorts. 32 00:02:29,280 --> 00:02:33,440 Felly mae'n debyg, mewn theori, rydych yn fod i wylio rhain cyn dod i'r adran, 33 00:02:33,440 --> 00:02:38,550 ond mae'n iawn os nad ydych yn ei wneud; byddwn yn mynd dros nhw beth bynnag. 34 00:02:38,550 --> 00:02:42,590 Felly, gallwn ddechrau gyda'r rhain: "Sut mae dolen tra wahanol i ddolen do-sbel? 35 00:02:42,590 --> 00:02:46,210 Pryd mae yr olaf yn arbennig o ddefnyddiol? " 36 00:02:46,210 --> 00:02:49,390 Felly mae gan unrhyw un -? 37 00:02:49,390 --> 00:02:52,730 [Myfyrwyr] Mae'r do-tra bydd dolen bob amser yn gweithredu o leiaf unwaith. 38 00:02:52,730 --> 00:03:02,950 Ydw. Felly, dyna'r gwahaniaeth. Mae dolen tra - I'll wneud dim ond ar yma - tra dolen, mae gennym y cyflwr 39 00:03:02,950 --> 00:03:19,760 i'r dde yma, tra bod do-tra, nid oes gennych gyflwr nes i ni fynd i lawr yma. 40 00:03:19,760 --> 00:03:24,130 Ac felly, pan fydd eich rhaglen ei gweithredu, ac mae'n mynd i'r ddolen tra, 41 00:03:24,130 --> 00:03:26,380 ar unwaith os yw hyn yn gwirio cyflwr yn wir. 42 00:03:26,380 --> 00:03:30,710 Os nad yw'r cyflwr yn wir, bydd yn unig sgip dros y ddolen yn gyfan gwbl. 43 00:03:30,710 --> 00:03:34,390 Do-tra dolen, gan fod y rhaglen yn gweithredu, mae'n mynd i "wneud." 44 00:03:34,390 --> 00:03:37,920 Nid oes dim yn digwydd ar yr adeg hon, dim ond yn parhau gweithredu. 45 00:03:37,920 --> 00:03:42,690 Yna, pan fydd yn taro'r "tra," os yw'r cyflwr yn wir, bydd yn cefnogi ac yn ddolen yn ei wneud eto 46 00:03:42,690 --> 00:03:46,730 ac eto ac eto hyd nes nad yw'r cyflwr yn wir ac yna dim ond yn methu. 47 00:03:46,730 --> 00:03:50,600 Felly, y gwahaniaeth yw, y gall hyn sgip gywir o'r cychwyn cyntaf. 48 00:03:50,600 --> 00:03:56,770 Hyn o reidrwydd yn executes unwaith ac wedyn caiff gweithredu gwaith yn fwy os yw'r cyflwr yn dal yn wir. 49 00:03:56,770 --> 00:04:03,720 Felly, bydd y ddolen a dim ond gwneud hyn unwaith, neu - y ddolen er - efallai na fydd angen i ni wneud hynny o gwbl, 50 00:04:03,720 --> 00:04:07,900 ers cyn gynted ag y cyrhaeddwn hynny, os yw'r cyflwr yn ffug, byddwn yn unig sgip hawl drosto. 51 00:04:07,900 --> 00:04:11,770 Tra ei wneud-tra ddolen, byddwn yn gweithredu unwaith, o reidrwydd. 52 00:04:11,770 --> 00:04:14,560 Yna, pan fyddwn yn cyrraedd y cyflwr, rydym yn gwirio os yw'n gywir neu'n anghywir. 53 00:04:14,560 --> 00:04:19,790 Os yw'n wir, byddwn yn gwneud hynny eto; os yw'n ffug, byddwn yn unig yn parhau i fynd. 54 00:04:19,790 --> 00:04:24,680 Felly pan mae yr olaf yn arbennig o ddefnyddiol? 55 00:04:24,680 --> 00:04:31,190 Felly gallaf ddweud bod yn y cyfan o'r 4 blynedd, 3 blynedd, beth bynnag, 56 00:04:31,190 --> 00:04:38,780 fy mod wedi bod yn rhaglennu, rwyf wedi defnyddio hyn, fel, o dan 10 gwaith. 57 00:04:38,780 --> 00:04:43,140 Ac yn ôl pob tebyg 5 ohonynt yn CS50 pan fyddwn ni'n cyflwyno ei wneud-tra dolenni. 58 00:04:43,140 --> 00:04:47,510 Felly, pryd ydych chi wedi defnyddio ei wneud-tra dolenni? 59 00:04:47,510 --> 00:04:49,510 Pryd fydd y - ie? 60 00:04:49,510 --> 00:04:53,180 [Myfyrwyr] Pan fyddwch yn ceisio cael, mewnbwn defnyddiwr neu rywbeth rydych am ei wirio - 61 00:04:53,180 --> 00:04:59,700 Yeah. Felly, yn ei wneud-tra dolenni, defnyddiwr mewnbwn yn yr un mawr. 62 00:04:59,700 --> 00:05:03,160 Dyna pam ar y setiau problem cwpl cyntaf, pan fyddwch eisiau gofyn i'r defnyddiwr, fel, 63 00:05:03,160 --> 00:05:08,520 "Yn rhoi i mi llinyn," Ni allwch barhau nes i chi gael y llinyn. 64 00:05:08,520 --> 00:05:12,980 Ac er mwyn i chi, o reidrwydd, mae angen i ofyn ar gyfer y llinyn o leiaf unwaith. 65 00:05:12,980 --> 00:05:16,950 Ond yna, os ydynt yn ateb rhywbeth drwg, yna mae angen i chi dolen yn ôl a gofyn eto. 66 00:05:16,950 --> 00:05:20,810 Ond ar wahân i fewnbwn y defnyddiwr, mae'n brin iawn fy mod yn dod ar draws achos 67 00:05:20,810 --> 00:05:27,170 lle yr wyf yn awyddus i ddolen "o leiaf unwaith" ond mwy o bosibl. 68 00:05:27,170 --> 00:05:33,370 Cwestiynau neu -? Oes unrhyw un wedi defnyddio do-tra dolen yn unrhyw le arall? 69 00:05:33,370 --> 00:05:36,780 Iawn. Felly, yr un nesaf yw, "Beth mae heb eu datgan dynodwr 70 00:05:36,780 --> 00:05:43,310 fel arfer yn dangos os outputted gan clang? " 71 00:05:43,310 --> 00:05:47,380 Felly, pa fath o god Byddaf yn ysgrifennu at gael 'dynodwr heb ei ddatgan?' 72 00:05:47,380 --> 00:05:49,550 [Myfyrwyr] Dyna x = 2? 73 00:05:49,550 --> 00:05:52,650 Felly gallwn ddim rhoi cynnig arni yma, x = 2. 74 00:05:52,650 --> 00:06:04,830 Byddwn yn rhedeg y - oh, doeddwn i ddim yn ei glicio. Felly, yma rydym yn ei gael - yn iawn. 75 00:06:04,830 --> 00:06:07,100 "Defnyddio x dynodwr heb ei ddatgan." 76 00:06:07,100 --> 00:06:11,610 Felly dyna'r dynodwr heb ei ddatgan, newidyn. 77 00:06:11,610 --> 00:06:13,910 Bydd yn aml yn galw amrywiol yn dynodydd. 78 00:06:13,910 --> 00:06:17,300 Felly, efallai na fydd yn gwybod ei fod mewn gwirionedd yn newidyn; nid yw'n gwybod beth ydyw. 79 00:06:17,300 --> 00:06:19,380 Felly mae'n dynodwr. 80 00:06:19,380 --> 00:06:26,060 Felly pam mae'n cael ei heb eu datgan? Yeah. 81 00:06:26,060 --> 00:06:32,190 Felly, i fod yn glir ar derminoleg, y datganiad o newidyn 82 00:06:32,190 --> 00:06:37,360 yw pan fyddwch yn dweud "x int," neu "llinyn y," beth bynnag. 83 00:06:37,360 --> 00:06:41,910 Y initialization y newidyn, neu aseiniad y newidyn, 84 00:06:41,910 --> 00:06:44,510 pryd bynnag y byddwch yn dweud "x = 2." 85 00:06:44,510 --> 00:06:52,950 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 - 86 00:06:52,950 --> 00:07:00,350 ond hyd nes y llinell hon yn digwydd, x yn cael ei uninitialized o hyd, ond mae wedi cael ei ddatgan. 87 00:07:00,350 --> 00:07:06,760 Ac felly y gallwn ei wneud yn amlwg yn 1 llinell, ac yn awr rydym yn datgan ac yn ymgychwyn. 88 00:07:06,760 --> 00:07:10,730 Cwestiynau? 89 00:07:10,730 --> 00:07:18,390 Ac yn olaf, "Pam nad yw'r Cipher Cesar yn ddiogel iawn?" 90 00:07:18,390 --> 00:07:23,830 Felly, yn gyntaf, oes unrhyw un eisiau i ddweud beth yw'r Cipher Cesar yw? 91 00:07:23,830 --> 00:07:28,100 [Myfyrwyr] Cesar Cipher yn unig yw eich bod yn mapio, ydych yn symud i bob llythyr, 92 00:07:28,100 --> 00:07:34,420 nifer penodol o lythyrau yn mynd drosodd, a symud yn ôl dros, ac nid yw'n ddiogel iawn oherwydd 93 00:07:34,420 --> 00:07:42,260 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. 94 00:07:42,260 --> 00:07:45,470 Oh. Felly, hoffwn ailadrodd? 95 00:07:45,470 --> 00:07:51,600 Mae'r Cipher Caesar, it's - yr wyf yn golygu, byddwch yn delio ag ef ar y problemau yr ydych yn - 96 00:07:51,600 --> 00:07:56,110 neu yr wyf yn dyfalu y rhifyn safon y set broblem nad sydd ar y rhifyn haciwr. 97 00:07:56,110 --> 00:08:01,550 Felly, ar yr argraffiad safonol i'r broblem a osodwyd, byddwch yn cael neges fel, "Helo, byd," 98 00:08:01,550 --> 00:08:08,410 a byddwch hefyd yn cael rhif, er enghraifft 6, a byddwch yn cymryd y neges honno, a phob cymeriad unigol, 99 00:08:08,410 --> 00:08:11,310 ydych yn cylchdroi yn o 6 swyddi yn y wyddor. 100 00:08:11,310 --> 00:08:16,560 Felly, yr 'h' byddai hello dod yn h-i-j-k-l-m-n. 101 00:08:16,560 --> 00:08:19,600 Felly, byddai'r llythyr cyntaf yn n. Rydym yn gwneud yr un peth gydag e. 102 00:08:19,600 --> 00:08:23,530 Os oes gennym, fel, z neu rywbeth, yna rydym yn lapio o gwmpas yn ôl i 'a.' 103 00:08:23,530 --> 00:08:29,280 Ond mae pob cymeriad yn cael gylchu 6 nod yn ddiweddarach yn y wyddor, ac nid yw'n ddiogel iawn 104 00:08:29,280 --> 00:08:35,440 gan fod dim ond 26 posibiliadau ar gyfer faint o ffyrdd y gallech chi lapio llythyr unigol. 105 00:08:35,440 --> 00:08:42,919 Felly, gallwch roi cynnig ar bob un o'r 26 ohonyn nhw ac, yn ôl pob tebyg, am neges digon hir, 106 00:08:42,919 --> 00:08:46,860 dim ond 1 o'r rhai 26 posibl pethau yn mynd i fod yn ddarllenadwy, 107 00:08:46,860 --> 00:08:50,300 ac yn yr un ddarllenadwy yn mynd i fod y neges wreiddiol. 108 00:08:50,300 --> 00:08:56,240 Felly nid yw'n ffordd dda iawn o amgryptio unrhyw beth o gwbl. 109 00:08:56,240 --> 00:08:59,070 Ddim yn perthyn i'r shorts, "Beth yw swyddogaeth?" 110 00:08:59,070 --> 00:09:03,370 Felly beth yw swyddogaeth? Ydw. 111 00:09:03,370 --> 00:09:11,640 [Myfyrwyr] Mae fel darn arall o god y gallwch ffonio i fynd ymlaen, a chael y gwerth dychwelyd beth bynnag. 112 00:09:11,640 --> 00:09:18,160 Yeah. Felly, byddaf yn ateb iddo gan hefyd ateb y nesaf - neu ailadrodd drwy hefyd yn unig ateb yr un nesaf. 113 00:09:18,160 --> 00:09:22,410 Gallwch ddefnyddio swyddogaethau hytrach na dim ond copïo a gludo cod drosodd a throsodd. 114 00:09:22,410 --> 00:09:27,200 Dim ond yn cymryd y cod hwnnw, ei roi mewn fuction, ac yna fe allech chi ffoniwch y swyddogaeth 115 00:09:27,200 --> 00:09:29,870 ble bynnag yr ydych wedi bod yn copïo a gludo. 116 00:09:29,870 --> 00:09:33,350 Felly swyddogaethau yn ddefnyddiol. 117 00:09:33,350 --> 00:09:35,860 Felly nawr byddwn yn gwneud problemau gwirioneddol. 118 00:09:35,860 --> 00:09:46,490 Mae'r un cyntaf. Felly, y syniad o yr un cyntaf yw, byddwch yn mynd heibio ei fod yn llinyn, ac yn waeth - 119 00:09:46,490 --> 00:09:52,060 neu a yw'n dweud yr holl llythrennau bach? Nid yw'n dweud yr holl llythrennau bach. 120 00:09:52,060 --> 00:09:57,730 Felly, gall y neges fod yn unrhyw beth, a - oh dim. Mae'n gwneud. 121 00:09:57,730 --> 00:10:01,610 "Er hwylustod, gallwch gymryd yn ganiataol bod y defnyddiwr yn unig fewnbwn llythrennau bach a mannau." 122 00:10:01,610 --> 00:10:08,180 Felly, byddwn yn ei throsglwyddo neges gyda dim ond llythrennau bach ac yna rydym yn ail 123 00:10:08,180 --> 00:10:15,450 rhwng cyfalaf bach a mawr - rydym yn newid y llinyn i fod cyfalaf a llythrennau bach, bob yn ail. 124 00:10:15,450 --> 00:10:22,920 Felly, cyn i ni roi i chi ail i hyd yn oed neidio i mewn i'r broblem, 125 00:10:22,920 --> 00:10:32,420 beth yw'r peth cyntaf y mae angen ei wneud? 126 00:10:32,420 --> 00:10:36,900 O, beth wnes i jyst cliciwch ar? O, Fi jyst clicio ar e-bost yma. 127 00:10:36,900 --> 00:10:42,870 Felly, y peth cyntaf mae angen i ni ei wneud - ydw i'n edrych ar yr un anghywir? 128 00:10:42,870 --> 00:10:49,320 A yw hyn yn rhan o'r un yma? 129 00:10:49,320 --> 00:10:51,320 Na, y rhai yn dal i fod yno, er. 130 00:10:51,320 --> 00:10:55,160 Iawn, yma o hyd. 131 00:10:55,160 --> 00:11:03,160 Nawr ni allwn gymryd yn ganiataol -? Ydw. Yma ni allwn gymryd yn ganiataol mai dim ond llythrennau bach a mannau. 132 00:11:03,160 --> 00:11:07,770 Felly, yn awr mae'n rhaid i ni ddelio â'r ffaith y gall y llythrennau fod beth bynnag yr ydym am iddynt fod. 133 00:11:07,770 --> 00:11:11,910 Ac felly y peth cyntaf yr ydym am ei wneud yw cael y neges. 134 00:11:11,910 --> 00:11:19,790 Rydym yn unig angen i chi gael llinyn, llinyn s = GetString, iawn. 135 00:11:19,790 --> 00:11:24,890 Nawr y broblem hon, mae yna gwpl o ffyrdd o wneud hynny. 136 00:11:24,890 --> 00:11:29,840 Ond rydym yn mynd i eisiau i ddefnyddio gweithredwyr bitwise yma. 137 00:11:29,840 --> 00:11:35,280 A oes pobl sydd naill ai oedd yn y supersection, 138 00:11:35,280 --> 00:11:37,480 neu rywbeth, ac nid ydynt yn gwybod beth gweithredwyr bitwise chi? 139 00:11:37,480 --> 00:11:41,710 Neu sut y maent yn ymwneud â ASCII mewn unrhyw ffordd? 140 00:11:41,710 --> 00:11:45,650 [Myfyrwyr] Nid oeddwn yn y supersection, ond yr wyf yn gwybod beth gweithredwyr bitwise yn cael eu. 141 00:11:45,650 --> 00:11:49,560 Iawn. Felly, yna nid oes rhaid i mi fynd dros y pethau sylfaenol ohonynt, ond byddaf yn esbonio 142 00:11:49,560 --> 00:11:51,830 beth rydym yn mynd i eisiau ei ddefnyddio yma. 143 00:11:51,830 --> 00:11:59,680 Felly 'A': cynrychiolaeth deuaidd cyfalaf A, y rhif yw 65. 144 00:11:59,680 --> 00:12:07,560 Im 'jyst yn mynd i edrych ar - 41 yn mynd i fod 01,000,001. 145 00:12:07,560 --> 00:12:14,170 Felly, dylai hynny fod 65 yn degol; felly mae hyn yn gynrychiolaeth ddeuaidd y cyfalaf cymeriad A. 146 00:12:14,170 --> 00:12:19,440 Yn awr, mae'r gynrychiolaeth deuaidd y cymeriad lythrennau bach 'a' 147 00:12:19,440 --> 00:12:33,350 yn mynd i fod yr un peth, bron. A yw hynny - 6, yeah. Mae hyn yn iawn. 148 00:12:33,350 --> 00:12:37,670 Cyfalaf fel deuaidd Mae llythrennau bach, deuaidd 'a.' 149 00:12:37,670 --> 00:12:43,940 Felly, yn sylwi bod y gwahaniaeth rhwng A a 'a' yn y darn sengl. 150 00:12:43,940 --> 00:12:49,440 Ac mae hyn yn digwydd i fod yn 32 bit, y darn yn cynrychioli'r rhif 32. 151 00:12:49,440 --> 00:12:53,910 Ac mae hynny'n gwneud synnwyr gan fod A yn 65; 'a' yw 97. 152 00:12:53,910 --> 00:12:56,610 Y gwahaniaeth rhyngddynt yw 32. 153 00:12:56,610 --> 00:13:03,770 Felly, nawr rydym yn gwybod y gallwn droi o A i 'a' drwy gymryd i 154 00:13:03,770 --> 00:13:09,710 ac bitwise ORing, gyda - sy'n edrych fel 1. 155 00:13:09,710 --> 00:13:20,900 Mae hwn yn bitwise NEU, gyda 00100000, a bydd hynny'n rhoi i ni 'a.' 156 00:13:20,900 --> 00:13:26,850 A gallwn ei gael o 'a' i A gan bitwise anding 157 00:13:26,850 --> 00:13:33,700 gyda 11, 0 yn y fan honno, 11,111. 158 00:13:33,700 --> 00:13:43,840 Felly, bydd hyn wedyn yn rhoi i ni yn union beth 'a' oedd, ond canslo allan y darn unigol, 159 00:13:43,840 --> 00:13:50,070 felly bydd gennym 01000001, nid wyf yn gwybod os ydw i'n cyfrif gywir. 160 00:13:50,070 --> 00:13:56,750 Ond mae hyn yn dechneg o bitwise ORing i fynd o gyfalaf i lythrennau bach, 161 00:13:56,750 --> 00:14:02,080 ac nid bitwise anding i fynd o lythrennau bach i gyfalaf yn unigryw i A. 162 00:14:02,080 --> 00:14:06,510 Mae pob un o'r llythyrau, K vs k, Z vs z, 163 00:14:06,510 --> 00:14:10,080 pob un ohonynt yn unig yn mynd i fod yn wahanol gan y bit sengl. 164 00:14:10,080 --> 00:14:16,290 Ac fel y gallwch ddefnyddio hwn i newid o unrhyw lythyr lythrennau bach i unrhyw lythyr cyfalaf ac i'r gwrthwyneb. 165 00:14:16,290 --> 00:14:26,670 Iawn. Felly ffordd hawdd o fynd o hyn - felly yn hytrach na gorfod 166 00:14:26,670 --> 00:14:32,170 ysgrifennwch beth bynnag yw 1011111 - ffordd hawdd o gynrychioli nifer hwn, ac nid yw hyn yn un 167 00:14:32,170 --> 00:14:39,710 i mi fynd drosodd yn y supersection, ond tilde (~) yn weithredwr arall bitwise. 168 00:14:39,710 --> 00:14:42,520 Beth ~ ei wneud yw ei fod yn edrych ar y gynrychiolaeth bit. 169 00:14:42,520 --> 00:14:45,630 Gadewch i ni gymryd unrhyw nifer. 170 00:14:45,630 --> 00:14:53,130 Mae hyn yn dim ond rhai rhif deuaidd, a beth ~ yn ei wneud yw i jyst yn fflipio yr holl ddarnau. 171 00:14:53,130 --> 00:15:00,630 Felly, roedd hwn yn 1, sydd bellach yn 0, mae hwn yn 0, bellach yn 1, 010,100. 172 00:15:00,630 --> 00:15:08,320 Felly dyna i gyd ~ wneud. Felly 32 ei mynd i fod yn y rhif - cael gwared o hynny - 173 00:15:08,320 --> 00:15:23,320 felly 32 ei mynd i fod y rhif 00100000, ac felly ~ o hyn yn mynd i fod 174 00:15:23,320 --> 00:15:29,980 y rhif hwn i fyny yma fy mod yn anded 'a' gyda nhw. 175 00:15:29,980 --> 00:15:35,600 Ydy pawb yn gweld hynny? Mae hyn yn eithaf cyffredin, fel pan fyddwch am i chyfrif i maes 176 00:15:35,600 --> 00:15:40,740 gyfer pethau yn nes ymlaen y gallai byddwn yn gweld, pan fyddwn am weld os - 177 00:15:40,740 --> 00:15:44,710 neu rydym am bopeth, pob set ychydig yn unigol, ac eithrio ar gyfer 1 178 00:15:44,710 --> 00:15:47,910 rydych yn tueddu i'w wneud o ~ yw'r darn nad ydym yn eisiau gosod. 179 00:15:47,910 --> 00:15:53,090 Felly, nid ydym am y set 32 ​​bit, felly rydym yn ~ o 32. 180 00:15:53,090 --> 00:15:57,790 Iawn. Felly, gallwn ddefnyddio pob un o'r rheiny yma. 181 00:15:57,790 --> 00:16:03,000 Mae pob hawl, felly mae'n iawn os nad ydych chi'n ei wneud, byddwn yn araf gerdded dros ei gilydd, 182 00:16:03,000 --> 00:16:11,870 neu gerdded dros hyn, felly - drwy hyn. Cerddwch drwy hyn. 183 00:16:11,870 --> 00:16:20,790 Felly, rydym wedi ein llinyn, ac rydym am ddolen dros bob cymeriad yn y llinyn a gwneud rhywbeth iddo. 184 00:16:20,790 --> 00:16:26,710 Felly sut ydym yn ddolen dros llinyn? Beth ddylem ni ei ddefnyddio? 185 00:16:26,710 --> 00:16:30,980 Dydw i ddim yn mynd i wneud hynny ar yma. Yeah. 186 00:16:30,980 --> 00:16:42,940 Felly, yr wyf wedi fy iterator, ac efe a ddywedodd hyn, ond sut ydw i'n gwybod faint o gymeriadau sydd yn y llinyn? 187 00:16:42,940 --> 00:16:47,030 Strlen (au), yna i + +. 188 00:16:47,030 --> 00:16:49,860 Felly, nid yr hyn yr wyf wedi ei wneud yma yw'r ffordd orau o wneud pethau. 189 00:16:49,860 --> 00:16:51,860 Oes rhywun yn gwybod pam? 190 00:16:51,860 --> 00:16:55,290 Oherwydd eich bod yn gwirio iaith y llinyn bob tro. 191 00:16:55,290 --> 00:17:06,859 Felly, rydym yn mynd i eisiau symud strlen, gallwn ddweud yma, int hyd = strlen (au), 192 00:17:06,859 --> 00:17:11,900 ac yna ydw i'n 00:17:20,410 Gallwn hefyd wneud int i = 0, hyd = strlen (au). 194 00:17:20,410 --> 00:17:25,010 Ac felly mae hyn braidd yn well, gan fod yn awr yr wyf wedi cyfyngu cwmpas 195 00:17:25,010 --> 00:17:29,150 o hyd amrywiol i ddim ond y 'ar gyfer' dolen, yn hytrach na datgan cyn 196 00:17:29,150 --> 00:17:34,990 a'i fod bob amser yn bodoli, ac yn achos nad ydych yn dal pam mae hynny'n ddrwg, 197 00:17:34,990 --> 00:17:39,410 neu pam oedd y gwreiddiol yn wael, it's - dechrau ar y ddolen am. 198 00:17:39,410 --> 00:17:43,380 I edrych ar y cyflwr. A yw i 00:17:46,790 Felly, hyd s, gadewch i ni weithio gyda "helo" yr amser cyfan. 200 00:17:46,790 --> 00:17:49,670 Felly, hyd s, h-e-l-l-o. Hyd yn 5. 201 00:17:49,670 --> 00:17:57,580 Felly, i = 0, hyd yw 5, felly nid fi yw <5, felly mae'r ddolen yn parhau. 202 00:17:57,580 --> 00:18:02,750 Yna rydym yn mynd eto. Rydym yn edrych ar y cyflwr. A yw i 00:18:08,390 Felly, gadewch i ni edrych ar hyd y helo. H-e-l-l-o. Dyna 5; Nid fi yw <5, felly rydym yn parhau eto. 204 00:18:08,390 --> 00:18:13,330 Felly, rydym yn cyfrifo, rydym yn cyfrif helo, ar gyfer pob fersiwn o'r ddolen, 205 00:18:13,330 --> 00:18:17,380 hyd yn oed yn meddwl nid yw byth yn mynd i newid, mae'n bob amser yn mynd i fod yn 5. 206 00:18:17,380 --> 00:18:22,530 Felly, rydym yn unig cofio 5 o flaen llaw, ac yn awr mae popeth yn well. 207 00:18:22,530 --> 00:18:24,990 Felly, ailadrodd dros y llinyn cyfan. 208 00:18:24,990 --> 00:18:31,470 Beth ydym ni eisiau ei wneud ar gyfer pob cymeriad y llinyn? 209 00:18:31,470 --> 00:18:38,510 [Siarad Myfyrwyr, annealladwy] 210 00:18:38,510 --> 00:18:47,000 Yeah. Felly, os bydd y cymeriad yn ddi-wyddor, yna rydym yn unig am ei hepgor drosto. 211 00:18:47,000 --> 00:18:52,300 Oherwydd ein bod ond yn gofalu am lythyrau wyddor; ni allwn fanteisio nifer. 212 00:18:52,300 --> 00:19:10,850 Felly sut allwn ni wneud hyn? Felly mae ein cyflwr, felly os ydym am rywbeth - gwirio os yw'n wyddor. 213 00:19:10,850 --> 00:19:14,060 Felly, sut rydym yn gwirio hyn? 214 00:19:14,060 --> 00:19:18,720 [Myfyrwyr] Gallwch jyst arfer y swyddogaeth yn alffa. 215 00:19:18,720 --> 00:19:23,160 Ydy hynny'n cynnwys yn un o'r rhain, neu unrhyw gynnwys yn hoffi, char.h neu rywbeth? 216 00:19:23,160 --> 00:19:32,710 Gadewch i ni beidio defnyddio'r yw swyddogaeth alffa, a defnyddio'r penodol - felly rydym wedi s [i], 217 00:19:32,710 --> 00:19:40,460 hynny yw cymeriad wythfed s, cofiwch fod yn llinyn amrywiaeth o gymeriadau, 218 00:19:40,460 --> 00:19:43,180 felly mae'r cymeriad wythfed s. 219 00:19:43,180 --> 00:19:49,280 Yn awr, os yw'n llythyr cyfalaf, rydym yn gwybod mae'n rhaid iddo fod mewn ystod benodol. 220 00:19:49,280 --> 00:19:54,370 A beth yw bod amrediad? 221 00:19:54,370 --> 00:20:07,860 Yeah. Felly, os s [i] yw ≥ 65, ac s [i] yn ≤ 90, beth ddylwn i ei wneud yn lle hynny? 222 00:20:07,860 --> 00:20:18,470 Yeah. Felly, ni ddylid byth chi gwbl hyd yn oed angen i chi wybod y gwerthoedd ASCII unrhyw beth erioed. 223 00:20:18,470 --> 00:20:25,640 Peidiwch byth â meddwl am y 65 rhifau, 90, 97 a 102, neu beth bynnag ydyw. 224 00:20:25,640 --> 00:20:32,470 Nid oes angen - 112 -? Nid oes angen i chi wybod rhai o gwbl. Mae hynny'n anghywir hefyd. 225 00:20:32,470 --> 00:20:41,940 Defnyddiwch y cymeriadau un dyfyniad, cysonion un dyfynbris. Felly 'A' ac yn llai na 90 yw 'Z.' 226 00:20:41,940 --> 00:20:47,930 Ac mae hyn yn sylweddol well - Ni fyddwn yn gwybod oddi ar ben fy mhen fy Z yw 90. 227 00:20:47,930 --> 00:20:52,690 Dwi ddim yn gwybod oddi ar ben fy mhen bod 'Z' yw cyfalaf Z. 228 00:20:52,690 --> 00:21:02,100 Gall Felly, cyhyd â bod hyn yn yr ystod o gyfalaf A i Z cyfalaf, neu rydym yn edrych am llythrennau bach, 229 00:21:02,100 --> 00:21:17,010 Neu os yw'n yn yr ystod ≥ 'a' a ≤ z. 230 00:21:17,010 --> 00:21:19,010 Felly, dyna ein cyflwr. 231 00:21:19,010 --> 00:21:22,520 Mae'r arddull ar gyfer ble i roi'r pethau hyn yn amrywio. 232 00:21:22,520 --> 00:21:29,520 'N annhymerus' yn ei wneud fel hyn. 233 00:21:29,520 --> 00:21:31,520 Nawr, beth ydym ni eisiau ei wneud? 234 00:21:31,520 --> 00:21:39,530 Rydym yn gwybod y llythyr hwn yn gymeriad, yn gymeriad yr wyddor. 235 00:21:39,530 --> 00:21:46,270 Felly, mae angen i ni newid rhwng a ddylai hyn bellach fod yn llythyr cyfalaf neu lythyr llythrennau bach. 236 00:21:46,270 --> 00:21:48,820 Sut rydym yn cadw golwg ar ba un yr ydym am iddo fod? 237 00:21:48,820 --> 00:21:55,520 [Lleisiau myfyrwyr, annealladwy] 238 00:21:55,520 --> 00:21:59,150 Felly ie, ond gadewch i mi gwirio. 239 00:21:59,150 --> 00:22:04,910 Roedd Modiwl 0-2 meddai, oedd awgrym daflu allan, a chytunaf â hynny. 240 00:22:04,910 --> 00:22:11,780 Ac eithrio rybudd bod chi, fel - a yw hyn yn wir? Yeah. 241 00:22:11,780 --> 00:22:18,270 Mae'n pob un arall, ond ni allwn modiwl 2 i, neu i mod 2, gan fod 242 00:22:18,270 --> 00:22:22,950 sylwi bod E yn gyfalaf ac 'a' yn llythrennau bach? Ond mae 'na le yn eu gwahanu? 243 00:22:22,950 --> 00:22:27,150 Felly, maent yn mynd i fod yn yr un mod 2, ond maen nhw'n achosion gwahanol. 244 00:22:27,150 --> 00:22:29,150 [Gwestiwn Myfyrwyr, annealladwy] 245 00:22:29,150 --> 00:22:34,690 Yeah. Felly, rydym yn jyst yn mynd i gadw cyfrif. 246 00:22:34,690 --> 00:22:38,730 Gallem hefyd wneud hynny yma, os oeddem am, gallai fod yn cael ychydig yn anhylaw 247 00:22:38,730 --> 00:22:41,300 yn y datganiadau am ddolen; byddaf yn ei roi i fyny yma. 248 00:22:41,300 --> 00:22:48,840 Felly cyfrif int = yn dechrau ar 0. 249 00:22:48,840 --> 00:22:54,070 Ac felly yn awr, rwy'n mynd i gyfrif faint o gymeriadau yn nhrefn yr wyddor a gawsom. 250 00:22:54,070 --> 00:22:59,550 Felly, rydym yn anochel yn mynd i gyfrif + + ers i ni weld cymeriad arall yn nhrefn yr wyddor. 251 00:22:59,550 --> 00:23:09,130 Ond, felly, yn awr ydych yn ei ddweud os yw cyfrif mod 2. 252 00:23:09,130 --> 00:23:12,590 Felly beth os cyfrif mod 2? Oh. Fe ddylwn i ei wneud == 0 ar gyfer yn awr. 253 00:23:12,590 --> 00:23:21,740 Byddwn hefyd yn mynd dros hynny. Felly, os cyfrif mod 2 == 0, yna beth? 254 00:23:21,740 --> 00:23:27,830 [Mae myfyrwyr yn ateb, annealladwy] 255 00:23:27,830 --> 00:23:32,750 Felly, rydym am iddo gael ei daflu priflythyren. 256 00:23:32,750 --> 00:23:37,520 Mae 2 achos; priflythyren a llythrennau bach yn y 2 achos. 257 00:23:37,520 --> 00:23:40,990 Felly, os ydym yn llythrennau bach mae angen i ni wneud yn priflythyren. 258 00:23:40,990 --> 00:23:43,710 Os yw'n priflythyren nid oes angen i ni wneud unrhyw beth. 259 00:23:43,710 --> 00:23:50,760 Ond, a oes ffordd - shouldn't wedi flipped - 260 00:23:50,760 --> 00:23:54,800 nad ydym hyd yn oed angen i wirio p'un a yw'n priflythyren neu llythrennau bach? 261 00:23:54,800 --> 00:24:02,240 Beth allwn ni ei wneud i bob amser yn gwneud yn siwr ein bod bob amser yn y pen draw yn priflythyren? 262 00:24:02,240 --> 00:24:07,830 Felly sylwi ar yr hyn a wnaethom ar gyfer llythrennau bach 'a', beth os ydym yn gwneud hyn beth un union i priflythyren A? 263 00:24:07,830 --> 00:24:11,900 A yw'r priflythyren Mae newid, neu a yw'r newid gwerth? 264 00:24:11,900 --> 00:24:23,100 Yeah. Felly unrhyw gyfalaf lythyr anded â ~ 32 bitwise yn mynd i fod y cymeriad priflythyren un 265 00:24:23,100 --> 00:24:29,220 oherwydd am unrhyw gymeriad priflythyren yw'r darn 32 wedi ei osod. 266 00:24:29,220 --> 00:24:40,920 Felly, os ydym am ddod â'r cymeriad s [i], yr ydym am iddo fod yn llythrennau bach neu priflythyren. 267 00:24:40,920 --> 00:24:46,890 Felly, os oedd yn llythrennau bach, mae bellach yn priflythyren, os oedd yn priflythyren, mae'n dal i fod priflythyren, a dyna ni. 268 00:24:46,890 --> 00:24:54,290 Dywedais hyn yn y supersection: Gallwch ddefnyddio 32 os ydych yn dymuno, ond yr wyf yn tueddu i ffafrio gwneud 'a' - A, 269 00:24:54,290 --> 00:25:01,150 yn hytrach na dim ond 32 plaen, oherwydd gall fod yn unrhyw bit arall. 270 00:25:01,150 --> 00:25:03,610 Ar ôl y 32 bit, gall fod yn unrhyw un o'r rhain, neu ni fyddai gennym ddigon o 271 00:25:03,610 --> 00:25:05,840 rhifau i gynrychioli pob un o'r cymeriadau. 272 00:25:05,840 --> 00:25:09,110 Felly, os ydych yn cael y 32 bit, gallai fod yn 64 bit, gallai fod yn y darn 128. 273 00:25:09,110 --> 00:25:13,990 Gallai unrhyw un o'r darnau yn y darn sy'n gwahaniaethu rhwng llythrennau bach priflythyren a. 274 00:25:13,990 --> 00:25:18,350 Ni ddylai angen i mi wybod ei bod yn y 32 bit. 275 00:25:18,350 --> 00:25:27,130 Gallaf ddefnyddio'r 'a' - A i gael y rhan sy'n wahanol rhwng y ddau 276 00:25:27,130 --> 00:25:33,000 heb fod angen i ddibynnu ar y rhif hud hynny yw 32. 277 00:25:33,000 --> 00:25:38,770 Ac felly yn awr, arall yn cyfrif yn rhyfedd, ac felly beth ydw i am ei wneud? 278 00:25:38,770 --> 00:25:43,920 [Atebion Myfyrwyr, annealladwy] 279 00:25:43,920 --> 00:25:45,920 [Myfyrwyr] Beth sy'n bod? 280 00:25:45,920 --> 00:25:49,850 Byddaf yn ei wneud mewn 1 eiliad. 281 00:25:49,850 --> 00:25:55,690 Felly, yn awr os wyf am i - rwyf am wneud yn siŵr bod y cymeriad yn awr llythrennau bach, 282 00:25:55,690 --> 00:26:04,140 ac felly gallaf NEU drwy 32, a 32 ystyr 'a' - A. 283 00:26:04,140 --> 00:26:06,510 Ond hysbysiad, gan yr un rhesymu fel yr un blaenorol, os 284 00:26:06,510 --> 00:26:11,670 y llythyr eisoes yn llythrennau bach, yna ORing gan 32 yn unig yn cadw ei lythrennau bach. 285 00:26:11,670 --> 00:26:16,220 Nid yw wedi newid cymeriad gwreiddiol. 286 00:26:16,220 --> 00:26:19,910 Ond yn awr nid oes rhaid i mi beidio â dweud, "Os yw'n llythrennau bach, dim ond anghofio am y peth, 287 00:26:19,910 --> 00:26:23,650 os yw'n priflythyren, yna ei newid. " 288 00:26:23,650 --> 00:26:26,900 Mae'n llawer mwy cyfleus i wneud hyn. 289 00:26:26,900 --> 00:26:33,190 [Myfyrwyr] A fyddai y strategaeth honno o dynnu i ffwrdd y priflythyren o'r gwaith lythrennau bach pe na bai'n 32? 290 00:26:33,190 --> 00:26:35,330 Os oedd, fel, 34 neu rywbeth? 291 00:26:35,330 --> 00:26:41,840 Felly, mae angen i chi wybod bod y gwahaniaeth rhwng y 2 yw -? >> 1 did. 292 00:26:41,840 --> 00:26:49,840 Gallai fod yn fwy nag 1 did, ar yr amod fod yr holl o'r darnau isod y sefyllfa hon yr un fath. 293 00:26:49,840 --> 00:26:58,500 Felly mae angen o leiaf 26 cymeriadau - neu, mae 26 o gymeriadau. 294 00:26:58,500 --> 00:27:04,590 Felly mae angen o leiaf 26 rhifau i gynrychioli'r gwahaniaeth - 295 00:27:04,590 --> 00:27:07,650 Y gwahaniaeth rhwng A a 'a' fod yn o leiaf 26, 296 00:27:07,650 --> 00:27:10,760 neu fel arall ni fyddem wedi cynrychioli holl rifau cyfalaf. 297 00:27:10,760 --> 00:27:18,630 Mae hynny'n golygu bod A, os ydym yn dechrau am 1, mae'n mynd i ddefnyddio pob un o'r darnau, 298 00:27:18,630 --> 00:27:23,900 pob un o'r rhain 5 cyntaf darnau, i gynrychioli popeth drwy Z. 299 00:27:23,900 --> 00:27:32,170 Dyna pam y darn nesaf, neu y darn, y rhan nesaf yw'r un sydd wedi dewis i wahaniaethu rhwng A a 'a.' 300 00:27:32,170 --> 00:27:40,930 Dyna hefyd pam, yn y tabl ASCII, mae 5 symbolau llythrennau gwahanu cyfalaf o lythrennau bach. 301 00:27:40,930 --> 00:27:49,050 Gan mai'r rheiny yw'r symbolau, y 5 ychwanegol sy'n dod i fyny 32 oedd y gwahaniaeth rhyngddynt. 302 00:27:49,050 --> 00:27:51,840 [Myfyrwyr] Felly gallem ei wneud, oherwydd ASCII gynlluniwyd y ffordd honno. 303 00:27:51,840 --> 00:27:57,280 Ydw. Ond ASCII - gallai'r gwahaniaeth hefyd fod y ddau o'r rhain ddarnau. 304 00:27:57,280 --> 00:28:12,040 Fel, os yw A yn oedd 10000001, a 'a' oedd 11100001 - yr wyf yn anghofio, beth bynnag. 305 00:28:12,040 --> 00:28:18,100 Ond pe bai hyn, yna gallem yn dal i ddefnyddio 'a' - A. 306 00:28:18,100 --> 00:28:22,650 Dim ond yn awr y gwahaniaeth rhwng A a 'a' yn dal i fod y 2 ddarnau. 307 00:28:22,650 --> 00:28:32,240 Rwy'n credu ei fod wedi ysgrifennu 48. A yw'n 32 + 64? Rwy'n credu ei fod? 308 00:28:32,240 --> 00:28:40,160 Byddai'n dal yn 2 darnau, pob un cymeriad, fel, Z a z, K a k, 309 00:28:40,160 --> 00:28:45,160 byddent yn dal i gael y darnau yn union yr un a osodwyd ac eithrio ar gyfer y 2 ddarnau. 310 00:28:45,160 --> 00:28:48,870 Felly, cyn belled â bod bob amser yn wir, ni waeth os ydym yn defnyddio ASCII neu ryw system arall, 311 00:28:48,870 --> 00:28:53,050 cyn belled â bod dim ond nifer penodol o ddarnau sy'n wahanol ar gyfer pob cymeriad, 312 00:28:53,050 --> 00:28:55,050 yna mae hynny'n gweithio iawn. 313 00:28:55,050 --> 00:29:06,110 Dim ond bod 32 a sefydlwyd gan ei fod yr un cyntaf gallem o bosibl defnyddio. >> Cool. 314 00:29:06,110 --> 00:29:14,520 Dwi'n tueddu i well gennych, rhag ofn nad ydych wedi gweld, os yw'r bloc yn unig un llinell, 315 00:29:14,520 --> 00:29:24,280 gallwch gael gwared ar y braces cyrliog, ac felly yr wyf yn tueddu i ffafrio gwneud hyn. 316 00:29:24,280 --> 00:29:34,010 Hefyd, eich bod yn gwybod sut y gallwn wneud pethau fel s [i] + = 1? 317 00:29:34,010 --> 00:29:41,090 Gallwch hefyd wneud s [i] bitwise A = 32. 318 00:29:41,090 --> 00:29:46,400 Ac bitwise OR = 32. 319 00:29:46,400 --> 00:29:51,490 Hefyd, cyfrif mod 2 == 0. 320 00:29:51,490 --> 00:30:00,900 Felly cofiwch hynny - ni fyddaf yn ei ysgrifennu - unrhyw werth nad yw'n sero yn wir, a 0 yn ffug. 321 00:30:00,900 --> 00:30:07,880 Felly, "os cyfrif mod 2 == 0" yr un fath â dweud "os nad cyfrif mod 2." 322 00:30:07,880 --> 00:30:11,580 Rwyf debyg y byddai wedi gwrthdroi dim ond y llinellau a dywedodd, "os cyfrif mod 2, 323 00:30:11,580 --> 00:30:15,350 yn y NEU 1, arall y mae'r AC 1, "fel nad oedd angen i mi y" peidio. " 324 00:30:15,350 --> 00:30:18,650 Ond mae hyn yn gweithio'n llawn cystal. 325 00:30:18,650 --> 00:30:25,660 A beth arall y gallaf ei wneud yma? 326 00:30:25,660 --> 00:30:29,060 Gallech eu cyfuno gyda deiran os ydych chi eisiau, ond yna byddai hynny'n unig yn gwneud pethau anniben 327 00:30:29,060 --> 00:30:33,770 ac mae'n debyg yn fwy anodd ei ddarllen, felly ni fyddwn yn gwneud hynny. 328 00:30:33,770 --> 00:30:37,330 Dylai unrhyw un gennych unrhyw awgrymiadau eraill? 329 00:30:37,330 --> 00:30:41,580 Ai dyna'r cyfan y broblem gofynnodd amdano? Oh yeah. 330 00:30:41,580 --> 00:30:51,070 Felly, yn cael gwared ar y llinellau gwag, yn awr byddwn yn argraffu f,% s yw'r un ar gyfer llinynnau, 331 00:30:51,070 --> 00:30:56,620 Byddwn yn argraffu f, s. 332 00:30:56,620 --> 00:30:59,330 Nawr gadewch i ni redeg. A wnes i wneud unrhyw beth o'i le? 333 00:30:59,330 --> 00:31:03,200 Dyna \ "; wyf am gael n. 334 00:31:03,200 --> 00:31:07,840 Iawn. Nawr byddwn yn ei rhedeg. Bydd yn debyg gweiddi arna i. 335 00:31:07,840 --> 00:31:11,250 Strlen yn string.h. 336 00:31:11,250 --> 00:31:14,290 Felly, mae hyn yw'r peth braf am Clang mae'n dweud wrthych beth 'i' yn, 337 00:31:14,290 --> 00:31:19,140 Cyngor Gwynedd yn lle a dim ond dweud, "Hey, rydych yn anghofio rhywbeth, nid wyf yn gwybod beth oedd." 338 00:31:19,140 --> 00:31:29,220 Ond bydd hyn yn dweud wrthyf, "Rydych yn golygu i gynnwys string.h." 339 00:31:29,220 --> 00:31:32,130 Felly doeddwn i ddim yn brydlon ar gyfer unrhyw beth, felly nid yw'n dweud unrhyw beth. 340 00:31:32,130 --> 00:31:42,540 Ond byddwn yn gwneud eu hesiampl, "Diolch 4 ychwanegu". 341 00:31:42,540 --> 00:31:47,880 Mae hynny'n edrych yn iawn. Hwre. 342 00:31:47,880 --> 00:31:52,370 Felly dychwelyd i'ch prif, nid wyf erioed bron yn ei wneud. 343 00:31:52,370 --> 00:31:57,110 Mae'n ddewisol. A yw prif swyddogaeth yn unig y mae'n ddewisol. 344 00:31:57,110 --> 00:32:07,140 Os na fyddwch yn dychwelyd unrhyw beth o brif, mae'n cymryd yn ganiataol eich bod yn golygu dychwelyd 0. 345 00:32:07,140 --> 00:32:13,070 Cwestiynau? 346 00:32:13,070 --> 00:32:20,980 Iawn. Felly yn awr, ail broblem. 347 00:32:20,980 --> 00:32:24,810 "Dwyn i gof o ddarlith 2 wythnos yn ail cyfnewid gwerthoedd 2 newidynnau 'trwy basio 348 00:32:24,810 --> 00:32:30,780 Nid yw hynny 2 newidynnau i swyddogaeth (hyd yn oed os gelwir cyfnewid) yn union yn gweithio, o leiaf nid heb 'awgrymiadau'. " 349 00:32:30,780 --> 00:32:37,020 Ac yn anwybyddu arwyddion tan i ni gael iddynt. 350 00:32:37,020 --> 00:32:40,070 Rydym yn awyddus i gyfnewid 2 newidynnau; nid ydym yn defnyddio swyddogaeth i wneud hynny. 351 00:32:40,070 --> 00:32:43,410 Rydym yn dal yn mynd i wneud hynny yn y brif fel y mae'n ei ddweud. 352 00:32:43,410 --> 00:32:48,360 Ond i ddefnyddio hynny 2 newidynnau, nid ydym am i ddefnyddio newidyn dros dro. 353 00:32:48,360 --> 00:32:50,770 Mae 2 ffordd o wneud hyn. 354 00:32:50,770 --> 00:32:56,310 Gallwch wneud hyn drwy ddefnyddio eich gweithredwyr deuaidd traddodiadol. 355 00:32:56,310 --> 00:33:00,180 Felly, mae unrhyw un yn gwybod yn ffordd gyflym ac yn frwnt o wneud hynny? 356 00:33:00,180 --> 00:33:07,650 Gallai fod mewn gwirionedd yn cymryd munud o feddwl. Os oes gen i - 357 00:33:07,650 --> 00:33:12,130 'N annhymerus' yn gosod y broblem i fyny fel eu gofyn. Felly os gen i 2 newidynnau, A, sydd ychydig yn gyfanrif 358 00:33:12,130 --> 00:33:17,800 bod yn rhoi i mi, a B amrywiol swm, sef un o gyfanrif fy mod yn rhoi. 359 00:33:17,800 --> 00:33:22,700 Felly os oes gen y 2 newidynnau, yn awr yr wyf am eu cyfnewid. 360 00:33:22,700 --> 00:33:31,550 Mae'r traddodiadol, gan ddefnyddio eich gweithredwyr deuaidd rheolaidd, yr wyf yn golygu, fel +, -, ÷. 361 00:33:31,550 --> 00:33:36,630 Nid yw gweithredwyr bitwise sy'n gweithredu ar deuaidd. 362 00:33:36,630 --> 00:33:39,600 Felly ddefnyddio -, +, ÷, a phawb. 363 00:33:39,600 --> 00:33:52,980 Gallem gyfnewid drwy wneud rhywbeth fel a = a + b, ac b = a - b, a = a - b. 364 00:33:52,980 --> 00:34:04,260 Felly, pwyll gwirio, ac yna byddwn yn gweld pam mae hynny'n gweithio. 365 00:34:04,260 --> 00:34:13,320 Lets 'ddeud a = 7, b = 3, yna a + b yn mynd i fod yn 10. 366 00:34:13,320 --> 00:34:18,820 Felly, rydym yn awr yn gosod 10 =, ac yna rydym yn ei wneud b = a - b. 367 00:34:18,820 --> 00:34:30,250 Felly, rydym yn ei wneud b = a - b, sydd yn mynd i fod yn 7, ac yn b = a - b unwaith eto, 368 00:34:30,250 --> 00:34:38,650 neu a = a - b. Pa yn mynd i fod yn 10-7 sydd 3. 369 00:34:38,650 --> 00:34:44,850 Felly nawr, yn gywir, 'a' yn 7, b yn 3, ac yn awr yn b 7 a 'a' yw 3. 370 00:34:44,850 --> 00:34:48,679 Felly y math hwnnw o wneud synnwyr; 'a' yw cyfuniad o rifau 2. 371 00:34:48,679 --> 00:34:53,000 Ar y pwynt hwn, 'a' yw'r cyfuniad, ac yna rydym yn tynnu allan y b gwreiddiol, 372 00:34:53,000 --> 00:34:56,860 ac yna rydym yn tynnu allan beth oedd y gwreiddiol 'a.' 373 00:34:56,860 --> 00:35:01,150 Ond nid yw hyn yn gweithio ar gyfer pob rhif. 374 00:35:01,150 --> 00:35:08,880 I weld hyn, gadewch i ni ystyried system, felly byddwn fel arfer yn meddwl am gyfanrifau fel 32 catiau. 375 00:35:08,880 --> 00:35:13,050 Gadewch i ni weithio ar rywbeth sy'n dim ond tebyg i 4 ddarnau. 376 00:35:13,050 --> 00:35:15,450 Rwy'n gobeithio fy mod yn dod o hyd i enghraifft dda ar hyn o bryd. 377 00:35:15,450 --> 00:35:18,680 Felly, yr wyf yn gwybod, bydd hyn yn hawdd. 378 00:35:18,680 --> 00:35:26,720 Lets 'ddeud o'n 2 niferoedd yn 1111, a 1111, felly rydym yn deuaidd ar hyn o bryd. 379 00:35:26,720 --> 00:35:34,630 Mewn degolion gwirioneddol, os ydych am i feddwl am y peth y ffordd honno, a. = 15 a b = 15 380 00:35:34,630 --> 00:35:37,630 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, 381 00:35:37,630 --> 00:35:41,140 ond yr wyf yn gwneud hynny fel hyn. 382 00:35:41,140 --> 00:35:47,100 Gadewch i ni beidio eu gwneud yn yr un rhifau. Gadewch i ni wneud 1111 a 0001. 383 00:35:47,100 --> 00:35:51,860 Felly, a = 15 a b = 1. 384 00:35:51,860 --> 00:35:57,670 Ar ôl i ni eu cyfnewid, rydym yn disgwyl 'a' i fod yn 1 a b i fod yn 15. 385 00:35:57,670 --> 00:36:01,780 Felly, ein cam cyntaf yw a = a + b. 386 00:36:01,780 --> 00:36:08,770 Mae ein rhifau dim ond 4 darnau eang, felly 'a,' sef 1111, + b, sef 0001, 387 00:36:08,770 --> 00:36:16,780 yn mynd i roi diwedd ar i fyny yn 10,000, ond dim ond gael 4 ddarnau. 388 00:36:16,780 --> 00:36:22,540 Felly nawr a = 0. 389 00:36:22,540 --> 00:36:34,080 Ac yn awr rydym yn awyddus i osod b = a - b - mewn gwirionedd, mae hyn yn dal i weithio allan yn berffaith. 390 00:36:34,080 --> 00:36:39,630 a = a - gadewch i ni weld os yw hyn yn gweithio allan yn berffaith - b. 391 00:36:39,630 --> 00:36:53,720 Felly, yna b = 0 - 1, a fyddai'n dal i fod yn 15, ac yna a = a - b, a fyddai'n 1. 392 00:36:53,720 --> 00:36:56,210 Efallai fod hyn yn gweithio. 393 00:36:56,210 --> 00:36:59,020 Rwy'n teimlo fel oes rheswm nad yw'n gweithio gan ddefnyddio rheolaidd. 394 00:36:59,020 --> 00:37:06,400 Iawn, felly mae gweithio ar y dybiaeth nad yw'n gweithio gyda gweithrediadau deuaidd rheolaidd, 395 00:37:06,400 --> 00:37:15,040 a byddaf yn edrych am - byddaf yn Google i weld os yw hynny'n wir. 396 00:37:15,040 --> 00:37:23,490 Felly rydym eisiau ei wneud gan ddefnyddio gweithredwyr bitwise, ac y cliw yma yn XOR. 397 00:37:23,490 --> 00:37:28,780 Felly, cyflwyno XOR (^) os nad ydych wedi ei weld eto. 398 00:37:28,780 --> 00:37:34,610 Mae'n, unwaith eto, gweithredwr bitwise felly mae'n gweithredu fesul tipyn, a it's - 399 00:37:34,610 --> 00:37:39,910 Os oes gennych y darnau 0 ac 1, yna bydd hyn yn 1. 400 00:37:39,910 --> 00:37:45,230 Os oes gennych 1 darnau a 0, bydd yn cael ei 1, mae gennych y 0 darnau a 0 bydd yn cael 0, 401 00:37:45,230 --> 00:37:47,640 ac os oes gennych 1 darnau ac 1 bydd yn fod yn 0. 402 00:37:47,640 --> 00:37:56,180 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. 403 00:37:56,180 --> 00:37:59,320 Byddai NEU wedi hyn fod yn 1, byddai XOR gael y fod yn 0. 404 00:37:59,320 --> 00:38:02,250 Felly, rydym yn mynd i eisiau defnyddio XOR yma. 405 00:38:02,250 --> 00:38:09,960 Meddyliwch am y peth am funud; Rydw i'n mynd i Google. 406 00:38:09,960 --> 00:38:16,230 Wel, na allwch ddarllen hynny; wyf ar hyn o bryd ar y dudalen algorithm gyfnewid XOR. 407 00:38:16,230 --> 00:38:21,340 Y gobaith yw y bydd hyn yn egluro pam yr wyf yn Methu â - 408 00:38:21,340 --> 00:38:34,190 Dyma'r union algorithm yr ydym newydd ei wneud. 409 00:38:34,190 --> 00:38:37,330 Dwi dal ddim yn gweld pam - mae'n rhaid i mi wedi dewis dim ond esiampl ddrwg, 410 00:38:37,330 --> 00:38:44,940 ond mae hyn yn achos lle 'a' ddigwyddodd i fod yn 0, ar ôl cael i 5 darnau, felly nawr 'a' yw 0, 411 00:38:44,940 --> 00:38:48,730 bod yn hyn a elwir "gorlif cyfanrif." 412 00:38:48,730 --> 00:38:54,370 Yn ôl Wikipedia, "Yn wahanol i'r cyfnewid XOR, mae hyn yn amrywiad ei gwneud yn ofynnol ei fod yn defnyddio rhai dulliau 413 00:38:54,370 --> 00:38:59,780 i warantu nad yw x + y yn achosi gorlif cyfanrif. " 414 00:38:59,780 --> 00:39:08,350 Felly, mae hyn yn cael problemau; roedd hyn yn gorlif cyfanrif, ond yr wyf wedi gwneud rhywbeth o'i le. 415 00:39:08,350 --> 00:39:10,520 Dwi ddim yn siŵr. Byddaf yn ceisio dod o hyd i un arall. 416 00:39:10,520 --> 00:39:13,640 [Myfyrwyr] Wel, ddim yn gorlifo cyfanrif pan fyddwch yn ceisio rhoi nifer i mewn 'na 417 00:39:13,640 --> 00:39:16,640 fwy na swm y darnau yr ydych wedi dyrannu? 418 00:39:16,640 --> 00:39:23,730 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. 419 00:39:23,730 --> 00:39:26,690 Ond y rhan 5 yn unig yn cael ei dorri i ffwrdd, yeah. 420 00:39:26,690 --> 00:39:28,970 Mae'n bosibl bod hyn mewn gwirionedd - 421 00:39:28,970 --> 00:39:33,010 [Myfyrwyr] yw hynny'n taflu i chi gamgymeriad, neu yn gwneud hynny - byddai hynny'n taflu gwall? 422 00:39:33,010 --> 00:39:40,720 Rhif Felly, does dim camgymeriad. Pan fyddwch yn cyrraedd y lefel gwasanaeth, ychydig yn arbennig 423 00:39:40,720 --> 00:39:47,020 rhywle yn gosod y dywedodd nad oedd yn orlif, ond yn C i chi fath o nid yn unig yn delio â hynny. 424 00:39:47,020 --> 00:39:55,160 Ni allwch mewn gwirionedd yn delio ag ef oni bai eich bod yn defnyddio cyfarwyddiadau gwasanaeth arbennig yn C. 425 00:39:55,160 --> 00:39:58,110 Gadewch i ni feddwl am gyfnewid XOR. 426 00:39:58,110 --> 00:40:02,220 Ac yr wyf yn credu y gallai'r erthygl Wikipedia hefyd wedi bod yn dweud hynny - 427 00:40:02,220 --> 00:40:07,310 Felly, mae hefyd yn magu rhifyddeg modiwlaidd, felly rhaid mi yn, mewn theori, yn gwneud rhifyddeg modiwlaidd 428 00:40:07,310 --> 00:40:11,160 pan ddywedais bod 0 - 1 yn 15 eto. 429 00:40:11,160 --> 00:40:15,410 Felly, a allai mewn gwirionedd - ar brosesydd rheolaidd sy'n o 0 - 1 = 15. 430 00:40:15,410 --> 00:40:20,430 Ers i ni yn y pen draw ar 0, rydym yn tynnu 1, felly, yna dim ond lapio yn ôl o gwmpas i 1111. 431 00:40:20,430 --> 00:40:28,930 Felly, gallai hyn algorithm gweithio mewn gwirionedd, yr a + b, y a - b, b - a, gallai fod yn iawn. 432 00:40:28,930 --> 00:40:34,030 Ond mae rhai proseswyr nad ydynt yn gwneud hynny, ac felly ni fyddai'n iawn yn y rhai penodol. 433 00:40:34,030 --> 00:40:39,880 Bydd cyfnewid XOR yn gweithio ar unrhyw brosesydd. Iawn. 434 00:40:39,880 --> 00:40:42,280 Y syniad yw ei fod yn fod i fod yr un fath, er. 435 00:40:42,280 --> 00:40:50,120 Pan fyddwn yn defnyddio XOR i rhywsut gael y wybodaeth o'r ddau i 1 o newidynnau, 436 00:40:50,120 --> 00:40:54,120 ac yna dynnu allan y wybodaeth o'r newidynnau unigol unwaith eto. 437 00:40:54,120 --> 00:41:04,330 Felly, oes rhywun a syniadau / yr ateb? 438 00:41:04,330 --> 00:41:14,540 [Ateb Myfyrwyr, annealladwy] 439 00:41:14,540 --> 00:41:22,220 Felly, dylai hyn weithio, a hefyd, XOR yn cymudol. 440 00:41:22,220 --> 00:41:27,620 Waeth mha drefn y 2 rhifau yn digwydd bod mewn hyd yma, 441 00:41:27,620 --> 00:41:30,100 y canlyniad hwn yn mynd i fod yr un fath. 442 00:41:30,100 --> 00:41:35,800 Felly ^ b yn b ^ a. 443 00:41:35,800 --> 00:41:51,860 Efallai y byddwch hefyd yn gweld hyn yn ysgrifenedig fel ^ = b, b ^ = a, a ^ = b eto. 444 00:41:51,860 --> 00:42:00,200 Felly, mae hyn yn iawn, ac er mwyn gweld pam mae hyn yn gweithio, meddwl am y darnau. 445 00:42:00,200 --> 00:42:10,400 Gan ddefnyddio nifer eithaf bychan, gadewch i ni ddweud 11,001, a 01,100. 446 00:42:10,400 --> 00:42:12,790 Felly dyma 'a', mae hyn yn b. 447 00:42:12,790 --> 00:42:15,540 Felly ^ = b. 448 00:42:15,540 --> 00:42:22,380 Rydym yn mynd i gael eu gosod 'a' = i XOR y 2 beth. 449 00:42:22,380 --> 00:42:32,920 Felly, 1 ^ 0 yw 1, 1 ^ 1 yw 0; 0 ^ 1 yw 1, a 0 ^ 0 yn 0, 1 ^ 0 yw 1. 450 00:42:32,920 --> 00:42:37,380 Felly 'a,' os ydych yn edrych ar y rhif degol, mae'n mynd i fod - 451 00:42:37,380 --> 00:42:41,160 nad ydych yn mynd i weld llawer o berthynas rhwng y gwreiddiol 'a' a'r newydd 'a,' 452 00:42:41,160 --> 00:42:45,600 ond o edrych ar y darnau, 'a' yn awr fel rhwyll o'r wybodaeth 453 00:42:45,600 --> 00:42:49,970 o'r ddau y gwreiddiol 'a' a'r b gwreiddiol. 454 00:42:49,970 --> 00:42:57,930 Felly, os ydym yn cymryd b ^ a, gwelwn y byddwn yn y pen draw ar y gwreiddiol 'a.' 455 00:42:57,930 --> 00:43:08,910 Ac os ydym yn cymryd y gwreiddiol 'a' ^ y newydd 'a,' rydym yn gweld yn y pen i fyny ar y b gwreiddiol. 456 00:43:08,910 --> 00:43:18,380 Felly (a ^ b) ^ b = y gwreiddiol 'a.' 457 00:43:18,380 --> 00:43:27,910 Ac (a ^ b) ^ a = b gwreiddiol. 458 00:43:27,910 --> 00:43:37,010 Mae - ffordd arall o weld hyn yn XOR unrhyw beth ei hun bob amser yn 0. 459 00:43:37,010 --> 00:43:45,020 Felly, 1101 ^ 1101, yr holl ddarnau yn mynd i fod yr un fath. 460 00:43:45,020 --> 00:43:47,920 Felly, nid oes byth yn mynd i fod yn achos lle mae 1 yn o 0 ac mae'r llall yn 1. 461 00:43:47,920 --> 00:43:51,080 Felly, mae hyn yn 0000. 462 00:43:51,080 --> 00:43:57,240 Mae'r un peth â hyn. (A ^ b) ^ b yn debyg i ^ (b ^ b). 463 00:43:57,240 --> 00:44:03,680 (B ^ b) yn mynd i fod yn 0, a ^ 0 yn unig yn mynd i fod yn ',' gan fod yr holl ddarnau yn 0. 464 00:44:03,680 --> 00:44:08,050 Felly, yr unig rai sy'n mynd i fod yn lle 'a' yn wreiddiol 1 - cael rhai. 465 00:44:08,050 --> 00:44:12,070 Ac mae'r un syniad yma; Rwy'n eithaf siwr ei fod yn hefyd yn cymudol. 466 00:44:12,070 --> 00:44:17,590 Yeah. Wnes i ddim dweud cyn ei bod yn cymudol. 467 00:44:17,590 --> 00:44:24,680 Mae'r ^ 'a,' ac mae'n cysylltiadol, felly, yn awr (b ^ a) ^ a. 468 00:44:24,680 --> 00:44:28,970 A gallwn wneud b ^ (a ^ a). 469 00:44:28,970 --> 00:44:31,540 Ac felly eto, rydym yn cael y b gwreiddiol. 470 00:44:31,540 --> 00:44:37,120 Felly 'a' yn awr yn y cyfuniad o 'a' a b gyda'i gilydd. 471 00:44:37,120 --> 00:44:49,660 Gan ddefnyddio ein combo newydd 'a' rydym yn dweud b = combo 'a' ^ y b gwreiddiol, rydym yn cael y gwreiddiol 'a.' 472 00:44:49,660 --> 00:45:05,170 Ac yn awr mae combo = 'a' ^ y b newydd, a oedd y gwreiddiol - neu sydd nawr beth oedd 'a' neu b. 473 00:45:05,170 --> 00:45:13,620 Dyna yr achos hwn i lawr yma. Mae hyn yn b =, b oed. 474 00:45:13,620 --> 00:45:16,550 Felly nawr mae popeth yn ôl yn y drefn cyfnewid. 475 00:45:16,550 --> 00:45:22,960 Os ydym mewn gwirionedd yn edrych ar y darnau, b = a ^ b, yn mynd i XOR y 2, 476 00:45:22,960 --> 00:45:33,920 ac mae'r ateb yn mynd i fod yn hyn, ac yna a = a ^ b yn XORing y 2 a'r ateb yw hyn. 477 00:45:33,920 --> 00:45:41,090 Cwestiynau? Iawn. Felly mae'r un olaf yn braidd yn llawer mwy anodd. 478 00:45:41,090 --> 00:45:43,180 [Myfyrwyr] Rwy'n credu ei fod ganddo gwestiwn am y peth. >> O, sori. 479 00:45:43,180 --> 00:45:49,380 [Myfyrwyr] Beth mewn gwirionedd yn gyflymach? Os ydych yn defnyddio hyn XOR, neu os ydych chi'n datgan amrywiol newydd? 480 00:45:49,380 --> 00:45:55,190 Felly beth yn union sy'n gyflymach, datgan amrywiol newydd neu ddefnyddio XOR i gyfnewid? 481 00:45:55,190 --> 00:45:59,600 Yr ateb yw, yn ôl pob tebyg, newidyn dros dro. 482 00:45:59,600 --> 00:46:05,780 Ac mae hynny oherwydd unwaith y bydd wedi llunio i lawr - felly ar y lefel cynulliad, 483 00:46:05,780 --> 00:46:12,320 nid oes y fath beth â newidynnau lleol neu unrhyw newidynnau dros dro neu unrhyw un o'r pethau hyn. 484 00:46:12,320 --> 00:46:16,060 Maent yn unig yn hoffi - mae cof, ac mae cofrestri. 485 00:46:16,060 --> 00:46:20,920 Cofrestrau yw lle mae pethau'n mynd ati digwydd. 486 00:46:20,920 --> 00:46:24,750 Nad ydych yn ychwanegu 2 beth yn cof; byddwch yn ychwanegu 2 beth yn y cofrestri. 487 00:46:24,750 --> 00:46:28,160 A ydych yn dod â phethau o'r cof i mewn cofrestrau i'w yna ychwanegwch nhw, 488 00:46:28,160 --> 00:46:33,180 ac yna efallai y byddwch yn eu rhoi yn ôl i mewn cof, ond mae'r holl gamau sy'n digwydd yn y cofrestri. 489 00:46:33,180 --> 00:46:38,750 Felly, pan fyddwch chi'n defnyddio'r ymagwedd amrywiol tuag dros dro, fel arfer yr hyn sy'n digwydd yw 490 00:46:38,750 --> 00:46:42,810 y 2 rhifau eisoes yn cofrestri. 491 00:46:42,810 --> 00:46:46,570 Ac yna, o hynny ymlaen, ar ôl i chi cyfnewid nhw, 492 00:46:46,570 --> 00:46:51,540 bydd yn dim ond dechrau defnyddio'r gofrestr arall. 493 00:46:51,540 --> 00:46:56,510 Unrhyw le i chi wedi bod yn defnyddio b, fe 'i jyst yn defnyddio'r gofrestr a oedd eisoes yn storio' a. ' 494 00:46:56,510 --> 00:47:02,180 Felly nid oes angen i wneud unrhyw beth i wneud mewn gwirionedd y cyfnewid. Yeah? 495 00:47:02,180 --> 00:47:05,690 [Myfyrwyr] Ond mae hefyd yn cymryd mwy o gof, dde? 496 00:47:05,690 --> 00:47:10,280 Yn unig y bydd yn cymryd mwy o gof os oes angen i storio y newidyn dros dro. 497 00:47:10,280 --> 00:47:14,830 Fel os ydych yn ddiweddarach defnyddio y newidyn dros dro unwaith eto yn rhywle, 498 00:47:14,830 --> 00:47:18,920 yna - neu os ydych yn neilltuo rhywbeth i'r newidyn dros dro. 499 00:47:18,920 --> 00:47:24,630 Felly, os ar unrhyw bwynt mewn amser ',' b mewn adeiladau dros werthoedd gwahanol neu rywbeth, 500 00:47:24,630 --> 00:47:30,680 yna mae'n mynd i gael lleoliadau gwahanol er cof, ond mae'n wir bod 501 00:47:30,680 --> 00:47:34,800 mae yna lawer o newidynnau lleol a fydd ond yn bodoli mewn cofrestri. 502 00:47:34,800 --> 00:47:44,370 Os felly, nid yw byth yn rhoi ar gof, ac felly nad ydych erioed yn gwastraffu cof. 503 00:47:44,370 --> 00:47:58,620 Iawn. Cwestiwn olaf ychydig yn fwy. 504 00:47:58,620 --> 00:48:04,850 Felly dyma, yn yr offer CS50, mae geiriadur. 505 00:48:04,850 --> 00:48:12,390 A'r rheswm am hyn yw oherwydd [?? B66] yn gwirydd sillafu lle byddwch yn ysgrifennu 506 00:48:12,390 --> 00:48:15,780 ddefnyddio tablau hash neu gais neu ryw strwythur data. 507 00:48:15,780 --> 00:48:22,660 Rydych yn mynd i gael ei ysgrifennu gwirydd sillafu, a ydych yn mynd i fod yn defnyddio'r geiriadur hwn i wneud hynny. 508 00:48:22,660 --> 00:48:28,280 Ond ar gyfer y broblem hon, rydym yn jyst yn mynd i edrych i fyny i weld a oes un gair yn y geiriadur. 509 00:48:28,280 --> 00:48:31,250 Felly, yn lle storio'r geiriadur cyfan yn rhywfaint o strwythur data 510 00:48:31,250 --> 00:48:35,180 ac yna edrych dros ddogfen gyfan i weld a oes unrhyw beth wedi camsillafu, 511 00:48:35,180 --> 00:48:38,490 rydym yn unig am ddod o hyd 1 gair. Felly, gallwn ni jyst sganio dros y geiriadur cyfan 512 00:48:38,490 --> 00:48:44,300 a byth os byddwn yn dod o hyd i'r gair yn y geiriadur cyfan, yna nid oedd yno. 513 00:48:44,300 --> 00:48:52,150 Os byddwn yn sganio dros y geiriadur cyfan ac yn gweld y gair, yna rydym yn dda, gwnaethom ei ganfod. 514 00:48:52,150 --> 00:48:56,580 Mae'n dweud yma bod yn awyddus i ddechrau edrych ar C ffeil trin swyddogaeth, 515 00:48:56,580 --> 00:48:59,930 ers i ni eisiau darllen y geiriadur, 516 00:48:59,930 --> 00:49:07,680 ond byddaf yn rhoi awgrym yma ynglŷn â pha swyddogaethau y dylech feddwl amdano. 517 00:49:07,680 --> 00:49:11,510 'N annhymerus' eu hysgrifennu ar Fannau. 518 00:49:11,510 --> 00:49:20,490 Felly, y prif rai y byddwch am edrych ar eu f agored ac yna, yn anochel, f gau, 519 00:49:20,490 --> 00:49:26,540 a fydd yn mynd ar ddiwedd eich rhaglen, a f f sgan. 520 00:49:26,540 --> 00:49:31,060 Gallech hefyd ddefnyddio f darllen, ond mae'n debyg nad oes eisiau 521 00:49:31,060 --> 00:49:34,200 oherwydd hynny - nad ydych yn darfod i fyny angen hynny. 522 00:49:34,200 --> 00:49:41,880 F sgan f yr hyn yr ydych yn mynd i gael ei defnyddio i sganio dros y geiriadur. 523 00:49:41,880 --> 00:49:46,370 Ac felly nid oes angen i godio'r i fyny 'r ateb, nid yn ceisio ac yn hoffi ffug-god eich ffordd 524 00:49:46,370 --> 00:50:05,200 i ateb, ac yna byddwn yn ei drafod. 525 00:50:05,200 --> 00:50:14,110 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 526 00:50:14,110 --> 00:50:18,250 Byddai I - yr wyf fel arfer - os nad ydych wedi gweld eto, nid wyf yn gwybod os ydych yn gwneud yn y dosbarth, 527 00:50:18,250 --> 00:50:23,490 ond mae gan ddyn, felly y tudalennau dyn, yn eithaf defnyddiol ar gyfer edrych ar 'n bert lawer unrhyw swyddogaeth. 528 00:50:23,490 --> 00:50:27,330 Felly gallaf ei wneud, fel, f dyn, sgan f. 529 00:50:27,330 --> 00:50:32,300 Mae hwn bellach yw'r wybodaeth am y teulu f sgan o swyddogaethau. 530 00:50:32,300 --> 00:50:37,070 Gallwn hefyd wneud f dyn, yn agored, a bydd hynny'n rhoi i mi manylion hynny. 531 00:50:37,070 --> 00:50:40,750 Felly, os ydych yn gwybod beth swyddogaeth yr ydych yn defnyddio, neu os ydych yn darllen cod 532 00:50:40,750 --> 00:50:43,000 a byddwch yn gweld rhywfaint o swyddogaeth a ydych chi fel, "Beth mae hyn yn ei wneud?" 533 00:50:43,000 --> 00:50:45,280 Dim ond swyddogaeth dyn enw. 534 00:50:45,280 --> 00:50:47,340 Mae cwpl o enghreifftiau rhyfedd lle gallai rhaid i chi ddweud 535 00:50:47,340 --> 00:50:51,620 hoffi. dyn 2 bod, enw swyddogaeth neu ddyn 3 bod enw swyddogaeth, 536 00:50:51,620 --> 00:50:58,230 ond dim ond rhaid i wneud hynny os nad yw dyn enw swyddogaeth yn digwydd i weithio y tro cyntaf. 537 00:50:58,230 --> 00:51:03,010 [Myfyrwyr] Felly rwy'n darllen y dudalen dyn am agor, ond rwy'n dal yn ddryslyd ar sut i'w ddefnyddio a'r rhaglen. 538 00:51:03,010 --> 00:51:06,170 Iawn. Mae llawer o'r tudalennau dyn yn llai na defnyddiol. 539 00:51:06,170 --> 00:51:08,470 Maent yn fwy defnyddiol os ydych chi eisoes yn gwybod beth maent yn ei wneud 540 00:51:08,470 --> 00:51:12,670 ac yna 'ch jyst angen i chi gofio trefn y dadleuon neu rywbeth. 541 00:51:12,670 --> 00:51:17,640 Neu gallant roi trosolwg cyffredinol, ond mae rhai ohonynt yn hynod llethol. 542 00:51:17,640 --> 00:51:22,220 Fel f f sgan, hefyd. Mae'n rhoi gwybodaeth i chi am yr holl swyddogaethau hyn, 543 00:51:22,220 --> 00:51:28,120 ac 1 llinell i lawr yma yn digwydd i ddweud, "F f sgan yn darllen o'r pwynt ffrwd llinyn neu." 544 00:51:28,120 --> 00:51:32,360 Ond f agor. Felly, sut yr ydym yn defnyddio f agored? 545 00:51:32,360 --> 00:51:38,470 Mae'r syniad o raglen sydd angen i wneud ffeil I / O yw bod 546 00:51:38,470 --> 00:51:45,070 mae angen i chi agor y ffeil rydych am ei wneud pethau gyda, ac yn anochel, 547 00:51:45,070 --> 00:51:51,220 darllen pethau o'r ffeil a gwneud pethau gyda nhw. 548 00:51:51,220 --> 00:51:55,350 F agored hyn yr ydym yn eu defnyddio i agor y ffeil. 549 00:51:55,350 --> 00:52:04,190 Y peth rydym yn mynd yn ôl, felly, pa ffeil ydym ni eisiau agor, mae'n rhoi i ni - 550 00:52:04,190 --> 00:52:11,970 yma mae'n dweud "/ defnyddiwr / share / ngeiriadur / geiriau." 551 00:52:11,970 --> 00:52:16,740 Mae hyn yn y ffeil yr ydym am ei agor, ac rydym am ei agor - 552 00:52:16,740 --> 00:52:21,440 mae'n rhaid i ni yn benodol nodi a ydym am agor i ddarllen neu os ydym am agor i ysgrifennu. 553 00:52:21,440 --> 00:52:26,490 Mae cwpl o gyfuniadau a phethau, ond rydym am i agor hyn ar gyfer darllen. 554 00:52:26,490 --> 00:52:29,380 Rydym yn awyddus i ddarllen o'r ffeil. 555 00:52:29,380 --> 00:52:34,290 Felly beth mae hyn dychwelyd? Mae'n dychwelyd ffeil (*) seren, 556 00:52:34,290 --> 00:52:37,260 a byddaf yn dangos popeth yn y f amrywiol, felly *, 557 00:52:37,260 --> 00:52:40,840 unwaith eto, mae'n pwyntydd, ond nid ydym am i ddelio â awgrymiadau. 558 00:52:40,840 --> 00:52:46,470 Gallwch chi feddwl f fel, f yn awr y newidyn rydych chi'n mynd i'w ddefnyddio i gynrychioli y ffeil. 559 00:52:46,470 --> 00:52:49,850 Felly, os ydych chi eisiau darllen o'r ffeil, eich bod yn darllen o f. 560 00:52:49,850 --> 00:52:54,820 Os ydych am i gau ffeil, chi gau f. 561 00:52:54,820 --> 00:53:00,350 Felly, ar ddiwedd y rhaglen pan fyddwn yn anochel yn awyddus i gau'r ffeil, beth ddylem ei wneud? 562 00:53:00,350 --> 00:53:06,750 Rydym am i gau f. 563 00:53:06,750 --> 00:53:12,600 Felly, yn awr y swyddogaeth ffeil diwethaf ein bod ni'n mynd i eisiau i'w defnyddio yn sgan f, f f sgan. 564 00:53:12,600 --> 00:53:20,930 A beth a wna hynny yw ei sganio dros y ffeil chwilio am batrwm i gyd-fynd. 565 00:53:20,930 --> 00:53:39,100 O edrych ar y dudalen dyn yma, gwelwn f sgan f int, anwybyddu gwerth dychwelyd am y tro. 566 00:53:39,100 --> 00:53:45,230 Mae'r ddadl gyntaf yn y ffeil ffrwd *, felly mae'r ddadl gyntaf rydym ni'n mynd i eisiau i basio ei f. 567 00:53:45,230 --> 00:53:47,900 Rydym yn sganio dros f. 568 00:53:47,900 --> 00:53:53,680 Yr ail ddadl yn llinyn fformat. 569 00:53:53,680 --> 00:53:58,310 Byddaf yn rhoi i chi llinyn fformat ar hyn o bryd. 570 00:53:58,310 --> 00:54:05,180 Rwy'n credu ein bod yn digwydd i ddweud, 127s \ n, mae llawer o hynny'n ddiangen. 571 00:54:05,180 --> 00:54:12,490 Mae'r syniad o beth yw'r llinyn fformat yw, yn y gallwch chi feddwl am sgan f fel y gwrthwyneb i f print. 572 00:54:12,490 --> 00:54:17,160 F print Felly, f print rydym hefyd yn defnyddio'r math hwn o paramedr fformat, 573 00:54:17,160 --> 00:54:25,000 ond mewn print f yr hyn rydym yn ei wneud yw - gadewch i ni edrych ar gyfwerth. 574 00:54:25,000 --> 00:54:32,550 Felly argraffu f, ac mae mewn gwirionedd hefyd f f print, lle mae'r ddadl gyntaf yn mynd i fod yn f. 575 00:54:32,550 --> 00:54:40,980 Pan fyddwch yn argraffu f, gallem ddweud rhywbeth fel, "print 127s \ n" ac yna, os byddwn yn ei throsglwyddo o linyn, 576 00:54:40,980 --> 00:54:44,050 mae'n mynd i argraffu'r dudalen hon, llinyn ac yna llinell newydd. 577 00:54:44,050 --> 00:54:49,690 Beth 127 yn golygu, rwy'n eithaf siwr, ond dydw i erioed wedi cyfyngu fy hun iddo, 578 00:54:49,690 --> 00:54:52,470 Ni fyddech hyd yn oed angen i ddweud '127 'yn y f print, 579 00:54:52,470 --> 00:54:57,090 ond yr hyn y mae'n ei olygu yw argraffu 127 nod cyntaf. 580 00:54:57,090 --> 00:54:59,350 Felly, Rwy'n eithaf siwr mai dyna'r achos. Gallwch Google am hynny. 581 00:54:59,350 --> 00:55:03,000 Ond yn yr un nesaf rwy'n bron yn gadarnhaol, mae'n golygu bod. 582 00:55:03,000 --> 00:55:08,880 Felly, mae hyn yn argraffu 127 o nod cyntaf, ac wedyn llinell newydd. 583 00:55:08,880 --> 00:55:14,680 F f sgan yn awr, yn hytrach nag edrych ar amrywiol ac argraffu arno, 584 00:55:14,680 --> 00:55:22,620 mae'n mynd i edrych ar rai llinyn, ac yn storio'r patrwm yn y newidyn. 585 00:55:22,620 --> 00:55:26,360 Gadewch i ni mewn gwirionedd yn defnyddio f sgan mewn enghraifft wahanol. 586 00:55:26,360 --> 00:55:31,670 Felly, gadewch i ni ddweud ein bod wedi cael rhywfaint o int, x = 4, 587 00:55:31,670 --> 00:55:41,110 ac rydym yn awyddus i greu cyfres o - am greu y llinyn 588 00:55:41,110 --> 00:55:44,250 bod yn hoffi, bydd hyn yn dod i fyny yn ddiweddarach o lawer, 589 00:55:44,250 --> 00:55:49,020 rhywbeth sy'n union fel 4.jpg. 590 00:55:49,020 --> 00:55:51,870 Felly, gallai hyn fod yn rhaglen lle byddwch yn cael swm cownter, 591 00:55:51,870 --> 00:55:56,420 crynhoi gwrthsefyll i, ac yr ydych am i achub criw o ddelweddau. 592 00:55:56,420 --> 00:56:02,430 Felly rydych chi am arbed i.jpg, lle i rhyw fersiwn o'ch ddolen. 593 00:56:02,430 --> 00:56:05,500 Felly, sut rydym yn gwneud y llinyn ar gyfer y JPEG? 594 00:56:05,500 --> 00:56:11,720 Os ydych eisiau argraffu 4.jpg, gallem ddweud, f print d.jpg%, 595 00:56:11,720 --> 00:56:14,410 ac yna byddai'n argraffu ar gyfer y JPEG. 596 00:56:14,410 --> 00:56:20,050 Ond os ydym am achub y 4.jpg llinyn, rydym yn defnyddio f sgan. 597 00:56:20,050 --> 00:56:30,860 Felly llinyn s - mewn gwirionedd rydym Methu â - cymeriad, cols s, gadewch i ni fynd 100. 598 00:56:30,860 --> 00:56:35,400 Felly, Fi jyst datgan rhywfaint o amrywiaeth o 100 o nodau, 599 00:56:35,400 --> 00:56:39,830 a dyna beth rydym yn anochel yn mynd i gael eu storio y JPEG i mewn 600 00:56:39,830 --> 00:56:47,920 Felly, rydym yn mynd i ddefnyddio sgan f, a fformat, sut y byddem yn dweud d.jpg% 601 00:56:47,920 --> 00:56:54,980 er mwyn argraffu 4.jpg, y fformat o hyn yn mynd i fod yn d.jpg%. 602 00:56:54,980 --> 00:57:04,020 Felly y fformat yw, d.jpg% hyn yr ydym am i gymryd lle'r d% â hi yw x, 603 00:57:04,020 --> 00:57:06,590 ac yn awr mae angen i storio y llinyn yn rhywle. 604 00:57:06,590 --> 00:57:12,500 A ble rydym yn mynd i storio llinyn yma yn y s arae. 605 00:57:12,500 --> 00:57:21,640 Felly, ar ôl y llinell hon o god, s, os ydym yn argraffu s f%, o'r au amrywiol, 606 00:57:21,640 --> 00:57:26,280 mae'n mynd i argraffu 4.jpg. 607 00:57:26,280 --> 00:57:38,930 Felly f f sgan yr un fath â sgan f, ac eithrio awron 'i' yn edrych dros y ffeil 608 00:57:38,930 --> 00:57:43,600 ar gyfer beth i'w storio yn y s. 609 00:57:43,600 --> 00:57:46,160 Dyna beth y ddadl olaf yn mynd i fod. 610 00:57:46,160 --> 00:57:54,170 Rydym yn awyddus i gadw - "teulu f Sgan o sganiau swyddogaethau yn y ddwy yn ôl fformat geisio isod. 611 00:57:54,170 --> 00:58:02,450 Os oes unrhyw yn cael eu storio yn y pwyntiau lleoliad efallai y byddwch yn dychwelyd - " 612 00:58:02,450 --> 00:58:12,910 Na, efallai y byddwn yn dda. Gadewch i mi feddwl am eiliad. 613 00:58:12,910 --> 00:58:26,350 Felly nid sgan f wneud - hyn y mae'r Heck yw swyddogaeth sy'n gwneud hynny? 614 00:58:26,350 --> 00:58:31,650 Felly nid sgan f yn mynd i gymryd cyfanrif a gwneud dot jpg. 615 00:58:31,650 --> 00:58:43,490 Mae'n mynd i [Mwmbwls]. 616 00:58:43,490 --> 00:58:49,360 Achub amrywiol int yn llinyn int C. 617 00:58:49,360 --> 00:58:55,940 Beth yw newidyn hwn, neu beth yw swyddogaeth hon enw? 618 00:58:55,940 --> 00:59:04,950 Ydw. That's - ie. Felly, beth oeddwn i'n ei diffinio i chi cyn oedd s print f, 619 00:59:04,950 --> 00:59:09,820 sydd - bod yn gwneud synnwyr llawer mwy, pam y dywedais ei fod yn llawer mwy tebyg f print. 620 00:59:09,820 --> 00:59:14,700 Scan f yn dal yn fath o fel f print, ond f print s yn mynd i sganio dros 621 00:59:14,700 --> 00:59:17,510 ac yn disodli Rheoliadau newidynnau ac yn awr storio mewn llinyn. 622 00:59:17,510 --> 00:59:19,620 Yn hytrach na argraffu, mae'n ei storio mewn llinyn. 623 00:59:19,620 --> 00:59:25,070 Felly anwybyddu hynny'n llwyr. Gallwch ddal i feddwl am y rhagnodwr fformat fel bod o f print. 624 00:59:25,070 --> 00:59:34,510 Felly yn awr, os oeddem am wneud y peth 4.jpg, byddem yn gwneud f print s, x o hyn. 625 00:59:34,510 --> 00:59:38,520 Felly beth sgan f yn ei wneud - beth oedd eich cwestiwn yn mynd i fod? 626 00:59:38,520 --> 00:59:40,820 [Myfyrwyr] Rydw i'n drysu ychydig ar yr hyn rydym yn ceisio ei wneud iawn yma 627 00:59:40,820 --> 00:59:43,450 gyda'r JPEG. Allwch chi esbonio bod amser 1 yn fwy? 628 00:59:43,450 --> 00:59:52,710 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. 629 00:59:52,710 --> 01:00:02,240 Ond roedd yr hyn yr wyf yn bwriadu cychwyn i ddangos - mae hyn mewn gwirionedd yn uniongyrchol berthnasol i'r [?? F5] 630 01:00:02,240 --> 01:00:08,520 Rydych yn mynd i gael ei ddefnyddio f print s, lle, ddweud ein bod wedi 100 o ddelweddau, 631 01:00:08,520 --> 01:00:13,630 ac rydych chi eisiau darllen delwedd 1.jpg, 2.jpg, 3.jpg. 632 01:00:13,630 --> 01:00:21,520 Felly, er mwyn gwneud hynny, mae angen i chi f agored, ac yna rhaid i chi basio yn y llinyn yr ydych eisiau agor. 633 01:00:21,520 --> 01:00:30,020 Felly, byddem yn awyddus i agor 1.jpg; er mwyn creu y llinyn sy'n 1.jpg, 634 01:00:30,020 --> 01:00:37,660 f print rydym yn ei wneud s% d.jpg--nid ydym yn ei wneud ar gyfer int i = 0. 635 01:00:37,660 --> 01:00:46,580 i <40, i + +. 636 01:00:46,580 --> 01:00:51,130 Felly s print% f d.jpg o i. 637 01:00:51,130 --> 01:00:56,320 Felly, ar ôl y llinell hon, sydd bellach yn amrywiol neu s amrywiaeth yn mynd i 1.jpg. 638 01:00:56,320 --> 01:01:10,610 Neu, 0.jpg, 1.jpg, 2.jpg. Ac er mwyn i ni agor, yn ei dro, mae pob delwedd ar gyfer darllen. 639 01:01:10,610 --> 01:01:19,550 Felly, dyna beth s argraffu f yn ei wneud. A ydych yn gweld yr hyn s argraffu f ei wneud yn awr? 640 01:01:19,550 --> 01:01:25,720 [Myfyrwyr] Iawn, felly mae'n cymryd - mae'n creu llinyn, something.jpg, ac yna ei storio. 641 01:01:25,720 --> 01:01:30,360 Ydw. Mae'n creu - mae hwn yn bluen arall fformat, yn union fel sgan f f a print, 642 01:01:30,360 --> 01:01:37,530 lle mae'n mewnosod yr holl newidynnau i mewn i'r ail ddadl, fod s yn hytrach na i. 643 01:01:37,530 --> 01:01:42,280 Efallai - yr wyf yn golygu, dyna'r achos. Ond beth bynnag fo'r drefn dadleuon yn. 644 01:01:42,280 --> 01:01:45,440 Mae'n mynd i fewnosod yr holl newidynnau i mewn i'r llinyn fformat 645 01:01:45,440 --> 01:01:52,250 ac yna'i storio yn ein byffer; yr ydym yn galw y darperir clustog, mae'n lle rydym yn storio y llinyn. 646 01:01:52,250 --> 01:02:00,750 Felly, rydym yn cadw tu mewn s y llinyn yn gywir-fformatio, d% wedi cael eu disodli gyda 4. 647 01:02:00,750 --> 01:02:08,080 [Myfyrwyr] Felly, os ydym yn gwneud hyn, yw'r f amrywiol jyst yn mynd i gael eu hailneilltuo? 648 01:02:08,080 --> 01:02:18,110 Ydw. Felly, dylem gau'r f wreiddiol cyn gwneud hyn. 649 01:02:18,110 --> 01:02:22,810 Ond - ac yna hefyd, os nad oedd yn f agor yma, yna byddai angen i ni ddweud - 650 01:02:22,810 --> 01:02:29,280 Yeah. Ond byddai'n agor cant o ffeiliau gwahanol. 651 01:02:29,280 --> 01:02:37,360 [Myfyrwyr] Ond ni fyddem yn gallu cael mynediad neu - iawn. 652 01:02:37,360 --> 01:02:44,230 Iawn. Felly sgan f, f f sgan, yn fath o un syniad, 653 01:02:44,230 --> 01:02:53,610 ond yn lle, yn hytrach na storio i mewn i llinyn, mae'n fwy fel chi nawr 654 01:02:53,610 --> 01:03:02,420 mynd dros pigiad a phatrwm cyfateb yn erbyn y llinyn a storio'r canlyniadau yn newidynnau. 655 01:03:02,420 --> 01:03:11,290 Gallwch ddefnyddio f sgan i gramadegu dros rhywbeth fel 4.jpg, a storio y 4 cyfanrif yn int x swm. 656 01:03:11,290 --> 01:03:13,430 Dyna beth y gallwn ei ddefnyddio f sgan ar gyfer. 657 01:03:13,430 --> 01:03:16,300 F f sgan yn mynd i wneud hynny ar y llinell orchymyn. 658 01:03:16,300 --> 01:03:19,200 Im 'mewn gwirionedd yn eithaf siŵr bod hyn yn beth y llyfrgell CS50 yn ei wneud. 659 01:03:19,200 --> 01:03:29,050 Felly, pan fyddwch yn dweud, "yn cael int," mae'n sgan f-ing dros - sgan f yn y ffordd rydych yn cael mewnbwn defnyddwyr. 660 01:03:29,050 --> 01:03:34,670 F f sgan yn mynd i wneud yr un peth ond gan ddefnyddio ffeil i sganio dros. 661 01:03:34,670 --> 01:03:41,090 Felly yma, rydym yn sganio dros y ffeil hon. 662 01:03:41,090 --> 01:03:45,460 Mae'r patrwm yr ydym yn ceisio i gyfateb rhywfaint llinyn sy'n 127 nod o hyd 663 01:03:45,460 --> 01:03:48,100 ddilyn gan linell newydd 664 01:03:48,100 --> 01:03:54,770 Felly, Rwy'n eithaf sicr y gallem hyd yn oed dim ond dweud "yn cyd-fynd s," ers yn y geiriadur 665 01:03:54,770 --> 01:03:57,770 digwydd bod yma, rydym yn gwarantu oes gair yw bod hir, 666 01:03:57,770 --> 01:04:03,310 a hefyd f f sgan, a fyddaf yn meddwl, stopio wrth y llinell newydd waeth beth. 667 01:04:03,310 --> 01:04:06,970 Ond byddwn yn cynnwys y llinell newydd yn y gêm, ac - 668 01:04:06,970 --> 01:04:13,960 [Myfyrwyr] Os nad ydym yn cynnwys y llinell newydd, ni fyddai dod o hyd rhannau o'r gair? 669 01:04:13,960 --> 01:04:22,900 It - yr un - edrych ar y geiriadur - 670 01:04:22,900 --> 01:04:26,200 Felly, yn y geiriadur, mae'r rhain yn ein holl eiriau. 671 01:04:26,200 --> 01:04:30,500 Mae pob un ar linell newydd. 672 01:04:30,500 --> 01:04:32,510 Mae'r f sgan yn mynd i godi y gair hwn. 673 01:04:32,510 --> 01:04:38,750 Os nad ydym yn cynnwys y llinell newydd, yna mae'n bosibl y bydd y f sgan nesaf dim ond darllen y llinell newydd. 674 01:04:38,750 --> 01:04:44,180 Ond yn cynnwys llinell newydd fydd yna dim ond anwybyddu'r llinell newydd. 675 01:04:44,180 --> 01:04:49,440 Ond byth yn cael rhan o air, gan ein bod bob amser yn darllen hyd at linell newydd, waeth beth. 676 01:04:49,440 --> 01:04:54,530 [Myfyrwyr] Ond beth os ydych yn chwilio am y gair "cissa," fel cissa. 677 01:04:54,530 --> 01:04:57,380 A fydd yn dod o hyd i hynny, a dweud ei fod yn gêm? 678 01:04:57,380 --> 01:05:05,110 Felly dyma ni - bydd yn darllen i mewn - mae hyn mewn gwirionedd yn bwynt da. 679 01:05:05,110 --> 01:05:10,660 Nid ydym erioed yn defnyddio'r hyn o bryd - y gair rydym yn chwilio amdano yw'r ymresymiad llinell orchymyn cyntaf. 680 01:05:10,660 --> 01:05:16,460 Felly llinyn, gair = argv 1. 681 01:05:16,460 --> 01:05:20,020 Felly, y llinyn rydym yn chwilio amdano yw argv 1. 682 01:05:20,020 --> 01:05:23,290 Nid ydym yn chwilio am air o gwbl yn ein f sgan. 683 01:05:23,290 --> 01:05:28,030 Yr hyn yr ydym yn ei wneud gyda sgan f yn cael pob gair yn y geiriadur, 684 01:05:28,030 --> 01:05:34,320 ac yna ar ôl i ni gael y gair yr ydym yn mynd i ddefnyddio strcmp eu cymharu. 685 01:05:34,320 --> 01:05:39,210 Rydym yn mynd i gymharu ein gair a beth rydym newydd ei ddarllen i mewn 686 01:05:39,210 --> 01:05:45,110 Felly, yn anochel, rydym yn mynd i roi diwedd ar i fyny yn gwneud criw o sgan fs 687 01:05:45,110 --> 01:05:52,130 hyd nes dim ond fel y digwydd y bydd f sgan dychwelyd - 688 01:05:52,130 --> 01:05:54,800 bydd yn dychwelyd un, cyn belled â'i fod wedi cyfateb gair newydd, 689 01:05:54,800 --> 01:06:01,360 a bydd yn dychwelyd rhywbeth arall cyn gynted ag y mae wedi methu â chyfateb y gair. 690 01:06:01,360 --> 01:06:08,440 Rydym yn darllen dros y geiriadur cyfan, storio fesul llinell bob gair yn y au amrywiol. 691 01:06:08,440 --> 01:06:17,240 Yna, rydym yn cymharu gair gyda s, ac os bydd y gymhariaeth == 0, 692 01:06:17,240 --> 01:06:21,650 strcmp yn digwydd i ddod 0 os gêm ei wneud. 693 01:06:21,650 --> 01:06:31,510 Felly, os oedd yn 0, yna gallwn argraffu f, cyfatebol, 694 01:06:31,510 --> 01:06:35,370 neu air mewn geiriadur, neu beth bynnag yr ydych eisiau argraffu f. 695 01:06:35,370 --> 01:06:41,450 Ac yna - nid ydym am i f gau dros dro ar ôl tro. 696 01:06:41,450 --> 01:06:50,410 Dyma'r math o beth yr ydym am ei wneud, ac nid ydym yn unig yn chwilio am air yn y geiriadur. 697 01:06:50,410 --> 01:06:56,660 Felly, gallem wneud hynny, os ydym am i chwilio am eu patrwm, cissa, fel y dywedasoch o'r blaen, 698 01:06:56,660 --> 01:07:00,260 os oeddem am edrych am y patrwm hwnnw, yna byddai'n methu yn yr achos 699 01:07:00,260 --> 01:07:08,010 oherwydd nid yw mewn gwirionedd gair, ond un o'r geiriau yn y geiriadur yn digwydd i gael y ynddo. 700 01:07:08,010 --> 01:07:13,560 Felly, byddai'n cyd-fynd y gair hwn, ond nid yw hyn is-set o'r gair yn air ei hun. 701 01:07:13,560 --> 01:07:17,250 Ond nid dyna sut rydym yn ei ddefnyddio, rydym yn darllen ym mhob gair 702 01:07:17,250 --> 01:07:19,740 ac yna gymharu y gair sydd gennym gyda'r gair hwnnw. 703 01:07:19,740 --> 01:07:25,780 Felly, rydym bob amser yn cymharu geiriau llawn. 704 01:07:25,780 --> 01:07:29,620 Gallaf anfon y datrysiadau terfynol yn ddiweddarach. 705 01:07:29,620 --> 01:07:32,050 Mae hyn yn fath o bron yr ateb cywir, dwi'n meddwl. 706 01:07:32,050 --> 01:07:34,720 [Sylwadau Myfyrwyr, annealladwy] 707 01:07:34,720 --> 01:07:40,870 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. 708 01:07:40,870 --> 01:07:44,100 Byddwn dim ond yn gwneud 128; felly yn awr yn ddigon hir. 709 01:07:44,100 --> 01:07:46,570 Nid oes angen i argraffu unrhyw beth. 710 01:07:46,570 --> 01:07:56,440 Rydym ni hefyd yn mynd i eisiau gorfod cau ein ffeil, a dylai hynny fod am yr ateb cywir. 711 01:07:56,440 --> 01:07:59,440 CS50.TV