ZAMYLA CHAN: Selamat untuk menyelesaikan Anda Pasangan pertama program C. Saya tahu bahwa perampokan pertama Anda ke Sintaks C dapat menjadi sesuatu yang membingungkan. Tapi saya jamin, pada akhir Tentu saja, Anda akan dapat melihat Pasangan pertama tugas dan menyelesaikan mereka dalam beberapa menit. Sekarang bahwa Anda mendapatkan lebih akrab dengan sintaks, mari kita kepada Kaisar. Di Caesar, pengguna akan menyerahkan kunci integer sebagai baris perintah argumen, kemudian masukkan polos pesan teks pada prompt. Program ini kemudian akan menulis dlm kode teks dan cetak pesan ciphertext mereka. The enciphering untuk Caesar cukup sederhana. Pergeseran setiap huruf, dalam mereka teks biasa, oleh kunci. Akibatnya, itu juga cukup aman. Tapi pelaksana Caesar akan memperkenalkan kita untuk ASCIIMath dan data array struktur. Kita akan sampai ke yang lebih kompleks cipher nanti. Dengan kunci Caesar dari 2, huruf A di teks biasa akan diwakili oleh huruf C di ciphertext karena C adalah dua huruf setelah A. B akan diwakili oleh D dan C oleh E. Menuju akhir alfabet, W adalah diwakili oleh Y, dan Z. Tapi X oleh Y tidak memiliki dua huruf setelah, sehingga cipher membungkus alfabet. Y dalam teks biasa demikian diwakili oleh A ciphertext, dan Z oleh B. Ini mungkin membantu untuk melihat Cypher Caesar seperti roda alfabet terus menerus. Untuk menulis dlm kode teks mereka, pengguna akan memasukkan dua argumen ke baris perintah - / Caesar. Diikuti oleh kunci. Seperti biasa, kita tidak bisa mempercayai pengguna sepenuhnya untuk memasukkan masukan yang membuat akal bagi program kami. Jadi kita harus memvalidasi mereka baris perintah input. Alih-alih menggunakan void main int, kami menggunakan, argc int int main, tali argv. The variabel integer argc mewakili jumlah argumen dilewatkan ke baris perintah. Dan argv adalah array, atau menganggapnya sebagai daftar, dari argumen berlalu masuk Jadi untuk Caesar, bagaimana kita memvalidasi input pengguna? Yah, mereka hanya harus memasuki dua argumen baris perintah - . / Caesar dan kunci. Jadi jika argc tidak 2, itu berarti bahwa mereka juga lupa kunci dan hanya masuk. / caesar, atau mereka memasuki beberapa tombol. Jika hal ini terjadi, maka Anda akan ingin mencetak instruksi dan keluar dari program. Mereka akan perlu untuk mencoba lagi dari baris perintah. Tetapi bahkan jika argc adalah 2, Anda akan perlu memeriksa apakah mereka memberikan kunci yang valid. Untuk Caesar, Anda memerlukan sebuah integer. Tapi argv adalah array dari string. Bagaimana Anda mengakses kunci itu? Sebuah cepat melihat array - struktur data yang menyimpan beberapa nilai-nilai dari tipe data yang sama. Entri-nol, yang berarti bahwa elemen pertama adalah nol indeks dan elemen terakhir adalah pada ukuran indeks dikurangi 1, di mana ukuran jumlah elemen dalam array. Jika saya menyatakan string kotak array baru dengan panjang 3, visual, itu terlihat seperti ini. Tiga kontainer untuk string , Berdampingan. Untuk mengakses setiap elemen, Anda mengetik nama array dan kemudian menunjukkan indeks dalam tanda kurung siku. Di sini, saya menetapkan nilai untuk masing-masing elemen, seperti yang akan saya lakukan dengan variabel string lainnya. Jadi untuk mengakses argumen baris perintah kita, yang harus kita lakukan adalah mengakses elemen yang tepat dari array argv. Jika pengguna memasukkan Tim / blastoff. Roket ke terminal, argv 0 akan menjadi / blastoff.. argv akan menjadi Team, dan arg2 akan roket. Sekarang kita dapat mengakses kunci kami, kita masih perlu membuat yakin bahwa itu benar. Kita perlu mengubahnya menjadi integer. Tapi kita tidak bisa hanya melemparkan seperti kami lakukan sebelumnya. Untungnya, A berfungsi Y mengurus ini bagi kita dan bahkan kembali 0 jika string tidak dapat dikonversi menjadi integer. Terserah Anda, meskipun, untuk memberitahu pengguna mengapa Anda tidak akan membiarkan program melanjutkan. Menyimpan hasil dari A ke Y dalam integer, dan di sana Anda memiliki kunci Anda. Bagian berikutnya adalah sederhana. Meminta pengguna untuk teks biasa mereka, yang akan menjadi data tipe string. Untungnya bagi kita, semua pengguna diinput string adalah valid. Sekarang bahwa kita memiliki semua masukan yang diperlukan dari pengguna, saatnya bagi kita untuk menulis dlm kode pesan mereka. Konsep Caesar sederhana cukup untuk memahami. Tapi bagaimana komputer Anda tahu mana surat datang setelah satu sama lain? Di sinilah tabel ASCII masuk Setiap karakter memiliki integer nomor yang terkait dengan itu. Modal adalah 65. Modal B adalah 66. Huruf kecil adalah 97. Huruf kecil b adalah 98. Tapi karakter tidak terbatas hanya nomor abjad. Misalnya, simbol @ adalah ASCII nomor 64. Sebelum berurusan dengan seluruh string, mari kita berpura-pura kita hanya perlu menggeser satu karakter. Yah, kita hanya ingin bergeser aktual huruf dalam teks biasa, tidak karakter atau angka. Jadi hal pertama yang kita ingin periksa adalah apakah karakter dalam alfabet. Fungsi isalpha melakukan hal ini untuk kita dan mengembalikan Boolean - benar jika karakter adalah huruf a, false jika sebaliknya. Dua fungsi yang berguna lainnya isupper dan islower, dengan nama jelas. Mereka mengembalikan true jika karakter yang diberikan adalah besar atau kecil, masing-masing. Karena mereka adalah Booleans, mereka berguna untuk digunakan sebagai kondisi. Jika isalpha mengembalikan nilai true, Anda harus untuk menggeser karakter tersebut dengan kunci. Jadi mari kita buka ke ASCIIMath dan melakukan beberapa matematika ASCII. Pemakaian ini mirip dengan penggunaan untuk Caesar dan mengambil dalam kunci di baris perintah. Jika saya menjalankan ASCIIMath 5, tampaknya untuk menambahkan 5 ke, memberi saya huruf f, dan menampilkan nilai ASCII. Jadi mari kita lihat program. Anda mungkin bertanya-tanya, di sini, mengapa Surat adalah bilangan bulat, ketika itu secara jelas, baik, surat. Ternyata karakter dan bilangan bulat yang dipertukarkan. Dengan menempatkan huruf A dalam satu tanda kutip, integer dapat menyimpan nilai ASCII modal A. Hati-hati, meskipun. Anda membutuhkan pakaian tunggal. Tanpa tanda kutip tunggal, compiler akan mencari variabel bernama A, dan bukan karakter. Lalu aku menambahkan surat dan kunci, menyimpan Jumlah dalam variabel hasil int. Meskipun hasil adalah jenis data integer, pernyataan printf saya menggunakan % C tempat untuk karakter. Jadi program akan mencetak karakter terkait dengan hasil integer. Dan karena kami mencetak integer bentuk serta menggunakan% d, kita melihat jumlah juga. Jadi sekarang Anda dapat melihat bahwa kita memperlakukan karakter dan bilangan bulat, dan sebaliknya. Mari kita uji keluar ASCIIMath beberapa kali lainnya menggunakan 25 sebagai kunci. Kami mendapatkan huruf z. Sekarang kita coba 26. Kami ingin mendapatkan surat, tapi bukannya kita mendapatkan braket kiri. Jadi jelas, hanya menambahkan kunci untuk surat itu tidak akan melakukannya. Kita perlu mencari tahu formula untuk membungkus sekitar alfabet, seperti kami Misalnya di awal lakukan. Sebuah formula untuk Caesar pergeseran adalah sebagai berikut. c sama dengan p ditambah k modulo 26. Ingat bahwa modulo adalah berguna operasi yang memberi kita sisanya membagi nomor satu dengan lainnya. Mari kita menerapkan formula ini untuk dataran Surat teks dengan Kunci dari 2. Nilai ASCII dari y adalah 89, yang memberi kita 91 modulo 26, yang sama dengan 13 - pasti tidak nilai ASCII dari, yaitu 67. Humor saya sekarang dan menjauhi Nilai ASCII ke indeks alfabet dimana A adalah nol dan Z adalah 25, yang berarti bahwa Y adalah 24. 24 ditambah 2, modulo 6, memberi kita 26, modulo 26, 0, yang merupakan indeks alfabet dari. Jadi rumus ini tampaknya berlaku untuk indeks alfabet surat dan tidak nilai ASCII. Tapi Anda mulai dengan nilai-nilai ASCII. Dan untuk mencetak karakter ciphertext, Anda harus nilai ASCII juga. Terserah Anda, maka, untuk mencari tahu bagaimana untuk beralih kembali dan sebagainya. Setelah Anda mengetahui formula yang tepat untuk satu karakter, semua yang perlu Anda lakukan adalah menerapkan rumus yang sama untuk setiap huruf dalam teks biasa - hanya jika surat itu abjad, tentu saja. Dan ingat bahwa Anda perlu untuk melestarikan kasus ini, atas atau bawah, di situlah yang isUpper dan fungsi islower disebutkan sebelumnya akan berguna. Anda mungkin memiliki dua rumus - satu untuk huruf besar dan satu untuk huruf kecil. Jadi isUpper sebuah islower akan membantu Anda menentukan rumus untuk menerapkan. Bagaimana Anda menerapkan rumus untuk setiap karakter tunggal dalam sebuah string? Nah, string hanya sebuah array karakter. Jadi Anda dapat mengakses setiap karakter dengan pengelompokan atas setiap karakter dalam string dalam untuk loop. Adapun kondisi Anda untuk loop, fungsi strlen, untuk tali panjang, akan berguna. Dibutuhkan dalam sebuah string sebagai masukan dan mengembalikan panjang string tersebut. Pastikan untuk menyertakan perpustakaan yang tepat untuk menggunakan fungsi panjang string. Dan di sana Anda memiliki ciphertext Anda. Nama saya Zamyla tersebut. Dan [BERBICARA KODE].