1 00:00:00,000 --> 00:00:01,940 [Powered by Google Translate] [연습 - 문제 설정 2] 2 00:00:01,940 --> 00:00:04,130 [Zamyla 찬 - 하버드 대학교 (Harvard University)] 3 00:00:05,170 --> 00:00:07,490 [이 CS50입니다. CS50.TV] 4 00:00:07,490 --> 00:00:10,750 괜찮아요. 안녕하세요 여러분, 연습 2 환영합니다. 5 00:00:10,750 --> 00:00:14,330 먼저, pset 1 완료 진심으로 축하하고 싶습니다. 6 00:00:14,330 --> 00:00:18,140 나는 당신의 일부에 대한 약간의 힘든 할 수 있다는 것을 알게 7 00:00:18,140 --> 00:00:20,460 당신이 쓴 첫 번째 컴퓨터 프로그램 일 수도, 8 00:00:20,460 --> 00:00:24,500 하지만 단지, 당신이 학기의 끝 부분에 다시 볼 때,이 말에 그 기억 9 00:00:24,500 --> 00:00:29,820 당신은 pset 1에서 살펴 보겠습니다 당신은 "그 오분 인치 이봐 요, 내가 할 수 있겠어요"라고합니다 10 00:00:29,820 --> 00:00:35,700 그럼 알고이 말에 당신은 확실히 간단 pset 1을 (를) 찾을 수 시리라 믿습니다. 11 00:00:35,700 --> 00:00:40,640 그러나 지금은 거대한 성과, 그리고 수행하기 위해 축하드립니다. 12 00:00:40,640 --> 00:00:44,010 지금 또한 빠른 메모 우리는 연습의 고기에 도착하기 전에. 13 00:00:44,010 --> 00:00:48,340 난 그냥 가끔 시간이 충분하지 않습니다 빠른 메모를 만들고 싶어 14 00:00:48,340 --> 00:00:52,500 연습하는 동안 문제 세트를하고 하나 하나 방법으로 이동합니다 15 00:00:52,500 --> 00:00:56,140 그리고 오히려 어쩌면 단지 구현의 1 개 또는 2 종류에 초점을 16 00:00:56,140 --> 00:00:57,750 당신이 이것을 할 수있는 방법. 17 00:00:57,750 --> 00:01:01,970 그러나 당신이 그것을 다른 방법을 실행할 금지하는 말을하지 않는 것입니다. 18 00:01:01,970 --> 00:01:05,980 일을하는 수많은 방법, 컴퓨터 과학과 마찬가지로 종종 있습니다 19 00:01:05,980 --> 00:01:12,190 그래서 나는 확실히이 제시했을 수보다 솔루션의 다른 종류를 사용하여 주시기 바랍니다. 20 00:01:12,190 --> 00:01:14,520 [pset 2 : 암호화 - Zamyla 찬 - zamyla@cs50.net] 21 00:01:14,520 --> 00:01:17,160 [pset2 - 0. 질문의 항 - 1. 폐하 - 2. Vigenere] 22 00:01:17,160 --> 00:01:20,650 괜찮아요. 그래서 문제는 2 설정 : 암호화는 재미입니다. 23 00:01:20,650 --> 00:01:24,500 다시 말하지만, 모든 pset와 함께 질문의 섹션으로 시작합니다 24 00:01:24,500 --> 00:01:29,600 그건 당신이 할당 된 교육 동료와 섹션에서 실시 될거야. 25 00:01:29,600 --> 00:01:31,670 우리는 연습을 통해 다음을 통해 갈 수 없습니다 26 00:01:31,670 --> 00:01:35,100 그들은 확실히 당신이 pset를 완료하는 데 도움이됩니다. 27 00:01:35,100 --> 00:01:38,100 그럼 문제 세트의 첫 번째 부분은 카이사르입니다. 28 00:01:38,100 --> 00:01:43,470 그리고 황제에 누군가가 당신에게 정수와 키를 전달합니다 29 00:01:43,470 --> 00:01:48,420 그리고 당신은 그들이 당신을 제공하는 텍스트 문자열을 암호화합니다 30 00:01:48,420 --> 00:01:50,670 그리고 암호화 된 일을 저들을 제공합니다. 31 00:01:50,670 --> 00:01:56,050 사람이 크리스마스 이야기를 본 경우가 그 예가 있습니다. 32 00:01:56,050 --> 00:01:59,090 그런 다음 문제 세트의 두 번째 부분은, Vigenere입니다 33 00:01:59,090 --> 00:02:01,790 이는 고급 암호화 기술입니다. 34 00:02:01,790 --> 00:02:05,640 그래서 우리는, 텍스트를 암호로 바꾸다 할거야 35 00:02:05,640 --> 00:02:09,600 대신 하나의 정수로를 제외하고, 우리는 실제로 인코딩 할거야 36 00:02:09,600 --> 00:02:13,340 사용자가 제공 할 수있는 키워드. 37 00:02:16,270 --> 00:02:22,090 그래, 그럼 도구 상자 오늘날의 첫 번째 도구는 실제로 어플라이언스를 업데이트 할 예정이다. 38 00:02:22,090 --> 00:02:26,430 토론 게시판에 우리는 같은 일을 볼 것 "왜이 일을하지 않는?" 39 00:02:26,430 --> 00:02:28,110 "왜 50 일을 제출하지 않는 이유는 무엇입니까?" 40 00:02:28,110 --> 00:02:31,830 종종 솔루션은 어플라이언스를 업데이트 만 실제로 있습니다. 41 00:02:31,830 --> 00:02:36,730 그리고 당신은 당신의 검색 어플라이언스는 sudo 얌-Y의 터미널 창에서 실행하는 경우 - 42 00:02:36,730 --> 00:02:40,040 그 예라고 깃발이야, 모든 업데이트 - 업데이트를, 43 00:02:40,040 --> 00:02:42,280 필요가있을 경우에는 다음 어플라이언스가 업데이트됩니다. 44 00:02:42,280 --> 00:02:46,960 이미 어플라이언스의 최신 버전에있는 경우 그리고 그것은 다치게하지 않습니다. 45 00:02:46,960 --> 00:02:51,280 그런 다음 그냥없고 새로운 업데이트가 말 것이고, 함께 작업을 계속할 수 있습니다. 46 00:02:51,280 --> 00:02:55,800 하지만이는 귀하가 어플라이언스를 열 때마다를 실행하는 좋은 47 00:02:55,800 --> 00:02:57,140 우리는 여전히 매우니까 - 48 00:02:57,140 --> 00:03:00,320 어플라이언스에 문제를 해결하는 - 때때로 우리는 버그로 온다면. 49 00:03:00,320 --> 00:03:03,180 그래서 당신은 어플라이언스의 최신 버전을 가지고 있는지 확인하십시오 50 00:03:03,180 --> 00:03:07,710 그리고 업데이트 실행합니다. 51 00:03:07,710 --> 00:03:14,360 괜찮아요. 우리는 편지를 처리​​하고 변경 일을 enciphering, 너무나부터 52 00:03:14,360 --> 00:03:20,410 우리는 우리의 ASCII 차트와 가장 친한 친구되고 싶은거야. 53 00:03:20,410 --> 00:03:24,350 당신이 찾아내는 경우에 많은 사람들이 온라인이 있습니다. 아마 자신을 더. 54 00:03:24,350 --> 00:03:29,950 기본적으로, 모든 문자와 모든 번호와 모든 문자로 55 00:03:29,950 --> 00:03:32,210 그들과 관련된 수는 있습니다 56 00:03:32,210 --> 00:03:38,670 그래서 그것은 실제 편지와 함께 자신의 ASCII 값을 보는 건 좋은 일이지. 57 00:03:38,670 --> 00:03:42,310 그는 확실히 문제 세트에서 당신을 도움이 될 것입니다. 58 00:03:42,310 --> 00:03:45,750 정말이 문제 세트에 날 도와 하나가 실제로 인쇄하는 것이 었습니다 59 00:03:45,750 --> 00:03:48,380 난을 통해가는대로, 사실은, 그것을 그릴 것 60 00:03:48,380 --> 00:03:51,150 , 쓰기 "이이에 가야한다면 ..." 61 00:03:51,150 --> 00:03:55,270 의 종류는에 그릴하고 마크 업하여 ASCII 테이블과 가장 친한 친구가된다. 62 00:03:57,240 --> 00:04:00,750 그런 다음 우리는 우리의 처분에 몇 가지 다른 도구를 제공합니다. 63 00:04:00,750 --> 00:04:03,750 이 시간 대신 실제로 그들의 입력 모든 사용자에게 메시지를 표시 64 00:04:03,750 --> 00:04:05,230 우리는 조합을 할 겁니다. 65 00:04:05,230 --> 00:04:06,880 우리는 어떤 입력을 위해 메시지를 표시 할거야 66 00:04:06,880 --> 00:04:11,350 하지만 우리는 단지 명령 줄 인수를 사용하는거야. 67 00:04:11,350 --> 00:04:15,600 그래서 그들은 자신의 프로그램을 실행할 때, 보통 당신이 말하는. / 안녕, 예를 들어, 68 00:04:15,600 --> 00:04:17,310 프로그램이 hello.c라면. 69 00:04:17,310 --> 00:04:22,500 하지만 이번에는 대신 그 말을, 그들은 나중에 단어, 인수를 넣을 수 있습니다. 70 00:04:22,500 --> 00:04:27,210 그들은뿐만 아니라 자신의 입력으로 우리에게 전달 무엇이든 그래서 우리는 사용하는 것 71 00:04:27,210 --> 00:04:31,720 그래서 그냥 정수에 대한 메시지를 넘어 이동뿐만 아니라, 명령 줄 인수를 사용합니다. 72 00:04:31,720 --> 00:04:36,590 그리고 우리는뿐만 아니라 많이 사용됩니다 배열과 문자열로 갈거야. 73 00:04:41,460 --> 00:04:44,810 여기 한 미니 ASCII 차트 중 예입니다. 74 00:04:44,810 --> 00:04:48,460 내가 말했듯이, 모든 문자는 숫자에 해당하는 75 00:04:48,460 --> 00:04:52,510 그리고 그렇게 익숙해. 그것은 유용합니다. 76 00:04:52,510 --> 00:04:55,610 그리고 나중에 우리가 숫자를 처리 일부 ASCIIMath 일을 시작할 때 - 77 00:04:55,610 --> 00:05:00,110 를 빼는 추가, -이 차트를 참조 후 확실히 좋아요. 78 00:05:02,860 --> 00:05:06,920 당신이 연주했을 수있는 것이 - 그럼 시저 암호의 예입니다. 79 00:05:06,920 --> 00:05:11,190 단지 휠입니다. 기본적으로 외부 알파벳이 후 내부 알파벳이 있습니다. 80 00:05:11,190 --> 00:05:15,290 그래서 지금 여기 시저 암호문하지만 0의 키 예입니다. 81 00:05:15,290 --> 00:05:21,540 Z.까지 기본적으로, A는에 맞게 정렬, B는 B로 정렬되어있는 모든 방법 82 00:05:21,540 --> 00:05:26,590 하지만 우리는 예를 들어, 3의 키를 원한다고. 83 00:05:26,590 --> 00:05:33,280 지금 D 등으로 정렬되도록 그럼 우리가 내부 휠을 회전 할 것이다 84 00:05:33,280 --> 00:05:35,250 그리고 우리가 어떻게 할 건지 근본적이다. 85 00:05:35,250 --> 00:05:38,340 우리는 바퀴가 없지만, 우리가 할 수있는 일은하는 것은 우리의 프로그램을시키는 것입니다 86 00:05:38,340 --> 00:05:44,490 종류의 번호가 일정 금액 우리와 함께 알파벳을 이동. 87 00:05:44,490 --> 00:05:48,650 내가 전에 한 말 있도록, 우리는 명령 줄 인자를 처리 할 것 88 00:05:48,650 --> 00:05:50,390 뿐만 아니라 정수를 받고 있습니다. 89 00:05:50,390 --> 00:05:55,050 따라서 사용자가 시저 프로그램을 실행 될 수있는 방법은 말씀입니다. / 카이사르 90 00:05:55,050 --> 00:05:58,090 그리고 그 후 번호를 입력. 91 00:05:58,090 --> 00:06:01,130 그리고 그 숫자는 키 이동을 나타냅니다 92 00:06:01,130 --> 00:06:06,740 얼마나 많은 당신의 시저 암호의 내부 휠을 회전 할 거예요 번. 93 00:06:06,740 --> 00:06:08,390 그리고 여기에 예를 참조하십시오. 94 00:06:08,390 --> 00:06:14,550 우리는 우리 시저 암호로 할 것을에서 문자를 입력 한 경우 95 00:06:14,550 --> 00:06:19,520 다음은 O를 통해 입력 D를 3 회 이상 이행 매일 편지 때문에 겠어 96 00:06:19,520 --> 00:06:22,080 내가 당신에게 보여주기하는 휠의 예처럼. 97 00:06:22,080 --> 00:06:25,300 그럼 입력하면, 예를 들어,이 CS50입니다! 98 00:06:25,300 --> 00:06:27,960 다음은 편지의 모든 이동합니다. 99 00:06:27,960 --> 00:06:31,040 그래서 시저와 Vigenere 모두에서 중요한 일이야 100 00:06:31,040 --> 00:06:34,890 우리가 아닌 문자를 통해 건너 갈 거예요. 101 00:06:34,890 --> 00:06:39,160 그래서 공백, 캐릭터, 등, 숫자, 우리는 그 같은 유지거야. 102 00:06:39,160 --> 00:06:42,920 우리는이 경우에는 문자를 이동거야. 103 00:06:42,920 --> 00:06:45,870 이 휠에서 볼 수 있도록, 우리는 우리가 사용할 수있는 편지를 가지고 104 00:06:45,870 --> 00:06:50,150 그래서 우리는 문자를 이동하고 문자를 암호화하고 싶습니다. 105 00:06:51,370 --> 00:06:56,720 해야 할 첫 번째 일은 그래서, 당신은 문제의 카이사르에 대한 사용 2를 설정하는 것이 본 106 00:06:56,720 --> 00:07:05,280 당신은 터미널에서 실행할 때 황제를 실행 한 다음 번호를 입력하는 것입니다. 107 00:07:05,280 --> 00:07:10,940 그럼 우리가해야 할 것은 어떻게 든 그 열쇠를하고 액세스 할 수 있습니다. 108 00:07:10,940 --> 00:07:14,730 그래서 우리는 어떻게 든 두 번째 명령 줄 인수 될거야보고 싶어. 109 00:07:14,730 --> 00:07:20,950 첫번째는. / 카이사르 될 것입니다, 그리고 다음 하나는 키 번호가 될 것입니다. 110 00:07:22,190 --> 00:07:29,200 우리는 우리의 C 프로그램을 시작하는 정수 메인 (무효)을했다. 그래서 전에 111 00:07:29,200 --> 00:07:31,790 우리가 다시 껍질 층이 조금가는거야 112 00:07:31,790 --> 00:07:34,720 실제로보고 그 대신에 우리의 주요 기능에 무효에 전달 113 00:07:34,720 --> 00:07:37,920 우리는 실제로이 매개 변수를 다루고 있습니다. 114 00:07:37,920 --> 00:07:44,070 우리는 argc라는 이름의 정수를 한 후 문자열 배열 변수는 argv했다. 115 00:07:44,070 --> 00:07:46,030 그럼 argc는 정수입니다 116 00:07:46,030 --> 00:07:49,640 그리고 프로그램에 전달되는 인자의 수를 나타냅니다. 117 00:07:49,640 --> 00:07:53,590 그리고 argv가 실제로 전달 된 인수의 목록입니다. 118 00:07:53,590 --> 00:08:00,820 인수의 모든 문자열입니다, 그래서 변수는 argv는 문자열의 배열, 목록을 나타냅니다. 119 00:08:01,830 --> 00:08:03,990 의 배열 조금 얘기하시오. 120 00:08:03,990 --> 00:08:05,940 배열은 본질적으로 새로운 데이터 구조입니다. 121 00:08:05,940 --> 00:08:09,660 우리는 우리가 두 배로 한 ints를 우리는 문자열을 가지고, 이제 우리는 배열을 갖추고 있습니다. 122 00:08:09,660 --> 00:08:13,820 배열은 같은 종류의 여러 개의 값을 저장할 수있는 데이터 구조 아르 123 00:08:13,820 --> 00:08:18,320 그래서 본질적으로, 당신이 원하는 유형의 목록입니다. 124 00:08:18,320 --> 00:08:24,400 기본적으로, 모든 일 변수에 정수의 목록을 원한다면, 125 00:08:24,400 --> 00:08:29,090 다음 유형은 정수 배열의 된 새로운 변수를 생성합니다. 126 00:08:29,090 --> 00:08:34,450 따라서 배열은 배열의 첫 번째 요소는 인덱스 0에 있습니다 즉, 제로 인덱스입니다. 127 00:08:34,450 --> 00:08:41,799 배열이 예에서와 같이 길이가 4,의 경우 다음 마지막 요소는, 색인 3시 것 128 00:08:41,799 --> 00:08:44,810 1 - 어떤은 4입니다. 129 00:08:45,940 --> 00:08:48,420 그럼 배열을 만들려면,이 같은 일을합니다. 130 00:08:48,420 --> 00:08:51,440 당신이 두 배열을 원한다고. 131 00:08:51,440 --> 00:08:56,520 근데 이거 데이터 형식의 모든 종류에도 해당됩니다. 132 00:08:56,520 --> 00:09:00,210 당신이 두 배열을 원하는 그렇게 말. 당신이 사서함에 전화 해 말해. 133 00:09:00,210 --> 00:09:04,760 당신은 다른 두를 초기화 것처럼 134 00:09:04,760 --> 00:09:09,760 , 당신은 두 번 한 후 이름을 말했는데, 이번에는 대괄호를 우리 넣어 135 00:09:09,760 --> 00:09:13,570 다음 숫자는 배열의 길이 될 것입니다. 136 00:09:13,570 --> 00:09:16,840 배열에서 우리가 길이를 변경할 수 없습니다, 137 00:09:16,840 --> 00:09:21,230 그래서 당신은 항상 얼마나 많은 상자를 정의하고 선택해야 138 00:09:21,230 --> 00:09:25,440 얼마나 많은 값을 귀하의 배열이 개최 할 것이다. 139 00:09:25,440 --> 00:09:31,820 그러므로 배열의 다른 값을 설정하려면, 당신은이 다음과 같은 구문을 사용하는 것 140 00:09:31,820 --> 00:09:33,200 당신은 슬라이드에 표시로. 141 00:09:33,200 --> 00:09:37,620 당신이 사서함 인덱스 0, 1.2으로 설정됩니다 142 00:09:37,620 --> 00:09:42,180 2.4에 사서함 지수 1 세트 등 143 00:09:42,180 --> 00:09:47,910 그래서 지금 우리가 배열에게 약간을 검토 한, 어디 argc와 argv가 다시 가자. 144 00:09:47,910 --> 00:09:52,220 우리는 argv가 지금 문자열의 배열 것을 알고있다. 145 00:09:52,220 --> 00:09:55,080 따라서 사용자가 통과 할 때 - 사람들이 프로그램을 실행한다고 가정 해 - 146 00:09:55,080 --> 00:09:58,740 그들은 말한다. / 안녕하세요 데이비드 Malan, 147 00:09:58,740 --> 00:10:05,160 이미 실제로 argc와 argv가가 무엇인지를 생각해을 위해 할 수있는 프로그램이 무엇을 할 것입니다. 148 00:10:05,160 --> 00:10:07,620 그럼 당신은 걱정하지 않아도됩니다. 149 00:10:07,620 --> 00:10:14,370 는 공백으로 구분 3 별개의 단어를 볼 수 있기 때문에이 경우 Argc 3 것입니다. 150 00:10:14,370 --> 00:10:18,850 그리고 다음이 인스턴스의 배열은, 첫 번째 인덱스는 것입니다. /여보세요, 151 00:10:18,850 --> 00:10:21,770 다음 데이빗, 다음 Malan. 152 00:10:21,770 --> 00:10:25,640 누구는 변수는 argv 사이에 관계를 바로 볼 수 있습니까 153 00:10:25,640 --> 00:10:28,990  배열은,와 argc는? 154 00:10:32,820 --> 00:10:38,090 그래. 우리는 args.c.의 예에서 본격적으로 시작됩니다 155 00:10:38,090 --> 00:10:42,880 우리가 2 사이의 관계를 활용할 수 있는지 봅시다. 156 00:10:42,880 --> 00:10:46,550 여기 어플라이언스에 해당을 찾을 수있는 기본 응용 프로그램 157 00:10:46,550 --> 00:10:49,450 . C 파일을 열도록하면 가끔 이맥스입니다. 158 00:10:49,450 --> 00:10:54,660 하지만 우리가 gedit를 처리하려면, 당신이 할 수있는 것은 당신이 바로 C 파일을 클릭 할 수 있다는 거죠 159 00:10:54,660 --> 00:11:04,580 연결 프로그램 속성으로 이동 한 다음 기본값으로 설정 gedit를 선택 160 00:11:04,580 --> 00:11:13,020 지금 당신의 프로그램은 gedit 대신 이맥스에서 열립니다. 161 00:11:14,710 --> 00:11:16,290 좋아요. 162 00:11:17,120 --> 00:11:25,520 그래서 여기 내가 각 명령 줄 인수를 인쇄 할 수있는 프로그램을 갖추고 있습니다. 163 00:11:25,520 --> 00:11:32,050 어떤 사용자가 입력 그래서, 나는 기본적으로 새 행에 그들에게 다시 반환하고 싶습니다. 164 00:11:32,050 --> 00:11:36,710 그래서 우리는 뭔가를 통해 반복하는 데 사용할 수있는 구조가 뭐죠 - 165 00:11:36,710 --> 00:11:40,380 아마 당신은 당신의 pset 1에 사용하는 것을? 166 00:11:40,380 --> 00:11:45,840 당신은 일의 설정 번호를 통해 가고 싶어? 경우 >> 루프의 경우 [학생]. 167 00:11:45,840 --> 00:11:48,910 루프하십시오. 그렇지. 따라서 for 루프로 시작하자. 168 00:11:48,910 --> 00:11:56,900 우리는 INT 난 = 0에 있습니다. 우선은 표준 초기화 변수로 시작합니다. 169 00:11:56,900 --> 00:12:02,370 나는 세트에 대한 조건을 떠나 그럼 난 + +,이 일을 할거야 말거야. 170 00:12:02,370 --> 00:12:04,090 괜찮아요. 171 00:12:04,090 --> 00:12:11,590 따라서 변수는 argv는 프로그램에 전달되는 인자의 목록입니다 경우, 변수는 argv로 생각 172 00:12:11,590 --> 00:12:15,380 와 argc는 프로그램의 인수의 개수입니다 173 00:12:15,380 --> 00:12:21,280 그리고 그 argc는 변수는 argv의 본질적 길이, 오른쪽,을 의미합니다 174 00:12:21,280 --> 00:12:28,970 argc의 값으로 많은 인자로 될 거니까 때문입니다. 175 00:12:28,970 --> 00:12:35,910 우리는 변수는 argv의 각 요소를 통해 반복하고 싶다면 176 00:12:35,910 --> 00:12:43,290 우리는 각각의 시간이 주어진 색인에 변수는 argv에서 변수를 액세스 할거야. 177 00:12:43,290 --> 00:12:49,060 그 바로이 함께 표시 할 수 있습니까? 178 00:12:49,060 --> 00:12:53,430 여기이 변수는이 인스턴스에서 특정 문자열을 나타냅니다 179 00:12:53,430 --> 00:12:57,030 때문에이 문자열 배열 이구나 - 주어진 인덱스에있는 특정 문자열입니다. 180 00:12:57,030 --> 00:13:00,690 우리가 원하는 것은이 경우에 우리는 그것을 인쇄 할, 그래서 printf 거라고 만 말해 두지. 181 00:13:00,690 --> 00:13:04,680 이제 변수는 argv는 문자열입니다, 그래서 우리는 거기 자리 표시자를 넣어 싶습니다. 182 00:13:04,680 --> 00:13:08,430 우리는 실감 할 새 줄을 싶습니다. 183 00:13:08,430 --> 00:13:12,530 그래서 여기에 우리가에 대한 루프를 갖추고 있습니다. 아직 조건이 없습니다. 184 00:13:12,530 --> 00:13:20,020 그래서 난 주어진 문자열을 인쇄 할거야 때마다 누른 다음 0에서 시작하고, 185 00:13:20,020 --> 00:13:22,980 배열의 특정 인덱스에. 186 00:13:22,980 --> 00:13:28,410 그래서 우리는 배열의 요소를 출력 중지 할 거죠? 187 00:13:28,410 --> 00:13:35,720 우리가 완료되면, 그렇죠? 우리는 배열의 끝을 도달합니다. 188 00:13:35,720 --> 00:13:38,870 그래서 우리는, 배열의 길이 통과 초과하지 않으 189 00:13:38,870 --> 00:13:43,700 우리는 이미 우리가 실제로 적극적으로 변수는 argv의 길이가 뭔지 알아하지 않아도 알 190 00:13:43,700 --> 00:13:47,520 때문에 우리에게 주어진, 그리고 그게 뭔데거야? Argc. 그렇지. 191 00:13:47,520 --> 00:13:56,640 그래서 우리는 시간이 프로세스 argc 번호를하고 싶어. 192 00:13:56,640 --> 00:13:59,550 나는 올바른 디렉토리에 아니야. 193 00:14:02,100 --> 00:14:03,490 괜찮아요. 194 00:14:03,490 --> 00:14:08,990 지금의이 인수하게 보자. 대단한 없음 오류가 없습니다. 195 00:14:08,990 --> 00:14:11,430 그러니까 그냥 인수를 실행할 수 있습니다. 196 00:14:11,430 --> 00:14:15,130 이 우리에게 돌아갑니다 어떻게되어 가고있는 건지? 단지 다시 인쇄 할거야. 197 00:14:15,130 --> 00:14:18,320 "당신은 프로그램에 인수를 입력 된, 내가 그것을 너에게 돌려 줄거야." 198 00:14:18,320 --> 00:14:23,170 그럼 우선은, 우리가 foo는 바 인수를하고 싶은 말은 말한다. 199 00:14:23,170 --> 00:14:26,570 그럼 그렇게 우리에게 다시 출력합니다. 알았어? 200 00:14:26,570 --> 00:14:30,790 그래서 당신은 argc와 argv가를 사용하는 방법의 예가있다 201 00:14:30,790 --> 00:14:33,460 그 argc을 알고는 변수는 argv의 길이를 나타냅니다. 202 00:14:33,460 --> 00:14:42,750 당신은 배열의 길이 이상의 배열의 접근 하나가 이제까지하지 있는지 확인하십시오 203 00:14:42,750 --> 00:14:45,140 C는 확실히 소리 때문에. 204 00:14:45,140 --> 00:14:47,560 당신은 세그먼트 오류라는 걸 가져올 게 205 00:14:47,560 --> 00:14:52,470 이것은 기본적으로 당신이 뭔가를 액세스하려고하는 말은, 재미 결코 206 00:14:52,470 --> 00:14:55,000 존재하지 않는 즉,에 속해 있지 않습니다. 207 00:14:55,000 --> 00:14:59,430 확실하게, 특히 제로 색인과 함께, 우리는 가고 싶지 않아요 - 208 00:14:59,430 --> 00:15:02,390 우리가 길이 4 배열이있는 경우, 예를 들어 같은 209 00:15:02,390 --> 00:15:07,240 우리가 제로 인덱스에서 0부터 시작하기 때문에 그 배열 인덱스 4는 존재하지 않습니다. 210 00:15:07,240 --> 00:15:11,730 우리가 0에서 시작하면, 그냥 루프에 대한 같은 초 자연이 될 것입니다. 211 00:15:11,730 --> 00:15:13,610 그러므로 염두에두고. 212 00:15:13,610 --> 00:15:22,590 혹시 당신의 범위 너머에있어 배열의 인덱스에 액세스 할 수 싶지 않아요. 213 00:15:26,710 --> 00:15:32,560 그래서 우리는 어떻게 액세스 종류의 수 있습니다 지금은 볼 수 있습니다 214 00:15:32,560 --> 00:15:35,930 인치 전달되는 명령 줄 인수 215 00:15:35,930 --> 00:15:41,330 당신이 문자열을 보았다 그러나, 변수는 argv는 실제로 문자열 배열입니다. 216 00:15:41,330 --> 00:15:45,740 그래서 아직 실제로 정수 아니지만, 카이사르에서 우리는 정수 처리하고 싶습니다. 217 00:15:45,740 --> 00:15:54,430 다행히 실제로 정수로 문자열을 변환 할 수 있습니다 우리를 위해 만든 기능이 있습니다. 218 00:15:54,430 --> 00:15:58,710 우리가 그들에게 메시지를 표시하는 곳도 여기에서 우리는 사용자 입력 처리되지 않습니다 219 00:15:58,710 --> 00:16:03,740 키 여기 입력에, 우리는 실제로 reprompt하고 말 할 수 없습니다 220 00:16:03,740 --> 00:16:07,840 "이 유효 아니라면 이런 말은 나에게 또 다른 정수를 제공합니다." 221 00:16:07,840 --> 00:16:10,540 하지만 우리는 여전히 올바른 사용법을 확인 할 필요는 없어. 222 00:16:10,540 --> 00:16:13,520 카이사르 년에는 1 번호를 전달 수 있습니다 223 00:16:13,520 --> 00:16:18,030 그래서 사람들은. / 황제가 실행해야하고 그들이 당신에게 번호를 알려해야합니다. 224 00:16:18,030 --> 00:16:23,660 따라서 argc는 특정 숫자이어야합니다. 225 00:16:23,660 --> 00:16:29,060 그들이 당신에게. / 시저와 다음 키를 전달해야하는 경우 어떤 번호는 것입니까? 226 00:16:29,060 --> 00:16:32,920 argc는 무엇입니까? >> [학생] 2. >> 둘. 그렇지. 227 00:16:32,920 --> 00:16:35,490 그럼 당신은 argc 2 있는지 확인하고 싶습니다. 228 00:16:35,490 --> 00:16:39,620 그렇지 않으면 기본적으로 프로그램을 실행을 거부. 229 00:16:39,620 --> 00:16:43,040 주요 년은 int는 메인라는 기능입니다 230 00:16:43,040 --> 00:16:47,360 그래서 성공적인 프로그램의 끝에서 좋은 연습 반환 0 항상. 231 00:16:47,360 --> 00:16:50,840 말다면, 그들은 당신에게 세의 명령 줄 인수 대신 2를 제공 232 00:16:50,840 --> 00:16:54,350 또는 그 확인하는 것이 좋습니다 당신은 무슨 일 것 것은 다음 예를 들어, 당신에게 1 제공 233 00:16:54,350 --> 00:16:59,900 그리고 아니, 말을 1 반환, 난이 프로그램을 진행 할 수 없습니다. 234 00:16:59,900 --> 00:17:03,190 [학생]가 텍스트에 공백이 될 수 없습니다. >>이 뭐라 구요? 235 00:17:03,190 --> 00:17:06,780 [학생]는 당신이 암호화하려는 텍스트의 공간이 될 수 없습니다. 236 00:17:06,780 --> 00:17:08,480 아! 237 00:17:08,480 --> 00:17:11,280 우리가 암호화 노력하는 텍스트의 측면에서 그 사실은 나중에 온다 238 00:17:11,280 --> 00:17:13,970 우리가 그 텍스트를 제공합니다. 239 00:17:13,970 --> 00:17:18,260 그래서 지금 우리가 실제 수치는 명령 인자로 받고 240 00:17:18,260 --> 00:17:21,579 시저 암호화에 대한 실제 변화. 241 00:17:21,579 --> 00:17:27,569 [학생] 단 1 argc 반대로 당신은 왜 2를해야하나요? 한 번호가 확실히있다. 242 00:17:27,569 --> 00:17:32,200 맞아. 우리가 argc에 대해 2이 필요한 이유 이유 대신 1 243 00:17:32,200 --> 00:17:36,260 당신이 프로그램을 실행하고 말할 때 때문입니다. / 카이사르 나. /여보세요, 244 00:17:36,260 --> 00:17:38,280 그 사실은 명령 줄 인수로 계산합니다. 245 00:17:38,280 --> 00:17:43,020 그래서 그건 이미 1 차지하고 그래서 우리는 1 개의 엑스트라를 입력하고 있습니다. 246 00:17:45,030 --> 00:17:49,440 그래서 당신은 실제로 명령 줄 인수에 문자열을 입력하고 있습니다. 247 00:17:49,440 --> 00:17:52,730 당신이 원하는 무엇을 카이사르에 대해 우리는 정수 처리하려면 248 00:17:52,730 --> 00:17:57,180 그래서 당신은이 atoi 함수를 사용할 수 있습니다. 249 00:17:57,180 --> 00:18:02,850 그리고 기본적으로, 당신은 문자열을 전달하고 그 정수를 다시 반환합니다 250 00:18:02,850 --> 00:18:06,070 는 정수로 그 문자열을 만들 수 있다면. 251 00:18:06,070 --> 00:18:10,960 우리가 같은 printf 또는 GetString 일 처리 할 때 지금 기억 252 00:18:10,960 --> 00:18:13,390 우리는에만 해당 라이브러리가 포함되어 있습니다. 253 00:18:13,390 --> 00:18:19,450 그래서 처음에 우리는 그와 같은 해시 태그 표준 I / O,. H, 뭔가 시작합니다. 254 00:18:19,450 --> 00:18:22,430 음, atoi는이 라이브러리 중 하나에 없습니다 255 00:18:22,430 --> 00:18:26,600 그래서 우리가해야 할 일은 우리가 그에 맞는 라이브러리를 포함해야합니다. 256 00:18:26,600 --> 00:18:32,720 그래서 수동 기능을 설명 연습 1 다시 기억. 257 00:18:32,720 --> 00:18:37,110 당신은 터미널에 사람을 입력 한 다음 함수의 이름이 나타납니다. 258 00:18:37,110 --> 00:18:39,720 그리고, 그 사용의 전체 목록을 가져 것이다 259 00:18:39,720 --> 00:18:42,890 뿐만 아니라 그것은 그런 일이 속한 도서관 나타납니다. 260 00:18:42,890 --> 00:18:47,000 그래서 atoi와 수동 기능을 사용 할에게 갈거야 261 00:18:47,000 --> 00:18:53,360 하고 atoi 함수를 사용할 수 있도록 포함시킬 필요가있는 도서관 파악. 262 00:18:54,450 --> 00:18:57,670 , 그래서 우리는 열쇠를 얻었 어 지금은 일반 텍스트 발생에있어서 263 00:18:57,670 --> 00:19:01,820 그래서 실제로 당신이하라는 메시지가있는 사용자가 입력 될 것입니다 그. 264 00:19:01,820 --> 00:19:05,540 우리는 같은 맥락에 빠져 GetInt와 GetFloat을 처리하고, 265 00:19:05,540 --> 00:19:07,670 우리는 GetString를 처리 할거야. 266 00:19:07,670 --> 00:19:12,440 동안 또는 루프 확인하면서 그러나이 경우에는 우리는 개를 수행 할 필요가 없습니다. 267 00:19:12,440 --> 00:19:14,480 GetString는 확실히 우리에게 문자열을 제공합니다 268 00:19:14,480 --> 00:19:17,630 우리는 사용자가 회사에서주는 암호화거야. 269 00:19:17,630 --> 00:19:23,770 그럼 당신은 이러한 사용자 입력 된 문자열을 모두가 올바른지 것으로 간주 할 수 있습니다. 270 00:19:23,770 --> 00:19:24,670 좋아요. 271 00:19:24,670 --> 00:19:27,270 , 그래서 일단 키가 있는데 일단 텍스트를 해 272 00:19:27,270 --> 00:19:31,660 지금 남아있는 당신은 일반 텍스트를 암호로 바꾸다해야합니다. 273 00:19:31,660 --> 00:19:36,530 단 신속하게 용어를 통해 충당하기 위해, 일반 텍스트는 사용자가 기능을 제공합니다 무엇 274 00:19:36,530 --> 00:19:41,030 그리고 ciphertext 당신이 그들로 돌아거야. 275 00:19:42,450 --> 00:19:45,850 문자열 그래서 편지로 실제로 편지를 통과 할 수있을 276 00:19:45,850 --> 00:19:48,550 우리는 모든 문자를 이동해야하기 때문에하는 것은, 277 00:19:48,550 --> 00:19:51,390 우리가 그 문자열을 이해 위로 레이어 껍질의 우리 종류 278 00:19:51,390 --> 00:19:54,130 우리는 그들이 정말 문자의 목록을 걸 참조하십시오. 279 00:19:54,130 --> 00:19:55,930 하나는 다른 후 제공됩니다. 280 00:19:55,930 --> 00:20:01,690 그들은 문자 배열이기 때문에 그래서 우리는 배열로 문자열을 처리 할 수​​ 있습니다. 281 00:20:01,690 --> 00:20:05,640 당신은 텍스트라는 문자열이 그렇게 말 282 00:20:05,640 --> 00:20:09,400 그 변수 텍스트에이 CS50입니다 저장됩니다. 283 00:20:09,400 --> 00:20:15,680 그런 다음 인덱스 0에서 텍스트 자본 T 될, 색인 1 H 등이 될 것입니다 284 00:20:17,530 --> 00:20:23,970 그리고 배열과, args.c에서 argc 예에서, 285 00:20:23,970 --> 00:20:27,090 우리는 배열을 통해 반복해야한다고 보았다 286 00:20:27,090 --> 00:20:32,440 그래서 우리는 내가 길이보다 적은까지에서 = 0을 반복했다. 287 00:20:32,440 --> 00:20:35,560 그래서 우리는 우리의 문자열의 길이가 뭔지 알아내는 몇 가지 방법이 필요합니다 288 00:20:35,560 --> 00:20:37,090 우리가 이상 반복 할 경우. 289 00:20:37,090 --> 00:20:42,300 다행히 다시 우리가 기능은 비록 나중에 CS50에 있습니다 290 00:20:42,300 --> 00:20:45,860 당신은 확실히 자신의 기능을 구현하고 만들 수 있습니다 291 00:20:45,860 --> 00:20:48,260 그 문자열의 길이를 계산할 수 있습니다. 292 00:20:48,260 --> 00:20:52,120 하지만 지금은 문자열 길이, 그래서 나 strlen을 사용하는거야. 293 00:20:52,120 --> 00:21:00,440 당신은 문자열에 전달하고 당신에게 문자열의 길이를 나타내는 정수를 반환합니다. 294 00:21:00,440 --> 00:21:05,840 의 우리가 문자열의 각 문자를 통해 반복 할 수있을 방법에 대한 예를 들어 보자 295 00:21:05,840 --> 00:21:08,470 그와 함께 일을. 296 00:21:08,470 --> 00:21:13,250 우리가 원하는 것은 문자열의 각 문자를 통해 반복 is 297 00:21:13,250 --> 00:21:19,150 그리고 우리가 원하는 것은 우리는 1 각 문자 1 다시 인쇄 298 00:21:19,150 --> 00:21:22,060 우리는 옆에 무언가를 추가 제외. 299 00:21:22,060 --> 00:21:27,020 따라서 for 루프로 시작하자. INT I = 0. 300 00:21:27,020 --> 00:21:30,070 우리는 조건에 대한 공간을 떠날거야. 301 00:21:32,700 --> 00:21:36,840 우리는 문자열의 끝을 도달 할 때까지 반복하고 싶지 맞죠? 302 00:21:36,840 --> 00:21:41,340 그래서 어떤 기능은 우리에게 문자열의 길이를 제공합니다? 303 00:21:41,340 --> 00:21:43,160 [안 들리게 학생 응답] 304 00:21:43,160 --> 00:21:46,420 그것은 명령 줄 인수의 길이입니다. 305 00:21:46,420 --> 00:21:50,650 그러나 문자열 우리는 우리에게 문자열의 길이를 제공하는 기능을 사용하고 싶습니다. 306 00:21:50,650 --> 00:21:53,090 그래서 문자열의 길이입니다. 307 00:21:53,090 --> 00:21:57,130 그리고 나서 거기에 문자열을 전달해야합니다. 308 00:21:57,130 --> 00:21:59,760 그것이의 길이를 계산하기 위해 필요한 문자열을 알아야합니다. 309 00:21:59,760 --> 00:22:03,160 그래서이 경우에는 우리는 문자열의를 다루고 있습니다. 310 00:22:04,790 --> 00:22:05,860 좋아요. 311 00:22:05,860 --> 00:22:10,770 그럼 우리가 뭘 원하는지,의 printf 보자. 312 00:22:10,770 --> 00:22:14,850 이제, 우리는 문자로 처리하고 싶습니다. 우리는 각각의 문자를 인쇄하고 싶습니다. 313 00:22:14,850 --> 00:22:22,150 당신이 수레를 인쇄하려는 경우, 당신은 %의 F와 같은 자리 표시자를 사용할 수 있습니다. 314 00:22:22,150 --> 00:22:24,580 정수를 사용하면 % d 개를 사용합니다. 315 00:22:24,580 --> 00:22:30,890 그리고 마찬가지로, 문자로 당신은 내가 문자를 인쇄 할거야 말 %의 C를 사용하여 316 00:22:30,890 --> 00:22:34,570 그는 변수 안에 저장되는 파일입니다. 317 00:22:34,570 --> 00:22:40,840 그래서 우리는이 있고, 한번에 기간 및 공간을 추가 할 수 있습니다. 318 00:22:40,840 --> 00:22:45,430 우리는 어떤 문자를 사용하고 있습니까? 319 00:22:45,430 --> 00:22:49,780 우리는 문자열의에하고 싶은 문자를 사용하려고하고 있습니다. 320 00:22:49,780 --> 00:22:52,890 그래서 우리는 문자열로 뭔가를 사용하여 할 것 321 00:22:52,890 --> 00:22:56,420 그러나 우리는 거기에 특정 문자를 액세스 할 수 싶습니다. 322 00:22:56,420 --> 00:23:02,740 문자열이 단지 배열 인 경우 그럼, 어떻게 배열의 요소에 액세스하려면 어떻게해야하나요? 323 00:23:02,740 --> 00:23:06,480 우리는 그 대괄호를 가지고 있고, 그런 다음에 우리가 거​​기에 색인을 넣어. 324 00:23:06,480 --> 00:23:11,820 그래서 우리는 대괄호가 있습니다. 이 경우 Google 색인 우리가 방금 전을 사용할 수 있습니다. 그렇지. 325 00:23:15,290 --> 00:23:22,370 그래서 여기에 우리가, 우리가 점과 공백으로 다음 문자를 인쇄 할 것 말이야 326 00:23:22,370 --> 00:23:30,870 그 문자의 문자열 s의 i 번째 문자가 될 것입니다. 327 00:23:32,920 --> 00:23:39,330 난 그냥 저장거야. 좋아요. 328 00:23:42,510 --> 00:23:46,840 지금은 문자열의 길이를 실행하는거야. 329 00:23:46,840 --> 00:23:53,440 그래서 우리는 OMG라는 문자열을했고, 지금은 훨씬 더 강조있어. 330 00:23:53,440 --> 00:23:57,870 마찬가지로, 우리가 실제로 사용자로부터 문자열을 싶은 말. 331 00:23:57,870 --> 00:23:59,580 우리가 어떻게이 작업을 수행 할 수? 332 00:23:59,580 --> 00:24:01,610 전에, 어떻게 정수 거죠? 333 00:24:01,610 --> 00:24:08,040 우리는 GetInt라고 하셨죠, 맞죠? 그러나이 INT 아니기 때문에 GetString 까. 334 00:24:11,780 --> 00:24:17,770 가 문자열 길이를 보자. 여기 특정 프롬프트를 입력하지 않았습니다. 335 00:24:17,770 --> 00:24:19,940 그럼 나도 몰라. 336 00:24:19,940 --> 00:24:23,820 여기에 내 이름을 넣어거야 그래서 그럼 내가 그 일 중 하나를 수행 할 수 337 00:24:23,820 --> 00:24:29,600 나는 그런 모든 문자 또는 뭔가 단어를 지정할 수. 좋아. 338 00:24:29,600 --> 00:24:31,900 그래서 문자열의 길이입니다. 339 00:24:33,000 --> 00:24:34,640 그래서 우리는 황제에게 돌아 간다. 340 00:24:34,640 --> 00:24:38,620 우리는 우리가 문자열을 통해 반복하는 방법에 대한 몇 가지 도구를 가지고 341 00:24:38,620 --> 00:24:41,250 우리는 각각의 요소에 액세스하는 방법. 342 00:24:41,250 --> 00:24:44,720 그래서 지금 우리는 프로그램을 다시 할 수 있습니다. 343 00:24:44,720 --> 00:24:48,650 나는 전에 ASCII 표에서 가장 친한 친구, 언급 한 바와 같이, 344 00:24:48,650 --> 00:24:52,300 당신은 모든 문자와 관련된 숫자를 만나러가는 중이 야. 345 00:24:52,300 --> 00:24:55,900 그래서 우리의 일반 텍스트 내가 어지러워 요하다고! 346 00:24:55,900 --> 00:25:01,090 그런 다음이 문자의 각은 번호와 이와 관련된 ASCII 값을 가지고 것입니다 347 00:25:01,090 --> 00:25:04,710 심지어 아포스트로피, 심지어 공간, 심지어 느낌표, 348 00:25:04,710 --> 00:25:06,600 그래서 당신은 염두에 유지하는 것이 좋습니다. 349 00:25:06,600 --> 00:25:12,360 따라서 자신의 명령 줄 인수에 포함 된 사용자가 6입니다 우리집 열쇠를 말한다. 350 00:25:12,360 --> 00:25:17,770 73으로 표시됩니다 나야의 첫 글자,,,에 대한 의미 351 00:25:17,770 --> 00:25:25,610 당신은 73 + 6의 ASCII 값에 의해 표현되는 어떤 문자 그들에게 돌아 싶습니다. 352 00:25:25,610 --> 00:25:29,020 이 경우 그 79 것입니다. 353 00:25:30,840 --> 00:25:35,040 이제 우리는 다음 문자로 이동하고 싶습니다. 354 00:25:35,040 --> 00:25:40,960 따라서 일반 텍스트의 인덱스 1 다음은 아포스트로피 것입니다. 355 00:25:40,960 --> 00:25:46,780 그러나 우리는 문자를 암호로 바꾸다 싶은 기억 해요. 356 00:25:46,780 --> 00:25:50,040 그래서 우리는, 아포스트로피가 실제로 같은 유지하도록해야 할 357 00:25:50,040 --> 00:25:54,310 우리가 39에서 어떤 45 변경하지 않는 것이는 것입니다. 358 00:25:54,310 --> 00:25:57,150 우리는 아포스트로피로 유지하고 싶습니다. 359 00:25:57,150 --> 00:26:00,780 그래서 우리는 문자를 암호로 바꾸다하는 것을 잊지하려면 360 00:26:00,780 --> 00:26:04,560 우리가 다른 기호의 모든 프로그램에서 변경되지 않은 상태로 유지하려면 때문입니다. 361 00:26:04,560 --> 00:26:07,130 우리가 원하는 또 다른 점은 대소 문자를 보존하는 것입니다. 362 00:26:07,130 --> 00:26:10,250 그래서 당신은 대문자있을 때, 그것은 대문자로 유지해야합니다. 363 00:26:10,250 --> 00:26:12,830 Lowercases은 소문자로 유지해야합니다. 364 00:26:13,620 --> 00:26:19,480 따라서 유용한 기능은 enciphering 문자를 처리 할 수​​있을 365 00:26:19,480 --> 00:26:22,380 그리고 사물의 대소 문자를 보존 유지 366 00:26:22,380 --> 00:26:25,130 isalpha, isupper, islower 기능입니다. 367 00:26:25,130 --> 00:26:29,270 그리고이 당신에게 Boolean 값을 반환 기능입니다. 368 00:26:29,270 --> 00:26:34,180 기본적으로 true 또는 false입니다. 이 대문자입니까? 이 영숫자입니까? 369 00:26:34,180 --> 00:26:37,180 이 본질적으로, 편지입니다. 370 00:26:37,180 --> 00:26:41,070 그래서 여기 당신이 기능을 사용하는 방법의 3 예입니다. 371 00:26:41,070 --> 00:26:47,060 기본적으로, 당신이 값은 그 함수에 의해 귀하에게 반환 여부를 테스트 할 수는 true 또는 false입니다 372 00:26:47,060 --> 00:26:49,400 그 입력에 따라. 373 00:26:49,400 --> 00:26:54,880 어느 암호로 바꾸다 않은 게하거나 암호화하거나 대문자 등입니다 있는지 확인을 374 00:26:54,880 --> 00:27:01,080 [학생] 당신은 좀 더 방법과 당신이 그들을 사용하는 사람들을 설명 할 수 있습니까? >> 예, 물론하십시오. 375 00:27:01,080 --> 00:27:08,470 우리가 돌​​아 보면한다면, 여기 바로, 자본 I 있나요? 376 00:27:08,470 --> 00:27:14,550 그래서 우리는 전 + 6 O. 때문에 나는 O 하는거 알지 377 00:27:14,550 --> 00:27:18,740 그러나 우리는 O가 수도 O. 될 것입니다 있는지 확인하려면 378 00:27:18,740 --> 00:27:22,940 그러니까 기본적으로, 이것이 우리의 입력을 변경하려면 좀하는 것입니다. 379 00:27:22,940 --> 00:27:26,870 이 대문자이거나, 우리가 처리하는 방식을 변경 종류의하지 않습니다 그래서인지. 380 00:27:26,870 --> 00:27:32,360 그럼 우리가 특정 인덱스에있는 isupper 기능을 사용하는 경우, 381 00:27:32,360 --> 00:27:36,480 사실 우리 반환하므로 isupper은 ( "I"), 그래서 우리는 위 란다. 382 00:27:36,480 --> 00:27:40,360 그럼 거기에 따라, 나중에 우리는 공식에 갈거야 383 00:27:40,360 --> 00:27:42,750 당신은 카이사르의 일을 이동하는 데 사용됩니다 것을 384 00:27:42,750 --> 00:27:46,560 가 대문자인지 그래서 기본적으로 약간 다른 공식이있을거야 385 00:27:46,560 --> 00:27:50,670 으로 소문자로 반대했습니다. 이해가가? 386 00:27:51,020 --> 00:27:52,760 그래. 걱정 마세요. 387 00:27:54,900 --> 00:27:58,990 꽤 이해가되지 않는 편지에 6 추가하는 방법에 대해 조금 이야기 388 00:27:58,990 --> 00:28:05,500 우리가 가지 이해 된 경우를 제외하고 그 다음 문자를 389 00:28:05,500 --> 00:28:08,920 정수와 호환 종류의 수 있습니다. 390 00:28:08,920 --> 00:28:11,250 우리가 할 일은 우리가 사용하는 암시 적 캐스팅의 종류입니다. 391 00:28:11,250 --> 00:28:18,100 우리는 당신이 값을 위치에 조금 나중에 캐스팅으로 갈거야 당신은 다른 종류로 돌려 392 00:28:18,100 --> 00:28:20,440 전보다. 393 00:28:20,440 --> 00:28:25,910 그러나이 pset과 함께 우리는 서로 교환하여 문자를 사용 가지 작업을 할 수 있습니다 394 00:28:25,910 --> 00:28:30,880 및 해당 정수 값. 395 00:28:30,880 --> 00:28:35,140 당신은 단순히 그냥 작은 따옴표로 문자를 싸는 자한다면, 396 00:28:35,140 --> 00:28:40,390 다음은 정수로 처리, 정수와 함께 작동 할 수 있습니다. 397 00:28:40,390 --> 00:28:48,040 따라서 자본 C가 67에 관한 것이다. 소문자 f를 102에 관한 것이다. 398 00:28:48,040 --> 00:28:51,480 이 값을 알고 싶어한다면, 당신의 ASCII 표 좀 봐. 399 00:28:51,480 --> 00:28:56,160 그럼 당신은 빼야하고 추가 할 수시킬 수있는 방법의 몇 가지 예에 가자고, 400 00:28:56,160 --> 00:29:03,130 당신이 실제로 정말 이러한 문자와 협력 할 수있는 방법, 상호 교환을 사용합니다. 401 00:29:03,870 --> 00:29:11,350 나는 ASCIIMath가 정수로 문자의 추가를 계산하는 것이다라고 402 00:29:11,350 --> 00:29:17,590 다음 결과 문자뿐만 아니라 결과 ASCII 값을 표시합니다. 403 00:29:17,590 --> 00:29:22,290 그래서 제가 여기 말이야 -이 부분과 꼭 거래하기 - 404 00:29:22,290 --> 00:29:29,100 하지만 기본적으로, 전 사용자가 키와 함께 실행 ASCIIMath 말을해야 말 405 00:29:29,100 --> 00:29:30,880 그리고 난 그 키가 숫자로 간다는 걸 말하는거야 406 00:29:30,880 --> 00:29:34,600 되는 우리는이 문자를 추가 할거야. 407 00:29:34,600 --> 00:29:38,560 그래서 여기 발견 내가 열쇠가 필요로하기 때문에 408 00:29:38,560 --> 00:29:40,590 나는 그들이 나에게 한 일을주는 걸 필요로부터 409 00:29:40,590 --> 00:29:45,600 난 단지. / asciimath와 키를 받아 싶습니다. 410 00:29:45,600 --> 00:29:49,330 그래서 argc 2와 같다 것을 요구거야. 411 00:29:49,330 --> 00:29:54,360 그렇지 않을 경우, I 1을 반환하고 프로그램이 종료됩니다거야. 412 00:29:55,070 --> 00:29:58,540 그래서, 키가 첫 번째 명령 줄 인수 않을 거라고 말하는거야 413 00:29:58,540 --> 00:30:05,080 ,이 두 번째 질거야, 당신은 여기를 참조로 414 00:30:05,080 --> 00:30:11,790 나는 정수로 그 만들어 버릴거야. 415 00:30:15,740 --> 00:30:19,230 그럼 내가 연구 할 문자를 설정하는거야. 416 00:30:19,230 --> 00:30:23,970 변수 chr의 유형이 실제로 정수 것을 확인할 수 있습니다. 417 00:30:23,970 --> 00:30:30,480 나는 정수로 R을 사용할 수 있다는 방법이 작은 따옴표로 encasing입니다. 418 00:30:33,850 --> 00:30:40,560 우리는 문자에 대한 자리 표시 자이 곳의 printf 문에 백업 419 00:30:40,560 --> 00:30:43,590 그리고 정수에 대한 자리 표시 자, 420 00:30:43,590 --> 00:30:49,450 문자는 chr로 표시하고, 정수는 키입니다. 421 00:30:49,450 --> 00:30:54,320 그리고 나서 우리는 결과에 함께 2를 추가 할거야. 422 00:30:54,320 --> 00:30:58,420 그래서 우리는 R을 추가 할거야 + 키가 뭐든지간에, 423 00:30:58,420 --> 00:31:03,520 그리고 우리는 그 결과를 인쇄 할거야. 424 00:31:06,210 --> 00:31:14,220 그러니 asciimath을 보자. 그것은 최신, 그러니까 그냥 asciimath를 실행할 수 있습니다. 425 00:31:14,220 --> 00:31:18,290 우리가 실제로에게 키를 부여하지 않았으므로 아,하지만, 아무것도하지 않습니다. 426 00:31:18,290 --> 00:31:23,850 그래서 그냥 1, 우리 main 함수를 반환 할 때, 단지 우리에게 다시 돌아 왔습니다. 427 00:31:23,850 --> 00:31:29,250 그럼가 키에 전달 보자. 누군가가 나에게 전화 번호를 제공합니다. >> [학생] 4. 428 00:31:29,250 --> 00:31:30,920 4. 좋아요. 429 00:31:30,920 --> 00:31:39,280 따라서 R은 4 우리에게 118의 ASCII 값에 해당 v를, 드릴 겁니다 증가했습니다. 430 00:31:39,280 --> 00:31:43,880 그래서 그 가지 의미 그하게 - 431 00:31:43,880 --> 00:31:51,250 사실, 난 당신을 요청할 수 있습니다 당신은 R + 4 118 인 경우 R의 ASCII 값은 어떻게 생각하세요? 432 00:31:53,070 --> 00:31:55,470 그런 다음 네, R은 114입니다. 433 00:31:55,470 --> 00:32:03,010 그런 다음 ASCII 테이블에보고하면, 확실히 충분히, 그 연구는 114으로 표시됩니다 볼 수 있습니다. 434 00:32:03,010 --> 00:32:08,610 그래서 지금 우리가 문자로 정수를 추가 할 수 있다는 사실을 알고있는이 꽤 간단 것 같습니다. 435 00:32:08,610 --> 00:32:12,740 우리는 우리가 전에 예에서 본 것처럼 문자열을 통해 반복거야. 436 00:32:12,740 --> 00:32:17,170 이 편지이라면 우리는 확인합니다. 437 00:32:17,170 --> 00:32:20,420 이 경우, 우리는 키가 뭐든간에하여 이동합니다. 438 00:32:20,420 --> 00:32:23,650 아주 간단한, 당신이 좋아하는 때를 제외하고, 439 00:32:23,650 --> 00:32:32,140 당신은 z는, 122으로 표시 한 다음에 다른 문자를 제공하게됩니다 것을 볼 수 있습니다. 440 00:32:32,140 --> 00:32:37,770 우리는 실제로 우리의 알파벳 내에 있고 싶어 그래? 441 00:32:37,770 --> 00:32:43,180 그래서 우리는 주위 포장지 종류의 몇 가지 방법을 알아 내야합니다. 442 00:32:43,180 --> 00:32:47,190 당신은 데이빗에 도달하고 특정 번호로 증가 할 때, 443 00:32:47,190 --> 00:32:51,230 당신은 ASCII 문자 섹션 이후에 가고 싶지 않아, 444 00:32:51,230 --> 00:32:54,140 당신은 A. 모든 방법을 다시 포장을 할까 445 00:32:54,140 --> 00:32:58,550 하지만 아직이 사건을 보존하는 점에 유의하시기 바랍니다. 446 00:32:58,550 --> 00:33:00,980 그럼 그 편지를 아는 것은 기호가 될 수 없습니다 447 00:33:00,980 --> 00:33:05,290 단지 기호 같은도 변경되지 않을 수 있습니다. 448 00:33:05,290 --> 00:33:08,170 마지막 pset에서 당신은 분명히 말할 필요도 없어요 449 00:33:08,170 --> 00:33:14,310 하지만 옵션은 계수 기능을 사용하여 욕심 pset을 구현하는 것이 었습니다. 450 00:33:14,310 --> 00:33:17,230 하지만 지금 우리는 실제로 계수를 사용해야 할거야 451 00:33:17,230 --> 00:33:19,900 그러니까 그냥이 조금 넘는 가자. 452 00:33:19,900 --> 00:33:26,920 기본적으로, 당신은 당신에게 Y로 나눈 X의 나머지 부분을 제공 X 모듈로 Y를 가질 때. 453 00:33:26,920 --> 00:33:30,930 다음은 몇 가지 예입니다. 우리는 27 %의 15 수 있습니다. 454 00:33:30,930 --> 00:33:36,200 기본적으로, 당신은 부정적없이 가능한 한 많은 시간으로 27 일부터 15 뺍 때 455 00:33:36,200 --> 00:33:39,060 다음은 12 왼쪽 극복. 456 00:33:39,060 --> 00:33:44,650 그래서 결국 수학 맥락에서 같은 가지이야, 그런데 어떻게 우리는 실제로이 사용할 수 있습니까? 457 00:33:44,650 --> 00:33:47,100 우리 wrapover에 유용거야. 458 00:33:47,100 --> 00:33:55,420 이를 위해, 내가 3 그룹으로 나눌 모두를 묻는 말 까. 459 00:33:55,420 --> 00:33:58,010 때때로 당신이 그룹과 그런 식으로이 작업을 수행합니다. 460 00:33:58,010 --> 00:34:01,320 나는 "네, 3으로 나누어 할 당신의 모든 걸 원해"고 말했다. 말하라 461 00:34:01,320 --> 00:34:04,240 어떻게 그렇게 할 수 있을까요? 462 00:34:04,240 --> 00:34:06,810 [안 들리게 학생 응답] 네, 맞아요. 오프 계산합니다. 좋아요. 463 00:34:06,810 --> 00:34:10,260 실제로 그렇게하자. 당신은 시작 하시겠습니까? 464 00:34:10,260 --> 00:34:13,810 1, 2, 3, 4 [학생들은 오프 카운트]를. 465 00:34:13,810 --> 00:34:16,620 하지만 ... >> [학생] 아, 미안. 466 00:34:16,620 --> 00:34:18,730 정말 좋은 포인트입니다. 467 00:34:18,730 --> 00:34:24,130 당신은 4 말했지만 우리는 불과 3 그룹을 원하기 때문에 우리는 실제로 1 인사를하고 싶군요. 468 00:34:24,130 --> 00:34:30,159 그럼, 어떻게 - 그럼 어떻게 1 말을 할 수 있기 때문에 아니, 그게 정말 좋은 예입니다? 469 00:34:30,159 --> 00:34:33,370 4과 1 사이의 관계는 무엇입니까? 470 00:34:33,370 --> 00:34:36,760 그럼, 4 MOD 3 1입니다. 471 00:34:36,760 --> 00:34:41,460 계속하면 그래서, 2 것입니다. 472 00:34:41,460 --> 00:34:44,540 그래서 우리는 1, 2, 3, 1, 2가 있습니다. 473 00:34:44,540 --> 00:34:49,420 다시, 당신은 실제로 5 사람이야. 어떻게 2 대신 5 말을 알 수 있습니까? 474 00:34:49,420 --> 00:34:53,760 당신은 5 MOD 3 2 말한다. 475 00:34:53,760 --> 00:34:59,100 제가 남아 얼마나 많은 3 그룹 보려면 다음 어떤 순서 I. 오전 476 00:34:59,100 --> 00:35:02,860 그리고 나서 우리는 방 전체를 따라 계속하는 경우 477 00:35:02,860 --> 00:35:07,760 그러면 우리는 우리가 항상 실제로 자신에 모드 기능을 적용하는 것을 볼 것입니다 478 00:35:07,760 --> 00:35:09,990 가지에서 계산합니다. 479 00:35:09,990 --> 00:35:14,490 그 말은 당신이 모듈로를 사용하는 방법에 대한 유형 예를 들어보다 친절 480 00:35:14,490 --> 00:35:17,960 제가 확신하기 때문에 우리 대부분은 아마 그 과정을 겪었 481 00:35:17,960 --> 00:35:19,630 우리가 오프 계산해야 했어요 곳. 482 00:35:19,630 --> 00:35:21,840 모듈로의 질문? 483 00:35:21,840 --> 00:35:25,360 그것은이 개념을 이해하는 매우 중요합니다 484 00:35:25,360 --> 00:35:28,640 그래서 너희들이 이해하고 있는지 확인하려고. 485 00:35:28,640 --> 00:35:34,660 [학생] 더 나머지가없는 경우, 그것은 당신에게 실제 번호를 알 수 있나요? 486 00:35:34,660 --> 00:35:40,430 그 중 첫 3 중 하나를 수행 한 경우, 실제로 뭔지를 준 것 487 00:35:40,430 --> 00:35:43,310 또는 그들에게 주어진 것이다 [안 들리게] >> 그거 좋은 질문이야. 488 00:35:43,310 --> 00:35:48,750 모듈로에 대한 나머지가없는 경우 - 당신은 6 모드 3가 그렇게 말 - 489 00:35:48,750 --> 00:35:52,340 그 사실은 0을 다시 할 수 있습니다. 490 00:35:53,670 --> 00:35:57,290 우리는 조금 나중에 얘기하자. 491 00:35:58,810 --> 00:36:07,720 오, 그래, 예를 들어, 3 사람 - 3 모드 3 실제로 0하지만 그녀는 3 말했다. 492 00:36:07,720 --> 00:36:14,900 그래서 예를 들어, 내부 캐치처럼 가지 야 493 00:36:14,900 --> 00:36:17,620 모드는 다음 0 인 경우 알았지처럼, 나는 3 사람 겠어. 494 00:36:17,620 --> 00:36:22,740 그러나 우리는 0 이상 무엇을 처리 할 수​​ 방법에 대한 종류에 들어가 있습니다. 495 00:36:22,740 --> 00:36:32,750 이제 우리는 어떻게 든 오른쪽 문자 데이빗를 매핑하는 방법이 있습니다. 496 00:36:32,750 --> 00:36:34,920 이제 우리는 이러한 예제 겪었어요 497 00:36:34,920 --> 00:36:37,880 우리는 가지 시저가 작동하는 방법을 참조하십시오. 498 00:36:37,880 --> 00:36:42,640 당신은 2 영문과를 확인하고 다음 그들에게 변화를 참조하십시오. 499 00:36:42,640 --> 00:36:44,430 그러니 시도하고 수식의 관점에서 그런 표현 보자. 500 00:36:44,430 --> 00:36:46,940 이 수식은 실제로, 사양에 지정됩니다 501 00:36:46,940 --> 00:36:52,070 하지만 각 변수의 의미를 통해 모양하자의 종류. 502 00:36:52,070 --> 00:36:55,000 우리 최종 결과는 ciphertext 될 것입니다. 503 00:36:55,000 --> 00:36:58,300 그래서이 말에 의하면 ciphertext의 i 번째 문자 504 00:36:58,300 --> 00:37:02,500 일반 텍스트의 i 번째 문자에 해당하는 것입니다. 505 00:37:02,500 --> 00:37:08,130 우리는 항상 이런 일을 릴하려는 때문 합리적입니다. 506 00:37:08,130 --> 00:37:13,480 그게 우리의 핵심입니다 ciphertext 플러스 K의 i 번째 문자 될거야 - 507 00:37:13,480 --> 00:37:17,230 그 말이 - 그리고 우리는이 모드 26 있습니다. 508 00:37:17,230 --> 00:37:19,860 우리가 데이빗을했을 때 다시 기억 509 00:37:19,860 --> 00:37:24,190 우리는 문자로 얻을 싶지 않아, 그래서 우리는 그것을 MOD 싶어 510 00:37:24,190 --> 00:37:26,540 알파벳 주변 랩과 종류. 511 00:37:26,540 --> 00:37:33,430 데이빗 후에는가는거야, B, 당신은 오른쪽 숫자로 C, D를 때까지. 512 00:37:33,430 --> 00:37:44,690 그래서 우리는 알 데이빗, 데이빗은 A, B, C, D, E, F되어 이후에 있기 때문에 + 6이 우리에게 F 학점있을 것이다. 513 00:37:44,690 --> 00:37:52,530 그럼 우리가 데이빗 + 6​​ 우리에게 F를 주겠다되어 있는지 알 기억 보자. 514 00:37:52,530 --> 00:38:03,530 ASCII 값, z는 122이며, F는 102입니다. 515 00:38:03,530 --> 00:38:10,570 그래서 우리는 우리 시저 공식을 만드는 몇 가지 방법을 찾아야 할 일은 우리에게 102 줄 516 00:38:10,570 --> 00:38:13,590 122에 데려 갔어요. 517 00:38:13,590 --> 00:38:19,550 우리는이 수식, 실제로 24을 제공합니다 ( 'Z'+ 6) % 26 적용한다면 518 00:38:19,550 --> 00:38:25,980 122 + 6 128이기 때문에, 128퍼센트 26은 24 나머지를 제공합니다. 519 00:38:25,980 --> 00:38:29,140 하지만 그건 정말 f를 의미하지 않는다. 그건 확실히 102 아닙니다. 520 00:38:29,140 --> 00:38:33,590 그 또한 알파벳 6 글자 없습니다. 521 00:38:33,590 --> 00:38:41,550 그러니 확실히, 우리는 조정이 조금 몇 가지 방법이 필요합니다. 522 00:38:42,970 --> 00:38:51,340 일반 알파벳의 측면에서, 우리는 z는 26 글자이며, F는 6 것을 알고있다. 523 00:38:51,340 --> 00:38:55,460 하지만 우리는 컴퓨터 과학에있어, 우리는 0에서 색인을 생성 할거야. 524 00:38:55,460 --> 00:39:00,690 대신 z는 26 번 존재의 그럼, 우리의 번호 25 무슨 말을 525 00:39:00,690 --> 00:39:02,630 는 0이기 때문이다. 526 00:39:02,630 --> 00:39:04,770 그래서 지금의이 공식을 적용 보자. 527 00:39:04,770 --> 00:39:11,710 우리는 z는 당신에게 31을 제공하는, 25 + 6으로 표시되어 있습니다. 528 00:39:11,710 --> 00:39:15,790 31 모드 26 나머지로 당신에게 5 할 수 있습니다. 529 00:39:15,790 --> 00:39:20,500 우리가 F의 알파벳의 5 번째 문자입니다 알고 있기 때문에 좋아요. 530 00:39:20,500 --> 00:39:26,400 그러나 아직도, F 않나요? 아직 102이 아닙니다. 531 00:39:26,400 --> 00:39:32,730 따라서 다음이 pset에 대해 도전 관계를 알아 내려고합니다 532 00:39:32,730 --> 00:39:36,910 이러한 ASCII 값과 알파벳 인덱스 사이의 변환 사이에 있습니다. 533 00:39:36,910 --> 00:39:40,280 기본적으로, 당신이 원하는 것, 당신은 ASCII 값으로 시작하려면 534 00:39:40,280 --> 00:39:45,390 하지만 당신은 어떻게 든 알파벳 색인에 그를 번역하려는 535 00:39:45,390 --> 00:39:52,610 다음이 있어야 할 어떤 편지 계산 - 기본적으로, 그 알파벳 색인은 무엇 536 00:39:52,610 --> 00:39:57,660 암호 문자의 - ​​그건 다시 ASCII 값으로 번역. 537 00:39:57,660 --> 00:40:04,870 귀하의 ASCII 표를 채찍질하는 경우 그럼, 102 및 5, 시도 사이의 관계를 찾아 말 538 00:40:04,870 --> 00:40:10,440 또는 122, 25. 539 00:40:12,140 --> 00:40:15,690 우리는 명령 줄 인자로부터 키를 늘어 놓던, 우리는 일반 텍스트가 나왔던 거예요 540 00:40:15,690 --> 00:40:17,520 우리가 cipher 화했습니다. 541 00:40:17,520 --> 00:40:19,820 지금 우리가해야 할 남은 모두는 인쇄입니다. 542 00:40:19,820 --> 00:40:22,040 우리는이에게 다른 방법의 몇 할 수 있습니다. 543 00:40:22,040 --> 00:40:24,570 우리도 진행하는데로 우리가 할 수있는 것은 실제로 인쇄되어 있습니다. 544 00:40:24,570 --> 00:40:28,250 우리가 문자열에 문자를 통해 반복으로 545 00:40:28,250 --> 00:40:31,660 우리가 계산 때 간단하게 바로 다음 인쇄 수 있습니다. 546 00:40:31,660 --> 00:40:36,030 또는, 당신은 또한 배열에 저장하고 문자의 배열을 가질 수 547 00:40:36,030 --> 00:40:39,280 그리고 마지막에 그 배열 전체를 통해 반복하고 인쇄합니다. 548 00:40:39,280 --> 00:40:40,980 그럼 당신은 옵션이 몇 있습니다. 549 00:40:40,980 --> 00:40:47,280 그리고 % c는 문자를 인쇄 자리 표시 자 될 것입니다 기억. 550 00:40:47,280 --> 00:40:50,420 , 그래서 우리는 황제가, 이제 우리는 Vigenere로 이동 551 00:40:50,420 --> 00:40:57,580 이는 황제와 매우 비슷하지만, 단지 약간 더 복잡합니다. 552 00:40:57,580 --> 00:41:03,310 따라서 본질적으로 Vigenere있는 당신은 키워드에 전달 될 것입니다. 553 00:41:03,310 --> 00:41:06,510 대신 숫자 그럼, 문자열을 할거야 554 00:41:06,510 --> 00:41:09,200 그리고 그렇게 귀하의 키워드 역할을 할거야. 555 00:41:09,200 --> 00:41:14,440 그런 다음 평소처럼, 당신은 사용자로부터 문자열을 프롬프트를받을거야 556 00:41:14,440 --> 00:41:19,050 그리고 나서 암호로 바꾸다하고 그들에게 ciphertext를 다시 제공합니다. 557 00:41:19,050 --> 00:41:24,650 내가 말한만큼, 그 대신 특정 번호로 이동을 제외하고, 카이사르와 매우 유사 558 00:41:24,650 --> 00:41:30,620 숫자는 실제로는 문자에서 문자로 모든 시간을 바꿀 것입니다. 559 00:41:30,620 --> 00:41:34,890 이동 해당 실제 번호를 나타 내기 위해, 그것은 키보드 문자로 표시있어. 560 00:41:34,890 --> 00:41:43,150 당신은 예를 들어,의 변화에​​ 입력하면, 해당은 0의 변화에​​ 대응하는 것입니다. 561 00:41:43,150 --> 00:41:45,900 그럼 다시 알파벳 색인에 돌아 왔어. 562 00:41:45,900 --> 00:41:49,100 당신은 우리가 실제로 ASCII 값으로 다루고 있다는 표시하는 경우 유용 할 수 있습니다 무엇 563 00:41:49,100 --> 00:41:51,790 뿐만 아니라 문자뿐만 아니라 알파벳 색인으로, 564 00:41:51,790 --> 00:41:58,020 어쩌면 25를 통해 0의 알파벳 색인을 보여줍니다 자신의 ASCII 표를 찾거나 확인 565 00:41:58,020 --> 00:42:03,750 있도록 어떤 종류의 관계를 Z를 통해, 그리고 ASCII 값을 볼 수 있습니다 566 00:42:03,750 --> 00:42:07,020 그리고 밖으로 스케치 및 일부 패턴을 찾을. 567 00:42:07,020 --> 00:42:11,010 마찬가지로, 당신은 F에 의해 특정 인스턴스에서 이동 된 경우 - 568 00:42:11,010 --> 00:42:21,110 이 중 하나 소문자 나 대문자 F입니다 - 해당 5에 해당하는 것입니다. 569 00:42:21,110 --> 00:42:24,180 우리가 지금까지 잘 있습니까? 570 00:42:25,770 --> 00:42:30,050 Vigenere에 대한 수식은 약간 다릅니다. 571 00:42:30,050 --> 00:42:32,960 기본적으로, 당신은 그냥 시저 같은 것을 볼 572 00:42:32,960 --> 00:42:37,390 를 제외하고 대신 단지 K 우리는 K 인덱스 J 있습니다. 573 00:42:37,390 --> 00:42:44,810 우리가 있기 때문에 기본적으로 키워드의 길이를 i를 사용하지 않는 것을 확인할 수 574 00:42:44,810 --> 00:42:49,850 우리 ciphertext의 길이를 필요는 없습니다. 575 00:42:49,850 --> 00:42:56,130 우리가 나중에 내가 조금이 있는지 예를 볼 때이 비트 명확하게 될 것입니다. 576 00:42:56,130 --> 00:43:03,160 기본적으로, 당신은 ohai의 키워드를 사용하여 프로그램을 실행한다면, 577 00:43:03,160 --> 00:43:08,560 그리고 그 때마다, ohai가 변화 될 것입니다 것을 의미합니다. 578 00:43:08,560 --> 00:43:11,060 그럼 당신은 키워드에 어떤 위치에 따라 579 00:43:11,060 --> 00:43:15,800 그 금액으로 특정 ciphertext 문자를 이동거야. 580 00:43:15,800 --> 00:43:19,630 다시 말하지만, 그냥 카이사르처럼, 우리는 우리가 일의 대소 문자를 유지하도록해야 할 581 00:43:19,630 --> 00:43:22,900 우리 만 암호로 바꾸다 문자가 아닌 문자 나 공백. 582 00:43:22,900 --> 00:43:26,330 그래서, 당신이 사용했을 수있는 기능에 황제로 다시 찾아 583 00:43:26,330 --> 00:43:32,570 당신이 일을 이동하고, 여기에서 프로그램에있는을 적용하는 방법을 결정하는 방법입니다. 584 00:43:32,570 --> 00:43:35,260 그럼이 일을 매핑 까. 585 00:43:35,260 --> 00:43:39,680 우리는 GetString에서 사용자로부터이라도 한 일반 텍스트를 586 00:43:39,680 --> 00:43:44,090 이 말을 ... CS50입니다! 587 00:43:44,090 --> 00:43:47,090 그럼 우리가 ohai의 키워드가 있습니다. 588 00:43:47,090 --> 00:43:50,930 처음 4 문자는 아주 간단합니다. 589 00:43:50,930 --> 00:43:55,580 우리는 T가 O에 의해 이동 될 것입니다 알고 590 00:43:55,580 --> 00:44:01,990 H는 H에 의해 이동 될 것입니다 그리고, 내가이 이동 될 것이다. 591 00:44:01,990 --> 00:44:04,610 자,가 0을 나타냄을 확인 592 00:44:04,610 --> 00:44:11,940 그래서 최종 값은 실제로는 이전과 똑같이 동​​일한 문자입니다. 593 00:44:11,940 --> 00:44:15,250 다음에 s가 전으로 이동합니다. 594 00:44:15,250 --> 00:44:19,370 하지만 여기이 기간이 있습니다. 595 00:44:19,370 --> 00:44:25,960 우리는 그래서 우리가 아무 것도하여 변경되지 않습니다 것을 암호로 바꾸다하지 않으 596 00:44:25,960 --> 00:44:31,280 불과 변경 기간을 인쇄 할 수 있습니다. 597 00:44:31,280 --> 00:44:38,020 [학생] 내가이에 의​​해 이동되는 방법을 알고 이해가 안 돼요 - 어디 짓을 - >> 아, 미안 해요. 598 00:44:38,020 --> 00:44:41,620 여기에 상단에 여기에 해당 명령 줄 인수 ohai 참조 599 00:44:41,620 --> 00:44:43,740 그 키워드거야. 600 00:44:43,740 --> 00:44:49,550 그리고 기본적으로, 당신은 키워드에있는 문자를 통해 자전거하고 있습니다. 601 00:44:49,550 --> 00:44:52,020 [학생] 지금 O는 같은 변화 할 것입니다 - 602 00:44:52,020 --> 00:44:56,260 그럼 O는 알파벳의 특정 번호에 해당합니다. 603 00:44:56,260 --> 00:44:58,400 [학생] 맞아. 하지만 당신이 CS50 부분을 어디에서 왔어? 604 00:44:58,400 --> 00:45:02,540 오. 이제 당신이 같아 곳 GetString에 "나에게 인코딩 할 수있는 문자열을주세요." 605 00:45:02,540 --> 00:45:07,510 [학생] 그들은 당신에게이 이동에 해당 인수를 제공 할거야 606 00:45:07,510 --> 00:45:09,380 그리고 당신은 첫 번째 문자열을 입력해야합니다. >> 그래. 607 00:45:09,380 --> 00:45:12,440 그래서이 프로그램을 실행하면, 그들은 키워드를 포함하는 것 608 00:45:12,440 --> 00:45:14,740 자신의 명령 줄 인수에 그들이 실행할 때. 609 00:45:14,740 --> 00:45:19,740 , 덜 한 번 당신은 그들이 실제로 당신에게 1 제공 한 확인했고 더하지 610 00:45:19,740 --> 00:45:23,750 다음 문자열을 묻는 메시지를 표시하도록거야, 말, "나 문자열을주세요." 611 00:45:23,750 --> 00:45:27,630 이 경우에는 그들이 당신이를 제공 한 곳군요 ... CS50입니다! 612 00:45:27,630 --> 00:45:32,090 그럼 당신은 그렇게 사용하고 ohai을 사용하고 이상 반복거야. 613 00:45:32,090 --> 00:45:38,200 여기에 우리가 기간을 암호화를 통해 건너 뛰어납니다, 614 00:45:38,200 --> 00:45:51,660 하지만 ohai, 다음에 대한 위치의 관점에서 우리는 O를 사용했습니다. 615 00:45:51,660 --> 00:45:54,990 이 경우는, 4 왜냐면 그게보고 조금 더 어렵습니다 616 00:45:54,990 --> 00:45:57,710 그러니 좀 계속 보자. 여기 내 곁에. 617 00:45:57,710 --> 00:46:02,960 그럼 우리는 각각 O와 H에 의해 번역 i와 s를 수 있습니다. 618 00:46:02,960 --> 00:46:09,370 그런 다음 우리는 공간을 갖추고 있으며, 그래서 우리는 공간을 암호로 바꾸다하지 않을 것을 알아요. 619 00:46:09,370 --> 00:46:18,930 그러나 예고 그 대신에 여기이 장소에가는 중, 620 00:46:18,930 --> 00:46:28,330 우리는이 암호화 있어요 - 여기에 - 당신이 볼 수 있다면 나도 몰라. 621 00:46:28,330 --> 00:46:33,710 그래서, 당신은 실제로 미리 이렇게 말할 O가 간다 아니라, H는 간다, 622 00:46:33,710 --> 00:46:39,200 여기 간다, 난 O, H, A, I, O, H,, 난., 간다 당신은 그것을하지 않습니다. 623 00:46:39,200 --> 00:46:43,760 당신은 키워드에 위치를 이동 624 00:46:43,760 --> 00:46:51,020 당신이 실제로 실제 편지를 암호화 할 것 알 때. 625 00:46:51,020 --> 00:46:53,920 그런 말이 있습니까? 626 00:46:53,920 --> 00:46:55,800 좋아요. 627 00:46:56,490 --> 00:46:58,500 그럼 그냥 알림. 628 00:46:58,500 --> 00:47:03,760 당신은 당신은 키워드의 다음 문자로 진행되었는지 확인하려면 629 00:47:03,760 --> 00:47:06,390 귀하의 일반 텍스트에있는 문자는 문자 인 경우. 630 00:47:06,390 --> 00:47:09,120 우리가 O에있어 그렇게 말. 631 00:47:09,120 --> 00:47:19,310 우리는 다음 문자 일반 텍스트의 전 지수는 예를 들어, 숫자가됩니다. 632 00:47:19,310 --> 00:47:31,630 우리가 다른 편지를에 도달 할 때까지 우리는, J, 우리의 키워드에 대한 인덱스를 진행하지 않습니다. 633 00:47:31,630 --> 00:47:36,230 다시 말하지만, 여러분은 키워드의 처음으로 당신이 빙 둘러 있는지 확인하려면 634 00:47:36,230 --> 00:47:37,770 당신이 말에있을 때. 635 00:47:37,770 --> 00:47:42,030 여기에 우리가 전에있어 표시되면, 다음 하나는 O 할 수 있습니다. 636 00:47:42,030 --> 00:47:47,690 그럼 당신은 키워드의 시작 부분에 빙 둘러 할 수 있다는 몇 가지 방법을 찾고 싶어요 637 00:47:47,690 --> 00:47:49,470 당신이 끝을 도달 할 때마다. 638 00:47:49,470 --> 00:47:55,040 그리고 또 어떤 연산자 종류의 주변 배치를 위해 그 경우에 유용합니다? 639 00:47:56,630 --> 00:47:59,840 예를 들어 오프 계산에 좋아요. 640 00:47:59,840 --> 00:48:03,710 [학생] 퍼센트 기호. >> 네, 모듈로있는 백분율 기호. 641 00:48:03,710 --> 00:48:11,250 따라서 모듈로는 귀하 ohai에서 인덱스를 통해 포장을 할 때 여기에 유용합니다. 642 00:48:11,250 --> 00:48:17,700 그리고 잠깐 힌트 : 비트 계산에서 같은 키워드를 통해 포장을 생각해보십시오 643 00:48:17,700 --> 00:48:23,590 3 조, 4 사람이,이 곳 경우 644 00:48:23,590 --> 00:48:30,610 그들은 말했다 그들의 수는 1 살 4 모드 3,이었다. 645 00:48:30,610 --> 00:48:32,880 그럼 그 방법을 노력하고 생각합니다. 646 00:48:34,770 --> 00:48:42,740 당신이 다음 kj를 CI 후 파이가 있지만 어디서나, 공식에서 본 것처럼, 647 00:48:42,740 --> 00:48:44,700 당신이 그를 추적하도록해야 할. 648 00:48:44,700 --> 00:48:47,580 당신은 바로 내가 전화를 할 필요가 없습니다, 당신은 그 J 전화 할 필요가 없습니다 649 00:48:47,580 --> 00:48:53,270 그러나 당신은 당신의 일반 텍스트시 당신이있는 위치를 추적하도록해야 할 650 00:48:53,270 --> 00:48:55,790 뿐만 아니라 위치 등 귀하의 키워드에에 있다는 651 00:48:55,790 --> 00:48:59,840 그 반드시 동일하지 않을 때문에. 652 00:48:59,840 --> 00:49:06,400 키워드를 않습니다 만 - 당신의 일반 텍스트보다는 완전히 다른 길이있을 수 있습니다. 653 00:49:06,400 --> 00:49:09,140 또한 일반 텍스트, 숫자 및 문자가있어, 654 00:49:09,140 --> 00:49:14,450 그래서 완벽하게 함께 일치하지 않을거야. 예. 655 00:49:14,450 --> 00:49:19,280 [학생]이 케이스를 변경하는 기능입니다? 656 00:49:19,280 --> 00:49:24,530 당신은 자본에를 변경할 수 있나요? >> 네, 확실히이 있습니다. 657 00:49:24,530 --> 00:49:27,890 당신은 체크 아웃 할 수 있습니다 - 난의 toupper, 모든 일 단어를 생각합니다. 658 00:49:30,650 --> 00:49:36,310 그러나 당신이 일을 암호화하고 텍스트를 보존하려는 경우, 659 00:49:36,310 --> 00:49:39,350 는 별도의 케이스를 가지고하는 것이 가장 기본적입니다. 660 00:49:39,350 --> 00:49:42,040 이 대문자이라면,이에 의해 이동하려면 661 00:49:42,040 --> 00:49:46,460 수식에 당신이 돌아 보면 우리는 바둑의 종류해야하는 because 662 00:49:46,460 --> 00:49:50,900 교환 번호를 표현 ASCII 방식 사이의 663 00:49:50,900 --> 00:49:55,020 그리고 실제 알파벳 색인, 우리는 확인하려면 664 00:49:55,020 --> 00:50:01,850 사용 할 거라고 패턴의 어떤 종류있을거야. 665 00:50:01,850 --> 00:50:04,580 실제로 패턴에 대한 또 다른 메모. 666 00:50:04,580 --> 00:50:07,250 당신은 확실히 숫자를 처리 할거야. 667 00:50:07,250 --> 00:50:11,280 스타일의 예입니다, 마법 번호를 사용하지보십시오. 668 00:50:11,280 --> 00:50:18,470 당신이 좋아하여 때마다 교대 뭔가를 원하는 그렇게 말 - 669 00:50:18,470 --> 00:50:22,400 당신이 뭔가를 변화 할 거라고 할 때 좋아요, 힌트 있도록 또 다른 스포일러는 670 00:50:22,400 --> 00:50:26,310 일정 금액으로 실제 번호로 그를 나타내는 않으려 고 671 00:50:26,310 --> 00:50:32,810 오히려 시도하고 가지 더 많은 이해가됩니다 ASCII 값을 사용할 수 있는지 확인합니다. 672 00:50:32,810 --> 00:50:35,470 또 다른 참고 사항 : 우리는 공식을 상대하기 때문에, 673 00:50:35,470 --> 00:50:41,200 당신의 TF가 가지 사용되는 것과 패턴 알 수에도 불구하고, 674 00:50:41,200 --> 00:50:44,430 댓글 가지의에 대한 최선의 논리 같은을 설명 할 수 675 00:50:44,430 --> 00:50:51,880 "나는 때문에이 패턴을 사용 ..." 그리고 가지 의견에 간결 패턴을 설명합니다. 676 00:50:54,090 --> 00:50:58,990 [이 연습 12 살] 다른 질문이없는 경우, 그때 조금 간 머무를 거예요. 677 00:50:58,990 --> 00:51:04,370 암호화와 주셔서 감사합니다 : 귀하의 pset 2 행운을 빕니다. 678 00:51:06,070 --> 00:51:08,620 [학생] 감사합니다. >> 감사합니다. 679 00:51:09,220 --> 00:51:10,800 [미디어 오프라인 소개]