1 00:00:00,000 --> 00:00:10,103 2 00:00:10,103 --> 00:00:11,270 >> ZAMYLA CHAN: Tahniah pada penamat anda 3 00:00:11,270 --> 00:00:13,200 Pasangan pertama program C. 4 00:00:13,200 --> 00:00:16,379 Saya tahu bahawa kemasukan pertama anda ke C sintaks boleh menakutkan. 5 00:00:16,379 --> 00:00:20,060 Tetapi saya memberi jaminan kepada anda, pada akhir Sudah tentu, anda akan dapat melihat 6 00:00:20,060 --> 00:00:23,870 Pasangan pertama tugasan dan melengkapkan mereka dalam beberapa minit. 7 00:00:23,870 --> 00:00:27,830 >> Sekarang bahawa anda mendapat lebih biasa dengan sintaks, mari kita pergi ke Caesar. 8 00:00:27,830 --> 00:00:31,720 Di Caesar, pengguna akan mengemukakan utama integer sebagai baris arahan 9 00:00:31,720 --> 00:00:35,300 hujah, kemudian masukkan dataran mesej teks pada segera. 10 00:00:35,300 --> 00:00:38,050 Program ini kemudiannya akan menulis dlm kod teks dan cetak 11 00:00:38,050 --> 00:00:40,020 Mesej tulisan rahsia mereka. 12 00:00:40,020 --> 00:00:42,980 >> The enciphering untuk Caesar agak mudah. 13 00:00:42,980 --> 00:00:46,455 Beralih setiap huruf, dalam mereka teks biasa, oleh kunci. 14 00:00:46,455 --> 00:00:49,220 Akibatnya, ia juga agak tidak selamat. 15 00:00:49,220 --> 00:00:53,850 Tetapi Caesar telah diamalkan akan memperkenalkan kita ASCIIMath dan pelbagai data 16 00:00:53,850 --> 00:00:54,460 struktur. 17 00:00:54,460 --> 00:00:57,510 Kita akan mendapat lebih kompleks sifer kemudian. 18 00:00:57,510 --> 00:01:01,680 Dengan Caesar utama 2, huruf A dalam teks biasa akan diwakili oleh 19 00:01:01,680 --> 00:01:07,580 huruf C dalam tulisan rahsia kerana C adalah dua huruf selepas A. B akan 20 00:01:07,580 --> 00:01:12,450 diwakili oleh D dan C dengan E. Arah akhir abjad, W adalah 21 00:01:12,450 --> 00:01:18,550 diwakili oleh Y, X dan oleh Z. Tetapi Y tidak mempunyai dua huruf selepas itu, jadi 22 00:01:18,550 --> 00:01:21,070 sifer wrap keliling abjad. 23 00:01:21,070 --> 00:01:27,190 Y dalam teks biasa itu diwakili oleh A dalam tulisan rahsia, dan Z oleh B. Ia boleh 24 00:01:27,190 --> 00:01:32,080 membantu untuk melihat Caesar menghitung seperti roda abjad berterusan. 25 00:01:32,080 --> 00:01:35,760 >> Untuk menulis dlm kod teks mereka, pengguna akan memasuki dua hujah 26 00:01:35,760 --> 00:01:37,090 ke dalam baris arahan - 27 00:01:37,090 --> 00:01:40,010 . / Caesar diikuti oleh kunci. 28 00:01:40,010 --> 00:01:44,710 Seperti biasa, kita tidak boleh mempercayai pengguna sepenuhnya untuk memasukkan input yang membuat 29 00:01:44,710 --> 00:01:45,800 rasa untuk program kami. 30 00:01:45,800 --> 00:01:50,670 Oleh itu, kita perlu untuk mengesahkan mereka input baris arahan. 31 00:01:50,670 --> 00:01:57,285 >> Daripada menggunakan int sah utama, kami menggunakan int utama, int argc, tali argv. 32 00:01:57,285 --> 00:02:01,730 The argc ubah integer mewakili bilangan hujah berlalu ke 33 00:02:01,730 --> 00:02:02,880 arahan baris. 34 00:02:02,880 --> 00:02:09,070 Dan argv adalah pelbagai, atau menganggapnya sebagai senarai, hujah-hujah yang diluluskan masuk 35 00:02:09,070 --> 00:02:12,000 >> Jadi untuk Caesar, bagaimana kita mengesahkan input pengguna? 36 00:02:12,000 --> 00:02:15,870 Nah, mereka hanya boleh memasuki dua hujah baris arahan - 37 00:02:15,870 --> 00:02:18,150 . / Caesar dan kunci. 38 00:02:18,150 --> 00:02:22,340 Jadi jika argc bukan 2, ini bermakna bahawa mereka sama ada terlupa kunci dan hanya 39 00:02:22,340 --> 00:02:27,230 dimasukkan. / caesar, atau mereka memasuki kunci berganda. 40 00:02:27,230 --> 00:02:29,770 >> Jika ini berlaku, maka anda akan mahu mencetak arahan 41 00:02:29,770 --> 00:02:30,910 dan berhenti program ini. 42 00:02:30,910 --> 00:02:34,320 Mereka perlu cuba lagi daripada baris arahan. 43 00:02:34,320 --> 00:02:37,430 Tetapi, jika argc adalah 2, anda akan perlu menyemak sama ada mereka 44 00:02:37,430 --> 00:02:39,100 memberi anda kunci yang sah. 45 00:02:39,100 --> 00:02:40,730 Bagi Caesar, anda perlu integer. 46 00:02:40,730 --> 00:02:43,260 Tetapi argv adalah pelbagai tali. 47 00:02:43,260 --> 00:02:46,490 Bagaimana anda mengakses utama itu? 48 00:02:46,490 --> 00:02:47,850 >> A melihat cepat pada array - 49 00:02:47,850 --> 00:02:51,410 struktur data yang memegang pelbagai nilai jenis data yang sama. 50 00:02:51,410 --> 00:02:55,350 Penyertaan adalah sifar-diindeks, yang bermaksud bahawa elemen pertama adalah sifar indeks 51 00:02:55,350 --> 00:03:00,260 dan elemen yang terakhir adalah pada saiz indeks tolak 1, di mana saiz ialah bilangan 52 00:03:00,260 --> 00:03:02,850 elemen dalam array. 53 00:03:02,850 --> 00:03:07,380 >> Jika saya diisytiharkan rentetan pelbagai peti mel baru panjang 3, visual, ia 54 00:03:07,380 --> 00:03:08,570 kelihatan seperti ini. 55 00:03:08,570 --> 00:03:11,520 Tiga bekas untuk tali , Sebelah menyebelah. 56 00:03:11,520 --> 00:03:15,445 Untuk mengakses mana-mana elemen, anda menaip nama array dan kemudian menunjukkan 57 00:03:15,445 --> 00:03:18,080 indeks dalam kurungan persegi. 58 00:03:18,080 --> 00:03:21,610 Di sini, saya memberi nilai kepada setiap unsur, seperti yang saya akan lakukan dengan mana-mana 59 00:03:21,610 --> 00:03:24,310 rentetan ubah lain. 60 00:03:24,310 --> 00:03:29,020 >> Jadi untuk mengakses hujah baris arahan kami, semua yang perlu kita lakukan adalah mengakses 61 00:03:29,020 --> 00:03:31,690 elemen hak pelbagai argv itu. 62 00:03:31,690 --> 00:03:37,360 Jika pengguna memasuki Team. / Blastoff Roket ke dalam pangkalan, argv 0 akan 63 00:03:37,360 --> 00:03:38,950 berkenaan. / blastoff. 64 00:03:38,950 --> 00:03:45,010 argv akan Team, dan arg2 akan roket. 65 00:03:45,010 --> 00:03:47,670 >> Sekarang kita boleh mengakses utama kami, kita masih perlu membuat 66 00:03:47,670 --> 00:03:49,040 memastikan bahawa ia adalah betul. 67 00:03:49,040 --> 00:03:51,060 Kita perlu menukar ke integer. 68 00:03:51,060 --> 00:03:54,680 Tetapi kita tidak boleh hanya membuang seperti kita telah dilakukan sebelum ini. 69 00:03:54,680 --> 00:03:58,800 Nasib baik, Fungsi Y untuk menjaga ini untuk kita dan juga mengembalikan 0 70 00:03:58,800 --> 00:04:02,110 jika rentetan tidak boleh ditukar ke integer. 71 00:04:02,110 --> 00:04:04,450 Ia terpulang kepada anda, walaupun, untuk memberitahu pengguna mengapa anda tidak akan 72 00:04:04,450 --> 00:04:06,220 biarkan program ini diteruskan. 73 00:04:06,220 --> 00:04:10,710 Menyimpan hasil daripada A ke Y dalam integer, dan anda mempunyai kunci anda. 74 00:04:10,710 --> 00:04:12,070 Bahagian seterusnya adalah mudah. 75 00:04:12,070 --> 00:04:15,940 Mendorong pengguna untuk teks mereka, yang akan menjadi jenis string data. 76 00:04:15,940 --> 00:04:18,339 Nasib baik untuk kita, semua pengguna dimasukkan tali adalah sah. 77 00:04:18,339 --> 00:04:21,170 78 00:04:21,170 --> 00:04:24,760 >> Sekarang kita mempunyai semua input yang diperlukan daripada pengguna, ia adalah masa untuk kita 79 00:04:24,760 --> 00:04:26,520 Encipher mesej mereka. 80 00:04:26,520 --> 00:04:29,200 Konsep Caesar adalah mudah cukup untuk memahami. 81 00:04:29,200 --> 00:04:33,750 Tetapi bagaimana komputer anda tahu surat datang selepas satu sama lain? 82 00:04:33,750 --> 00:04:36,100 >> Berikut adalah di mana jadual ASCII datang masuk 83 00:04:36,100 --> 00:04:39,420 Setiap watak mempunyai integer bilangan yang dikaitkan dengannya. 84 00:04:39,420 --> 00:04:41,380 Modal ialah 65. 85 00:04:41,380 --> 00:04:43,310 Modal B adalah 66. 86 00:04:43,310 --> 00:04:45,260 Huruf kecil adalah 97. 87 00:04:45,260 --> 00:04:47,590 B huruf kecil adalah 98. 88 00:04:47,590 --> 00:04:50,770 Tetapi watak-watak yang tidak terhad hanya nombor abjad. 89 00:04:50,770 --> 00:04:56,020 Sebagai contoh, simbol @ adalah nombor ASCII 64. 90 00:04:56,020 --> 00:04:59,690 >> Sebelum berhadapan dengan rentetan keseluruhan, mari kita berpura-pura kita hanya perlu untuk beralih 91 00:04:59,690 --> 00:05:01,220 salah satu watak. 92 00:05:01,220 --> 00:05:04,640 Nah, kita hanya mahu beralih sebenar surat dalam teks biasa, tidak 93 00:05:04,640 --> 00:05:06,020 huruf atau nombor. 94 00:05:06,020 --> 00:05:09,100 Oleh itu, perkara pertama yang kita akan mahu memeriksa sama ada watak itu adalah dalam 95 00:05:09,100 --> 00:05:10,430 abjad. 96 00:05:10,430 --> 00:05:14,460 >> The isalpha fungsi melakukan ini untuk kami dan kembali Boolean a - 97 00:05:14,460 --> 00:05:18,570 benar jika watak-watak adalah surat, palsu jika sebaliknya. 98 00:05:18,570 --> 00:05:22,270 Dua fungsi yang berguna lain isupper dan islower, dengan 99 00:05:22,270 --> 00:05:23,860 nama dengan sendirinya. 100 00:05:23,860 --> 00:05:27,370 Mereka kembali benar jika watak yang diberikan adalah huruf besar atau huruf kecil, 101 00:05:27,370 --> 00:05:28,740 masing-masing. 102 00:05:28,740 --> 00:05:33,770 Oleh kerana mereka adalah Booleans, mereka berguna untuk digunakan sebagai syarat. 103 00:05:33,770 --> 00:05:38,310 >> Jika isalpha pulangan benar, anda perlu beralih watak yang oleh kunci. 104 00:05:38,310 --> 00:05:43,750 Jadi mari kita terbuka kepada ASCIIMath dan melakukan beberapa matematik ASCII. 105 00:05:43,750 --> 00:05:48,700 Penggunaan hampir sama dengan penggunaan untuk Caesar dan mengambil masa dalam utama di 106 00:05:48,700 --> 00:05:50,870 baris arahan. 107 00:05:50,870 --> 00:05:59,590 >> Jika saya berjalan ASCIIMath 5, ia seolah-olah untuk menambah 5, memberi saya f surat, dan 108 00:05:59,590 --> 00:06:01,260 memaparkan nilai ASCII. 109 00:06:01,260 --> 00:06:04,090 Jadi mari kita lihat pada program ini. 110 00:06:04,090 --> 00:06:11,820 >> Anda mungkin tertanya-tanya, di sini, mengapa surat ialah integer, apabila ia 111 00:06:11,820 --> 00:06:14,330 jelas, baik, surat. 112 00:06:14,330 --> 00:06:17,690 Ia ternyata bahawa watak-watak dan integer boleh ditukar. 113 00:06:17,690 --> 00:06:21,730 Dengan meletakkan huruf A dalam satu tanda petikan, integer boleh menyimpan 114 00:06:21,730 --> 00:06:25,390 nilai ASCII modal A. Berhati-hati, walaupun. 115 00:06:25,390 --> 00:06:27,150 Anda perlu pakaian yang tunggal. 116 00:06:27,150 --> 00:06:31,260 Tanpa pengikat kata tunggal, pengkompil akan mencari pembolehubah 117 00:06:31,260 --> 00:06:35,510 bernama A, dan bukan watak. 118 00:06:35,510 --> 00:06:42,140 >> Kemudian saya menambah surat dan kunci, menyimpan jumlah wang int pembolehubah hasil. 119 00:06:42,140 --> 00:06:47,740 Walaupun hasil adalah jenis data integer, pernyataan printf saya menggunakan 120 00:06:47,740 --> 00:06:50,370 % C placeholder untuk watak-watak. 121 00:06:50,370 --> 00:06:54,530 Jadi program yang mencetak watak berkaitan dengan keputusan integer. 122 00:06:54,530 --> 00:07:00,400 Dan kerana kita dicetak integer bentuk serta menggunakan% d, kita lihat 123 00:07:00,400 --> 00:07:02,110 bilangan juga. 124 00:07:02,110 --> 00:07:04,450 Jadi sekarang anda boleh melihat bahawa kita merawat watak-watak dan 125 00:07:04,450 --> 00:07:06,980 integer, dan sebaliknya. 126 00:07:06,980 --> 00:07:12,205 >> Mari kita ujian keluar ASCIIMath beberapa kali menggunakan 25 sebagai kunci. 127 00:07:12,205 --> 00:07:15,510 128 00:07:15,510 --> 00:07:17,090 Kita mendapat surat z. 129 00:07:17,090 --> 00:07:19,750 Sekarang kita cuba 26. 130 00:07:19,750 --> 00:07:25,600 Kami mahu mendapatkan surat itu, tetapi sebaliknya kita mendapatkan kurungan kiri. 131 00:07:25,600 --> 00:07:29,490 Jadi jelas, hanya menambah kunci kepada surat itu tidak akan lakukan. 132 00:07:29,490 --> 00:07:32,780 Kita perlu memikirkan satu formula untuk membalut sekitar abjad, seperti kami 133 00:07:32,780 --> 00:07:34,570 contoh pada mulanya lakukan. 134 00:07:34,570 --> 00:07:38,520 >> Satu formula untuk itu Caesar perubahan adalah seperti berikut. 135 00:07:38,520 --> 00:07:42,750 c sama p plus k modulo 26. 136 00:07:42,750 --> 00:07:46,040 Ingatlah bahawa modulo adalah berguna operasi yang memberikan kita yang selebihnya 137 00:07:46,040 --> 00:07:49,880 membahagikan nombor satu dengan yang lain. 138 00:07:49,880 --> 00:07:54,870 Mari kita memohon formula ini untuk dataran surat teks dengan A utama 2. 139 00:07:54,870 --> 00:08:01,810 Nilai ASCII y adalah 89, yang memberikan kita 91 modulo 26, 140 00:08:01,810 --> 00:08:03,690 yang bersamaan dengan 13 - 141 00:08:03,690 --> 00:08:08,740 pasti bukan nilai ASCII a, yang merupakan 67. 142 00:08:08,740 --> 00:08:12,810 >> Humor saya sekarang dan beralih daripada Nilai ASCII kepada indeks abjad 143 00:08:12,810 --> 00:08:18,690 di mana A adalah sifar dan Z ialah 25, yang bermaksud bahawa Y adalah 24. 144 00:08:18,690 --> 00:08:25,830 24 campur 2, modulo 6, memberikan kita 26, modulo 26, 0, yang merupakan 145 00:08:25,830 --> 00:08:28,170 indeks abjad a. 146 00:08:28,170 --> 00:08:32,980 Jadi formula ini seolah-olah memohon kepada indeks abjad surat itu dan 147 00:08:32,980 --> 00:08:34,960 bukan nilai ASCII. 148 00:08:34,960 --> 00:08:37,630 >> Tetapi anda bermula dengan nilai ASCII. 149 00:08:37,630 --> 00:08:41,650 Dan untuk mencetak watak tulisan rahsia itu, anda akan memerlukan nilai ASCII juga. 150 00:08:41,650 --> 00:08:46,400 Ia terpulang kepada anda, maka, untuk memikirkan bagaimana untuk menukar kembali dan sebagainya. 151 00:08:46,400 --> 00:08:49,850 >> Sebaik sahaja anda mengetahui formula yang betul untuk satu watak, semua yang anda perlu lakukan 152 00:08:49,850 --> 00:08:53,520 yang menggunakan formula yang sama untuk setiap surat dalam teks biasa - 153 00:08:53,520 --> 00:08:57,720 hanya jika surat yang abjad, sudah tentu. 154 00:08:57,720 --> 00:09:02,360 Dan ingat bahawa anda perlu mengekalkan kes itu, atas atau lebih rendah, yang di mana 155 00:09:02,360 --> 00:09:06,890 yang isUpper dan fungsi isLower dinyatakan sebelum ini akan datang dalam berguna. 156 00:09:06,890 --> 00:09:08,830 Anda mungkin mempunyai dua formula - 157 00:09:08,830 --> 00:09:11,680 satu untuk huruf besar dan satu lagi untuk kecil. 158 00:09:11,680 --> 00:09:18,420 Jadi isUpper isLower yang akan membantu anda menentukan formula untuk memohon. 159 00:09:18,420 --> 00:09:22,460 >> Bagaimana anda menggunakan formula untuk setiap watak tunggal dalam rentetan? 160 00:09:22,460 --> 00:09:25,910 Nah, rentetan hanya satu pelbagai watak. 161 00:09:25,910 --> 00:09:31,150 Jadi, anda boleh mengakses setiap watak oleh kumpulan atas setiap watak dalam 162 00:09:31,150 --> 00:09:33,450 tali in untuk gelung. 163 00:09:33,450 --> 00:09:37,550 Sebagai untuk keadaan anda untuk gelung, fungsi strlen, untuk tali 164 00:09:37,550 --> 00:09:39,280 panjang, akan datang dalam berguna. 165 00:09:39,280 --> 00:09:44,020 Ia mengambil masa dalam rentetan sebagai input dan mengembalikan panjang rentetan itu. 166 00:09:44,020 --> 00:09:49,250 Pastikan untuk memasukkan perpustakaan yang betul menggunakan fungsi panjang tali. 167 00:09:49,250 --> 00:09:51,790 >> Dan tidak ada tulisan rahsia anda. 168 00:09:51,790 --> 00:09:53,260 Nama saya Zamyla itu. 169 00:09:53,260 --> 00:09:54,510 Dan [KOD JURU]. 170 00:09:54,510 --> 00:10:02,944