[Powered by Google Translate] [연습 - 문제 설정 2]
[Zamyla 찬 - 하버드 대학교 (Harvard University)]
[이 CS50입니다. CS50.TV]
괜찮아요. 안녕하세요 여러분, 연습 2 환영합니다.
먼저, pset 1 완료 진심으로 축하하고 싶습니다.
나는 당신의 일부에 대한 약간의 힘든 할 수 있다는 것을 알게
당신이 쓴 첫 번째 컴퓨터 프로그램 일 수도,
하지만 단지, 당신이 학기의 끝 부분에 다시 볼 때,이 말에 그 기억
당신은 pset 1에서 살펴 보겠습니다 당신은 "그 오분 인치 이봐 요, 내가 할 수 있겠어요"라고합니다
그럼 알고이 말에 당신은 확실히 간단 pset 1을 (를) 찾을 수 시리라 믿습니다.
그러나 지금은 거대한 성과, 그리고 수행하기 위해 축하드립니다.
지금 또한 빠른 메모 우리는 연습의 고기에 도착하기 전에.
난 그냥 가끔 시간이 충분하지 않습니다 빠른 메모를 만들고 싶어
연습하는 동안 문제 세트를하고 하나 하나 방법으로 이동합니다
그리고 오히려 어쩌면 단지 구현의 1 개 또는 2 종류에 초점을
당신이 이것을 할 수있는 방법.
그러나 당신이 그것을 다른 방법을 실행할 금지하는 말을하지 않는 것입니다.
일을하는 수많은 방법, 컴퓨터 과학과 마찬가지로 종종 있습니다
그래서 나는 확실히이 제시했을 수보다 솔루션의 다른 종류를 사용하여 주시기 바랍니다.
[pset 2 : 암호화 - Zamyla 찬 - zamyla@cs50.net]
[pset2 - 0. 질문의 항 - 1. 폐하 - 2. Vigenere]
괜찮아요. 그래서 문제는 2 설정 : 암호화는 재미입니다.
다시 말하지만, 모든 pset와 함께 질문의 섹션으로 시작합니다
그건 당신이 할당 된 교육 동료와 섹션에서 실시 될거야.
우리는 연습을 통해 다음을 통해 갈 수 없습니다
그들은 확실히 당신이 pset를 완료하는 데 도움이됩니다.
그럼 문제 세트의 첫 번째 부분은 카이사르입니다.
그리고 황제에 누군가가 당신에게 정수와 키를 전달합니다
그리고 당신은 그들이 당신을 제공하는 텍스트 문자열을 암호화합니다
그리고 암호화 된 일을 저들을 제공합니다.
사람이 크리스마스 이야기를 본 경우가 그 예가 있습니다.
그런 다음 문제 세트의 두 번째 부분은, Vigenere입니다
이는 고급 암호화 기술입니다.
그래서 우리는, 텍스트를 암호로 바꾸다 할거야
대신 하나의 정수로를 제외하고, 우리는 실제로 인코딩 할거야
사용자가 제공 할 수있는 키워드.
그래, 그럼 도구 상자 오늘날의 첫 번째 도구는 실제로 어플라이언스를 업데이트 할 예정이다.
토론 게시판에 우리는 같은 일을 볼 것 "왜이 일을하지 않는?"
"왜 50 일을 제출하지 않는 이유는 무엇입니까?"
종종 솔루션은 어플라이언스를 업데이트 만 실제로 있습니다.
그리고 당신은 당신의 검색 어플라이언스는 sudo 얌-Y의 터미널 창에서 실행하는 경우 -
그 예라고 깃발이야, 모든 업데이트 - 업데이트를,
필요가있을 경우에는 다음 어플라이언스가 업데이트됩니다.
이미 어플라이언스의 최신 버전에있는 경우 그리고 그것은 다치게하지 않습니다.
그런 다음 그냥없고 새로운 업데이트가 말 것이고, 함께 작업을 계속할 수 있습니다.
하지만이는 귀하가 어플라이언스를 열 때마다를 실행하는 좋은
우리는 여전히 매우니까 -
어플라이언스에 문제를 해결하는 - 때때로 우리는 버그로 온다면.
그래서 당신은 어플라이언스의 최신 버전을 가지고 있는지 확인하십시오
그리고 업데이트 실행합니다.
괜찮아요. 우리는 편지를 처리​​하고 변경 일을 enciphering, 너무나부터
우리는 우리의 ASCII 차트와 가장 친한 친구되고 싶은거야.
당신이 찾아내는 경우에 많은 사람들이 온라인이 있습니다. 아마 자신을 더.
기본적으로, 모든 문자와 모든 번호와 모든 문자로
그들과 관련된 수는 있습니다
그래서 그것은 실제 편지와 함께 자신의 ASCII 값을 보는 건 좋은 일이지.
그는 확실히 문제 세트에서 당신을 도움이 될 것입니다.
정말이 문제 세트에 날 도와 하나가 실제로 인쇄하는 것이 었습니다
난을 통해가는대로, 사실은, 그것을 그릴 것
, 쓰기 "이이에 가야한다면 ..."
의 종류는에 그릴하고 마크 업하여 ASCII 테이블과 가장 친한 친구가된다.
그런 다음 우리는 우리의 처분에 몇 가지 다른 도구를 제공합니다.
이 시간 대신 실제로 그들의 입력 모든 사용자에게 메시지를 표시
우리는 조합을 할 겁니다.
우리는 어떤 입력을 위해 메시지를 표시 할거야
하지만 우리는 단지 명령 줄 인수를 사용하는거야.
그래서 그들은 자신의 프로그램을 실행할 때, 보통 당신이 말하는. / 안녕, 예를 들어,
프로그램이 hello.c라면.
하지만 이번에는 대신 그 말을, 그들은 나중에 단어, 인수를 넣을 수 있습니다.
그들은뿐만 아니라 자신의 입력으로 우리에게 전달 무엇이든 그래서 우리는 사용하는 것
그래서 그냥 정수에 대한 메시지를 넘어 이동뿐만 아니라, 명령 줄 인수를 사용합니다.
그리고 우리는뿐만 아니라 많이 사용됩니다 배열과 문자열로 갈거야.
여기 한 미니 ASCII 차트 중 예입니다.
내가 말했듯이, 모든 문자는 숫자에 해당하는
그리고 그렇게 익숙해. 그것은 유용합니다.
그리고 나중에 우리가 숫자를 처리 일부 ASCIIMath 일을 시작할 때 -
를 빼는 추가, -이 차트를 참조 후 확실히 좋아요.
당신이 연주했을 수있는 것이 - 그럼 시저 암호의 예입니다.
단지 휠입니다. 기본적으로 외부 알파벳이 후 내부 알파벳이 있습니다.
그래서 지금 여기 시저 암호문하지만 0의 키 예입니다.
Z.까지 기본적으로, A는에 맞게 정렬, B는 B로 정렬되어있는 모든 방법
하지만 우리는 예를 들어, 3의 키를 원한다고.
지금 D 등으로 정렬되도록 그럼 우리가 내부 휠을 회전 할 것이다
그리고 우리가 어떻게 할 건지 근본적이다.
우리는 바퀴가 없지만, 우리가 할 수있는 일은하는 것은 우리의 프로그램을시키는 것입니다
종류의 번호가 일정 금액 우리와 함께 알파벳을 이동.
내가 전에 한 말 있도록, 우리는 명령 줄 인자를 처리 할 것
뿐만 아니라 정수를 받고 있습니다.
따라서 사용자가 시저 프로그램을 실행 될 수있는 방법은 말씀입니다. / 카이사르
그리고 그 후 번호를 입력.
그리고 그 숫자는 키 이동을 나타냅니다
얼마나 많은 당신의 시저 암호의 내부 휠을 회전 할 거예요 번.
그리고 여기에 예를 참조하십시오.
우리는 우리 시저 암호로 할 것을에서 문자를 입력 한 경우
다음은 O를 통해 입력 D를 3 회 이상 이행 매일 편지 때문에 겠어
내가 당신에게 보여주기하는 휠의 예처럼.
그럼 입력하면, 예를 들어,이 CS50입니다!
다음은 편지의 모든 이동합니다.
그래서 시저와 Vigenere 모두에서 중요한 일이야
우리가 아닌 문자를 통해 건너 갈 거예요.
그래서 공백, 캐릭터, 등, 숫자, 우리는 그 같은 유지거야.
우리는이 경우에는 문자를 이동거야.
이 휠에서 볼 수 있도록, 우리는 우리가 사용할 수있는 편지를 가지고
그래서 우리는 문자를 이동하고 문자를 암호화하고 싶습니다.
해야 할 첫 번째 일은 그래서, 당신은 문제의 카이사르에 대한 사용 2를 설정하는 것이 본
당신은 터미널에서 실행할 때 황제를 실행 한 다음 번호를 입력하는 것입니다.
그럼 우리가해야 할 것은 어떻게 든 그 열쇠를하고 액세스 할 수 있습니다.
그래서 우리는 어떻게 든 두 번째 명령 줄 인수 될거야보고 싶어.
첫번째는. / 카이사르 될 것입니다, 그리고 다음 하나는 키 번호가 될 것입니다.
우리는 우리의 C 프로그램을 시작하는 정수 메인 (무효)을했다. 그래서 전에
우리가 다시 껍질 층이 조금가는거야
실제로보고 그 대신에 우리의 주요 기능에 무효에 전달
우리는 실제로이 매개 변수를 다루고 있습니다.
우리는 argc라는 이름의 정수를 한 후 문자열 배열 변수는 argv했다.
그럼 argc는 정수입니다
그리고 프로그램에 전달되는 인자의 수를 나타냅니다.
그리고 argv가 실제로 전달 된 인수의 목록입니다.
인수의 모든 문자열입니다, 그래서 변수는 argv는 문자열의 배열, 목록을 나타냅니다.
의 배열 조금 얘기하시오.
배열은 본질적으로 새로운 데이터 구조입니다.
우리는 우리가 두 배로 한 ints를 우리는 문자열을 가지고, 이제 우리는 배열을 갖추고 있습니다.
배열은 같은 종류의 여러 개의 값을 저장할 수있는 데이터 구조 아르
그래서 본질적으로, 당신이 원하는 유형의 목록입니다.
기본적으로, 모든 일 변수에 정수의 목록을 원한다면,
다음 유형은 정수 배열의 된 새로운 변수를 생성합니다.
따라서 배열은 배열의 첫 번째 요소는 인덱스 0에 있습니다 즉, 제로 인덱스입니다.
배열이 예에서와 같이 길이가 4,의 경우 다음 마지막 요소는, 색인 3시 것
1 - 어떤은 4입니다.
그럼 배열을 만들려면,이 같은 일을합니다.
당신이 두 배열을 원한다고.
근데 이거 데이터 형식의 모든 종류에도 해당됩니다.
당신이 두 배열을 원하는 그렇게 말. 당신이 사서함에 전화 해 말해.
당신은 다른 두를 초기화 것처럼
, 당신은 두 번 한 후 이름을 말했는데, 이번에는 대괄호를 우리 넣어
다음 숫자는 배열의 길이 될 것입니다.
배열에서 우리가 길이를 변경할 수 없습니다,
그래서 당신은 항상 얼마나 많은 상자를 정의하고 선택해야
얼마나 많은 값을 귀하의 배열이 개최 할 것이다.
그러므로 배열의 다른 값을 설정하려면, 당신은이 다음과 같은 구문을 사용하는 것
당신은 슬라이드에 표시로.
당신이 사서함 인덱스 0, 1.2으로 설정됩니다
2.4에 사서함 지수 1 세트 등
그래서 지금 우리가 배열에게 약간을 검토 한, 어디 argc와 argv가 다시 가자.
우리는 argv가 지금 문자열의 배열 것을 알고있다.
따라서 사용자가 통과 할 때 - 사람들이 프로그램을 실행한다고 가정 해 -
그들은 말한다. / 안녕하세요 데이비드 Malan,
이미 실제로 argc와 argv가가 무엇인지를 생각해을 위해 할 수있는 프로그램이 무엇을 할 것입니다.
그럼 당신은 걱정하지 않아도됩니다.
는 공백으로 구분 3 별개의 단어를 볼 수 있기 때문에이 경우 Argc 3 것입니다.
그리고 다음이 인스턴스의 배열은, 첫 번째 인덱스는 것입니다. /여보세요,
다음 데이빗, 다음 Malan.
누구는 변수는 argv 사이에 관계를 바로 볼 수 있습니까
배열은,와 argc는?
그래. 우리는 args.c.의 예에서 본격적으로 시작됩니다
우리가 2 사이의 관계를 활용할 수 있는지 봅시다.
여기 어플라이언스에 해당을 찾을 수있는 기본 응용 프로그램
. C 파일을 열도록하면 가끔 이맥스입니다.
하지만 우리가 gedit를 처리하려면, 당신이 할 수있는 것은 당신이 바로 C 파일을 클릭 할 수 있다는 거죠
연결 프로그램 속성으로 이동 한 다음 기본값으로 설정 gedit를 선택
지금 당신의 프로그램은 gedit 대신 이맥스에서 열립니다.
좋아요.
그래서 여기 내가 각 명령 줄 인수를 인쇄 할 수있는 프로그램을 갖추고 있습니다.
어떤 사용자가 입력 그래서, 나는 기본적으로 새 행에 그들에게 다시 반환하고 싶습니다.
그래서 우리는 뭔가를 통해 반복하는 데 사용할 수있는 구조가 뭐죠 -
아마 당신은 당신의 pset 1에 사용하는 것을?
당신은 일의 설정 번호를 통해 가고 싶어? 경우 >> 루프의 경우 [학생].
루프하십시오. 그렇지. 따라서 for 루프로 시작하자.
우리는 INT 난 = 0에 있습니다. 우선은 표준 초기화 변수로 시작합니다.
나는 세트에 대한 조건을 떠나 그럼 난 + +,이 일을 할거야 말거야.
괜찮아요.
따라서 변수는 argv는 프로그램에 전달되는 인자의 목록입니다 경우, 변수는 argv로 생각
와 argc는 프로그램의 인수의 개수입니다
그리고 그 argc는 변수는 argv의 본질적 길이, 오른쪽,을 의미합니다
argc의 값으로 많은 인자로 될 거니까 때문입니다.
우리는 변수는 argv의 각 요소를 통해 반복하고 싶다면
우리는 각각의 시간이 주어진 색인에 변수는 argv에서 변수를 액세스 할거야.
그 바로이 함께 표시 할 수 있습니까?
여기이 변수는이 인스턴스에서 특정 문자열을 나타냅니다
때문에이 문자열 배열 이구나 - 주어진 인덱스에있는 특정 문자열입니다.
우리가 원하는 것은이 경우에 우리는 그것을 인쇄 할, 그래서 printf 거라고 만 말해 두지.
이제 변수는 argv는 문자열입니다, 그래서 우리는 거기 자리 표시자를 넣어 싶습니다.
우리는 실감 할 새 줄을 싶습니다.
그래서 여기에 우리가에 대한 루프를 갖추고 있습니다. 아직 조건이 없습니다.
그래서 난 주어진 문자열을 인쇄 할거야 때마다 누른 다음 0에서 시작하고,
배열의 특정 인덱스에.
그래서 우리는 배열의 요소를 출력 중지 할 거죠?
우리가 완료되면, 그렇죠? 우리는 배열의 끝을 도달합니다.
그래서 우리는, 배열의 길이 통과 초과하지 않으
우리는 이미 우리가 실제로 적극적으로 변수는 argv의 길이가 뭔지 알아하지 않아도 알
때문에 우리에게 주어진, 그리고 그게 뭔데거야? Argc. 그렇지.
그래서 우리는 시간이 프로세스 argc 번호를하고 싶어.
나는 올바른 디렉토리에 아니야.
괜찮아요.
지금의이 인수하게 보자. 대단한 없음 오류가 없습니다.
그러니까 그냥 인수를 실행할 수 있습니다.
이 우리에게 돌아갑니다 어떻게되어 가고있는 건지? 단지 다시 인쇄 할거야.
"당신은 프로그램에 인수를 입력 된, 내가 그것을 너에게 돌려 줄거야."
그럼 우선은, 우리가 foo는 바 인수를하고 싶은 말은 말한다.
그럼 그렇게 우리에게 다시 출력합니다. 알았어?
그래서 당신은 argc와 argv가를 사용하는 방법의 예가있다
그 argc을 알고는 변수는 argv의 길이를 나타냅니다.
당신은 배열의 길이 이상의 배열의 접근 하나가 이제까지하지 있는지 확인하십시오
C는 확실히 소리 때문에.
당신은 세그먼트 오류라는 걸 가져올 게
이것은 기본적으로 당신이 뭔가를 액세스하려고하는 말은, 재미 결코
존재하지 않는 즉,에 속해 있지 않습니다.
확실하게, 특히 제로 색인과 함께, 우리는 가고 싶지 않아요 -
우리가 길이 4 배열이있는 경우, 예를 들어 같은
우리가 제로 인덱스에서 0부터 시작하기 때문에 그 배열 인덱스 4는 존재하지 않습니다.
우리가 0에서 시작하면, 그냥 루프에 대한 같은 초 자연이 될 것입니다.
그러므로 염두에두고.
혹시 당신의 범위 너머에있어 배열의 인덱스에 액세스 할 수 싶지 않아요.
그래서 우리는 어떻게 액세스 종류의 수 있습니다 지금은 볼 수 있습니다
인치 전달되는 명령 줄 인수
당신이 문자열을 보았다 그러나, 변수는 argv는 실제로 문자열 배열입니다.
그래서 아직 실제로 정수 아니지만, 카이사르에서 우리는 정수 처리하고 싶습니다.
다행히 실제로 정수로 문자열을 변환 할 수 있습니다 우리를 위해 만든 기능이 있습니다.
우리가 그들에게 메시지를 표시하는 곳도 여기에서 우리는 사용자 입력 처리되지 않습니다
키 여기 입력에, 우리는 실제로 reprompt하고 말 할 수 없습니다
"이 유효 아니라면 이런 말은 나에게 또 다른 정수를 제공합니다."
하지만 우리는 여전히 올바른 사용법을 확인 할 필요는 없어.
카이사르 년에는 1 번호를 전달 수 있습니다
그래서 사람들은. / 황제가 실행해야하고 그들이 당신에게 번호를 알려해야합니다.
따라서 argc는 특정 숫자이어야합니다.
그들이 당신에게. / 시저와 다음 키를 전달해야하는 경우 어떤 번호는 것입니까?
argc는 무엇입니까? >> [학생] 2. >> 둘. 그렇지.
그럼 당신은 argc 2 있는지 확인하고 싶습니다.
그렇지 않으면 기본적으로 프로그램을 실행을 거부.
주요 년은 int는 메인라는 기능입니다
그래서 성공적인 프로그램의 끝에서 좋은 연습 반환 0 항상.
말다면, 그들은 당신에게 세의 명령 줄 인수 대신 2를 제공
또는 그 확인하는 것이 좋습니다 당신은 무슨 일 것 것은 다음 예를 들어, 당신에게 1 제공
그리고 아니, 말을 1 반환, 난이 프로그램을 진행 할 수 없습니다.
[학생]가 텍스트에 공백이 될 수 없습니다. >>이 뭐라 구요?
[학생]는 당신이 암호화하려는 텍스트의 공간이 될 수 없습니다.
아!
우리가 암호화 노력하는 텍스트의 측면에서 그 사실은 나중에 온다
우리가 그 텍스트를 제공합니다.
그래서 지금 우리가 실제 수치는 명령 인자로 받고
시저 암호화에 대한 실제 변화.
[학생] 단 1 argc 반대로 당신은 왜 2를해야하나요? 한 번호가 확실히있다.
맞아. 우리가 argc에 대해 2이 필요한 이유 이유 대신 1
당신이 프로그램을 실행하고 말할 때 때문입니다. / 카이사르 나. /여보세요,
그 사실은 명령 줄 인수로 계산합니다.
그래서 그건 이미 1 차지하고 그래서 우리는 1 개의 엑스트라를 입력하고 있습니다.
그래서 당신은 실제로 명령 줄 인수에 문자열을 입력하고 있습니다.
당신이 원하는 무엇을 카이사르에 대해 우리는 정수 처리하려면
그래서 당신은이 atoi 함수를 사용할 수 있습니다.
그리고 기본적으로, 당신은 문자열을 전달하고 그 정수를 다시 반환합니다
는 정수로 그 문자열을 만들 수 있다면.
우리가 같은 printf 또는 GetString 일 처리 할 때 지금 기억
우리는에만 해당 라이브러리가 포함되어 있습니다.
그래서 처음에 우리는 그와 같은 해시 태그 표준 I / O,. H, 뭔가 시작합니다.
음, atoi는이 라이브러리 중 하나에 없습니다
그래서 우리가해야 할 일은 우리가 그에 맞는 라이브러리를 포함해야합니다.
그래서 수동 기능을 설명 연습 1 다시 기억.
당신은 터미널에 사람을 입력 한 다음 함수의 이름이 나타납니다.
그리고, 그 사용의 전체 목록을 가져 것이다
뿐만 아니라 그것은 그런 일이 속한 도서관 나타납니다.
그래서 atoi와 수동 기능을 사용 할에게 갈거야
하고 atoi 함수를 사용할 수 있도록 포함시킬 필요가있는 도서관 파악.
, 그래서 우리는 열쇠를 얻었 어 지금은 일반 텍스트 발생에있어서
그래서 실제로 당신이하라는 메시지가있는 사용자가 입력 될 것입니다 그.
우리는 같은 맥락에 빠져 GetInt와 GetFloat을 처리하고,
우리는 GetString를 처리 할거야.
동안 또는 루프 확인하면서 그러나이 경우에는 우리는 개를 수행 할 필요가 없습니다.
GetString는 확실히 우리에게 문자열을 제공합니다
우리는 사용자가 회사에서주는 암호화거야.
그럼 당신은 이러한 사용자 입력 된 문자열을 모두가 올바른지 것으로 간주 할 수 있습니다.
좋아요.
, 그래서 일단 키가 있는데 일단 텍스트를 해
지금 남아있는 당신은 일반 텍스트를 암호로 바꾸다해야합니다.
단 신속하게 용어를 통해 충당하기 위해, 일반 텍스트는 사용자가 기능을 제공합니다 무엇
그리고 ciphertext 당신이 그들로 돌아거야.
문자열 그래서 편지로 실제로 편지를 통과 할 수있을
우리는 모든 문자를 이동해야하기 때문에하는 것은,
우리가 그 문자열을 이해 위로 레이어 껍질의 우리 종류
우리는 그들이 정말 문자의 목록을 걸 참조하십시오.
하나는 다른 후 제공됩니다.
그들은 문자 배열이기 때문에 그래서 우리는 배열로 문자열을 처리 할 수​​ 있습니다.
당신은 텍스트라는 문자열이 그렇게 말
그 변수 텍스트에이 CS50입니다 저장됩니다.
그런 다음 인덱스 0에서 텍스트 자본 T 될, 색인 1 H 등이 될 것입니다
그리고 배열과, args.c에서 argc 예에서,
우리는 배열을 통해 반복해야한다고 보았다
그래서 우리는 내가 길이보다 적은까지에서 = 0을 반복했다.
그래서 우리는 우리의 문자열의 길이가 뭔지 알아내는 몇 가지 방법이 필요합니다
우리가 이상 반복 할 경우.
다행히 다시 우리가 기능은 비록 나중에 CS50에 있습니다
당신은 확실히 자신의 기능을 구현하고 만들 수 있습니다
그 문자열의 길이를 계산할 수 있습니다.
하지만 지금은 문자열 길이, 그래서 나 strlen을 사용하는거야.
당신은 문자열에 전달하고 당신에게 문자열의 길이를 나타내는 정수를 반환합니다.
의 우리가 문자열의 각 문자를 통해 반복 할 수있을 방법에 대한 예를 들어 보자
그와 함께 일을.
우리가 원하는 것은 문자열의 각 문자를 통해 반복 is
그리고 우리가 원하는 것은 우리는 1 각 문자 1 다시 인쇄
우리는 옆에 무언가를 추가 제외.
따라서 for 루프로 시작하자. INT I = 0.
우리는 조건에 대한 공간을 떠날거야.
우리는 문자열의 끝을 도달 할 때까지 반복하고 싶지 맞죠?
그래서 어떤 기능은 우리에게 문자열의 길이를 제공합니다?
[안 들리게 학생 응답]
그것은 명령 줄 인수의 길이입니다.
그러나 문자열 우리는 우리에게 문자열의 길이를 제공하는 기능을 사용하고 싶습니다.
그래서 문자열의 길이입니다.
그리고 나서 거기에 문자열을 전달해야합니다.
그것이의 길이를 계산하기 위해 필요한 문자열을 알아야합니다.
그래서이 경우에는 우리는 문자열의를 다루고 있습니다.
좋아요.
그럼 우리가 뭘 원하는지,의 printf 보자.
이제, 우리는 문자로 처리하고 싶습니다. 우리는 각각의 문자를 인쇄하고 싶습니다.
당신이 수레를 인쇄하려는 경우, 당신은 %의 F와 같은 자리 표시자를 사용할 수 있습니다.
정수를 사용하면 % d 개를 사용합니다.
그리고 마찬가지로, 문자로 당신은 내가 문자를 인쇄 할거야 말 %의 C를 사용하여
그는 변수 안에 저장되는 파일입니다.
그래서 우리는이 있고, 한번에 기간 및 공간을 추가 할 수 있습니다.
우리는 어떤 문자를 사용하고 있습니까?
우리는 문자열의에하고 싶은 문자를 사용하려고하고 있습니다.
그래서 우리는 문자열로 뭔가를 사용하여 할 것
그러나 우리는 거기에 특정 문자를 액세스 할 수 싶습니다.
문자열이 단지 배열 인 경우 그럼, 어떻게 배열의 요소에 액세스하려면 어떻게해야하나요?
우리는 그 대괄호를 가지고 있고, 그런 다음에 우리가 거​​기에 색인을 넣어.
그래서 우리는 대괄호가 있습니다. 이 경우 Google 색인 우리가 방금 전을 사용할 수 있습니다. 그렇지.
그래서 여기에 우리가, 우리가 점과 공백으로 다음 문자를 인쇄 할 것 말이야
그 문자의 문자열 s의 i 번째 문자가 될 것입니다.
난 그냥 저장거야. 좋아요.
지금은 문자열의 길이를 실행하는거야.
그래서 우리는 OMG라는 문자열을했고, 지금은 훨씬 더 강조있어.
마찬가지로, 우리가 실제로 사용자로부터 문자열을 싶은 말.
우리가 어떻게이 작업을 수행 할 수?
전에, 어떻게 정수 거죠?
우리는 GetInt라고 하셨죠, 맞죠? 그러나이 INT 아니기 때문에 GetString 까.
가 문자열 길이를 보자. 여기 특정 프롬프트를 입력하지 않았습니다.
그럼 나도 몰라.
여기에 내 이름을 넣어거야 그래서 그럼 내가 그 일 중 하나를 수행 할 수
나는 그런 모든 문자 또는 뭔가 단어를 지정할 수. 좋아.
그래서 문자열의 길이입니다.
그래서 우리는 황제에게 돌아 간다.
우리는 우리가 문자열을 통해 반복하는 방법에 대한 몇 가지 도구를 가지고
우리는 각각의 요소에 액세스하는 방법.
그래서 지금 우리는 프로그램을 다시 할 수 있습니다.
나는 전에 ASCII 표에서 가장 친한 친구, 언급 한 바와 같이,
당신은 모든 문자와 관련된 숫자를 만나러가는 중이 야.
그래서 우리의 일반 텍스트 내가 어지러워 요하다고!
그런 다음이 문자의 각은 번호와 이와 관련된 ASCII 값을 가지고 것입니다
심지어 아포스트로피, 심지어 공간, 심지어 느낌표,
그래서 당신은 염두에 유지하는 것이 좋습니다.
따라서 자신의 명령 줄 인수에 포함 된 사용자가 6입니다 우리집 열쇠를 말한다.
73으로 표시됩니다 나야의 첫 글자,,,에 대한 의미
당신은 73 + 6의 ASCII 값에 의해 표현되는 어떤 문자 그들에게 돌아 싶습니다.
이 경우 그 79 것입니다.
이제 우리는 다음 문자로 이동하고 싶습니다.
따라서 일반 텍스트의 인덱스 1 다음은 아포스트로피 것입니다.
그러나 우리는 문자를 암호로 바꾸다 싶은 기억 해요.
그래서 우리는, 아포스트로피가 실제로 같은 유지하도록해야 할
우리가 39에서 어떤 45 변경하지 않는 것이는 것입니다.
우리는 아포스트로피로 유지하고 싶습니다.
그래서 우리는 문자를 암호로 바꾸다하는 것을 잊지하려면
우리가 다른 기호의 모든 프로그램에서 변경되지 않은 상태로 유지하려면 때문입니다.
우리가 원하는 또 다른 점은 대소 문자를 보존하는 것입니다.
그래서 당신은 대문자있을 때, 그것은 대문자로 유지해야합니다.
Lowercases은 소문자로 유지해야합니다.
따라서 유용한 기능은 enciphering 문자를 처리 할 수​​있을
그리고 사물의 대소 문자를 보존 유지
isalpha, isupper, islower 기능입니다.
그리고이 당신에게 Boolean 값을 반환 기능입니다.
기본적으로 true 또는 false입니다. 이 대문자입니까? 이 영숫자입니까?
이 본질적으로, 편지입니다.
그래서 여기 당신이 기능을 사용하는 방법의 3 예입니다.
기본적으로, 당신이 값은 그 함수에 의해 귀하에게 반환 여부를 테스트 할 수는 true 또는 false입니다
그 입력에 따라.
어느 암호로 바꾸다 않은 게하거나 암호화하거나 대문자 등입니다 있는지 확인을
[학생] 당신은 좀 더 방법과 당신이 그들을 사용하는 사람들을 설명 할 수 있습니까? >> 예, 물론하십시오.
우리가 돌​​아 보면한다면, 여기 바로, 자본 I 있나요?
그래서 우리는 전 + 6 O. 때문에 나는 O 하는거 알지
그러나 우리는 O가 수도 O. 될 것입니다 있는지 확인하려면
그러니까 기본적으로, 이것이 우리의 입력을 변경하려면 좀하는 것입니다.
이 대문자이거나, 우리가 처리하는 방식을 변경 종류의하지 않습니다 그래서인지.
그럼 우리가 특정 인덱스에있는 isupper 기능을 사용하는 경우,
사실 우리 반환하므로 isupper은 ( "I"), 그래서 우리는 위 란다.
그럼 거기에 따라, 나중에 우리는 공식에 갈거야
당신은 카이사르의 일을 이동하는 데 사용됩니다 것을
가 대문자인지 그래서 기본적으로 약간 다른 공식이있을거야
으로 소문자로 반대했습니다. 이해가가?
그래. 걱정 마세요.
꽤 이해가되지 않는 편지에 6 추가하는 방법에 대해 조금 이야기
우리가 가지 이해 된 경우를 제외하고 그 다음 문자를
정수와 호환 종류의 수 있습니다.
우리가 할 일은 우리가 사용하는 암시 적 캐스팅의 종류입니다.
우리는 당신이 값을 위치에 조금 나중에 캐스팅으로 갈거야 당신은 다른 종류로 돌려
전보다.
그러나이 pset과 함께 우리는 서로 교환하여 문자를 사용 가지 작업을 할 수 있습니다
및 해당 정수 값.
당신은 단순히 그냥 작은 따옴표로 문자를 싸는 자한다면,
다음은 정수로 처리, 정수와 함께 작동 할 수 있습니다.
따라서 자본 C가 67에 관한 것이다. 소문자 f를 102에 관한 것이다.
이 값을 알고 싶어한다면, 당신의 ASCII 표 좀 봐.
그럼 당신은 빼야하고 추가 할 수시킬 수있는 방법의 몇 가지 예에 가자고,
당신이 실제로 정말 이러한 문자와 협력 할 수있는 방법, 상호 교환을 사용합니다.
나는 ASCIIMath가 정수로 문자의 추가를 계산하는 것이다라고
다음 결과 문자뿐만 아니라 결과 ASCII 값을 표시합니다.
그래서 제가 여기 말이야 -이 부분과 꼭 거래하기 -
하지만 기본적으로, 전 사용자가 키와 함께 실행 ASCIIMath 말을해야 말
그리고 난 그 키가 숫자로 간다는 걸 말하는거야
되는 우리는이 문자를 추가 할거야.
그래서 여기 발견 내가 열쇠가 필요로하기 때문에
나는 그들이 나에게 한 일을주는 걸 필요로부터
난 단지. / asciimath와 키를 받아 싶습니다.
그래서 argc 2와 같다 것을 요구거야.
그렇지 않을 경우, I 1을 반환하고 프로그램이 종료됩니다거야.
그래서, 키가 첫 번째 명령 줄 인수 않을 거라고 말하는거야
,이 두 번째 질거야, 당신은 여기를 참조로
나는 정수로 그 만들어 버릴거야.
그럼 내가 연구 할 문자를 설정하는거야.
변수 chr의 유형이 실제로 정수 것을 확인할 수 있습니다.
나는 정수로 R을 사용할 수 있다는 방법이 작은 따옴표로 encasing입니다.
우리는 문자에 대한 자리 표시 자이 곳의 printf 문에 백업
그리고 정수에 대한 자리 표시 자,
문자는 chr로 표시하고, 정수는 키입니다.
그리고 나서 우리는 결과에 함께 2를 추가 할거야.
그래서 우리는 R을 추가 할거야 + 키가 뭐든지간에,
그리고 우리는 그 결과를 인쇄 할거야.
그러니 asciimath을 보자. 그것은 최신, 그러니까 그냥 asciimath를 실행할 수 있습니다.
우리가 실제로에게 키를 부여하지 않았으므로 아,하지만, 아무것도하지 않습니다.
그래서 그냥 1, 우리 main 함수를 반환 할 때, 단지 우리에게 다시 돌아 왔습니다.
그럼가 키에 전달 보자. 누군가가 나에게 전화 번호를 제공합니다. >> [학생] 4.
4. 좋아요.
따라서 R은 4 우리에게 118의 ASCII 값에 해당 v를, 드릴 겁니다 증가했습니다.
그래서 그 가지 의미 그하게 -
사실, 난 당신을 요청할 수 있습니다 당신은 R + 4 118 인 경우 R의 ASCII 값은 어떻게 생각하세요?
그런 다음 네, R은 114입니다.
그런 다음 ASCII 테이블에보고하면, 확실히 충분히, 그 연구는 114으로 표시됩니다 볼 수 있습니다.
그래서 지금 우리가 문자로 정수를 추가 할 수 있다는 사실을 알고있는이 꽤 간단 것 같습니다.
우리는 우리가 전에 예에서 본 것처럼 문자열을 통해 반복거야.
이 편지이라면 우리는 확인합니다.
이 경우, 우리는 키가 뭐든간에하여 이동합니다.
아주 간단한, 당신이 좋아하는 때를 제외하고,
당신은 z는, 122으로 표시 한 다음에 다른 문자를 제공하게됩니다 것을 볼 수 있습니다.
우리는 실제로 우리의 알파벳 내에 있고 싶어 그래?
그래서 우리는 주위 포장지 종류의 몇 가지 방법을 알아 내야합니다.
당신은 데이빗에 도달하고 특정 번호로 증가 할 때,
당신은 ASCII 문자 섹션 이후에 가고 싶지 않아,
당신은 A. 모든 방법을 다시 포장을 할까
하지만 아직이 사건을 보존하는 점에 유의하시기 바랍니다.
그럼 그 편지를 아는 것은 기호가 될 수 없습니다
단지 기호 같은도 변경되지 않을 수 있습니다.
마지막 pset에서 당신은 분명히 말할 필요도 없어요
하지만 옵션은 계수 기능을 사용하여 욕심 pset을 구현하는 것이 었습니다.
하지만 지금 우리는 실제로 계수를 사용해야 할거야
그러니까 그냥이 조금 넘는 가자.
기본적으로, 당신은 당신에게 Y로 나눈 X의 나머지 부분을 제공 X 모듈로 Y를 가질 때.
다음은 몇 가지 예입니다. 우리는 27 %의 15 수 있습니다.
기본적으로, 당신은 부정적없이 가능한 한 많은 시간으로 27 일부터 15 뺍 때
다음은 12 왼쪽 극복.
그래서 결국 수학 맥락에서 같은 가지이야, 그런데 어떻게 우리는 실제로이 사용할 수 있습니까?
우리 wrapover에 유용거야.
이를 위해, 내가 3 그룹으로 나눌 모두를 묻는 말 까.
때때로 당신이 그룹과 그런 식으로이 작업을 수행합니다.
나는 "네, 3으로 나누어 할 당신의 모든 걸 원해"고 말했다. 말하라
어떻게 그렇게 할 수 있을까요?
[안 들리게 학생 응답] 네, 맞아요. 오프 계산합니다. 좋아요.
실제로 그렇게하자. 당신은 시작 하시겠습니까?
1, 2, 3, 4 [학생들은 오프 카운트]를.
하지만 ... >> [학생] 아, 미안.
정말 좋은 포인트입니다.
당신은 4 말했지만 우리는 불과 3 그룹을 원하기 때문에 우리는 실제로 1 인사를하고 싶군요.
그럼, 어떻게 - 그럼 어떻게 1 말을 할 수 있기 때문에 아니, 그게 정말 좋은 예입니다?
4과 1 사이의 관계는 무엇입니까?
그럼, 4 MOD 3 1입니다.
계속하면 그래서, 2 것입니다.
그래서 우리는 1, 2, 3, 1, 2가 있습니다.
다시, 당신은 실제로 5 사람이야. 어떻게 2 대신 5 말을 알 수 있습니까?
당신은 5 MOD 3 2 말한다.
제가 남아 얼마나 많은 3 그룹 보려면 다음 어떤 순서 I. 오전
그리고 나서 우리는 방 전체를 따라 계속하는 경우
그러면 우리는 우리가 항상 실제로 자신에 모드 기능을 적용하는 것을 볼 것입니다
가지에서 계산합니다.
그 말은 당신이 모듈로를 사용하는 방법에 대한 유형 예를 들어보다 친절
제가 확신하기 때문에 우리 대부분은 아마 그 과정을 겪었
우리가 오프 계산해야 했어요 곳.
모듈로의 질문?
그것은이 개념을 이해하는 매우 중요합니다
그래서 너희들이 이해하고 있는지 확인하려고.
[학생] 더 나머지가없는 경우, 그것은 당신에게 실제 번호를 알 수 있나요?
그 중 첫 3 중 하나를 수행 한 경우, 실제로 뭔지를 준 것
또는 그들에게 주어진 것이다 [안 들리게] >> 그거 좋은 질문이야.
모듈로에 대한 나머지가없는 경우 - 당신은 6 모드 3가 그렇게 말 -
그 사실은 0을 다시 할 수 있습니다.
우리는 조금 나중에 얘기하자.
오, 그래, 예를 들어, 3 사람 - 3 모드 3 실제로 0하지만 그녀는 3 말했다.
그래서 예를 들어, 내부 캐치처럼 가지 야
모드는 다음 0 인 경우 알았지처럼, 나는 3 사람 겠어.
그러나 우리는 0 이상 무엇을 처리 할 수​​ 방법에 대한 종류에 들어가 있습니다.
이제 우리는 어떻게 든 오른쪽 문자 데이빗를 매핑하는 방법이 있습니다.
이제 우리는 이러한 예제 겪었어요
우리는 가지 시저가 작동하는 방법을 참조하십시오.
당신은 2 영문과를 확인하고 다음 그들에게 변화를 참조하십시오.
그러니 시도하고 수식의 관점에서 그런 표현 보자.
이 수식은 실제로, 사양에 지정됩니다
하지만 각 변수의 의미를 통해 모양하자의 종류.
우리 최종 결과는 ciphertext 될 것입니다.
그래서이 말에 의하면 ciphertext의 i 번째 문자
일반 텍스트의 i 번째 문자에 해당하는 것입니다.
우리는 항상 이런 일을 릴하려는 때문 합리적입니다.
그게 우리의 핵심입니다 ciphertext 플러스 K의 i 번째 문자 될거야 -
그 말이 - 그리고 우리는이 모드 26 있습니다.
우리가 데이빗을했을 때 다시 기억
우리는 문자로 얻을 싶지 않아, 그래서 우리는 그것을 MOD 싶어
알파벳 주변 랩과 종류.
데이빗 후에는가는거야, B, 당신은 오른쪽 숫자로 C, D를 때까지.
그래서 우리는 알 데이빗, 데이빗은 A, B, C, D, E, F되어 이후에 있기 때문에 + 6이 우리에게 F 학점있을 것이다.
그럼 우리가 데이빗 + 6​​ 우리에게 F를 주겠다되어 있는지 알 기억 보자.
ASCII 값, z는 122이며, F는 102입니다.
그래서 우리는 우리 시저 공식을 만드는 몇 가지 방법을 찾아야 할 일은 우리에게 102 줄
122에 데려 갔어요.
우리는이 수식, 실제로 24을 제공합니다 ( 'Z'+ 6) % 26 적용한다면
122 + 6 128이기 때문에, 128퍼센트 26은 24 나머지를 제공합니다.
하지만 그건 정말 f를 의미하지 않는다. 그건 확실히 102 아닙니다.
그 또한 알파벳 6 글자 없습니다.
그러니 확실히, 우리는 조정이 조금 몇 가지 방법이 필요합니다.
일반 알파벳의 측면에서, 우리는 z는 26 글자이며, F는 6 것을 알고있다.
하지만 우리는 컴퓨터 과학에있어, 우리는 0에서 색인을 생성 할거야.
대신 z는 26 번 존재의 그럼, 우리의 번호 25 무슨 말을
는 0이기 때문이다.
그래서 지금의이 공식을 적용 보자.
우리는 z는 당신에게 31을 제공하는, 25 + 6으로 표시되어 있습니다.
31 모드 26 나머지로 당신에게 5 할 수 있습니다.
우리가 F의 알파벳의 5 번째 문자입니다 알고 있기 때문에 좋아요.
그러나 아직도, F 않나요? 아직 102이 아닙니다.
따라서 다음이 pset에 대해 도전 관계를 알아 내려고합니다
이러한 ASCII 값과 알파벳 인덱스 사이의 변환 사이에 있습니다.
기본적으로, 당신이 원하는 것, 당신은 ASCII 값으로 시작하려면
하지만 당신은 어떻게 든 알파벳 색인에 그를 번역하려는
다음이 있어야 할 어떤 편지 계산 - 기본적으로, 그 알파벳 색인은 무엇
암호 문자의 - ​​그건 다시 ASCII 값으로 번역.
귀하의 ASCII 표를 채찍질하는 경우 그럼, 102 및 5, 시도 사이의 관계를 찾아 말
또는 122, 25.
우리는 명령 줄 인자로부터 키를 늘어 놓던, 우리는 일반 텍스트가 나왔던 거예요
우리가 cipher 화했습니다.
지금 우리가해야 할 남은 모두는 인쇄입니다.
우리는이에게 다른 방법의 몇 할 수 있습니다.
우리도 진행하는데로 우리가 할 수있는 것은 실제로 인쇄되어 있습니다.
우리가 문자열에 문자를 통해 반복으로
우리가 계산 때 간단하게 바로 다음 인쇄 수 있습니다.
또는, 당신은 또한 배열에 저장하고 문자의 배열을 가질 수
그리고 마지막에 그 배열 전체를 통해 반복하고 인쇄합니다.
그럼 당신은 옵션이 몇 있습니다.
그리고 % c는 문자를 인쇄 자리 표시 자 될 것입니다 기억.
, 그래서 우리는 황제가, 이제 우리는 Vigenere로 이동
이는 황제와 매우 비슷하지만, 단지 약간 더 복잡합니다.
따라서 본질적으로 Vigenere있는 당신은 키워드에 전달 될 것입니다.
대신 숫자 그럼, 문자열을 할거야
그리고 그렇게 귀하의 키워드 역할을 할거야.
그런 다음 평소처럼, 당신은 사용자로부터 문자열을 프롬프트를받을거야
그리고 나서 암호로 바꾸다하고 그들에게 ciphertext를 다시 제공합니다.
내가 말한만큼, 그 대신 특정 번호로 이동을 제외하고, 카이사르와 매우 유사
숫자는 실제로는 문자에서 문자로 모든 시간을 바꿀 것입니다.
이동 해당 실제 번호를 나타 내기 위해, 그것은 키보드 문자로 표시있어.
당신은 예를 들어,의 변화에​​ 입력하면, 해당은 0의 변화에​​ 대응하는 것입니다.
그럼 다시 알파벳 색인에 돌아 왔어.
당신은 우리가 실제로 ASCII 값으로 다루고 있다는 표시하는 경우 유용 할 수 있습니다 무엇
뿐만 아니라 문자뿐만 아니라 알파벳 색인으로,
어쩌면 25를 통해 0의 알파벳 색인을 보여줍니다 자신의 ASCII 표를 찾거나 확인
있도록 어떤 종류의 관계를 Z를 통해, 그리고 ASCII 값을 볼 수 있습니다
그리고 밖으로 스케치 및 일부 패턴을 찾을.
마찬가지로, 당신은 F에 의해 특정 인스턴스에서 이동 된 경우 -
이 중 하나 소문자 나 대문자 F입니다 - 해당 5에 해당하는 것입니다.
우리가 지금까지 잘 있습니까?
Vigenere에 대한 수식은 약간 다릅니다.
기본적으로, 당신은 그냥 시저 같은 것을 볼
를 제외하고 대신 단지 K 우리는 K 인덱스 J 있습니다.
우리가 있기 때문에 기본적으로 키워드의 길이를 i를 사용하지 않는 것을 확인할 수
우리 ciphertext의 길이를 필요는 없습니다.
우리가 나중에 내가 조금이 있는지 예를 볼 때이 비트 명확하게 될 것입니다.
기본적으로, 당신은 ohai의 키워드를 사용하여 프로그램을 실행한다면,
그리고 그 때마다, ohai가 변화 될 것입니다 것을 의미합니다.
그럼 당신은 키워드에 어떤 위치에 따라
그 금액으로 특정 ciphertext 문자를 이동거야.
다시 말하지만, 그냥 카이사르처럼, 우리는 우리가 일의 대소 문자를 유지하도록해야 할
우리 만 암호로 바꾸다 문자가 아닌 문자 나 공백.
그래서, 당신이 사용했을 수있는 기능에 황제로 다시 찾아
당신이 일을 이동하고, 여기에서 프로그램에있는을 적용하는 방법을 결정하는 방법입니다.
그럼이 일을 매핑 까.
우리는 GetString에서 사용자로부터이라도 한 일반 텍스트를
이 말을 ... CS50입니다!
그럼 우리가 ohai의 키워드가 있습니다.
처음 4 문자는 아주 간단합니다.
우리는 T가 O에 의해 이동 될 것입니다 알고
H는 H에 의해 이동 될 것입니다 그리고, 내가이 이동 될 것이다.
자,가 0을 나타냄을 확인
그래서 최종 값은 실제로는 이전과 똑같이 동​​일한 문자입니다.
다음에 s가 전으로 이동합니다.
하지만 여기이 기간이 있습니다.
우리는 그래서 우리가 아무 것도하여 변경되지 않습니다 것을 암호로 바꾸다하지 않으
불과 변경 기간을 인쇄 할 수 있습니다.
[학생] 내가이에 의​​해 이동되는 방법을 알고 이해가 안 돼요 - 어디 짓을 - >> 아, 미안 해요.
여기에 상단에 여기에 해당 명령 줄 인수 ohai 참조
그 키워드거야.
그리고 기본적으로, 당신은 키워드에있는 문자를 통해 자전거하고 있습니다.
[학생] 지금 O는 같은 변화 할 것입니다 -
그럼 O는 알파벳의 특정 번호에 해당합니다.
[학생] 맞아. 하지만 당신이 CS50 부분을 어디에서 왔어?
오. 이제 당신이 같아 곳 GetString에 "나에게 인코딩 할 수있는 문자열을주세요."
[학생] 그들은 당신에게이 이동에 해당 인수를 제공 할거야
그리고 당신은 첫 번째 문자열을 입력해야합니다. >> 그래.
그래서이 프로그램을 실행하면, 그들은 키워드를 포함하는 것
자신의 명령 줄 인수에 그들이 실행할 때.
, 덜 한 번 당신은 그들이 실제로 당신에게 1 제공 한 확인했고 더하지
다음 문자열을 묻는 메시지를 표시하도록거야, 말, "나 문자열을주세요."
이 경우에는 그들이 당신이를 제공 한 곳군요 ... CS50입니다!
그럼 당신은 그렇게 사용하고 ohai을 사용하고 이상 반복거야.
여기에 우리가 기간을 암호화를 통해 건너 뛰어납니다,
하지만 ohai, 다음에 대한 위치의 관점에서 우리는 O를 사용했습니다.
이 경우는, 4 왜냐면 그게보고 조금 더 어렵습니다
그러니 좀 계속 보자. 여기 내 곁에.
그럼 우리는 각각 O와 H에 의해 번역 i와 s를 수 있습니다.
그런 다음 우리는 공간을 갖추고 있으며, 그래서 우리는 공간을 암호로 바꾸다하지 않을 것을 알아요.
그러나 예고 그 대신에 여기이 장소에가는 중,
우리는이 암호화 있어요 - 여기에 - 당신이 볼 수 있다면 나도 몰라.
그래서, 당신은 실제로 미리 이렇게 말할 O가 간다 아니라, H는 간다,
여기 간다, 난 O, H, A, I, O, H,, 난., 간다 당신은 그것을하지 않습니다.
당신은 키워드에 위치를 이동
당신이 실제로 실제 편지를 암호화 할 것 알 때.
그런 말이 있습니까?
좋아요.
그럼 그냥 알림.
당신은 당신은 키워드의 다음 문자로 진행되었는지 확인하려면
귀하의 일반 텍스트에있는 문자는 문자 인 경우.
우리가 O에있어 그렇게 말.
우리는 다음 문자 일반 텍스트의 전 지수는 예를 들어, 숫자가됩니다.
우리가 다른 편지를에 도달 할 때까지 우리는, J, 우리의 키워드에 대한 인덱스를 진행하지 않습니다.
다시 말하지만, 여러분은 키워드의 처음으로 당신이 빙 둘러 있는지 확인하려면
당신이 말에있을 때.
여기에 우리가 전에있어 표시되면, 다음 하나는 O 할 수 있습니다.
그럼 당신은 키워드의 시작 부분에 빙 둘러 할 수 있다는 몇 가지 방법을 찾고 싶어요
당신이 끝을 도달 할 때마다.
그리고 또 어떤 연산자 종류의 주변 배치를 위해 그 경우에 유용합니다?
예를 들어 오프 계산에 좋아요.
[학생] 퍼센트 기호. >> 네, 모듈로있는 백분율 기호.
따라서 모듈로는 귀하 ohai에서 인덱스를 통해 포장을 할 때 여기에 유용합니다.
그리고 잠깐 힌트 : 비트 계산에서 같은 키워드를 통해 포장을 생각해보십시오
3 조, 4 사람이,이 곳 경우
그들은 말했다 그들의 수는 1 살 4 모드 3,이었다.
그럼 그 방법을 노력하고 생각합니다.
당신이 다음 kj를 CI 후 파이가 있지만 어디서나, 공식에서 본 것처럼,
당신이 그를 추적하도록해야 할.
당신은 바로 내가 전화를 할 필요가 없습니다, 당신은 그 J 전화 할 필요가 없습니다
그러나 당신은 당신의 일반 텍스트시 당신이있는 위치를 추적하도록해야 할
뿐만 아니라 위치 등 귀하의 키워드에에 있다는
그 반드시 동일하지 않을 때문에.
키워드를 않습니다 만 - 당신의 일반 텍스트보다는 완전히 다른 길이있을 수 있습니다.
또한 일반 텍스트, 숫자 및 문자가있어,
그래서 완벽하게 함께 일치하지 않을거야. 예.
[학생]이 케이스를 변경하는 기능입니다?
당신은 자본에를 변경할 수 있나요? >> 네, 확실히이 있습니다.
당신은 체크 아웃 할 수 있습니다 - 난의 toupper, 모든 일 단어를 생각합니다.
그러나 당신이 일을 암호화하고 텍스트를 보존하려는 경우,
는 별도의 케이스를 가지고하는 것이 가장 기본적입니다.
이 대문자이라면,이에 의해 이동하려면
수식에 당신이 돌아 보면 우리는 바둑의 종류해야하는 because
교환 번호를 표현 ASCII 방식 사이의
그리고 실제 알파벳 색인, 우리는 확인하려면
사용 할 거라고 패턴의 어떤 종류있을거야.
실제로 패턴에 대한 또 다른 메모.
당신은 확실히 숫자를 처리 할거야.
스타일의 예입니다, 마법 번호를 사용하지보십시오.
당신이 좋아하여 때마다 교대 뭔가를 원하는 그렇게 말 -
당신이 뭔가를 변화 할 거라고 할 때 좋아요, 힌트 있도록 또 다른 스포일러는
일정 금액으로 실제 번호로 그를 나타내는 않으려 고
오히려 시도하고 가지 더 많은 이해가됩니다 ASCII 값을 사용할 수 있는지 확인합니다.
또 다른 참고 사항 : 우리는 공식을 상대하기 때문에,
당신의 TF가 가지 사용되는 것과 패턴 알 수에도 불구하고,
댓글 가지의에 대한 최선의 논리 같은을 설명 할 수
"나는 때문에이 패턴을 사용 ..." 그리고 가지 의견에 간결 패턴을 설명합니다.
[이 연습 12 살] 다른 질문이없는 경우, 그때 조금 간 머무를 거예요.
암호화와 주셔서 감사합니다 : 귀하의 pset 2 행운을 빕니다.
[학생] 감사합니다. >> 감사합니다.
[미디어 오프라인 소개]