>> ZAMYLA CHAN: ขอแสดงความยินดี เมื่อจบของคุณ
คู่แรกของโปรแกรม C
ฉันรู้ว่าการโจมตีครั้งแรกของคุณให้เป็น ไวยากรณ์ C สามารถ daunting
แต่ผมยืนยันกับคุณได้ในตอนท้ายของ แน่นอนคุณจะสามารถมองไปที่
คู่แรกของการมอบหมายงานและ ให้พวกเขาในไม่กี่นาที
>> ตอนนี้ที่คุณได้รับคุ้นเคยมากกว่า กับไวยากรณ์, ขอได้ที่ซีซาร์
ในซีซาร์ผู้ใช้จะส่ง ที่สำคัญจำนวนเต็มเป็นบรรทัดคำสั่ง
อาร์กิวเมนต์แล้วใส่ธรรมดา ข้อความที่รวดเร็ว
โปรแกรมก็จะเปลี่ยนเป็นรหัส ข้อความและพิมพ์
ข้อความไซเฟอร์เท็กซ์ของพวกเขา
>> เข้ารหัสสำหรับซีซาร์ ค่อนข้างง่าย
เลื่อนตัวอักษรแต่ละตัวในของพวกเขา ข้อความธรรมดาโดยที่สำคัญ
ผลที่ตามมาก็ยังมี สวยไม่ปลอดภัย
แต่การดำเนินการของซีซาร์จะแนะนำ เรากับข้อมูล ASCIIMath และอาร์เรย์
โครงสร้าง
เราจะได้รับความซับซ้อนมากขึ้น ยันต์ภายหลัง
กับซีซาร์สำคัญของ 2 ตัวอักษรใน ข้อความธรรมดาจะได้รับการแสดงโดย
C ตัวอักษรใน ciphertext เพราะ C เป็นตัวอักษรสองตัวหลังจาก A. B จะเป็น
แสดงโดย D และ C โดยอีต่อ ในตอนท้ายของตัวอักษร, W คือ
แทนด้วย Y และ X โดย Z. แต่ Y ไม่ได้มีตัวอักษรสองตัวหลังจากที่มันดังนั้น
ยันต์พันรอบตัวอักษร
Y ในข้อความธรรมดาจึงเป็นตัวแทนโดย ใน ciphertext และ Z โดย B. มันอาจ
ช่วยในการดูซีซาร์ศูนย์เช่น ล้อตัวอักษรอย่างต่อเนื่อง
>> หากต้องการเปลี่ยนเป็นรหัสข้อความที่ผู้ใช้ของพวกเขา จะเข้าสู่สองอาร์กิวเมนต์
เป็นบรรทัดคำสั่ง -
. / ซีซาร์ตามด้วยที่สำคัญ
เช่นเคยเราไม่สามารถไว้วางใจของผู้ใช้ อย่างสมบูรณ์เพื่อป้อนที่ทำให้
ความรู้สึกสำหรับโปรแกรมของเรา
ดังนั้นเราจะมีการตรวจสอบของพวกเขา ป้อนบรรทัดคำสั่ง
>> แทนการใช้เป็นโมฆะหลัก int เราไม่ ใช้ int หลัก int argc, argv สตริง
argc ตัวแปรจำนวนเต็มแทน จำนวนอาร์กิวเมนต์ที่ผ่านเข้ามา
บรรทัดคำสั่ง
และ argv เป็นอาร์เรย์หรือคิดว่ามันเป็น รายการของอาร์กิวเมนต์ผ่านระบบ
>> ดังนั้นสำหรับซีซาร์ทำอย่างไรเราจะตรวจสอบ การป้อนข้อมูลของผู้ใช้?
ดีที่พวกเขาควรจะเข้ามา สองอาร์กิวเมนต์บรรทัดคำสั่ง -
. / ซีซาร์และที่สำคัญ
ดังนั้นถ้าไม่ได้เป็น argc 2 ว่าหมายความว่า พวกเขาอาจลืมกุญแจและเพียงแค่
ป้อน. / ซีซาร์หรือพวกเขา เข้ามาหลายคีย์
>> หากเป็นกรณีนี้แล้วคุณจะ ต้องการพิมพ์คำแนะนำ
และออกจากโปรแกรม
พวกเขาจะต้องลองอีกครั้ง จากบรรทัดคำสั่ง
แต่ถึงแม้ว่า argc เป็น 2 คุณจะ จำเป็นต้องตรวจสอบว่าพวกเขา
ให้คุณคีย์ที่ถูกต้อง
สำหรับซีซาร์คุณจะต้องเป็นจำนวนเต็ม
แต่ argv เป็นอาร์เรย์ของสตริง
คุณจะเข้าถึงที่สำคัญที่ได้อย่างไร
>> ดูอย่างรวดเร็วที่อาร์เรย์ -
โครงสร้างข้อมูลที่ถือหลาย ค่าของชนิดข้อมูลเดียวกัน
คอมเมนต์เป็นศูนย์จัดทำดัชนีหมายความว่า องค์ประกอบแรกเป็นศูนย์ดัชนี
และสุดท้ายคือองค์ประกอบที่มีขนาดดัชนี ลบ 1 ที่ขนาดคือจำนวนของ
องค์ประกอบในอาร์เรย์
>> ถ้าผมประกาศให้เป็นสตริงกล่องจดหมายใหม่อาร์เรย์ ความยาว 3, สายตามัน
ลักษณะเช่นนี้
สามภาชนะบรรจุสตริง เคียงข้าง
ในการเข้าถึงองค์ประกอบใด ๆ ที่คุณพิมพ์ชื่อ ของอาร์เรย์แล้วระบุ
ดัชนีในวงเล็บ
นี่ฉันกำหนดค่าให้กับแต่ละ องค์ประกอบเช่นเดียวกับที่ฉันจะทำอย่างไรกับการใด ๆ
ตัวแปรสตริงอื่น ๆ
>> ดังนั้นในการเข้าถึงอาร์กิวเมนต์บรรทัดคำสั่งของเรา ทั้งหมดที่เราต้องทำคือการเข้าถึง
องค์ประกอบทางด้านขวาของอาร์เรย์ argv
ถ้าผู้ใช้ป้อนทีม. Blastoff / จรวดเข้าไปในอาคารที่จะ argv 0
เป็น. / Blastoff
argv จะเป็นทีมและ arg2 จะเป็นจรวด
>> ตอนนี้ที่เราสามารถเข้าถึงสำคัญของเรา, เรายังคงต้องให้
แน่ใจว่ามันถูกต้อง
เราจำเป็นต้องแปลงเป็นจำนวนเต็ม
แต่เราไม่สามารถโยนเช่นเดียวกับ ที่เราเคยทำก่อนหน้านี้
โชคดีกับการทำงาน Y ดูแล นี้สำหรับเราและแม้กระทั่งกลับ 0
ถ้าสตริงไม่สามารถแปลง เป็นจำนวนเต็ม
มันขึ้นอยู่กับคุณ แต่เพื่อที่จะบอก ผู้ใช้ทำไมคุณจะไม่
ให้โปรแกรมดำเนินการต่อไป
ผลจากการจัดเก็บเป็น Y ใน จำนวนเต็มและมีคุณมีคีย์ของคุณ
ส่วนถัดไปเป็นเรื่องง่าย
แจ้งให้ผู้ใช้สำหรับข้อความธรรมดาของพวกเขา, ซึ่งจะเป็นของสตริงชนิดข้อมูล
โชคดีสำหรับเราทั้งหมดของผู้ใช้ป้อน สตริงที่ถูกต้อง
>> ตอนนี้เรามีป้อนข้อมูลทั้งหมดที่จำเป็น จากผู้ใช้ก็ถึงเวลาที่เราจะ
เปลี่ยนเป็นรหัสข้อความของพวกเขา
แนวคิดของซีซาร์เป็นเรื่องง่าย พอที่จะเข้าใจ
แต่เครื่องคอมพิวเตอร์ของคุณวิธีการที่ไม่ทราบว่า จดหมายมาหนึ่งหลังจากที่อื่นได้หรือไม่
>> ในที่นี้ตาราง ASCII มา
ตัวละครทุกตัวมีจำนวนเต็ม จำนวนที่เกี่ยวข้องกับมัน
ทุนคือ 65
ทุน B เป็น 66
ตัวพิมพ์เล็กเป็น 97
b ตัวพิมพ์เล็กเป็น 98
แต่ตัวอักษรไม่ จำกัด เพียงแค่ตัวเลขตัวอักษร
ตัวอย่างเช่นสัญลักษณ์ @ 64 จำนวน ASCII เป็น
>> ก่อนที่จะจัดการกับสตริงทั้ง, ให้แกล้งเราก็ต้องเปลี่ยน
ตัวละครตัวหนึ่ง
ดีเราเพียงต้องการที่จะเปลี่ยนที่เกิดขึ้นจริง ตัวอักษรในข้อความธรรมดาไม่ได้
ตัวอักษรหรือตัวเลข
ดังนั้นสิ่งแรกที่เราจะต้องการ ตรวจสอบว่าเป็นตัวละครที่อยู่ใน
ตัวอักษร
>> isalpha ฟังก์ชั่นไม่นี้สำหรับ เราและผลตอบแทนแบบบูล -
จริงถ้าตัวอักษรที่เป็นตัวอักษร, เท็จถ้าเป็นอย่างอื่น
สองฟังก์ชันที่มีประโยชน์อื่น ๆ isupper และ islower ด้วย
ชื่ออธิบายตนเอง
พวกเขากลับจริงถ้าตัวอักษรที่กำหนด เป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก,
ตามลำดับ
เนื่องจากพวกเขาเป็นบูลีนที่พวกเขากำลัง มีประโยชน์ในการใช้เป็นเงื่อนไข
>> ถ้า isalpha ผลตอบแทนจริงคุณจะต้อง ที่จะเปลี่ยนโดยตัวอักษรที่สำคัญ
ดังนั้นขอเปิด ASCIIMath และทำบางคณิตศาสตร์ ASCII
การใช้งานจะคล้ายกับการใช้งาน สำหรับซีซาร์และใช้เวลาในกุญแจสำคัญที่
บรรทัดคำสั่ง
>> หากฉันใช้ ASCIIMath 5 ดูเหมือนว่าจะเพิ่ม 5 ถึงให้ฉันฉจดหมายและ
แสดงค่า ASCII
ดังนั้นลองมาดูที่โปรแกรม
>> คุณอาจสงสัยว่าที่นี่ทำไม ตัวอักษรเป็นจำนวนเต็มเมื่อมัน
อย่างเห็นได้ชัดทั้งตัวอักษร
แต่กลับกลายเป็นว่าตัวอักษรและ จำนวนเต็มสามารถใช้แทนกัน
โดยการใส่ตัวอักษรในหนึ่งเดียว เครื่องหมายคำพูดจำนวนเต็มสามารถเก็บ
ค่า ASCII ของเงินทุน A. ระวังแม้ว่า
คุณจำเป็นต้องมีเสื้อผ้าเดียว
โดยไม่ใส่เครื่องหมายคำพูดเดียว, คอมไพเลอร์จะมองหาตัวแปร
ชื่อและตัวอักษรไม่ได้
>> แล้วฉันจะเพิ่มตัวอักษรและที่สำคัญการจัดเก็บ ผลรวมในผลตัวแปร int
ถึงแม้ว่าผลจะมีชนิดของข้อมูล จำนวนเต็มคำสั่ง printf ฉันใช้
ตัวยึด% c สำหรับตัวอักษร
ดังนั้นโปรแกรมจะพิมพ์ตัวอักษร ที่เกี่ยวข้องกับผลจำนวนเต็ม
และตั้งแต่ที่เราพิมพ์จำนวนเต็ม รูปแบบเช่นกันโดยใช้% d เราจะเห็น
จำนวนเช่นกัน
ดังนั้นตอนนี้คุณจะเห็นว่าเรา รักษาตัวอักษรและ
จำนวนเต็มและโอละพ่อ
>> ลองทดสอบออก ASCIIMath ไม่กี่ ครั้งเพิ่มขึ้นโดยใช้ 25 เป็นคีย์
เราได้รับจดหมาย z
ตอนนี้เราพยายามที่ 26
เราต้องการที่จะได้รับจดหมายฉบับหนึ่ง แต่ แทนเราได้รับวงเล็บซ้าย
ดังนั้นเห็นได้ชัดเพียงการเพิ่ม กุญแจสำคัญในการตัวอักษรจะไม่ทำ
เราต้องคิดออกสูตรการห่อ รอบตัวอักษรเหมือนของเรา
ตัวอย่างเช่นในการเริ่มต้นทำ
>> สูตรของซีซาร์ การเปลี่ยนแปลงมีดังนี้
คเท่ากับพีพลัส K แบบโมดูโล 26
โปรดจำไว้ว่าแบบโมดูโลเป็นประโยชน์ การดำเนินงานที่ทำให้เรามีส่วนที่เหลือ
การแบ่งจำนวนหนึ่งโดยอื่น ๆ
ลองใช้สูตรนี้ธรรมดา ตัวอักษรข้อความที่มีสำคัญของ 2
ค่า ASCII ของ y คือ 89 ซึ่ง ทำให้เรามี 91 แบบโมดูโล 26,
ซึ่งเท่ากับ 13 -
ไม่แน่นอนค่า ASCII ของซึ่งเป็น 67
>> อารมณ์ขันฉันตอนนี้และย้ายออกจาก ค่า ASCII ที่ดัชนีเรียงตามตัวอักษร
ที่เป็นศูนย์และ Z คือ 25, หมายความว่า Y คือ 24
24 บวก 2, 6 แบบโมดูโลทำให้เรามี 26, โมดูโล 26, 0 ซึ่งเป็น
ดัชนีตามตัวอักษร
ดังนั้นสูตรนี้ดูเหมือนว่าจะนำไปใช้กับ ดัชนีตามตัวอักษรของตัวอักษรและ
ไม่ได้ค่า ASCII ของ
>> แต่คุณเริ่มต้นด้วยค่า ASCII
และในการพิมพ์ตัวอักษรไซเฟอร์เท็กซ์ คุณจะต้องค่า ASCII ของตนเช่นกัน
มันขึ้นอยู่กับคุณแล้วที่จะคิดออก วิธีการสลับไปมา
>> เมื่อคุณคิดออกสูตรที่เหมาะสม สำหรับตัวละครตัวหนึ่งทั้งหมดที่คุณต้องทำ
มีการใช้สูตรเดียวกันทุก ตัวอักษรในข้อความธรรมดา -
เฉพาะในกรณีที่ตัวอักษรที่เป็นตัวอักษร แน่นอน
และจำไว้ว่าคุณจำเป็นที่จะต้องรักษา กรณีที่บนหรือล่างที่ที่
isUpper และฟังก์ชั่ isLower กล่าวก่อนหน้านี้จะมาในสะดวก
คุณอาจมีสองสูตร -
หนึ่งสำหรับตัวอักษรพิมพ์ใหญ่ และสำหรับตัวพิมพ์เล็ก
ดังนั้น isUpper isLower จะช่วยให้คุณ กำหนดสูตรที่จะใช้
>> คุณไม่ใช้สูตรของคุณวิธีการทุก ตัวเดียวในสตริง?
ดีสตริงเป็นเพียง อาร์เรย์ของตัวอักษร
เพื่อให้คุณสามารถเข้าถึงตัวละครแต่ละตัวโดย การจัดกลุ่มกว่าตัวละครในทุก
สตริงในสำหรับวง
สำหรับสภาพของคุณสำหรับวง, ฟังก์ชัน strlen สำหรับสตริง
ความยาวจะมาในสะดวก
มันต้องใช้เวลาในสตริงเป็น input และ ผลตอบแทนที่ได้ความยาวของสตริงที่
ให้แน่ใจว่าจะรวมถึงห้องสมุดขวา ที่จะใช้ฟังก์ชั่นความยาวสตริง
>> และมีคุณมีของคุณ ciphertext
ชื่อของฉันคือ Zamyla
และ [รหัสการพูด]