1 00:00:00,000 --> 00:00:10,103 2 00:00:10,103 --> 00:00:11,270 >> ZAMYLA CHAN: Xin chúc mừng trên kết thúc của bạn 3 00:00:11,270 --> 00:00:13,200 cặp vợ chồng đầu tiên của chương trình C. 4 00:00:13,200 --> 00:00:16,379 Tôi biết rằng đột phá đầu tiên của bạn vào Cú pháp C có thể được khó khăn. 5 00:00:16,379 --> 00:00:20,060 Nhưng tôi đảm bảo với bạn, ở cuối của Tất nhiên, bạn sẽ có thể nhìn vào 6 00:00:20,060 --> 00:00:23,870 cặp vợ chồng đầu tiên của bài tập và hoàn thành chúng trong vài phút. 7 00:00:23,870 --> 00:00:27,830 >> Bây giờ bạn đang nhận được quen thuộc hơn với cú pháp, chúng ta hãy cho Sê-sa. 8 00:00:27,830 --> 00:00:31,720 Trong Caesar, người sử dụng sẽ nộp phím số nguyên như một dòng lệnh 9 00:00:31,720 --> 00:00:35,300 lập luận, sau đó nhập vào một đồng bằng tin nhắn văn bản tại dấu nhắc. 10 00:00:35,300 --> 00:00:38,050 Chương trình sau đó sẽ encipher các văn bản và in ấn 11 00:00:38,050 --> 00:00:40,020 tin nhắn mã của họ. 12 00:00:40,020 --> 00:00:42,980 >> Các enciphering cho Caesar khá đơn giản. 13 00:00:42,980 --> 00:00:46,455 Chuyển từng từ, trong họ đồng bằng văn bản, bằng chìa khóa. 14 00:00:46,455 --> 00:00:49,220 Kết quả là, nó cũng khá an toàn. 15 00:00:49,220 --> 00:00:53,850 Nhưng thực hiện Caesar sẽ giới thiệu chúng tôi ASCIIMath và mảng dữ liệu 16 00:00:53,850 --> 00:00:54,460 cấu trúc. 17 00:00:54,460 --> 00:00:57,510 Chúng tôi sẽ nhận được phức tạp hơn mật mã sau. 18 00:00:57,510 --> 00:01:01,680 Với một phím Caesar 2, chữ A trong đồng bằng văn bản sẽ được đại diện bởi 19 00:01:01,680 --> 00:01:07,580 chữ C trong bản mã bởi vì C là hai chữ cái sau khi A. B sẽ 20 00:01:07,580 --> 00:01:12,450 đại diện bởi D và C của E. Hướng tới cuối của bảng chữ cái, W là 21 00:01:12,450 --> 00:01:18,550 đại diện bởi Y, và X của Z. Nhưng Y không có hai chữ cái sau nó, vì vậy 22 00:01:18,550 --> 00:01:21,070 các thuật toán mã hóa kết thúc tốt đẹp xung quanh bảng chữ cái. 23 00:01:21,070 --> 00:01:27,190 Y trong văn bản đơn giản là như vậy, đại diện bởi Một trong mã, và Z bởi B. Nó có thể 24 00:01:27,190 --> 00:01:32,080 giúp đỡ để xem Caesar Cypher như một bánh xe bảng chữ cái liên tục. 25 00:01:32,080 --> 00:01:35,760 >> Để encipher văn bản, người sử dụng sẽ bước vào hai đối số 26 00:01:35,760 --> 00:01:37,090 vào dòng lệnh - 27 00:01:37,090 --> 00:01:40,010 / Caesar. Theo sau là một chìa khóa. 28 00:01:40,010 --> 00:01:44,710 Như mọi khi, chúng ta không thể tin tưởng người sử dụng hoàn toàn vào đầu vào mà làm 29 00:01:44,710 --> 00:01:45,800 ý nghĩa đối với chương trình của chúng tôi. 30 00:01:45,800 --> 00:01:50,670 Vì vậy, chúng tôi sẽ phải xác nhận của họ đầu vào dòng lệnh. 31 00:01:50,670 --> 00:01:57,285 >> Thay vì sử dụng int chính có hiệu lực, chúng tôi sử dụng int main, int argc, argv chuỗi. 32 00:01:57,285 --> 00:02:01,730 Argc các biến số nguyên đại diện cho số lượng các đối số được truyền vào 33 00:02:01,730 --> 00:02:02,880 dòng lệnh. 34 00:02:02,880 --> 00:02:09,070 Và argv là một mảng, hoặc nghĩ về nó như một danh sách, các đối số thông qua nhập 35 00:02:09,070 --> 00:02:12,000 >> Vì vậy, cho Caesar, làm thế nào để chúng tôi xác nhận đầu vào của người dùng? 36 00:02:12,000 --> 00:02:15,870 Vâng, họ chỉ nên được vào hai đối số dòng lệnh - 37 00:02:15,870 --> 00:02:18,150 . / Caesar và một phím. 38 00:02:18,150 --> 00:02:22,340 Vì vậy, nếu argc không phải là 2, đó có nghĩa là họ hoặc là quên một chìa khóa và chỉ 39 00:02:22,340 --> 00:02:27,230 nhập vào. / caesar, hoặc họ vào nhiều phím. 40 00:02:27,230 --> 00:02:29,770 >> Nếu đây là trường hợp, sau đó bạn sẽ muốn in hướng dẫn 41 00:02:29,770 --> 00:02:30,910 và thoát khỏi chương trình. 42 00:02:30,910 --> 00:02:34,320 Họ sẽ cần phải thử lại từ dòng lệnh. 43 00:02:34,320 --> 00:02:37,430 Nhưng ngay cả khi argc là 2, bạn sẽ cần phải kiểm tra xem họ 44 00:02:37,430 --> 00:02:39,100 cung cấp cho bạn một khóa hợp lệ. 45 00:02:39,100 --> 00:02:40,730 Cho Caesar, bạn cần một số nguyên. 46 00:02:40,730 --> 00:02:43,260 Nhưng argv là một mảng của chuỗi. 47 00:02:43,260 --> 00:02:46,490 Làm thế nào để bạn truy cập chính? 48 00:02:46,490 --> 00:02:47,850 >> Hãy xem xét các mảng - 49 00:02:47,850 --> 00:02:51,410 cấu trúc dữ liệu mà giữ nhiều giá trị của các kiểu dữ liệu. 50 00:02:51,410 --> 00:02:55,350 Mục là không lập chỉ mục, có nghĩa là các yếu tố đầu tiên là chỉ số không 51 00:02:55,350 --> 00:03:00,260 và yếu tố cuối cùng là ở kích thước chỉ mục trừ đi 1, nơi kích thước là số 52 00:03:00,260 --> 00:03:02,850 phần tử trong mảng. 53 00:03:02,850 --> 00:03:07,380 >> Nếu tôi tuyên bố một mảng chuỗi hộp thư mới chiều dài 3, trực quan, nó 54 00:03:07,380 --> 00:03:08,570 trông như thế này. 55 00:03:08,570 --> 00:03:11,520 Ba container cho chuỗi , Bên cạnh nhau. 56 00:03:11,520 --> 00:03:15,445 Để truy cập vào bất kỳ yếu tố, bạn gõ tên của mảng và sau đó chỉ ra 57 00:03:15,445 --> 00:03:18,080 các chỉ số trong dấu ngoặc vuông. 58 00:03:18,080 --> 00:03:21,610 Ở đây, tôi gán giá trị cho mỗi phần tử, cũng giống như tôi sẽ làm gì với bất kỳ 59 00:03:21,610 --> 00:03:24,310 biến chuỗi khác. 60 00:03:24,310 --> 00:03:29,020 >> Vì vậy, để truy cập vào các dòng lệnh của chúng tôi, tất cả chúng ta phải làm là truy cập 61 00:03:29,020 --> 00:03:31,690 các yếu tố bên phải của mảng argv. 62 00:03:31,690 --> 00:03:37,360 Nếu người dùng nhập vào Nhóm / Blastoff. Tên lửa vào các thiết bị đầu cuối, argv 0 sẽ 63 00:03:37,360 --> 00:03:38,950 được / Blastoff.. 64 00:03:38,950 --> 00:03:45,010 argv sẽ là đội, và arg2 sẽ là tên lửa. 65 00:03:45,010 --> 00:03:47,670 >> Bây giờ chúng ta có thể truy cập chính của chúng tôi, chúng tôi vẫn cần phải thực hiện 66 00:03:47,670 --> 00:03:49,040 chắc chắn rằng nó là chính xác. 67 00:03:49,040 --> 00:03:51,060 Chúng ta cần phải chuyển đổi nó thành một số nguyên. 68 00:03:51,060 --> 00:03:54,680 Nhưng chúng ta không thể bỏ như chúng tôi đã thực hiện trước đó. 69 00:03:54,680 --> 00:03:58,800 May mắn thay, một chức năng Y chăm sóc điều này cho chúng ta và thậm chí trả về 0 70 00:03:58,800 --> 00:04:02,110 nếu chuỗi không thể được chuyển đổi vào một số nguyên. 71 00:04:02,110 --> 00:04:04,450 Nó thuộc vào bạn, tuy nhiên, để nói người sử dụng tại sao bạn sẽ không 72 00:04:04,450 --> 00:04:06,220 để chương trình tiến hành. 73 00:04:06,220 --> 00:04:10,710 Lưu trữ các kết quả của A đến Y trong một số nguyên, và ở đó bạn có chìa khóa của bạn. 74 00:04:10,710 --> 00:04:12,070 Phần tiếp theo là đơn giản. 75 00:04:12,070 --> 00:04:15,940 Nhắc nhở người dùng văn bản đơn giản của họ, đó sẽ là dữ liệu kiểu string. 76 00:04:15,940 --> 00:04:18,339 May mắn cho chúng tôi, tất cả người sử dụng đầu vào dây là hợp lệ. 77 00:04:18,339 --> 00:04:21,170 78 00:04:21,170 --> 00:04:24,760 >> Bây giờ chúng ta có tất cả các đầu vào cần thiết từ người sử dụng, đó là thời gian để chúng tôi 79 00:04:24,760 --> 00:04:26,520 encipher thông điệp của họ. 80 00:04:26,520 --> 00:04:29,200 Các khái niệm về Caesar là đơn giản đủ để hiểu. 81 00:04:29,200 --> 00:04:33,750 Nhưng làm thế nào máy tính của bạn biết thư đến sau khi một số khác? 82 00:04:33,750 --> 00:04:36,100 >> Đây là nơi mà các bảng mã ASCII có in 83 00:04:36,100 --> 00:04:39,420 Mỗi nhân vật có một số nguyên số liên kết với nó. 84 00:04:39,420 --> 00:04:41,380 Vốn A là 65. 85 00:04:41,380 --> 00:04:43,310 Vốn B là 66. 86 00:04:43,310 --> 00:04:45,260 Chữ thường một là 97. 87 00:04:45,260 --> 00:04:47,590 Chữ thường b là 98. 88 00:04:47,590 --> 00:04:50,770 Nhưng nhân vật không giới hạn chỉ số chữ cái. 89 00:04:50,770 --> 00:04:56,020 Ví dụ, biểu tượng @ ASCII là số 64. 90 00:04:56,020 --> 00:04:59,690 >> Trước khi làm việc với toàn bộ chuỗi, chúng ta hãy giả vờ chúng ta phải thay đổi 91 00:04:59,690 --> 00:05:01,220 một ký tự. 92 00:05:01,220 --> 00:05:04,640 Vâng, chúng tôi chỉ muốn thay đổi thực tế chữ cái trong văn bản đơn giản, không 93 00:05:04,640 --> 00:05:06,020 ký tự hoặc số. 94 00:05:06,020 --> 00:05:09,100 Vì vậy, điều đầu tiên mà chúng ta sẽ muốn kiểm tra là liệu các nhân vật trong 95 00:05:09,100 --> 00:05:10,430 bảng chữ cái. 96 00:05:10,430 --> 00:05:14,460 >> Chức năng isalpha hiện điều này cho chúng tôi và trả về một Boolean - 97 00:05:14,460 --> 00:05:18,570 đúng nếu các nhân vật là một bức thư, false nếu ngược lại. 98 00:05:18,570 --> 00:05:22,270 Hai chức năng hữu ích khác isupper và islower, với 99 00:05:22,270 --> 00:05:23,860 tên tự giải thích. 100 00:05:23,860 --> 00:05:27,370 Họ trở về đúng nếu nhân vật được là chữ hoa hoặc chữ thường, 101 00:05:27,370 --> 00:05:28,740 tương ứng. 102 00:05:28,740 --> 00:05:33,770 Vì chúng là Boolean, họ hữu ích để sử dụng như điều kiện. 103 00:05:33,770 --> 00:05:38,310 >> Nếu isalpha trả về đúng, bạn sẽ cần chuyển nhân vật bằng phím. 104 00:05:38,310 --> 00:05:43,750 Vì vậy, hãy mở cửa cho ASCIIMath và làm một số toán học ASCII. 105 00:05:43,750 --> 00:05:48,700 Việc sử dụng là rất tương tự như việc sử dụng cho Caesar và mất trong một phím ở 106 00:05:48,700 --> 00:05:50,870 dòng lệnh. 107 00:05:50,870 --> 00:05:59,590 >> Nếu tôi chạy ASCIIMath 5, có vẻ như để thêm 5 để một, đem lại cho tôi những thư e, và 108 00:05:59,590 --> 00:06:01,260 hiển thị giá trị ASCII. 109 00:06:01,260 --> 00:06:04,090 Vì vậy, chúng ta hãy nhìn vào chương trình. 110 00:06:04,090 --> 00:06:11,820 >> Bạn có thể tự hỏi, ngay tại đây, tại sao thư là một số nguyên, khi đó là 111 00:06:11,820 --> 00:06:14,330 rõ ràng, tốt, một lá thư. 112 00:06:14,330 --> 00:06:17,690 Nó chỉ ra rằng nhân vật và số nguyên là hoán đổi cho nhau. 113 00:06:17,690 --> 00:06:21,730 Bằng cách đặt các thư Một trong đơn dấu ngoặc kép, số nguyên có thể lưu trữ 114 00:06:21,730 --> 00:06:25,390 giá trị ASCII của vốn A. Hãy cẩn thận, mặc dù. 115 00:06:25,390 --> 00:06:27,150 Bạn cần những bộ quần áo duy nhất. 116 00:06:27,150 --> 00:06:31,260 Không có dấu nháy đơn, các trình biên dịch sẽ tìm một biến 117 00:06:31,260 --> 00:06:35,510 có tên là A, và không phải là nhân vật. 118 00:06:35,510 --> 00:06:42,140 >> Sau đó tôi thêm thư và một chìa khóa, lưu trữ số tiền trong các biến kết quả int. 119 00:06:42,140 --> 00:06:47,740 Mặc dù kết quả là các kiểu dữ liệu số nguyên, tuyên bố printf của tôi sử dụng 120 00:06:47,740 --> 00:06:50,370 % C giữ chỗ cho các nhân vật. 121 00:06:50,370 --> 00:06:54,530 Vì vậy, các chương trình in các nhân vật kết hợp với kết quả số nguyên. 122 00:06:54,530 --> 00:07:00,400 Và vì chúng ta in các số nguyên hình thức cũng sử dụng% d, chúng ta thấy 123 00:07:00,400 --> 00:07:02,110 số là tốt. 124 00:07:02,110 --> 00:07:04,450 Vì vậy, bây giờ bạn có thể thấy rằng chúng tôi xử lý nhân vật và 125 00:07:04,450 --> 00:07:06,980 số nguyên, và ngược lại. 126 00:07:06,980 --> 00:07:12,205 >> Hãy kiểm tra ra ASCIIMath một vài lần sử dụng 25 như một chìa khóa. 127 00:07:12,205 --> 00:07:15,510 128 00:07:15,510 --> 00:07:17,090 Chúng tôi nhận được thư z. 129 00:07:17,090 --> 00:07:19,750 Bây giờ chúng tôi cố gắng 26. 130 00:07:19,750 --> 00:07:25,600 Chúng tôi muốn nhận được một lá thư, nhưng thay vào đó chúng ta có được một khung bên trái. 131 00:07:25,600 --> 00:07:29,490 Vì vậy, rõ ràng, chỉ cần thêm chìa khóa để thư sẽ không làm. 132 00:07:29,490 --> 00:07:32,780 Chúng tôi cần phải tìm ra một công thức để bọc xung quanh các bảng chữ cái, như của chúng tôi 133 00:07:32,780 --> 00:07:34,570 Ví dụ trong đầu đã làm. 134 00:07:34,570 --> 00:07:38,520 >> Một công thức của Caesar thay đổi như sau. 135 00:07:38,520 --> 00:07:42,750 c bằng p cộng với k modulo 26. 136 00:07:42,750 --> 00:07:46,040 Hãy nhớ rằng modulo là một hữu ích hoạt động cung cấp cho chúng tôi phần còn lại 137 00:07:46,040 --> 00:07:49,880 phân chia một số của người kia. 138 00:07:49,880 --> 00:07:54,870 Hãy áp dụng công thức này để đồng bằng thư văn bản với một phím 2. 139 00:07:54,870 --> 00:08:01,810 Giá trị ASCII của y là 89, trong đó cho chúng ta 91 modulo 26, 140 00:08:01,810 --> 00:08:03,690 bằng với 13 - 141 00:08:03,690 --> 00:08:08,740 chắc chắn không phải là giá trị ASCII của một, mà là 67. 142 00:08:08,740 --> 00:08:12,810 >> Hài hước tôi bây giờ và di chuyển ra khỏi Giá trị ASCII đến một chỉ số chữ cái 143 00:08:12,810 --> 00:08:18,690 trong đó A là số không và Z là 25, có nghĩa là Y là 24. 144 00:08:18,690 --> 00:08:25,830 24 cộng với 2, modulo 6, cho chúng ta 26, modulo 26, 0, đó là 145 00:08:25,830 --> 00:08:28,170 chữ cái chỉ số của một. 146 00:08:28,170 --> 00:08:32,980 Vì vậy, công thức này dường như áp dụng đối với các chữ cái chỉ số của các thư và 147 00:08:32,980 --> 00:08:34,960 không giá trị ASCII của nó. 148 00:08:34,960 --> 00:08:37,630 >> Nhưng bạn bắt đầu với giá trị ASCII. 149 00:08:37,630 --> 00:08:41,650 Và in các ký tự mã, bạn sẽ cần giá trị ASCII của nó là tốt. 150 00:08:41,650 --> 00:08:46,400 Nó thuộc vào bạn, sau đó, để tìm ra làm thế nào để chuyển đổi qua lại. 151 00:08:46,400 --> 00:08:49,850 >> Khi bạn tìm ra công thức đúng cho một nhân vật, tất cả các bạn cần làm 152 00:08:49,850 --> 00:08:53,520 được áp dụng cùng một công thức cho tất cả thư trong các văn bản đơn giản - 153 00:08:53,520 --> 00:08:57,720 chỉ khi thư đó là chữ cái, tất nhiên. 154 00:08:57,720 --> 00:09:02,360 Và hãy nhớ rằng bạn cần phải bảo quản trường hợp, trên hoặc dưới, đó là nơi 155 00:09:02,360 --> 00:09:06,890 các isUpper và chức năng isLower đề cập trước đó sẽ có ích. 156 00:09:06,890 --> 00:09:08,830 Bạn có thể có hai công thức - 157 00:09:08,830 --> 00:09:11,680 một cho chữ hoa và một cho chữ thường. 158 00:09:11,680 --> 00:09:18,420 Vì vậy, isUpper một isLower sẽ giúp bạn xác định công thức để áp dụng. 159 00:09:18,420 --> 00:09:22,460 >> Làm thế nào để bạn áp dụng công thức của bạn cho mọi nhân vật duy nhất trong một chuỗi? 160 00:09:22,460 --> 00:09:25,910 Vâng, một chuỗi chỉ là một mảng ký tự. 161 00:09:25,910 --> 00:09:31,150 Vì vậy, bạn có thể truy cập mỗi nhân vật bằng cách nhóm hơn tất cả các nhân vật trong 162 00:09:31,150 --> 00:09:33,450 chuỗi trong một vòng lặp. 163 00:09:33,450 --> 00:09:37,550 Như cho tình trạng của bạn cho vòng lặp, chức năng strlen, cho chuỗi 164 00:09:37,550 --> 00:09:39,280 chiều dài, sẽ có ích. 165 00:09:39,280 --> 00:09:44,020 Phải mất trong một chuỗi như đầu vào và trả về độ dài của chuỗi đó. 166 00:09:44,020 --> 00:09:49,250 Hãy chắc chắn bao gồm các thư viện phải sử dụng chức năng chiều dài chuỗi. 167 00:09:49,250 --> 00:09:51,790 >> Và bạn đã có bản mã của bạn. 168 00:09:51,790 --> 00:09:53,260 Tên tôi là Zamyla. 169 00:09:53,260 --> 00:09:54,510 Và [NÓI CODE]. 170 00:09:54,510 --> 00:10:02,944