1 00:00:00,000 --> 00:00:10,103 2 00:00:10,103 --> 00:00:11,270 >> ZAMYLA Chan: Urime on përfunduar Juaj 3 00:00:11,270 --> 00:00:13,200 Çifti i parë i programeve C. 4 00:00:13,200 --> 00:00:16,379 Unë e di se bastisje juaj e parë në Sintaksa C mund të jetë e frikshme. 5 00:00:16,379 --> 00:00:20,060 Por unë ju siguroj, në fund të Sigurisht, ju do të jetë në gjendje të shikojmë në 6 00:00:20,060 --> 00:00:23,870 Çifti i parë i detyrave dhe përfunduar ato në minuta. 7 00:00:23,870 --> 00:00:27,830 >> Tani që ju jeni duke marrë më të njohur me sintaksë, le të merrni për të Cezarit. 8 00:00:27,830 --> 00:00:31,720 Në Cezarit, përdoruesi do të paraqesë një Çelësi integer si një command line 9 00:00:31,720 --> 00:00:35,300 Argumenti, pastaj të hyjë në një plain mesazh me tekst në ftim. 10 00:00:35,300 --> 00:00:38,050 Programi pastaj do të shifroj Teksti dhe të shtypura 11 00:00:38,050 --> 00:00:40,020 Mesazhi ciphertext tyre. 12 00:00:40,020 --> 00:00:42,980 >> Enciphering për Cezarit është mjaft e thjeshtë. 13 00:00:42,980 --> 00:00:46,455 Shift çdo letër, në punën e tyre plain text, nga çelësi. 14 00:00:46,455 --> 00:00:49,220 Si rezultat, ajo është edhe goxha i pasigurt. 15 00:00:49,220 --> 00:00:53,850 Por implementues Cezari do të prezantoj na ASCIIMath dhe array dhënave 16 00:00:53,850 --> 00:00:54,460 Strukturat. 17 00:00:54,460 --> 00:00:57,510 Ne do të merrni për të më komplekse shifra më vonë. 18 00:00:57,510 --> 00:01:01,680 Me një çelës Caesar e 2, shkronja A në plain text do të përfaqësohet nga 19 00:01:01,680 --> 00:01:07,580 C në letër, sepse ciphertext C është dy letra pas A. B, do të jetë 20 00:01:07,580 --> 00:01:12,450 përfaqësuar nga D dhe C nga E. Drejt fundi i alfabetit, W eshte 21 00:01:12,450 --> 00:01:18,550 përfaqësuar nga Y dhe X nga Z. Por Y nuk ka dy letra pas tij, kështu që 22 00:01:18,550 --> 00:01:21,070 shifrave përfundon rreth alfabetit. 23 00:01:21,070 --> 00:01:27,190 Y në tekst të thjeshtë është e përfaqësuar në këtë mënyrë nga Një në ciphertext, dhe Z nga B. Ajo mund 24 00:01:27,190 --> 00:01:32,080 të ndihmojë për të parë Cypher Caesar si një rrotë vazhdueshëm alfabeti. 25 00:01:32,080 --> 00:01:35,760 >> Për të shifroj tekstin e tyre, përdoruesit do të hyjë në dy argumente 26 00:01:35,760 --> 00:01:37,090 në vijën komanduese - 27 00:01:37,090 --> 00:01:40,010 . / Cezari ndjekur nga një çelës. 28 00:01:40,010 --> 00:01:44,710 Si gjithmonë, ne nuk mund të besimit përdorues plotësisht për të hyrë në të dhëna që e bëjnë 29 00:01:44,710 --> 00:01:45,800 Ndjenja për programin tonë. 30 00:01:45,800 --> 00:01:50,670 Pra, ne do të duhet të vërtetoni e tyre command line input. 31 00:01:50,670 --> 00:01:57,285 >> Në vend të përdorimit zbrazëti int main, ne jemi përdorimin e int kryesore argc string, int, argv. 32 00:01:57,285 --> 00:02:01,730 Argc ndryshore integer përfaqëson numri i argumenteve të miratuara në 33 00:02:01,730 --> 00:02:02,880 command line. 34 00:02:02,880 --> 00:02:09,070 Dhe argv është një grup, ose të mendojnë për atë si një listë, nga argumentet e kaluar in 35 00:02:09,070 --> 00:02:12,000 >> Pra, për të Cezarit, si nuk kemi provoj input të përdoruesit? 36 00:02:12,000 --> 00:02:15,870 E pra, ata duhet vetëm të hyjnë dy argumente command line - 37 00:02:15,870 --> 00:02:18,150 . / Cezari dhe një çelës. 38 00:02:18,150 --> 00:02:22,340 Pra, nëse nuk është argc 2, që do të thotë se ata ose harruan një çelës dhe vetëm 39 00:02:22,340 --> 00:02:27,230 hyrë. / Çezari, ose ato hyri çelësat shumta. 40 00:02:27,230 --> 00:02:29,770 >> Nëse ky është rasti, atëherë ju do të doni të shtypura udhëzimet 41 00:02:29,770 --> 00:02:30,910 dhe mbaro programin. 42 00:02:30,910 --> 00:02:34,320 Ata do të duhet të provoni përsëri nga vija e komandës. 43 00:02:34,320 --> 00:02:37,430 Por edhe në qoftë se argc është 2, ju do të duhet të kontrolloni nëse ata 44 00:02:37,430 --> 00:02:39,100 ju jap një çelës të vlefshëm. 45 00:02:39,100 --> 00:02:40,730 Për Cezarit, ju keni nevojë për një numër të plotë. 46 00:02:40,730 --> 00:02:43,260 Por argv është një koleksion të strings. 47 00:02:43,260 --> 00:02:46,490 Si mendoni ju hyni në atë çelësin? 48 00:02:46,490 --> 00:02:47,850 >> Një vështrim i shpejtë në vargjeve - 49 00:02:47,850 --> 00:02:51,410 Strukturat e të dhënave që mbajnë të shumta Vlerat e llojit të njëjtë të të dhënave. 50 00:02:51,410 --> 00:02:55,350 Entries janë indeksuar me zero, që do të thotë se elementi i parë është zero indeksi 51 00:02:55,350 --> 00:03:00,260 dhe element i fundit është në madhësinë e indeksit minus 1, ku madhësia është numri i 52 00:03:00,260 --> 00:03:02,850 elementet në rrjet. 53 00:03:02,850 --> 00:03:07,380 >> Nëse unë shpalli një të ri array kuti postare string i gjatësi 3, sy, ajo 54 00:03:07,380 --> 00:03:08,570 duket si ky. 55 00:03:08,570 --> 00:03:11,520 Tre kontejnerët për strings , Krah për krah. 56 00:03:11,520 --> 00:03:15,445 Për të hyrë në çdo element, ju shtypni emrin i vargut dhe pastaj të tregojë 57 00:03:15,445 --> 00:03:18,080 Indeksi në kllapa katrore. 58 00:03:18,080 --> 00:03:21,610 Këtu, unë jam caktuar një vlerë për çdo element, ashtu si unë do të bëj me ndonjë 59 00:03:21,610 --> 00:03:24,310 variabël string tjetër. 60 00:03:24,310 --> 00:03:29,020 >> Pra, për të hyrë në të linjës komanduese argumentet tona, të gjithë ne duhet të bëni është të hyni në 61 00:03:29,020 --> 00:03:31,690 element drejta e array argv. 62 00:03:31,690 --> 00:03:37,360 Në qoftë se përdoruesi ka hyrë. / Nisje Ekipin Rocket në terminal, do argv 0 63 00:03:37,360 --> 00:03:38,950 jetë. / nisje. 64 00:03:38,950 --> 00:03:45,010 argv do të jetë ekip, dhe arg2 do të jenë raketa. 65 00:03:45,010 --> 00:03:47,670 >> Tani që ne mund të hyni çelësin tonë, ne ende nevojë për të bërë 66 00:03:47,670 --> 00:03:49,040 i sigurt se ajo është e saktë. 67 00:03:49,040 --> 00:03:51,060 Ne kemi nevojë për të kthyer atë në një numër të plotë. 68 00:03:51,060 --> 00:03:54,680 Por ne nuk mund të hedhin vetëm si ne kemi bërë më parë. 69 00:03:54,680 --> 00:03:58,800 Për fat të mirë, një funksion që të kujdeset për Y e kjo për ne dhe edhe returns 0 70 00:03:58,800 --> 00:04:02,110 në qoftë se vargu nuk mund të konvertohet në një numër të plotë. 71 00:04:02,110 --> 00:04:04,450 Është e deri tek ju, edhe pse, për të treguar përdorues pse ju nuk do 72 00:04:04,450 --> 00:04:06,220 le të programit të vazhdojë. 73 00:04:06,220 --> 00:04:10,710 Shitore rezultat i një Y në një integer, dhe nuk keni çelësin tuaj. 74 00:04:10,710 --> 00:04:12,070 Pjesa tjetër është e thjeshtë. 75 00:04:12,070 --> 00:04:15,940 Prompt përdorues për tekstin e tyre të thjeshtë, e cila do të jetë e tipit të të dhënave string. 76 00:04:15,940 --> 00:04:18,339 Fatmirësisht për ne, të gjithë përdoruesit futur vargjet janë të vlefshme. 77 00:04:18,339 --> 00:04:21,170 78 00:04:21,170 --> 00:04:24,760 >> Tani që ne kemi të gjitha të dhëna të nevojshme nga përdoruesit, kjo është koha për ne për të 79 00:04:24,760 --> 00:04:26,520 shifroj mesazhin e tyre. 80 00:04:26,520 --> 00:04:29,200 Koncepti i Cezarit është e thjeshtë mjaftueshme për të kuptuar. 81 00:04:29,200 --> 00:04:33,750 Por si e bën kompjuterin tuaj të dinë se cilat Letrat vijë pas njëri-tjetrit? 82 00:04:33,750 --> 00:04:36,100 >> Ja ku vjen in Tabela ASCII 83 00:04:36,100 --> 00:04:39,420 Çdo karakter ka një numër të plotë Numri i lidhur me të. 84 00:04:39,420 --> 00:04:41,380 Capital Një është 65. 85 00:04:41,380 --> 00:04:43,310 Capital B është 66. 86 00:04:43,310 --> 00:04:45,260 Vogle a është 97. 87 00:04:45,260 --> 00:04:47,590 B vogle është 98. 88 00:04:47,590 --> 00:04:50,770 Por karaktere nuk janë të kufizuara në vetëm numra alfabetikë. 89 00:04:50,770 --> 00:04:56,020 Për shembull, simbol @ 64 është numri i ASCII. 90 00:04:56,020 --> 00:04:59,690 >> Para që kanë të bëjnë me vargun e tërë, le të pretendojë ne vetëm duhet të zhvendoset 91 00:04:59,690 --> 00:05:01,220 një karakter. 92 00:05:01,220 --> 00:05:04,640 E pra, ne duam vetëm të zhvendoset aktuale letra në tekst të thjeshtë, jo 93 00:05:04,640 --> 00:05:06,020 shkronja ose numra. 94 00:05:06,020 --> 00:05:09,100 Pra, gjëja e parë që ne do të duan të kontrolloni është nëse personazhi është në 95 00:05:09,100 --> 00:05:10,430 alfabeti. 96 00:05:10,430 --> 00:05:14,460 >> Isalpha funksion e bën këtë për dhe na kthen një boolean - 97 00:05:14,460 --> 00:05:18,570 vërtetë nëse personazhet është një letër, false nëse ndryshe. 98 00:05:18,570 --> 00:05:22,270 Dy funksione të tjera të dobishme janë isupper dhe islower, me 99 00:05:22,270 --> 00:05:23,860 vetë-shpjeguese emrat. 100 00:05:23,860 --> 00:05:27,370 Ata kthehen vërtetë në qoftë se karakteri dhënë është ose uppercase vogle, 101 00:05:27,370 --> 00:05:28,740 respektivisht. 102 00:05:28,740 --> 00:05:33,770 Që ata janë Booleans, ata janë dobishme për të përdorur si kushte. 103 00:05:33,770 --> 00:05:38,310 >> Nëse isalpha kthehet e vërtetë, ju do të duhet të zhvendoset këtë karakter nga çelësi. 104 00:05:38,310 --> 00:05:43,750 Pra, le të hapur për ASCIIMath dhe të bëjë disa matematikë ASCII. 105 00:05:43,750 --> 00:05:48,700 Përdorimi është shumë e ngjashme të përdorimit për Cezarit dhe merr në një kyç në 106 00:05:48,700 --> 00:05:50,870 command line. 107 00:05:50,870 --> 00:05:59,590 >> Nëse unë drejtuar ASCIIMath 5, duket për të shtuar 5 deri në një, duke i dhënë mua f letër, dhe 108 00:05:59,590 --> 00:06:01,260 shfaqur vlerën ASCII. 109 00:06:01,260 --> 00:06:04,090 Pra, le të marrin një vështrim në program. 110 00:06:04,090 --> 00:06:11,820 >> Ju mund të pyes veten, të drejtë këtu, pse letër është një numër i plotë, kur është e 111 00:06:11,820 --> 00:06:14,330 në mënyrë të qartë, të mirë, një letër. 112 00:06:14,330 --> 00:06:17,690 Ajo rezulton se personazhet dhe integers janë këmbyeshëm. 113 00:06:17,690 --> 00:06:21,730 Duke vënë në një letër të vetme thonjëzat, numër i plotë mund të ruajë 114 00:06:21,730 --> 00:06:25,390 vlerën ASCII e kapitalit A. Jini të kujdesshëm, though. 115 00:06:25,390 --> 00:06:27,150 Ju duhet rroba të vetme. 116 00:06:27,150 --> 00:06:31,260 Pa shenjat vetme Quote, përpilues do të shikojmë për një ndryshore 117 00:06:31,260 --> 00:06:35,510 quajtur A, dhe jo karakteri. 118 00:06:35,510 --> 00:06:42,140 >> Pastaj unë shtoni letër dhe një çelës, ruajtjen Shuma në rezultat variablave int. 119 00:06:42,140 --> 00:06:47,740 Edhe pse rezultati është i tipit të të dhënave integer, deklarata ime printf përdor 120 00:06:47,740 --> 00:06:50,370 % C placeholder për karaktere. 121 00:06:50,370 --> 00:06:54,530 Pra, programi printon karakterin lidhur me rezultatin integer. 122 00:06:54,530 --> 00:07:00,400 Dhe pasi ne shtypura integer formë si edhe duke përdorur% d, ne shohim 123 00:07:00,400 --> 00:07:02,110 numri si edhe. 124 00:07:02,110 --> 00:07:04,450 Deri tani ju mund të shihni se ne trajtojnë karaktere dhe 125 00:07:04,450 --> 00:07:06,980 integers, dhe anasjelltas. 126 00:07:06,980 --> 00:07:12,205 >> Le provë nga ASCIIMath një pak 25 herë më shumë duke përdorur si një kyç. 127 00:07:12,205 --> 00:07:15,510 128 00:07:15,510 --> 00:07:17,090 Ne kemi marrë letër z. 129 00:07:17,090 --> 00:07:19,750 Tani ne përpiqemi 26. 130 00:07:19,750 --> 00:07:25,600 Ne duam që të merrni një letër, por në vend të kësaj ne kemi marrë një parantezë majtë. 131 00:07:25,600 --> 00:07:29,490 Pra, natyrisht, vetëm duke shtuar kyç në letër nuk do të bëjë. 132 00:07:29,490 --> 00:07:32,780 Ne kemi nevojë që të gjej një formulë për të përfunduar rreth alfabetit, doja tonë 133 00:07:32,780 --> 00:07:34,570 Shembulli në fillim e bëri. 134 00:07:34,570 --> 00:07:38,520 >> Një formulë për të Cezarit ndryshim është si më poshtë. 135 00:07:38,520 --> 00:07:42,750 c barabartë p plus k modulo 26. 136 00:07:42,750 --> 00:07:46,040 Mos harroni se modulo është një i dobishëm operacion që na jep pjesën e mbetur 137 00:07:46,040 --> 00:07:49,880 e ndarë nga një numër tjetër. 138 00:07:49,880 --> 00:07:54,870 Le të aplikojnë këtë formulë të thjeshtë letër tekst me një kyç të 2. 139 00:07:54,870 --> 00:08:01,810 Vlera ASCII i y është 89, e cila na jep 91 modulo 26, 140 00:08:01,810 --> 00:08:03,690 e cila është e barabartë me 13 - 141 00:08:03,690 --> 00:08:08,740 definitivisht nuk vlera ASCII e një, i cili eshte 67. 142 00:08:08,740 --> 00:08:12,810 >> Humor mua tani dhe të lëvizin larg nga Vlerat ASCII me një indeks alfabetik 143 00:08:12,810 --> 00:08:18,690 ku A është zero dhe Z eshte 25, do të thotë se Y është 24. 144 00:08:18,690 --> 00:08:25,830 24 plus 2, modulo 6, na jep 26, modulo 26, 0, e cila eshte 145 00:08:25,830 --> 00:08:28,170 indeksi alfabetik i a. 146 00:08:28,170 --> 00:08:32,980 Pra, kjo formulë duket për të aplikuar për indeksi alfabetik i letrës dhe 147 00:08:32,980 --> 00:08:34,960 jo vlera e saj ASCII. 148 00:08:34,960 --> 00:08:37,630 >> Por ju të filloni me vlera ASCII. 149 00:08:37,630 --> 00:08:41,650 Dhe për të shtypur karakterin ciphertext, ju do të duhet vlerën e saj ASCII si. 150 00:08:41,650 --> 00:08:46,400 Është e deri tek ju, pastaj, të kuptoj se se si të kaloni prapa dhe me radhë. 151 00:08:46,400 --> 00:08:49,850 >> Pasi ju kuptoj se formulën e duhur për një karakter, të gjithë ju duhet të bëni 152 00:08:49,850 --> 00:08:53,520 po aplikojnë të njëjtën formulë për çdo letër në tekst të thjeshtë - 153 00:08:53,520 --> 00:08:57,720 vetëm në qoftë se letra është alfabetike, natyrisht. 154 00:08:57,720 --> 00:09:02,360 Dhe mos harroni se ju keni nevojë për të ruajtur rasti, e sipërme apo të poshtme, kjo është ajo ku 155 00:09:02,360 --> 00:09:06,890 isUpper dhe funksionet isLower përmend më herët do të vijë në volitshëm. 156 00:09:06,890 --> 00:09:08,830 Ju mund të keni dy formulat - 157 00:09:08,830 --> 00:09:11,680 një për letra uppercase dhe nje per Fjala. 158 00:09:11,680 --> 00:09:18,420 Pra isUpper një isLower do t'ju ndihmojë të përcaktuar se cila formulë për të aplikuar. 159 00:09:18,420 --> 00:09:22,460 >> Si mendoni ju aplikoni formulën tuaj për çdo karakter të vetëm në një varg? 160 00:09:22,460 --> 00:09:25,910 E pra, një varg është vetëm një Grup i karaktereve. 161 00:09:25,910 --> 00:09:31,150 Kështu që ju mund të hyni në çdo karakter nga grupimin e mbi çdo karakter në 162 00:09:31,150 --> 00:09:33,450 string në një për lak. 163 00:09:33,450 --> 00:09:37,550 Sa për gjendjen e juaj për lak, Funksioni strlen, për vargun 164 00:09:37,550 --> 00:09:39,280 gjatësia, do të vijë në volitshëm. 165 00:09:39,280 --> 00:09:44,020 Ajo merr një varg si input dhe gjatësinë e kthen atë varg. 166 00:09:44,020 --> 00:09:49,250 Sigurohuni që të përfshijë bibliotekën e duhur të përdorni funksionin length string. 167 00:09:49,250 --> 00:09:51,790 >> Dhe atje keni ciphertext tuaj. 168 00:09:51,790 --> 00:09:53,260 Emri im është Zamyla. 169 00:09:53,260 --> 00:09:54,510 Dhe [KODI folurit]. 170 00:09:54,510 --> 00:10:02,944