1 00:00:00,000 --> 00:00:10,103 2 00:00:10,103 --> 00:00:11,270 >> ZAMYLA Chan: Llongyfarchiadau ar orffen eich 3 00:00:11,270 --> 00:00:13,200 cwpl cyntaf o raglenni C. 4 00:00:13,200 --> 00:00:16,379 Gwn fod eich ymgais gyntaf i mewn i Gall gystrawen C fod yn frawychus. 5 00:00:16,379 --> 00:00:20,060 Ond yr wyf yn eich sicrhau, ar ddiwedd y cwrs, byddwch yn gallu edrych ar y 6 00:00:20,060 --> 00:00:23,870 cwpl cyntaf o aseiniadau ac eu cwblhau mewn munudau. 7 00:00:23,870 --> 00:00:27,830 >> Nawr eich bod yn cael yn fwy cyfarwydd gyda chystrawen, gadewch i ni fynd i Gesar. 8 00:00:27,830 --> 00:00:31,720 Yn Cesar, bydd y defnyddiwr yn cyflwyno allweddol cyfanrif fel llinell orchymyn 9 00:00:31,720 --> 00:00:35,300 ddadl, ac yna mynd i mewn i blaen neges destun wrth yr anogwr. 10 00:00:35,300 --> 00:00:38,050 Bydd y rhaglen, encipher y testun ac argraffu 11 00:00:38,050 --> 00:00:40,020 eu neges ciphertext. 12 00:00:40,020 --> 00:00:42,980 >> Mae'r enciphering ar gyfer Cesar yn eithaf syml. 13 00:00:42,980 --> 00:00:46,455 Symud pob llythyr, yn eu testun plaen, gan yr allwedd. 14 00:00:46,455 --> 00:00:49,220 O ganlyniad, mae hefyd yn eithaf ansicr. 15 00:00:49,220 --> 00:00:53,850 Ond bydd sy'n gweithredu Caesar cyflwyno ni i ddata ASCIIMath ac amrywiaeth 16 00:00:53,850 --> 00:00:54,460 strwythurau. 17 00:00:54,460 --> 00:00:57,510 Byddwn yn mynd i fwy cymhleth dulliau cêl-ysgrifennu yn ddiweddarach. 18 00:00:57,510 --> 00:01:01,680 Gyda Caesar allweddol 2, y llythyren A yn Byddai destun plaen yn cael ei gynrychioli gan 19 00:01:01,680 --> 00:01:07,580 y llythyr C yn ciphertext oherwydd C yw y byddai dau lythyr ar ôl A. B fod yn 20 00:01:07,580 --> 00:01:12,450 gynrychiolir gan D a C gan E. Tuag at diwedd y wyddor, W yn 21 00:01:12,450 --> 00:01:18,550 gynrychiolir gan Y, a X gan Z. Ond Y Nid oes rhaid dau lythyr ar ôl iddo, felly 22 00:01:18,550 --> 00:01:21,070 y dulliau cêl-ysgrifennu lapio o amgylch y wyddor. 23 00:01:21,070 --> 00:01:27,190 Y yn destun plaen yn cael ei gynrychioli gan gan A yn ciphertext, a Z gan B. Gallai fod 24 00:01:27,190 --> 00:01:32,080 helpu i weld y Cesar Cypher fel olwyn wyddor parhaus. 25 00:01:32,080 --> 00:01:35,760 >> I encipher eu testun, y defnyddiwr fydd yn mynd dwy ddadl 26 00:01:35,760 --> 00:01:37,090 i mewn i'r llinell orchymyn - 27 00:01:37,090 --> 00:01:40,010 . / Cesar ddilyn gan allweddol. 28 00:01:40,010 --> 00:01:44,710 Fel bob amser, ni allwn ymddiried yn y defnyddiwr yn gyfan gwbl i fynd i mewn mewnbwn sy'n gwneud 29 00:01:44,710 --> 00:01:45,800 synnwyr ar gyfer ein rhaglen. 30 00:01:45,800 --> 00:01:50,670 Felly bydd yn rhaid i ni ddilysu eu mewnbwn llinell orchymyn. 31 00:01:50,670 --> 00:01:57,285 >> Yn hytrach na defnyddio int brif gwag, rydym yn ddefnyddio int brif, argc int, llinyn argv. 32 00:01:57,285 --> 00:02:01,730 Mae'r argc amrywiol cyfanrif yn cynrychioli mae nifer o ddadleuon pasio i mewn i 33 00:02:01,730 --> 00:02:02,880 'r archa bannod. 34 00:02:02,880 --> 00:02:09,070 Ac argv yn amrywiaeth, neu'n meddwl am y peth fel rhestr, o'r dadleuon pasio i mewn 35 00:02:09,070 --> 00:02:12,000 >> Felly, ar gyfer Cesar, sut ydym yn ddilysu fewnbwn y defnyddiwr? 36 00:02:12,000 --> 00:02:15,870 Wel, dylid ond eu mynd i mewn dau dadleuon llinell orchymyn - 37 00:02:15,870 --> 00:02:18,150 . / Cesar ac allwedd. 38 00:02:18,150 --> 00:02:22,340 Felly, os nad argc yw 2, mae hynny'n golygu bod maent naill ai wedi anghofio allwedd a dim ond 39 00:02:22,340 --> 00:02:27,230 gofnodi. / Cesar, neu eu bod yn cofnodi allweddi lluosog. 40 00:02:27,230 --> 00:02:29,770 >> Os yw hyn yn wir, yna wnewch chi helpu eisiau argraffu cyfarwyddiadau 41 00:02:29,770 --> 00:02:30,910 a gadael y rhaglen. 42 00:02:30,910 --> 00:02:34,320 Bydd angen iddynt geisio eto o'r llinell orchymyn. 43 00:02:34,320 --> 00:02:37,430 Ond hyd yn oed os argc yw 2, byddwch yn angen i wirio a ydynt yn 44 00:02:37,430 --> 00:02:39,100 rhoi allwedd dilys i chi. 45 00:02:39,100 --> 00:02:40,730 Ar gyfer Cesar, mae angen yn gyfanrif. 46 00:02:40,730 --> 00:02:43,260 Ond argv mae amrywiaeth o llinynnau. 47 00:02:43,260 --> 00:02:46,490 Sut ydych chi'n cael y allweddol? 48 00:02:46,490 --> 00:02:47,850 >> Golwg cyflym ar araeau - 49 00:02:47,850 --> 00:02:51,410 strwythurau data sy'n dal lluosog werthoedd o'r un math data. 50 00:02:51,410 --> 00:02:55,350 Ceisiadau yn sero-indexed, sy'n golygu bod yr elfen gyntaf yw y sero mynegai 51 00:02:55,350 --> 00:03:00,260 a'r elfen olaf ar faint mynegai minws 1, lle mae maint yn y nifer o 52 00:03:00,260 --> 00:03:02,850 elfennau yn y rhesi. 53 00:03:02,850 --> 00:03:07,380 >> Os byddaf yn datgan flwch post amrywiaeth llinyn newydd o hyd 3, yn weledol, mae'n 54 00:03:07,380 --> 00:03:08,570 yn edrych fel hyn. 55 00:03:08,570 --> 00:03:11,520 Tri cynwysyddion ar gyfer llinynnau , Ochr yn ochr. 56 00:03:11,520 --> 00:03:15,445 I gael mynediad i unrhyw elfen, teipiwch yr enw y rhesi, ac yna dangos 57 00:03:15,445 --> 00:03:18,080 y mynegai mewn cromfachau sgwâr. 58 00:03:18,080 --> 00:03:21,610 Yma, rwy'n neilltuo gwerth i bob elfen, yn union fel y byddwn yn ei wneud gydag unrhyw 59 00:03:21,610 --> 00:03:24,310 newidyn llinyn arall. 60 00:03:24,310 --> 00:03:29,020 >> Felly, i gael gafael ar ein dadleuon llinell gorchymyn, pob mae'n rhaid i ni ei wneud yw cael mynediad 61 00:03:29,020 --> 00:03:31,690 yr elfen dde o'r amrywiaeth argv. 62 00:03:31,690 --> 00:03:37,360 Os yw'r defnyddiwr gofnodi Tîm. / Blastoff Roced i mewn i'r derfynell, byddai argv 0 63 00:03:37,360 --> 00:03:38,950 fod. / blastoff. 64 00:03:38,950 --> 00:03:45,010 Byddai argv fod Tîm, a Byddai arg2 yn roced. 65 00:03:45,010 --> 00:03:47,670 >> Nawr ein bod yn gallu cael mynediad i'n allweddol, mae angen i ni wneud 66 00:03:47,670 --> 00:03:49,040 siŵr ei fod yn gywir. 67 00:03:49,040 --> 00:03:51,060 Mae angen i ni droi i mewn i gyfanrif. 68 00:03:51,060 --> 00:03:54,680 Ond ni allwn ei bwrw fel rydym wedi ei wneud o'r blaen. 69 00:03:54,680 --> 00:03:58,800 Yn ffodus, yr A i Y swyddogaeth yn cymryd gofal o hyn i ni a hyd yn oed yn dychwelyd 0 70 00:03:58,800 --> 00:04:02,110 os na all y llinyn eu trosi i mewn i cyfanrif. 71 00:04:02,110 --> 00:04:04,450 Mae i fyny i chi, fodd bynnag, i ddweud y defnyddiwr pam nad ydych yn 72 00:04:04,450 --> 00:04:06,220 gadael i'r rhaglen symud ymlaen. 73 00:04:06,220 --> 00:04:10,710 Storiwch y canlyniad A i Y mewn cyfanrif, ac mae gennych eich allwedd. 74 00:04:10,710 --> 00:04:12,070 Mae'r rhan nesaf yn syml. 75 00:04:12,070 --> 00:04:15,940 Annog y defnyddiwr ar gyfer eu testun plaen, a fydd o linyn fath data. 76 00:04:15,940 --> 00:04:18,339 Yn ffodus i ni, bwydo pob defnyddiwr llinynnau yn ddilys. 77 00:04:18,339 --> 00:04:21,170 78 00:04:21,170 --> 00:04:24,760 >> Nawr ein bod i gyd mewnbwn angenrheidiol gan y defnyddiwr, mae'n amser i ni 79 00:04:24,760 --> 00:04:26,520 encipher eu neges. 80 00:04:26,520 --> 00:04:29,200 Mae'r cysyniad o Cesar yn syml digon i ddeall. 81 00:04:29,200 --> 00:04:33,750 Ond sut mae eich cyfrifiadur yn gwybod pa llythyrau dod ar ôl ei gilydd? 82 00:04:33,750 --> 00:04:36,100 >> Dyma lle y tabl ASCII yn dod i mewn 83 00:04:36,100 --> 00:04:39,420 Mae pob cymeriad yn cael cyfanrif nifer sy'n gysylltiedig ag ef. 84 00:04:39,420 --> 00:04:41,380 Cyfalaf yw 65. 85 00:04:41,380 --> 00:04:43,310 Capital B yw 66. 86 00:04:43,310 --> 00:04:45,260 Lythrennau bach a yw 97. 87 00:04:45,260 --> 00:04:47,590 Llythrennau bach b yw 98. 88 00:04:47,590 --> 00:04:50,770 Ond nid cymeriadau yn gyfyngedig i ddim ond rhifau wyddor. 89 00:04:50,770 --> 00:04:56,020 Er enghraifft, mae'r symbol @ yw rhif ASCII 64. 90 00:04:56,020 --> 00:04:59,690 >> Cyn ddelio gyda'r llinyn yn gyfan, gadewch i esgus rydym yn unig rhaid i ni symud 91 00:04:59,690 --> 00:05:01,220 un cymeriad. 92 00:05:01,220 --> 00:05:04,640 Wel, dim ond eisiau symud gwirioneddol llythrennau yn y testun plaen, nid 93 00:05:04,640 --> 00:05:06,020 cymeriadau neu rifau. 94 00:05:06,020 --> 00:05:09,100 Felly, y peth cyntaf y byddwn am ei gwirio yw a yw'r cymeriad yn 95 00:05:09,100 --> 00:05:10,430 yr wyddor. 96 00:05:10,430 --> 00:05:14,460 >> Mae'r isalpha swyddogaeth gwneud hyn ar gyfer ni ac yn dychwelyd Boolean - 97 00:05:14,460 --> 00:05:18,570 yn wir os yw'r cymeriadau yn llythyr, ffug os fel arall. 98 00:05:18,570 --> 00:05:22,270 Ddwy swyddogaeth defnyddiol eraill isupper a islower, gyda 99 00:05:22,270 --> 00:05:23,860 enwau hunan-esboniadol. 100 00:05:23,860 --> 00:05:27,370 Maent yn dychwelyd wir os gymeriad a roddir yn priflythyren neu llythrennau bach, 101 00:05:27,370 --> 00:05:28,740 yn y drefn honno. 102 00:05:28,740 --> 00:05:33,770 Gan eu bod yn booleans, maen nhw'n ddefnyddiol i'w defnyddio fel amodau. 103 00:05:33,770 --> 00:05:38,310 >> Os isalpha yn dychwelyd yn wir, bydd angen i chi i symud y cymeriad gan yr allwedd. 104 00:05:38,310 --> 00:05:43,750 Felly, gadewch i ni agored i ASCIIMath ac yn gwneud ychydig o cwestiwn ASCII. 105 00:05:43,750 --> 00:05:48,700 Mae'r defnydd yn debyg iawn i'r defnydd ar gyfer Cesar ac yn cymryd mewn cywair yn y 106 00:05:48,700 --> 00:05:50,870 llinell orchymyn. 107 00:05:50,870 --> 00:05:59,590 >> Os byddaf yn rhedeg ASCIIMath 5, mae'n ymddangos i ychwanegu 5 i, gan roi llythyr f fi, a 108 00:05:59,590 --> 00:06:01,260 arddangos y gwerth ASCII. 109 00:06:01,260 --> 00:06:04,090 Felly, gadewch i ni edrych ar y rhaglen. 110 00:06:04,090 --> 00:06:11,820 >> Efallai y byddwch yn meddwl tybed, dde yma, pam llythyr yn gyfanrif, pan mae'n 111 00:06:11,820 --> 00:06:14,330 yn glir, yn dda, a llythyr. 112 00:06:14,330 --> 00:06:17,690 Mae'n ymddangos bod cymeriadau a cyfanrifau yn ymgyfnewidiol. 113 00:06:17,690 --> 00:06:21,730 Drwy roi'r llythyren A yn un dyfynodau, gall y cyfanrif storio 114 00:06:21,730 --> 00:06:25,390 gwerth ASCII o gyfalaf A. Byddwch yn ofalus, er. 115 00:06:25,390 --> 00:06:27,150 Mae angen y dillad unigol chi. 116 00:06:27,150 --> 00:06:31,260 Heb y dyfynodau sengl, yr Byddai compiler chwilio am newidyn 117 00:06:31,260 --> 00:06:35,510 enwir A, ac nid y cymeriad. 118 00:06:35,510 --> 00:06:42,140 >> Yna mi ychwanegu lythyr ac allwedd, storio'r swm y newidynnau canlyniad int. 119 00:06:42,140 --> 00:06:47,740 Er bod canlyniad yw o'r math ddata cyfanrif, fy natganiad printf yn defnyddio'r 120 00:06:47,740 --> 00:06:50,370 % C cadw'r gymeriadau. 121 00:06:50,370 --> 00:06:54,530 Felly, mae'r rhaglen printiau cymeriad sy'n gysylltiedig â'r canlyniad cyfanrif. 122 00:06:54,530 --> 00:07:00,400 Ac ers i ni argraffu'r cyfanrif ffurf dda gan ddefnyddio% d, rydym yn gweld 123 00:07:00,400 --> 00:07:02,110 nifer hefyd. 124 00:07:02,110 --> 00:07:04,450 Felly, nawr gallwch weld ein bod drin cymeriadau a 125 00:07:04,450 --> 00:07:06,980 cyfanrifau, ac i'r gwrthwyneb. 126 00:07:06,980 --> 00:07:12,205 >> Gadewch i brawf allan ASCIIMath ychydig gwaith yn fwy gan ddefnyddio 25 fel allwedd. 127 00:07:12,205 --> 00:07:15,510 128 00:07:15,510 --> 00:07:17,090 Rydym yn cael y llythyr z. 129 00:07:17,090 --> 00:07:19,750 Nawr rydym yn ceisio 26. 130 00:07:19,750 --> 00:07:25,600 Rydym yn awyddus i gael y llythyr, ond yn lle hynny rydym yn cael braced chwith. 131 00:07:25,600 --> 00:07:29,490 Felly, yn amlwg, dim ond ychwanegu y Ni fydd allweddol y llythyr yn ei wneud. 132 00:07:29,490 --> 00:07:32,780 Mae angen i chyfrif i maes fformiwla i lapio o amgylch y wyddor, fel ein 133 00:07:32,780 --> 00:07:34,570 enghraifft, yn y dechrau ei wneud. 134 00:07:34,570 --> 00:07:38,520 >> Mae fformiwla ar gyfer y Cesar newid fel a ganlyn. 135 00:07:38,520 --> 00:07:42,750 c yn hafal i p ynghyd k modwlo 26. 136 00:07:42,750 --> 00:07:46,040 Cofiwch fod modwlo yn ddefnyddiol llawdriniaeth sy'n rhoi'r gweddill i ni 137 00:07:46,040 --> 00:07:49,880 o rannu un rhif gan y llall. 138 00:07:49,880 --> 00:07:54,870 Gadewch i ni wneud cais fformiwla hon i'r blaen Llythyr testun gyda allweddol o 2. 139 00:07:54,870 --> 00:08:01,810 Mae gwerth ASCII o y yn 89, a yn rhoi i ni 91 modwlo 26, 140 00:08:01,810 --> 00:08:03,690 sy'n hafal i 13 - 141 00:08:03,690 --> 00:08:08,740 yn bendant nid y gwerth ASCII o, sef 67. 142 00:08:08,740 --> 00:08:12,810 >> Hiwmor mi yn awr ac yn symud i ffwrdd oddi wrth y Gwerthoedd ASCII i mynegai yn nhrefn yr wyddor 143 00:08:12,810 --> 00:08:18,690 lle mae A yn sero a Z yw 25, sy'n golygu bod Y yn 24. 144 00:08:18,690 --> 00:08:25,830 24 a 2, modwlo 6, yn rhoi i ni 26, modwlo 26, 0, sef y 145 00:08:25,830 --> 00:08:28,170 mynegai yn nhrefn yr wyddor a. 146 00:08:28,170 --> 00:08:32,980 Felly, y fformiwla hon yn ymddangos i wneud cais i'r Mynegai yn nhrefn yr wyddor o'r llythyr a 147 00:08:32,980 --> 00:08:34,960 nid yw ei werth ASCII. 148 00:08:34,960 --> 00:08:37,630 >> Ond byddwch yn dechrau gyda gwerthoedd ASCII. 149 00:08:37,630 --> 00:08:41,650 Ac i argraffu'r cymeriad ciphertext, bydd angen i chi ei werth ASCII hefyd. 150 00:08:41,650 --> 00:08:46,400 Mae i fyny i chi, yna, er mwyn chyfrif i maes sut i newid yn ôl ac ymlaen. 151 00:08:46,400 --> 00:08:49,850 >> Ar ôl i chi chyfrif i maes y fformiwla gywir ar gyfer un cymeriad, mae angen i bob i chi ei wneud 152 00:08:49,850 --> 00:08:53,520 yn cymhwyso'r un fformiwla i bob llythyr yn y testun plaen - 153 00:08:53,520 --> 00:08:57,720 dim ond os y llythyr hwnnw yn nhrefn yr wyddor, wrth gwrs. 154 00:08:57,720 --> 00:09:02,360 A chofiwch fod angen i chi gadw yn wir, uwch neu'n is, dyna lle 155 00:09:02,360 --> 00:09:06,890 y isUpper a swyddogaethau isLower a grybwyllwyd yn gynharach yn dod i mewn 'n hylaw. 156 00:09:06,890 --> 00:09:08,830 Efallai y bydd gennych ddwy fformiwla - 157 00:09:08,830 --> 00:09:11,680 un ar gyfer llythyrau priflythyren ac un ar gyfer llythrennau bach. 158 00:09:11,680 --> 00:09:18,420 Felly isUpper bydd isLower eich helpu pennu pa fformiwla i wneud cais. 159 00:09:18,420 --> 00:09:22,460 >> Sut mae gwneud cais eich fformiwla i bob gymeriad sengl mewn llinyn? 160 00:09:22,460 --> 00:09:25,910 Wel, mae llinyn yn unig yw amrywiaeth o gymeriadau. 161 00:09:25,910 --> 00:09:31,150 Felly, gallwch gael gafael ar bob cymeriad yn ôl grwpio dros bob cymeriad yn y 162 00:09:31,150 --> 00:09:33,450 llinyn mewn i ddolen. 163 00:09:33,450 --> 00:09:37,550 Fel ar gyfer y cyflwr eich am ddolen, y swyddogaeth strlen, er llinyn 164 00:09:37,550 --> 00:09:39,280 hyd, yn dod mewn 'n hylaw. 165 00:09:39,280 --> 00:09:44,020 Mae'n cymryd mewn llinyn fel mewnbwn a dychwelyd hyd y llinyn. 166 00:09:44,020 --> 00:09:49,250 Gwnewch yn siwr i gynnwys y llyfrgell cywir i ddefnyddio'r swyddogaeth hyd llinyn. 167 00:09:49,250 --> 00:09:51,790 >> Ac yno i chi gael eich ciphertext. 168 00:09:51,790 --> 00:09:53,260 Fy enw i yw y Zamyla. 169 00:09:53,260 --> 00:09:54,510 Ac [COD SIARAD]. 170 00:09:54,510 --> 00:10:02,944