>> ZAMYLA CHAN: Tahniah pada penamat anda
Pasangan pertama program C.
Saya tahu bahawa kemasukan pertama anda ke C sintaks boleh menakutkan.
Tetapi saya memberi jaminan kepada anda, pada akhir Sudah tentu, anda akan dapat melihat
Pasangan pertama tugasan dan melengkapkan mereka dalam beberapa minit.
>> Sekarang bahawa anda mendapat lebih biasa dengan sintaks, mari kita pergi ke Caesar.
Di Caesar, pengguna akan mengemukakan utama integer sebagai baris arahan
hujah, kemudian masukkan dataran mesej teks pada segera.
Program ini kemudiannya akan menulis dlm kod teks dan cetak
Mesej tulisan rahsia mereka.
>> The enciphering untuk Caesar agak mudah.
Beralih setiap huruf, dalam mereka teks biasa, oleh kunci.
Akibatnya, ia juga agak tidak selamat.
Tetapi Caesar telah diamalkan akan memperkenalkan kita ASCIIMath dan pelbagai data
struktur.
Kita akan mendapat lebih kompleks sifer kemudian.
Dengan Caesar utama 2, huruf A dalam teks biasa akan diwakili oleh
huruf C dalam tulisan rahsia kerana C adalah dua huruf selepas A. B akan
diwakili oleh D dan C dengan E. Arah akhir abjad, W adalah
diwakili oleh Y, X dan oleh Z. Tetapi Y tidak mempunyai dua huruf selepas itu, jadi
sifer wrap keliling abjad.
Y dalam teks biasa itu diwakili oleh A dalam tulisan rahsia, dan Z oleh B. Ia boleh
membantu untuk melihat Caesar menghitung seperti roda abjad berterusan.
>> Untuk menulis dlm kod teks mereka, pengguna akan memasuki dua hujah
ke dalam baris arahan -
. / Caesar diikuti oleh kunci.
Seperti biasa, kita tidak boleh mempercayai pengguna sepenuhnya untuk memasukkan input yang membuat
rasa untuk program kami.
Oleh itu, kita perlu untuk mengesahkan mereka input baris arahan.
>> Daripada menggunakan int sah utama, kami menggunakan int utama, int argc, tali argv.
The argc ubah integer mewakili bilangan hujah berlalu ke
arahan baris.
Dan argv adalah pelbagai, atau menganggapnya sebagai senarai, hujah-hujah yang diluluskan masuk
>> Jadi untuk Caesar, bagaimana kita mengesahkan input pengguna?
Nah, mereka hanya boleh memasuki dua hujah baris arahan -
. / Caesar dan kunci.
Jadi jika argc bukan 2, ini bermakna bahawa mereka sama ada terlupa kunci dan hanya
dimasukkan. / caesar, atau mereka memasuki kunci berganda.
>> Jika ini berlaku, maka anda akan mahu mencetak arahan
dan berhenti program ini.
Mereka perlu cuba lagi daripada baris arahan.
Tetapi, jika argc adalah 2, anda akan perlu menyemak sama ada mereka
memberi anda kunci yang sah.
Bagi Caesar, anda perlu integer.
Tetapi argv adalah pelbagai tali.
Bagaimana anda mengakses utama itu?
>> A melihat cepat pada array -
struktur data yang memegang pelbagai nilai jenis data yang sama.
Penyertaan adalah sifar-diindeks, yang bermaksud bahawa elemen pertama adalah sifar indeks
dan elemen yang terakhir adalah pada saiz indeks tolak 1, di mana saiz ialah bilangan
elemen dalam array.
>> Jika saya diisytiharkan rentetan pelbagai peti mel baru panjang 3, visual, ia
kelihatan seperti ini.
Tiga bekas untuk tali , Sebelah menyebelah.
Untuk mengakses mana-mana elemen, anda menaip nama array dan kemudian menunjukkan
indeks dalam kurungan persegi.
Di sini, saya memberi nilai kepada setiap unsur, seperti yang saya akan lakukan dengan mana-mana
rentetan ubah lain.
>> Jadi untuk mengakses hujah baris arahan kami, semua yang perlu kita lakukan adalah mengakses
elemen hak pelbagai argv itu.
Jika pengguna memasuki Team. / Blastoff Roket ke dalam pangkalan, argv 0 akan
berkenaan. / blastoff.
argv akan Team, dan arg2 akan roket.
>> Sekarang kita boleh mengakses utama kami, kita masih perlu membuat
memastikan bahawa ia adalah betul.
Kita perlu menukar ke integer.
Tetapi kita tidak boleh hanya membuang seperti kita telah dilakukan sebelum ini.
Nasib baik, Fungsi Y untuk menjaga ini untuk kita dan juga mengembalikan 0
jika rentetan tidak boleh ditukar ke integer.
Ia terpulang kepada anda, walaupun, untuk memberitahu pengguna mengapa anda tidak akan
biarkan program ini diteruskan.
Menyimpan hasil daripada A ke Y dalam integer, dan anda mempunyai kunci anda.
Bahagian seterusnya adalah mudah.
Mendorong pengguna untuk teks mereka, yang akan menjadi jenis string data.
Nasib baik untuk kita, semua pengguna dimasukkan tali adalah sah.
>> Sekarang kita mempunyai semua input yang diperlukan daripada pengguna, ia adalah masa untuk kita
Encipher mesej mereka.
Konsep Caesar adalah mudah cukup untuk memahami.
Tetapi bagaimana komputer anda tahu surat datang selepas satu sama lain?
>> Berikut adalah di mana jadual ASCII datang masuk
Setiap watak mempunyai integer bilangan yang dikaitkan dengannya.
Modal ialah 65.
Modal B adalah 66.
Huruf kecil adalah 97.
B huruf kecil adalah 98.
Tetapi watak-watak yang tidak terhad hanya nombor abjad.
Sebagai contoh, simbol @ adalah nombor ASCII 64.
>> Sebelum berhadapan dengan rentetan keseluruhan, mari kita berpura-pura kita hanya perlu untuk beralih
salah satu watak.
Nah, kita hanya mahu beralih sebenar surat dalam teks biasa, tidak
huruf atau nombor.
Oleh itu, perkara pertama yang kita akan mahu memeriksa sama ada watak itu adalah dalam
abjad.
>> The isalpha fungsi melakukan ini untuk kami dan kembali Boolean a -
benar jika watak-watak adalah surat, palsu jika sebaliknya.
Dua fungsi yang berguna lain isupper dan islower, dengan
nama dengan sendirinya.
Mereka kembali benar jika watak yang diberikan adalah huruf besar atau huruf kecil,
masing-masing.
Oleh kerana mereka adalah Booleans, mereka berguna untuk digunakan sebagai syarat.
>> Jika isalpha pulangan benar, anda perlu beralih watak yang oleh kunci.
Jadi mari kita terbuka kepada ASCIIMath dan melakukan beberapa matematik ASCII.
Penggunaan hampir sama dengan penggunaan untuk Caesar dan mengambil masa dalam utama di
baris arahan.
>> Jika saya berjalan ASCIIMath 5, ia seolah-olah untuk menambah 5, memberi saya f surat, dan
memaparkan nilai ASCII.
Jadi mari kita lihat pada program ini.
>> Anda mungkin tertanya-tanya, di sini, mengapa surat ialah integer, apabila ia
jelas, baik, surat.
Ia ternyata bahawa watak-watak dan integer boleh ditukar.
Dengan meletakkan huruf A dalam satu tanda petikan, integer boleh menyimpan
nilai ASCII modal A. Berhati-hati, walaupun.
Anda perlu pakaian yang tunggal.
Tanpa pengikat kata tunggal, pengkompil akan mencari pembolehubah
bernama A, dan bukan watak.
>> Kemudian saya menambah surat dan kunci, menyimpan jumlah wang int pembolehubah hasil.
Walaupun hasil adalah jenis data integer, pernyataan printf saya menggunakan
% C placeholder untuk watak-watak.
Jadi program yang mencetak watak berkaitan dengan keputusan integer.
Dan kerana kita dicetak integer bentuk serta menggunakan% d, kita lihat
bilangan juga.
Jadi sekarang anda boleh melihat bahawa kita merawat watak-watak dan
integer, dan sebaliknya.
>> Mari kita ujian keluar ASCIIMath beberapa kali menggunakan 25 sebagai kunci.
Kita mendapat surat z.
Sekarang kita cuba 26.
Kami mahu mendapatkan surat itu, tetapi sebaliknya kita mendapatkan kurungan kiri.
Jadi jelas, hanya menambah kunci kepada surat itu tidak akan lakukan.
Kita perlu memikirkan satu formula untuk membalut sekitar abjad, seperti kami
contoh pada mulanya lakukan.
>> Satu formula untuk itu Caesar perubahan adalah seperti berikut.
c sama p plus k modulo 26.
Ingatlah bahawa modulo adalah berguna operasi yang memberikan kita yang selebihnya
membahagikan nombor satu dengan yang lain.
Mari kita memohon formula ini untuk dataran surat teks dengan A utama 2.
Nilai ASCII y adalah 89, yang memberikan kita 91 modulo 26,
yang bersamaan dengan 13 -
pasti bukan nilai ASCII a, yang merupakan 67.
>> Humor saya sekarang dan beralih daripada Nilai ASCII kepada indeks abjad
di mana A adalah sifar dan Z ialah 25, yang bermaksud bahawa Y adalah 24.
24 campur 2, modulo 6, memberikan kita 26, modulo 26, 0, yang merupakan
indeks abjad a.
Jadi formula ini seolah-olah memohon kepada indeks abjad surat itu dan
bukan nilai ASCII.
>> Tetapi anda bermula dengan nilai ASCII.
Dan untuk mencetak watak tulisan rahsia itu, anda akan memerlukan nilai ASCII juga.
Ia terpulang kepada anda, maka, untuk memikirkan bagaimana untuk menukar kembali dan sebagainya.
>> Sebaik sahaja anda mengetahui formula yang betul untuk satu watak, semua yang anda perlu lakukan
yang menggunakan formula yang sama untuk setiap surat dalam teks biasa -
hanya jika surat yang abjad, sudah tentu.
Dan ingat bahawa anda perlu mengekalkan kes itu, atas atau lebih rendah, yang di mana
yang isUpper dan fungsi isLower dinyatakan sebelum ini akan datang dalam berguna.
Anda mungkin mempunyai dua formula -
satu untuk huruf besar dan satu lagi untuk kecil.
Jadi isUpper isLower yang akan membantu anda menentukan formula untuk memohon.
>> Bagaimana anda menggunakan formula untuk setiap watak tunggal dalam rentetan?
Nah, rentetan hanya satu pelbagai watak.
Jadi, anda boleh mengakses setiap watak oleh kumpulan atas setiap watak dalam
tali in untuk gelung.
Sebagai untuk keadaan anda untuk gelung, fungsi strlen, untuk tali
panjang, akan datang dalam berguna.
Ia mengambil masa dalam rentetan sebagai input dan mengembalikan panjang rentetan itu.
Pastikan untuk memasukkan perpustakaan yang betul menggunakan fungsi panjang tali.
>> Dan tidak ada tulisan rahsia anda.
Nama saya Zamyla itu.
Dan [KOD JURU].