스피커 1 : 좋아요. 다시 오신 것을 환영합니다. 이 CS50의 둘째 주이며, 우리는이 지금까지하지만 기능을 사용하고 당연한 대부분을 촬영. 우리는이있는 printf를 사용했습니다 인쇄 부작용 화면에서 확인해보세요. 우리가 얻는 int를 사용했습니다, 플로트를 얻을. 그러나 당신은 실제로 만들어 무엇을하려는 경우 당신의 자신의 기능 일부 등 당신은 이미 시작했습니다 수 문제 설정 하나, 그래도 위해 할 엄격하게 필요하지? 글쎄, 그건 앞서 가서 방문하자 단지의 사용자를 묻는 문제 에 자신의 이름과 인쇄가 뭔가 화면하지만, 일부를 인수 분해하려고 우리가 잘하고, 공통성 지금까지 우리의 코드에서 볼. 그래서 그것에 의해 나는 다음을 의미합니다. 내가 가서 만들려고 새로운 프로그램은 단지 전화 그것은 평소처럼 HELLO.C. 내가 가서 자신을 줄거야 상단에 표준 io.h에는이 (가) 있습니다. 나는 또한 나 자신을주는거야 선제 CS50 라이브러리 있도록 나는 컴파일러 렀하지 않습니다. 그리고 지금 나는 앞서 갈거야 및 중간, 메인, 무효를 선언합니다. 내가 원하는 곳 그리고 여기이은 에 기능을 아웃소싱하기 시작 나는 자신있어하는 몇 가지 다른 기능 쓰려고하지만하지 않습니다 현재 존재. 예를 들어, 내가하고 싶다고 가정 날 수 있도록하는 함수를 작성 안녕하세요, 쉼표를 인쇄하고, 다음 몇 가지 사용자의 이름을 입력합니다. printf의 수행을 계속하는 대신 안녕하세요, % s의, 그것은 만약 좋지 않을까 라는 함수는 있었다 printf를하지만, 인쇄 이름이 아닙니다? 그래서 다른 말로, 내가 할 수있을 싶어요 조금을 수행하는 프로그램을 작성 이런 식으로 뭔가. 첫째, printf는 말할거야 당신의 이름이 있으므로 사용자를 프롬프트 난 그때 나에게 자신의 이름을주고, 에 익숙한 문자열의를 사용하는 것 문자열을 선언합니다. 나에게 문자열 형식의 변수를 제공합니다 점에서 그것의 호출 및 저장 문자열을 호출하는 결과. 하지만 지금은 지난 주에, 나는 것 다소 지루하게 수행 안녕하세요, % S / N. 다른 말로하면, 우리는 본 적이 시간의 예는 무리, 그리고의 한 거기 때문에 예를 사소한 코드 라인은 그래서 정말 아니다 큰 거래는 다시 계속 입력합니다. 그러나 가정이 코드 줄 실제로 부담이되고, 그리고 한 그것은 한 줄의 코드 아니지만 그것은 10의 코드 라인 지금부터 몇 주, 그리고 당신은 피곤 있어요 복사 및 붙여 넣기 또는 동일한 코드를 재 입력. 대신 수행 좋지 않을까요 printf의 안녕, % s와 등, 단지가 있다면 그것은 좋지 않을까 인쇄 이름이라는 함수 인수를 - 즉, 그것은 입력을 받아 - 그리고 세미콜론. 그래서 기능은, 그것은 않을 것 존재하는 경우 좋은 수? 그럼 난에 대해 걱정할 필요가 없습니다 것입니다 printf의 무엇, 무엇을 % s와의 이러한 복잡성 모든 것을 흥미 롭군요. 그들은 유용합니다. 그래서 프린트 이름은 불행히도 아니었다 40 플러스 년 전을 발명했다. 아무도 쓸 생각하지 않습니다. 하지만 그 발생의 아름다움의 단지에서 같은 프로그래밍 언어, 처음 그렇게, 사용자 정의 블록을 정의 할 수 있습니다 C와 대부분의 다른 언어, 당신은 할 수 있습니다 자신의 기능을 정의 할 수 있습니다 당신은 당신의 자신의 함수를 정의합니다. 우리는 주에 의해 얻을 수 있도록하더라도 자동으로 무료로, 우리는 선언 할 수 있습니다 우리의 자신의 기능을 수행합니다. 그래서 여기까지 약간의 공간을 만들려고 해요 위로 위로, 나는 선언하는거야 내 를 보는 것 자체 기능 거의 처음에는 이상한 그러나 우리는 올 것이다 다시이 오래 전에합니다. 나는이를 무효라고하는거야 이 기능을 나타내는 것은하지 뭔가, 부작용이 있지만, 나에게 뭔가를 반환하지 않습니다 또는 INT을 같은 방법으로 자체 않는 문자열을 얻는다. 그리고이 함수에게 줄거야 인쇄 이름의 이름, 나는 갈거야 이 사람이 걸릴 것입니다되도록 지정 문자열, 나는 그 전화를거야 문자열 이름. 나는 그것을 내가 원하는 무엇이든을 호출 할 수도 있지만 I 내 코드 자체 문서화되고 싶어요. 다른 말로하면, 당신의 경우 하나에 있었다 이 파일을 열어 읽고, 당신은 수 그 이름에서 추론의 종류 이 게임을하는데 어떤 역할을 입력. 그리고 이제 아래, 나는 열거야 중괄호와 닫힌 중괄호, 그래서 내가 같은 따랐습니다 통지 라인에서 7 개의 등의 패턴 나는 좋은 주 플러스 다음 봤는데 이제 선 아홉와 말 사이 주요 구성 14. 즉, 이름을 인쇄 또 다른 기능입니다. 이제 컴파일러는 알고하지 않을 것입니다 자동으로이 일을 호출하는 말 그대로 그냥 발명 때문에 하지만 주요 통화 여전히 알 수 자동으로 다음 과정에 라인 13, 난 내 자신의 함수를 호출하고 있습니다. 그리고, 내가 선언했던 기능 최대 주 전에 네 번째 줄, 이 컴파일러를 가르 칠 것입니다 무엇을 인용, 맺다, "프린트 이름" 을 의미하고 무엇을해야하는지. 그래서 나는 그것을 새 사용자 지정을주는 일종의 해요 스크래치, 말의 맥락에서 차단합니다. 그래서 여기에, 그 매우 일반적인 넣을 수 있습니다 나는 계속 코드 나 반복 패턴 수업 시간에 쓰기 printf를 % s의 안녕, % S / N ", - 여기 넣어 무엇을 할 수 있습니까? S? 그래서 나는이 문맥에 이름을 넣어합니다. 그래서 여기 이분법의 비트를 확인할 수 있습니다. 난 내 자신의 함수를 선언하고 있기 때문에 나는 다소 임의적으로 호출 한 그 이름을 인쇄하고, 나는 하였으므로 괄호 안에 지정한이 함수는 하나의 인수의 형식을 사용합니다 이는 문자열입니다 - 그래서 단어의 또는 구문 또는 뭔가 같은 -과 나는 그것을, 그 인수 이름을 부르 겠어요 에서의 전용 변수를 의미 범위는, 말하자면, 이름입니다. S는 어떤 두 가지 사이에 존재 중괄호 물론? 정말, 그냥 라인 10와 같은을 통해 잘 14 그래서 그냥 월요일에 같이 사용할 수 없습니다 S,하지만 내가 할 수있는 것은 통과 인쇄 이름에 S. 인쇄 이름은 그냥주고 발생 별명, 동의어, 별명, 그 이름을 호출하고, 지금 이 라인에서 사용. 이제 축소, 날이 저장할 수 있습니다. 내가 가서 인사합시다. 좋아 보인다. 오류를 뱉어하지 않았다. . 입력 / 안녕하세요. 내 이름은 무엇입니까? 데이비드. 다윗 안녕하세요. 그래서 모든 것을 흥분하지 하지만 지금 생각합니다. 당신은 지금 같은 성분이 우리는에 스크래치에서했던 것처럼 우리의 자신의 기능을합니다. 그러나 잡았다의 비트가있다. 정말 생각하지 않았다한다고 가정 이 사실을 통해 내가하지 정말 그것에 대해 생각하면 쓴 이 여기에 다운 기능. 완벽하게 합리적인 느낀다. 스크래치에 대한 개념이 없다 스크립트에 위치. 하나는, 여기, 여기에 하나를 넣어 수 하나는 여기까지하고, 시작 수 있습니다 당신이하지 않으면 좀 지저분를 찾으려면 그것을 깔끔하게 배치,하지만하지 않습니다 물리적 스크립트 어디에 문제 화면에 있었다. 불행하게도 C에 - 그리고 이것은 달리 자바와 파이썬 같은 언어 당신은 잘 알고있을 수있는 다른 불행히도 C에서 주문한다 -로 시계는 무엇 때문에 문제가 지금 일어날. 무슨 기본 기능 실행하는 것은 물론, 주요이다. 마인의 인쇄 이름을 호출하는 것입니다 8 번째 줄,하지만 불행히도, 컴파일러는 심지어 인쇄 이름을 알 수 없습니다 그것은 11 행에 도달 할 때까지 존재 이는 불행히도 너무 늦게 될 것이다. 그래서 안녕하세요 만들기의 할 수 있습니다. 그리고 지금 빌어 먹을, 두 개의 오류가 생성됩니다. 그래서 지금 내가 매우에 스크롤하자 처음으로 우리는 항상 수행해야하며 그것이 저 소리 그건 알, 함수의 "암시 적 선언 이름을 인쇄 할 수 있습니다. " 그래서 우리는이 메시지를 전에 본 적이, 함수의 암시 적 선언. 때 우리는 오류의 종류를 볼 수 있나요? 내가 라이브러리를 포함하지 않을 때. 나는 cs50.h를 잊어 만약 내가 얻을 것이다 문자열을 int를 얻기 위해 고함. 그러나이 경우,이 함수를 인쇄 이름은 오른쪽 라이브러리에없는? 그렇게,이 파일에 문자 그대로의 무엇이 정말 문제? 잘 불행히도 C에서, 당신 소요 이렇게 믿을 수 없을만큼 문자 그대로하면 당신 인쇄 이름으로라는 함수를 원하는 존재, 당신은 하나를 구현해야합니다 당신의 가장 상단에 해당 기능 코드가 더 낮은 접근의 있도록 기능을하지만, 솔직히 그이됩니다 매우 빠르게 별거. 개인적으로, 내가 처음 주 바르지 다음은 매우 어떤이 취소되어 있기 때문에 이 프로그램은 언뜻 않습니다. 그리고 플러스, 당신은 이상한 구석으로 얻을 수 있습니다 x는 호출하려는 경우 예 Y하지만 Y는 X를 사용 바로 호출 할 수 있습니다 물리적 사실 하나는 넣을 수 없습니다 다른 이상. 그러나 우리는, C에서 할 수 밝혀 매우 간단하게이 문제를 해결. 나는 약간의 공간을 두는거야 여기에, 난 그냥 갈거야 우선적으로,이기는하지만 다소 중복,을 가르 칠 것 함수가 존재한다는 것을 컴파일러 인쇄 이름이라고, 그것은 문자열을 내가 전화하려고 해요 그것은 세미콜론 이름을 지정합니다. 이제 네 번째 줄이 그래서하는 우리 전에 보지 못했지만, 선언하다 함수 프린트 이름의,하지만 단지의 이 함수는 것이라는 약속 결국 최종적으로 정의 할 구현. 이 지금은 혼자 떠날 수 있기 때문에 지금이 정의이다, 마지막 마일의 구현, 정렬 이것의 구현 특정 함수. 그래서 솔직히 바보, 그것은 성가신의 그러나 이것은 C는 방법이며, 그것은의 아주 말 그대로 걸리기 때문에 그리고 컴퓨터가 솔직히 정상적으로, 단지 당신이 그것을 할 말해 주는가 정확히 할, 그래서 순서가 중요합니다. 그래서 유념하고 다시,에 시작 패턴의 재발을 확인할 수 있습니다. 당신이하지 않은 경우 확률은, 당신은 것입니다 이미 메시지가 발생하기 시작 다음과 같은 것이 먼저 눈에 보인다 완전히 이상한,하지만 당신은 시작하는 경우 같이 이러한 핵심 단어를 찾으려면 의 "암시 적 선언"언급 이 경우 기능 - 솔직히, 당신 때로는 작은 녹색을 을 알려줍니다 당근 기호 문제는 아마 - 당신은을 통해 귀하의 방식으로 작동을 시작할 수 있습니다 아직 보이지 않는 오류 메시지를 표시합니다. 작성에 대한 질문의 이런 식으로 자신의 기능? 의 뭔가를하자 좀 더 설득력. 이 작업을 수행 다만보다는 인쇄 부작용이 날 가자 앞서 새 파일을 저장하고, 우리는거야 그것이 비록이 positive.c를 호출 조금 다른 것 마지막으로 대. 이 시간, 나는 다시 구현하려는 마지막 시간의 positive.C 예를 들어, 어떤 사용자가 제공하는 힘이다 나 양의 정수입니다. 하지만 INT 마지막 시간을 사용했다. 이 있다면 그것은 좋은 없었을 것이다 기능은 긍정적 INT를 얻을라고 난 그냥이 아웃소싱 수 에 기능의 조각? 여기서 차이점은거야 그래서 긍정적 INT을 구현하지만, 달리 부작용이 있었다 프린트 이름 - 그것 같은 날에 뭔가를 반환하지 않았습니다 숫자 또는 문자열 - 긍정적 INT는 물론, 예정 얻을 , 희망, 긍정적 INT를 반환합니다. 그럼 이렇게하자. cs50.h을 포함, 표준 io.h. 포함 주요 무효 int로. 그리고 지금 여기, 내가 먼저 갈거야 그리고하자 INT 말, n은 그 호출과 동일 긍정적 INT를 얻을. 그냥 같이 INT가 이미 존재받을 직원이 쓴 있기 때문에, 나는 갈거야 얻는 순간 가정 긍정적 인 int로 존재하며, 지금은 갈거야 가서 printf를 말하는 것은, % I / N ", n에 감사합니다. 나는이 프로그램을 컴파일 이제 경우, 어떤 내 단말기에서 일어날 것입니다 화면 하단의 창? 나는 아마를 얻을거야 이전과 같은 오류가 발생합니다. 그럼이 시도 할 수 있습니다. 긍정적합니다. 그리고 또, 암시 적 선언 함수 긍정적 INT를 얻을. 그래서 우리는이를 해결할 수 몇 가지 방법. 난 그냥 간단하고 유지하는거야 여기 내 선언을 넣어 얻을 긍정적 INT. 나는 소위 서명을해야합니다. 서명은 말한다 의 미학 프로그램의 첫 번째 행입니다. 그래서 긍정적 가야 반환 INT? 그래서 INT. 내가 이상적으로 말은, 그것은 반환 긍정적 INT 같은,하지만 존재하지 않습니다. 우리는 본 적이 없다 우리의 데이터 중 형식은, 그래서 우리는 처리해야 우리는 거의 가지고 사실 데이터 형식과 함께 작동합니다. 그러나 우리는 INT와 그냥 반환 할 수 있습니다 그것은 긍정적있을 것이라는 점을 신뢰한다. 그것은 호출 할 것 긍정적 INT를 얻을. 그리고 지금 어떻게 인수에 대해? 어떤 입력을합니까? 어떤 입력이 필요합니까? 그래서 알 필요가 없다 사전 아무것도합니다. 문자열을 Int는하지 않습니다하지 않습니다 얻을. printf를 않습니다 - 그것은 몇 가지가 있어야합니다 입력은에 전달 - 인쇄 이름 일부 입력을 필요로하지만, 얻을 긍정적 인 int로하지 않습니다. 그래서 명시 적으로 갈거야 컴파일러 무효를 말한다. 공허의 다른 아무것도없는 것입니다. 그래서 무효 의미 아무것도 내부에 갈되지 않습니다 그 괄호, 세미콜론. 그리고 지금 내 파일의 맨 아래에 - 그리고 항문의 다시, 그냥되고있어 종류 여기에 상단에 주를두고, 그 좋습니다 이런 식으로하기 때문에, 당신이나 다른 사람이 언제 파일,을 엽니 다 기능은 바로 거기에있다. 당신은 원점에서의 다이빙을 할 수 있습니다. 그래서 지금이 중복거야 긍정적 INT 무효를 얻을,하지만 난 아니에요 지금 세미콜론을 칠 것. 나는 중괄호를 열거야 지금은 빌릴 필요 월요일부터 몇 가지 아이디어. 당신이 기억 때문에, 우리는 뭔가를했다 다음을 때처럼 뭔가 사실이었다. 그리고 나는 무엇을 했는가? I주고 뭔가를했다 나 양의 정수, 프롬프트 조금. 내가 원하는 단어를 사용할 수 있습니다. 그리고 내가 무엇을 사용? INT N은 INT 얻을 같음 그것은 인수 없습니다. 그 차이를 알 수 있습니다. 당신이 사용할 때, 함수를 호출 할 때 기능, 당신은 무효 두지 않는다. 를 선언 할 때 해당 작업을 수행 기능, 컴파일러를 가르치는 무엇을 그것을 기대한다. 그래서 당신은 넣어 필요가 없습니다 거기에 자신을 무효화 될 수 있습니다. 그리고 지금 내 상태가 무엇 이었습니까? 물론 n은 긍정적 같지 않음 하지만 그건 그냥 의사 코드이다. 어떻게 좀 더 명확하게이 표현합니까? 따라서 0보다 작거나 같음. 그래서 다시, 당신이 할 수있는 알 보다 작거나 같음. 그것은 두 개의 별도 비록 기호, 당신은에 그것을 할 수 있습니다 같은 키보드. 하지만 버그는 여전히있다 나도 지난 시간을 망쳐. 나는 선언해야한다 - 정확히. 나는 밖에 없음을 선언해야 루프의. 그래서 여기에 n을 넣어해야하고, 난 몰라 여기에서 다시 선언 할 않도록 나는 새로운 환경 변수를 가져옵니다. 난 그냥 여기에 값을 할당합니다. 그리고 지금은 확실히 여기에 끝났어요. 내가 먼저 자신의하자 그리고 내가 다 했어 척. 긍정하고, 지금 새로운 오류가있다. 컨트롤의 끝에 도달 void가 아닌 함수입니다. 새 오류 메시지가 그래서, 그러나 만약 당신 종류 각각의 단어를 나누는데, 그것의 아마 뭐가 문제인지에서 힌트. 제어 할 수 있습니다. 통제는 순서에 의미 프로그램에서 작업. 컴퓨터 제어에 있고 뭔가 잘못 됐어요. 그래서의 끝에 도달 void가 아닌 함수입니다. 그것은 어떤 기능을 명백하게 을 참조? 어떤 함수는 void가 아닌입니까? 그래서 긍정적 INT를 얻고, 약간의 그 잘 혼란, 그것은 무효의 일종이다. 그것에 대한 무효의 사양을 가지고 인수는, 그러나 그것의 출력은가는 n을 입력으로합니다. 그래서 왼쪽에있는 단어는 반환 형식 소위. 여기에 내부에있는 단어는 0 개 이상의 인수 기능이 걸립니다. 그래서 내가 어떻게해야합니까? 내 코드에서이 점, 선 21시 깜박이는 프롬프트가 지금이다 긍정적 INT 내부를 N이라는 변수. 어떻게 주에게 돌려 줄 수 있습니까? 그대로. N 세미콜론을 반환합니다. 그래서 그냥 같은 콜턴의 조각을 반환 놓아 나에게 대답 종이 작은 검은 종이의 조각 에서 해당 작업을 수행하는 테이블에 상자, 코드는 그대로 그냥 돌려 쓰기 콜턴 것처럼 N, 그것은의 내게 뭔가 물리적 다시 나눠. 이 경우, 어떤 일이 것은 얻을 수 있습니다 긍정적 인 int로 다시 건네 것입니다 무엇 아마도 양성 누구의 정수? 이 값은 어디를 종료합니까? 즉, N,이 변수에 끝내고, 그리고 우리는 선 구를 진행합니다. 그래서 다른 말로하면, 순서대로 작업이 프로그램 시작 , 실행 및 컴파일러 실현 오, 당신은 라이브러리를 원하는? 나를 잡아 그 안에 무엇의 가자. 오, 당신은 표준 IO 라이브러리를 원하는? 나를 잡아 그 안에 무엇의 가자. 컴파일러는 자신에게 무엇이라고 말씀 그것은 네 번째 줄을 칠 때? 오, 당신을 구현하는 약속 기능은 긍정적 얻을라고하지만, 우리는 나중에 다시 전화 할게 그 라인을 따라 뭔가. 주요 int 무효 여기의 의미 내 프로그램의 용기. 라인 일곱은 중괄호입니다. 8 번째 줄주고, 왼쪽에서 말하는 정수 나 32 비트, 그것은 n을 호출합니다. 오른쪽에, 그것의 긍정적 INT를 얻을 말. 지금하자 일시 정지 그 이야기 때문에 이제 내가 커서를 아래로 이동 보관하지 않습니다. 내 커서가 지금 여기에 내려갑니다 때문에 지금은 긍정적 INT가 실행 얻는다. INT N이 선언됩니다. 다음을 수행하십시오. printf를 저에게 긍정적 인 정수를 제공합니다. , 사용자의 INT를 얻을 수 없음에 저장 어쩌면 또 다시이 작업을 수행합니다. 이 루프는이 코드 수 있음을 의미 다시처럼 실행하고 아래 다시,하지만 사용자 때 마지막으로 협력 저에게 긍정적를 제공 중간, 어느 시점에서, 라인 (21)을 누르 번호를 다시 전달하고, 어느됩니다 지금 선택해야합니까? 아홉. 제어 말하자면 반환 아홉 줄 수 있습니다. 책임 현재의 줄이있다. 그래서 모든 일이 일어나고 있었는지의 이 후드 아래 시간이 있지만, 우리는 printf는 같은 기능을 사용했을 때 또는 문자열을 얻을 것을 다른 사람 당신을 위해 쓴 제어가 전달되고 있었다 OFF로 다른 사람의 코드 라인 라인별로 라인으로. 그것은 단지 우리가 그것을보고 우리가 수없는 것 정말이 그것을 묘사 할 수 없습니다 그것은 다른에서의 프로그램 때문에 하드 드라이브의 파일 우리에게 미지. 그럼 실제로 컴파일하자 지금이를 실행합니다. 긍정적합니다. 진보의 즉, 컴파일합니다. . / 긍정적. 저에게 긍정적 인 정수를 제공합니다. 의이 어려울 수 있습니다. 1 음. 제로. 의 그것을 50 드리겠습니다. 50 감사합니다, 그래서 통제 지금 돌아왔다. 질문 한 다음, 그것에 대한? 그래? [들림]. 다시 말해. 오, 좋은 질문입니다. 그래서 당신은 여기에 병렬 알 수있는 나는에 모서리를 절단의 종류 해요. 12 행에서, 내가 말하는 긍정적 INT를 얻을 수 int를 반환하지만 같은 별 논리, 지금 추론하는 의미에서 해당 선 여섯, 내가 말하는거야하는 주요 반환 INT,하지만 우리가 결코이 없습니다 우리의 프로그램 중 하나에이 되었나요? 우리의 언급이 없었습니다 이 키 워드 돌아갑니다. 그래서 적어도 C에서 그렇게 밝혀 우리가 사용하고있는 그것의 버전 1999 년에 만든, 기술적으로,이는 자동으로 발생. 언제든지 당신은 프로그램을 구현 메인라는 함수를 구현 이 함수는 제로를 반환합니다 기본적 그렇지 않으면 말을하지 않은 경우, 제로 단지 규칙입니다. 세계는 따라서 0을 반환 모두가 잘 나타냅니다, 효과적으로 우리를 떠나 억 개의 갈 수있는 가능한 것들 문제가있다 그래서 우리가 하나를 반환 할 경우 해당 이 의미 코드를 의미 할 수 일이 잘못 됐어요. 우리는 즉, 두 가지를 반환 할 수 이 다른 것은 잘못되었다. 우리는 4 억 반환 할 수있는 이 다른 일이 잘못된 것을 의미합니다. 그리고 당신은 이제 자신에 대해 생각하면 PC 또는 Mac, 당신은 기억 수도 때때로 당신은 이상한 오류 메시지가 표시 당신이있어하는 소프트웨어를 사용하고 때로는 인간이 쉬운 설명하지만, 거기에 종종 코드 또는 번호 화면에? 이 마음에 오지 않는 경우, 단지 그것을 위해 눈을 밖으로 유지. 그것은 일반적으로 무엇을이 코드를 참조한다. 그들은 마이크로 소프트 워드에 포함하고 다른 프로그램은 그래서 당신은을 제기하는 경우 회사와 버그 리포트, 당신은 할 수 있습니다 그들에게, 오, 오류 번호 45를 얻었다. 그리고 회사의 일부 프로그래머를 다시 에 그를 찾아 볼 수 있습니다 자신의 내가했기 때문에 코드와 말은, 오, 그건 이 버그와 그 이유는 사용자가 이 메시지를 얻었다. 하지만 솔직히, 그것은 조금의 혼란과에 약간 지루한 적어도 우리에, 그 결론 처음 몇 프로그램, 우리가했습니다 그래서 를 생략하고. 귀하의 그러나 모든 시간마다 하나의 기능은 기본은 비밀리에이 있었다 라인은 자동으로 당신을 위해 추가 에 컴파일러 단지 컨벤션 당신에게 시간을 절약 할 수 있습니다. [들림]. 당신은 주에 포함 할 필요가 없습니다. 괜찮아요. 당신은 당신이 인 경우에 그것을 포함 할 필요 이 같은 기능을 구현. 그렇지 않으면 함수 플랫 밖으로 작동하지 않을 것입니다. 그러나 메인에, 그것은 필요는 없습니다. 일주일에 두, 우리는 점점 시작합니다 그 습관에 일단 우리가 시작하려는 오류를 의미. 질문 정말 좋은. 물론, 너무 빨리 구두 휴식하는 이번 주 금요일, 우리는 점심을 가지고하지 않습니다 와 본질적으로, 그러나 우리는 저녁을 먹고있을거야 학생 및 교직원의 일부. 당신이 우리와 함께하고 싶다면 느낌 cs50.net/rsvp에 가서 무료. 이번 주 금요일 PM 6:00. 공간은 언제나 한정되어 있지만, 우리는거야 거의에서 이러한 일을 계속 매주 공간이있는 경우 이번 주 실행합니다. 그래서 우리가 떠났던 것을 클리프 행어 월요일 문자열이 실제로 할 수 있었다 로 색인 할 수있는 그냥 의미 , 첫 번째 문자에서 얻을 수 있습니다 두 번째 문자, 세 번째 문자 등, 당신이 할 수 있기 때문에 효과적으로처럼 문자열의 생각 안녕하십니까,이 경우 5가 상자 안에 편지. 그리고 당신은 그 각각에서 얻을 수 있습니다 어떤 구문은 한 상자와 함께 우리 월요일에 소개? 이러한 대괄호 키보드. 단지 위치를 제로로 갈 것을 의미합니다. 우리는 제로 카운트를 시작하므로 브라켓 영 H, 선반 하나를 의미 전자 의미, 등등. 우리가 봤는데 그래서 모든 시간 "안녕하세요"에서 문자열을 사용하여 입력 와 "세계"와 다른 것들에 화면이, 그것은 저장되어있어 이런 상자합니다. 그리고 생각을. 각 상자는 실제로 무엇을 상징 하는가 컴퓨터 내부? [들림]. 네? 자. 경우에 확실히 문자는 이렇게 문자열, 그리고 문자는 단지 8 비트 또는 한 바이트. 그래서 당신은 아마 적어도 막연하다 사실을 잘 알고 당신의 컴퓨터 메모리가 있습니다. 그것은 두 가지 종류의 메모리가 최소가 있습니다. 하나는 저장 하드 디스크입니다 영구적 물건, 그의 당신은 영화를 할 수 있습니다 일반적으로 큰 수 있도록 음악과 등등. 그럼 당신은 메모리의 또 다른 유형이 RAM, R-A-M, 랜덤 액세스라는 메모리는,이 메모리의 유형입니다 컴퓨터가있을 때 사용되는 당신이 힘을 잃거나 경우에 실행하는 배터리 금형, 저장된 아무것도 당신이 힘을 잃게 경우 RAM에 사라 그게 아니라 아예 때문에 지속. 당신은 일반적으로 이러한 일이 그것의 공연, 어쩌면 두 공연. 그리고 RAM의 상승은 많은 점이다 하드 디스크보다 훨씬, 훨씬 더 빨리 또는 고체,이 일 드라이브 하지만 일반적으로 더 비싼 때문에 당신은 그것의 더 적은이있다. 오늘의 대화는 정말 의미하므로 RAM 메모리의 유형이 전원이있는 동안 만 존재 컴퓨터에 공급되고있다. 그래서 당신은 H-E-L-L-O를 입력 할 때 Enter를 키보드, H는 한 것입니다 RAM의 바이트는, E가있는 것입니다 RAM의 또 다른 바이트는, 그대로 단어의 나머지. 그래서 우리가 할 수 있었는지 기억 마지막으로 할 것은이 있었다. 내가 가서 파일을 열어 보자 우리는 string.c라고하며, 기억하는 조금을 보인다고 이런 식으로 뭔가. 내가 실제로 롤백하고 변경할 수 그것은 그것의 모습을 정확히 무엇을 의의 문자열 길이. 그래서 여기에 프로그램을 봐. 우리는 CS50 라이브러리 때문에 포함 우리는 문자열을 사용할 수 있습니다. 우리는 표준 io.h에는 포함 그래서 우리는 printf를 사용할 수 있습니다. 왜 우리는 string.h에 포함습니까? 이 월요일에 새로운 있었다. 그래서 우리는 문자열 길이를 원했다. STR LENG. 사람들은 몇 년 전 결정 의 단지 간결 할 수 있습니다. 대신 "문자열 길이"호출 하자의는 "STR LENG"전화하자 밖으로, 그래서 그의 그 세계 그림 우리는 string.h에에에 대한 액세스를 얻을 것을. 이 익숙한. 이 익숙한. 이 익숙한. 이 작은 새입니다. 라인 22 - 우리는 돌아올거야 이에,하지만 지금은 알에 대한 - 당신은 단지 않아도이 알 것입니다 문서 나있는 경우를 읽을 수 당신은 이미 C를 알고 - 문자열이 가끔 조일 수 얻을. 사용자가 실제로 적대적 이상인 경우 비협조적 그 또는 그녀는 단지 키보드에서 아무 것도 입력하지 않거나 키보드에서 너무 많은 종류가 그것은 컴퓨터의 메모리를 압도 이론적으로, 문자열을 반환 할 수 얻을 이외의 문자의 문자열입니다. 그것은라는 특별한 값을 반환 할 수 있습니다 모두 대문자, N-U-L-L,이은에 NULL 다만 소위 센티넬 값입니다. 그것은 의미 특수 값의 뭔가 나쁜 일이 경우에 일어났다. 그것은 문자열의 부재이다. 그래서, 단순히 그렇게 알아보고 있어요 null로 긴 이야기를 짧게, STR LENG 및 C와 함께 다른 기능, 경우 그들은 문자열을 기대하지만, 당신이 그들을 통과 문자열의 부재, 당신이 통과하면 그들, 컴퓨터 또는 프로그램을 NULL 단지 크게 충돌합니다. 이 중단됩니다. 그것은 몇 가지 오류 메시지를 발생합니다. 나쁜 일들이 일어날 것이다. 이 아직 그렇게해도 잘 정의되지 - 이 주에 더 많은 감각을 만들거나합니다 두 - 라인 (22)에, 이것은 단지입니다 자기 방어 오류 검사의 예 단지의 경우 한 번에 중 만 뭔가에 잘못 간다 적어도 내 프로그램이 충돌하지 않습니다. 의하지 않는 경우, 그래서 뭔가 나쁜 같다 나는 반복이 있고,이이었다 우리는 다른었던 구문의 새 작품. 나는에서 반복 루프를 가지고 제로의 길이까지합니다. 그리고 여기, 내가 초 인쇄했다 브래킷 나는, 그러나 왜 모두 % C를 사용 했 대신에 % s의 급격한도 의는 문자열이지만? 확실히, 캐릭터의? S는 문자열이지만의 브래킷 뭔가 난 제로의 부류 나 하나 또는 두 개의, 그 개인의 문자열의 문자 등을위한 즉, printf를 통보해야 함 그것은 참으로 기대하는 캐릭터입니다. 그리고 기억, 어떻게 이런 짓을 이 프로그램은 실제로? 열에서 그것을 밖으로 인쇄. 네, 맞습니다. 그냥 난에 입력 한 단어를 인쇄 열 한 줄에 하나의 문자입니다. 그럼이 다시 보자. 그래서 문자열을 확인합니다. OK 컴파일. . / 문자열입니다. 나 H-E-L-L-O를 입력하자, 입력하고 사실 내가 한 줄에 하나씩 그것을 얻을. 그래서 내가 여기에 최적화 할 수 있습니다. 당신은 특히, 그것에 대해 생각하면 당신은 전에 거기에 프로그래밍 한 24 행에 틀림 효율성. 즉, 그것은 반드시 아니에요 최고의 디자인. 간단, 적어도 한 번 STR LENG은 기억하지만, 그것은이다 잠재적으로 바보 같은 일을하고. 그 무엇을 할 수 있습니까? [들림]. 정확히. 그것은의 길이를 확인하는 것 매번에도 H-E-L-L-O는 항상 것입니다 5 자이어야한다. 이 루프를 통해 때마다, 다섯 변경되지 않습니다. 난 내가를 증가,하지만 수 있습니다 각의의의 길이 이 루프의 반복? 그것은 다섯, 그것은 다섯, 그것은 다섯, 그리고 그러나 나는 그럼에도 불구하고이 해달라고 다시하고 다시하고 다시 질문입니다. 지금 솔직히 컴퓨터가 너무 망할 빠르고, 아무도 통지 않을거야 이 경우 차이가 있지만 이러한 종류의 가난한 디자인 결정의 수 컴파일러 자체면까지 추가 시작 당신이 문제를 해결하려고하지 않는 그것은 일반적으로시, 않을 것 장비의 가장. 그래서이 작업을 수행 할거야. 나는 뒤에 쉼표를 추가 할거야 내 첫 번째 변수, 난. 나는 나 자신에게 다른 줄거야 변수 단지로, 그것을 호출 N 다음 숫자에 대한 규칙, 그리고 난 문자열의 값을 n을 할당하는 것 의 길이. 그리고 나서 변경거야 내 조건은 무엇이어야 하는가? 내 상태를 변경하는거야 내가 n보다 적은 반면에. 그래서 지금, 내가 얼마나 많은 시간을 오전 의 길이를 확인? 한 번, 그러나에 나는 확인하기 위해 OK입니다 N 또 다시 그 때문에 이제 값이 실제로 변경되지 않습니다. 지금은 지금은, 그냥 알고 언제든지 당신 함수를 호출의 비트가있다 당신을 낙담하는 오버 헤드가 충분하지 정말에서 어느 함수를 사용하지만, 한 줄의 코드가있다 확실 할 때 그 좋아 - 그리고 라인은 얻을 것이다 이윽고 더 재미 - 위치 경우 생각하는 기회가있다 I 이 코드를 입력 얼마나 많은 그것은 시간을 실행합니다? 당신은 시간에보기 시작합니다 프로그램의 성능 수 참으로 변경할 수 있습니다. 사실, 문제의 하나는 우리가했습니다 세트 년에 완료 과거 포함 당신의 기억 수 있으므로 구현 주 제로 맞춤법 검사기하지만, 지원하도록 설계 맞춤법 검사기 150,000의 사전 플러스 우리는 너희들을주는 단어입니다. 당신은 코드를 작성해야하는 부하 RAM에 그 단어 때문에에 우리 같은 상자가 화면에 순간을 보았다 당신 같은 전 후 빠르게 수, 당신은 대답 할 수 있어야합니다 양식의 문제는이 단어 맞춤법이 틀린? 이 단어는 철자가 잘못? 이 단어는 철자가 잘못? 그리고 우리가 한 내용처럼 뭔가 년에 완료 과거는로 설정되어 있습니다 옵트 인 옵션 기초에 불구하고 종류의 경쟁, 약자 적은 RAM과 덜 사용하는 학생 시간, 적은 CPU 사이클이 끝날 약간의 정상까지 버블 링 리더 보드 또는 우리가 넣어 순위 우리는했듯이 코스의 홈페이지 지난 몇 년 동안에서 수행. 그래서 다시 완전히 선택하지만,이 디자인 기회를 말한다 일단 앞서 우리가 시작하는 이들 중 일부 꼭대기 구축 기본 빌딩 블록. 그래서 나는이 그림으로 돌아 가자 다만 순간 조금 공개 뭔가 더. 이 실제로 문자열, 우리는 촬영했습니다 몇 가지 라이브러리의 장점 이 표준 io.h에는 - printf를. printf를, 다른 것들 사이. INT를 얻고 문자열을 얻을 수있다 cs50.h, 등, string.h에, 그 STR LENG했다. 또 아직 거기 밖으로하지만집니다. 솔직히 많이하고 헤더 많이있다 함수를 선언 파일 라이브러리,하지만 ctype.h입니다 실제로 어느 정도가 될 것 내가 갈거야 때문에 유리 가서 하나를 구현하는 여기에 다른 프로그램입니다. 내가 가서 뭔가를 열게 I라고 사전에 작성 capitalize.c과의가 보자 어떻게 작동하는지 살펴. 나는이 버전에서 사용하고있는 알 그것의 세 익숙한 파일. 18 번째 줄에서 난 것을 알 수 한 줄의 텍스트를 점점. 21 행에서 예고, 내가 주장하고있어 그 다음 코드는가는 사용자가 입력 한 어떤,의를 대문자로 , 그리고 어떻게 그 일을 무엇입니까? 글쎄, 내가 데려 갈거야 - 수업 마지막 시간에 배운 - 난 내가하고 N을 선언하고 반복 해요 문자열의 문자에. 그리고이 블록은 무엇인가 27을 통해 24 행의 코드 쉽게 설명하자면거야? 다시 문자를 소문자. 정확히. 경우의 브라켓 I - 그렇다면 i 번째 의의 성격, 어느 특정 문자열의 문자,보다 큰 또는 동등한 소문자 및 방법 - 그 이중 앰퍼샌드 기억 의미와 - 같은 문자의 부류 내가있다 Z를 소문자보다 작거나 같음 그것은 또는 B 또는 C 또는의 의미 점, 점, 점, 또는 의미 Z, 는 소문자입니다. 그 경우에는 어떻게할까요? 글쎄, 어쩐지이 작업을 수행 할 수 있습니다 암호화 방식 있지만, 의 떨어져이 애타게 할 수 있습니다. 난 printf를 호출 할거야, % c를 출력 나는이를 다시 인쇄 할 때문에 화면에 문자. 그때의 브래킷 I,를 취할거야 i 번째가 s에 문자 및 왜 나는 여기 약간의 트릭을 수행하고 마이너스 자본 소문자? 그에게 무엇을 것입니다 저를, 일반적으로 말하자면? [들림]. 정확히. 정말 기억하지 않는다 - 그것은 자본 A. 65 정말 안했다 이 소문자 기억, 하지만 아무리. 컴퓨터는 알고있다. 그렇게 말함으로써, 마이너스 소문자 자본, 그것이 될 운명이다 서로 하나의 문자를 뺀하지만, 후드 아래 문자는 무엇입니까? 그들은 단지 숫자입니다. 그 숫자는 무엇 때문에, 컴퓨터가 기억하자 인간이 아니라 나보다. 그래서이 마이너스 자본 소문자 나에게 차이를 줄거야. 그것은 32 일어나는, 그 것 소문자 B와 자본 B의 경우 등등. 그것은 다행히도 일관성 유지됩니다. 나는 본질적으로 말하고 그래서,을 문자를 소문자로 그 오프 빼기 표준의 차이, 그 효과적으로 변화의 브래킷 i로부터의 대문자 물론, 소문자로, 내 정말 생각하지 않고 약이나 기억, 그 무엇이었다 여덟 대해 우리가 얘기 번호 자원 봉사자들이 무대에 등장? 그게 아니라 지금은 그 사이에, 다른있는 경우, 결정된 소문자 라인 (24)에 의해, 단지 그것을 밖으로 인쇄 할 수 있습니다. 난 단지 터치 할 했다 자 실제로 원래 소문자. 그럼이 볼 수 있습니다. 투자합니다. 컴파일 OK. . / 투자. 그리고 나 H-E-L-L-O를 입력하자 소문자로 입력합니다. 그리고이 변환되는 것을 알 수 대문자로. 나를 다시이 작업을 수행 할 수 있도록 다른 단어입니다. 방법 D-A-V-I-D에 대한 최초의 D와 이름으로 대문자는 일반적으로 무엇입니까? 입력합니다. 여전히 정확 확인할 수 있습니다. 그것은 단지 첫 D 변경을 출력 그 다른 구성을 통해. 그래서, 다음 사항에 유의 여기에 사물의 커플입니다. 당신은 두 가지를 확인하고 싶다면 하나, 한 번에 조건을, 당신은 할 수 있고 그 우리가 예상 함께로. 이 방법으로 문자를 비교할 수 효과적으로 문자로 치료를 번호, 솔직히, 이건 너무 망할 이상한 기억 않을거야 처음부터이 함께 제공하는 방법 아주 대한 그것을 통해 추론없이 약간의 시간. 그것은 좋은하지 않았을 경우 사람 밖으로라는 함수도 작성 그 또는 사실 나를 위해 대답 할 수 절감 거짓이 문자가 소문자인가? 잘 다행히, 누구 썼다 ctype.h이 정확하게했다. 내가 여기 가서 C에 대한 CTYPE을 추가 할 수 유형, 그리고 지금 내가 여기서 내려 가자하고 이 줄을 다음과 같이 다시 작성하십시오. 그것이라고하면 너무 낮은, 내가 주장의 브래킷 나는, 나는 삭제할거야 모두이 두 줄. 이제 다른 사람이, 내가 바라고 쓴 라는 함수가 낮​​은이며, 그들은했고 그들이 선언 회전 아웃 그 ctype.h의 내부입니다. 지금은 27 행을 떠날거야 혼자, 나는 31 행을 떠날거야 혼자,하지만 난 얼마나 많이 알 내 코드를 강화. 이제 청소기입니다. 그것은을 찾아 적은 어렵다 현재 기능은 더욱이기 때문에 너무 멋지고 그냥 이름 그것이 말하는 않습니다. 그래서 지금이 저장거야. 내가 축소거야. 그리고 당신이 할 수 그냥 스크래치로 부울 부울 값 true 또는 거짓이 정확히 무엇인지의 효과적으로 수익을 낮 춥니 다. 저를 컴파일 할 수 있습니다. 나 다시 실행하자. 그리고 지금, 다시 그것을 시도하자 H-E-L-L-O 입력합니다. 그것은 꽤 좋은. 그리고 다시 시도, 내가 확인 뭔가를 망치지 않았다. 그 방법도 대문자로되어 있습니다. 하지만이 충분하지 않기 때문에 내가 않을거야하는 다른 것 난 정말 그것을 통해 작동하지 않는 기억 신중에, 말, 종이는 이 망할 줄. 이 있다면 그것은 좋은 것 같지 않아 어퍼라는 함수? 잘가 밝혀 뿐만 아니라 ctype.h에 있습니다. 내가 가서 입력 할거야 - 내가 그 라인을 다시 가져올 수 있습니다. 대신 여기, 내가 앞서 가자 하고 말할 %의 C를 대체 이 함수를 호출 한 결과 의의 i 번째 문자의 상단. 그리고 지금은 점점 알 조금 균형. 나는 얼마나 많은 추적해야 내가 열고 닫은 괄호. 그래서 지금은 심지어 청소기입니다. 이제이 프로그램을 더 받고있다 그것 때문에 더 나은 논증 설계 훨씬, 훨씬 더 읽기하지만, 그것은 더의이 수정하자 없어요. 투자합니다. . / 투자. H-E-L-L-O. 하자, 다시 실행 D-A-V-I-D. 좋아, 그럼 우리는 아직도있어 모양 꽤 좋은. 하지만 지금은 상단에. 나는 하나가 있다고 제안 세련미 우리가 될 것이라고 만들 수 있습니다 정말 조이 수있는, 정말 좋은 이 코드까지 정말 우리에게 다섯 줄 예를 들어 설계를위한 다섯 밖으로. 제거하는 좋은 것입니다 무엇인가? 음의 방법 망할 긴이 블록을 찾아 코드는 간단한 작업을 수행하는 것입니다. 지금은 제쳐두고, 당신이있을만큼 지난 슈퍼 절에서 볼 수 주말, 당신은 엄격하게 필요하지 않습니다 중괄호 당신이 하나를 가지고 우리가 제안에도 불구하고 코드 라인 훨씬 만든다 있도록 그들을 유지 스크래치의 U 자형에서와 같은, 더 명확한 블록, 분기 안에거야. 상위로한다면 그것은 좋지 않을까 입력을 줄 때, 그것은으로 전환 그렇지 않을 경우, 대문자, 어떤 것 반대의 경우에 훌륭 할 경우 그것은 이미 대문자입니까? 단지를 통해 전달 그리고 혼자 둡니다. 그래서 아마 그 작업을 수행합니다. 나는 시도하고, 다만 희망 수 그것은, 그러나 저를 보자 않습니다 한 가지를 소개합니다. 대신이 내장 된 단말기를 사용 창 아래 여기에 기억이 이 광장 검은 색 아이콘은 당신에게를 제공합니다 나는이 가득 할 수있는 큰 터미널 창 내가 원하는 경우 선별? 그래서 그들은 일종의 이상한거야 밝혀 이름이 있지만라고 이런 일이있다 man 페이지, 매뉴얼 페이지, 짧은 사람, 그리고 나는이 별에 액세스 할 수 있습니다 입력 사람 - 나는 무엇을 입력 할 수 있습니까? 상단에 남자입니다. 가 존재하는 경우 이제 알 에 컴퓨터의 내부 작동 이 경우 단지 제품, 운영 체제 리눅스는거야 저에게의 약간 이상한 세트를주는 출력,하지만 당신은 시간을 통해 찾을 수 있습니다 그 항상 꽤 많은 포맷입니다 같은 그래서 당신은 그것에 익숙해 시작합니다. 상단에 상단에 주목하고, 분명히 같은 문서입니다 낮추기위한. 몇 가지를 절단했다 누구 썼다 모서리와 한 페이지에 모두 넣어. 이러한 것들을 '목적으로 생활을 변환하는 것입니다 대문자 또는 소문자로 문자. 매뉴얼 페이지 시놉시스에서 그 통지 내가 가지고있는 파일이 저를 가르치고있다 이 물건을 사용하는 등입니다. 그것은 나에게이에 대한 서명을주고 기능, 둘,도 우리는 지금 만 생각 하나 걱정한다. 여기에 지금 설명입니다. 상단에 문자를 변환 가능하면 C를 대문자로. 여전히 유익하지만, 나에게하게하지 않는 것이 지금, 반환 값에서 일을보고 그 뒤를 물려있어. 따라서 반환 값은의 변환 문자 또는 C 경우 변환은 불가능했습니다. C는 무엇입니까? 오리지날 캐릭터. 원래의 캐릭터와 우리가 알고있는 에 의해 다시까지가는 ​​것을 시놉시스, 그리고 누구든지이 쓴 함수는 결정하는 입력 에 상단과 더 낮은 단지입니다 임의의 C 호출 할 것. 그들은 대부분의 뭐라 수도 그들이 원하는,하지만 그들은 그것을 유지 C 간단. 그래서 매뉴얼 페이지를 협의했다. 이 문장은 저를 안심하게하는 경우 그것은 소문자 아니지만, 그것은의 단지 C를 내게 돌려 줄 것 내가 제거 할 수 있음을 의미 완벽한, 내 다른 조건. 그래서 제가 gedit를 다시 가게하고, 지금 날 그냥 이렇게하자. 내 printf의 문을 복사하는거야. 나는 앞으로 오른쪽 안쪽에 갈거야 루프 프린트가 밖으로, 그리고 얻을 구조면 지금의이 전체를 제거. 나쁜 생각은없고, 매우였다 훨씬 정확하고와 일치 우리가 설교 한 모든 것을 하지만 단지 필요가 없습니다. 마자 당신이 어떤 라이브러리를 실현으로 기능은 다른 누군가가 존재 쓴, 또는 어쩌면 당신은 다른 곳에서 작성 파일 당신이 정말로 그것을 사용할 수 있습니다 코드를 강화하기 시작합니다. 내가 좋은 스타일 같은 것들을 말할 때, 이 사람이라는 사실 이다 이전에 상단, 또는에 기능 낮은 멋지고 유용하기 때문에 그들은 매우 설명입니다. 당신은 당신의 함수를 호출하고 싶지 않아요 이 x와 y 및 z, 훨씬, 훨씬 적은 의미. 이 시리즈에 대한 질문 개선? 그래서 한 말을하는 데 충분 테이크 아웃도 자신의 문제로입니다 설정 - 어쩌면 문제 세트 하나지만, 확실히 P도 두와 이후를 설정 그들이 올바른있을 때 필요하지 않습니다 그들은 단지 완벽한 의미 아직 나 특히 설계. 그것은에 다른 축의 에 대해 생각하기 시작. 그래서 당신의 문자열 내부에 있었다 당신은이 컴퓨터의 메모리 만하면 H-E-L-L-O와 같은 문자의 전체 무리 RAM의 내부 및 가정 당신은 당신의 프로그램에서 문자열을 호출하는 그런 당신이 여러 번 그런 다음, 한 문자열을 호출 다시 문자열을 호출합니다. 음, 무엇을거야 시간이 지남에 따라 어떻게? 즉, 당신의 선이있는 경우 같은 맥락의 코드 임에도 불구하고 아웃 문자열들 도착 - 이 작업을 수행하자. 문자열 이름 문자열을 얻을 같습니다. 그래서 코드 줄이 의미하는 가정 자신의 이름을 사용자에게 물어. 이 코드 다음 줄은 요구하기위한 것입니다 자신의 학교에 대한 사용자 및 이 다음 줄, 등등. 우리가 질문을 계속한다고 가정 서로에 대한 사용자 서로 다른 문자열. 그들은 메모리에 머물거야 동시에. 하나는 다른 소지품하지 않을 것입니다. 학교는 다른을 덮어 쓰지 않습니다. 하지만 그들은 모두 어디에서 할 메모리에 끝? 음, 우리는 화면에 그리기 시작하면, 우리는이 일을 사용할 수있는 여기에 칠판처럼,이 검은 경우 사각형 내 컴퓨터를 나타냅니다 메모리, I 임의로 시작하는거야 작은 사각형으로 그것을 나누어, 각 대표하는 중 메모리의 바이트. 솔직히, 당신은 RAM의 기가 바이트가있는 경우 요즘, 당신은 억 바이트가 컴퓨터의 메모리 때문에, 이 사각형의 억. 그래서, 말을 충분 스케일 정말 없습니다. 그러나 우리는이 모든 그리기 유지할 수 명확하게 사각형을 확장하고,이하지 총체적으로 나타냅니다 내 컴퓨터의 메모리. 이제 우리는 점, 점, 점 마찬가지로 것이다. 그래서 다른 말로하면 지금 프롬프트 GET 문자열을 사용자 나에게를 제공합니다 문자열, 어떻게됩니까? 만약 "안녕하세요,"그 끝에서 사용자 유형 최대의 H-E-L-L-O. 그러나 가정 의 사용자는 유형 - 실제로, 나는 말았어야 안녕하세요 우리가 요구하고 있기 때문에 자신의 이름을 그들. 그래서이 작업을 수행 할 수 있는지 다시 가자. 그래서 내 이름을 D-A-V-I-D의 I 입력하면, 하지만 기억이의 두 번째 줄 코드를 다시 문자열을 얻을 수 있었다 학교를 얻을 수 있습니다. 그 단어는 어디하는 사용자 다음에 갈의 종류? 글쎄, 아마 들어갈 것 H-A-R-V-A-R-D. 내가했습니다 그래서 비록 두 행으로 그려진,이 단지 귀하의 바이트의 전체 무리 컴퓨터의 RAM. 지금 난 경우 때문에 문제가 지금있다 이 매우 합리적으로 RAM을 사용하여 하지만 순진 방법의 종류, 무엇을 할 당신 분명히 구별하지? 하나의 시작 위치는 어디 하나의 끝, 오른쪽? 그들은 경계가 모호 종류입니다. 그래서 컴퓨터를 밝혀 졌 이 작업을 수행하지 않습니다. 나 실제로 시간을 거슬러 이동하자 몇 문자, 대신 하버드 사용자 이름 직후 가고, 사용자가 실제로 뒤에 도착 장면, 특수 문자 에 의해 삽입 그 또는 그녀를위한 컴퓨터. / 0, 그렇지 않으면 NUL 문자로 알려 귀찮게은 N-U-L이라고하지 N-U-L-L,하지만 당신은 그것을 그대로 / 0를 작성합니다. 그것은 그냥 0 비트의 것은있는 마커 첫 번째 단어 사이의 사용자의 입력 한 두 번째. 하버드 실제로 지금 종료되도록 자이 순서로 그리고 하나 더 / 0. 이러한 필요 때문에 다른 말로로 센티넬 값, 연속 8 제로 비트, 당신은 지금 구별을 시작할 수 있습니다 다른에서 하나의 문자입니다. 그래서 "안녕하세요"이다했던 모든 시간 실제로, / 0로 "안녕하세요"하고 한편,이 수도 잘 상당히 더 많은 RAM 수 컴퓨터의 내부. 내가 이제 한 가지를 수행 할 수 있습니다. 그것은 밝혀 그 다음 사각형의 우리는 그들이 네, 그리기 봤는데 문자열,하지만 더 일반적으로, 이런 일들은 배열입니다. 배열은 메모리의 덩어리입니다 즉, 뒷면에 다시 다시 다시의 그리고 당신은 일반적으로 방법으로 배열을 사용 이 대괄호 표기법. 그래서 우리는이 꽤 볼 겁니다 시간이 지남에,하지만 내가 진행시켜 열고,의이 세 호출 할 수 있습니다. 그리고 우리가 무엇을 할 수 있는지 알 이와 같은 트릭, 작은 여기에 조금 더 구문. 그래서이 프로그램의 라인 17 - 사실, 내가 처음 프로그램을 실행할 수 그래서 우리는이 일을 무엇을 볼 수 있습니다. 나에게 나이를하게 부르 자 이 프로그램을 컴파일합니다. . / 나이. 방에 얼마나 많은 사람들이 있습니까? 그것은 세 가지 호출합니다. 첫 번째 사람 나이? 18, 19, 20. 그리고 지금 약간 안되게, 난 그냥 프로그램이 그 세 사람을 만들었습니다 세 사람. 그래서 기회는 분명히있다 여기에 몇 가지 재미를 연산합니다. 다행히, 수학 정확합니다. 18 간, 19-19 갔다 20 등. 하지만 정말 될 운명이야 설명 여기에 우리는 저장하는 방법입니다 그 세 사람의 나이. 내가 무엇에있는 확대하자 여기에 우리가 간다. 그래서 먼저이 처음 몇 줄해야 꽤 익숙해 수 있습니다. 난 그냥에 대한 사용자에게 메시지를 표시 해요 방에있는 사람들의 수. 그럼 내가 사용 INT를 얻을한데로 동안 다시하고 다시하고 다시이 작업을 수행합니다. 우리는 전에 패턴을 볼 수 있지만 한 27 행은 새로운 사실​​은 꽤 있습니다 유용하고 될 것이다 점점 유용합니다. 어떤 줄 27 가지의 통지 나는 선언 할 나타나는 것입니다 라고 나이를 int로하지만, 기다립니다. 그냥 INT 연령대 아니다. 이러한 대괄호가 있습니다 내부는 n입니다. 이러한 맥락에서 너무 브래킷 N,하지 그러나 여기에서 printf의 문 내부 이 유일한 선 27이 줄은 나 N 정수를주고, 말을 각각의 int 타입이다. 그래서 이것은,의, 말하자면, 물통 이 경우 세 개의 정수로 돌아 가기 다시 백업 할 것을 그래서 효과적으로 세 개의 변수가 있습니다. 대안이 될 분명이 될 것입니다. 내가 원하는 경우 첫 번째 학생의 나이, 나는이 작업을 수행 할 수 있습니다. 내가 원하는 경우 두 번째 학생의 연령 나는이 작업을 수행 할 수 있습니다. 내가 원하는 경우 세 번째 학생의 나이, 나는이 작업을 수행 할 수 있습니다. 그리고 맙소사 우리는 모두의 필요 이 방에있는 나이 - 내 말은,이 사본 많아서입니다, 다시하고 다시하고 다시 붙여 넣습니다. 그리고 플러스 일단이 프로그램을 컴파일 또 다른 학생은 밖으로에 산책하는 경우 그 문 이제 내 번호 변수 올바르지 않습니다. 그래서 배열에 대한 좋은 것은 그대로 당신은 자신을 느끼고 시작하자마자 복사 및 붙여 넣기, 확률은 그의입니다 하지 가장 좋은 방법. 배열은 잠재적으로 동적입니다. 나는 사전에 얼마나 많은 사람들이 알고하지 않습니다 , 방에가는 하지만 난 그들 n을 필요로 알고, 난거야 때가되면 N을 알아낼. 이 코드 줄은 이제 의미, 나에게 줄 다음과 같습니다 메모리 청크 여기서 화면에 상자의 수 N에 전적으로 의존입니다 사용자가 들어 입력 이제이 프로그램의 나머지 부분은 우리가 실제로 매우 유사 그냥 문자로했다. 나는 루프를 볼 수있을 라인 30에서 시작. 내가 배열을 얻을 수 있도록 직후, I y는 n으로에 제로를 동등한에서 반복. 난 그냥이 교훈 printf를이 메시지는 단지 말을 나에게 나이를 부여 사람의 # % 나 때문에 번호 하나, 두 번째, 세 번째. 그리고 내가 왜이 짓을 한거야? 솔직히, 인간은 하나에서 계산하는 것을 선호 컴퓨터 과학자 반면에 최대에, 업에 제로. 컴퓨터 과학자로하지 않을 수 있습니다 이런 종류의 프로그램을 사용하여, 그래서 우리는거야 그냥 계산 시작하려고 보통 사람들처럼 하나의. 그리고 지금은 33 행에서 약간 통지 구문의 여러 조각. 형의 변수의 i 번째 시대 배열은 int를 얻을 수 있습니다. 그리고 지금 마지막으로,이 단지 여기에 산술 다운. 내가 주장하는 별도의 루프로 결정 약간의 시간이 지금 통과하고, 별도의 루프는이 라인 실행합니다. , 사람 나는 지금부터 해가 될 것입니다 세하지만,이 통지는하지 않습니다 나는 변수입니다. 이제이 % INT의 I이다. 첫 번째 자리 표시 자로 통보, I 난에 1을 더한 플러그, 그래서 우리는 같이 계산 정상적인 사람. 그리고 그 시대의 가치를위한, 내가 살, 난 세 브래킷을 난 - 왜 내가 여기에 플러스 뭐하는 거지? 그들은 단지 세. 그것은 프로그램의 나의 어리석은 선택입니다. 그들은 일년 만 세. 나는 어떤 수 있다는 점에서 입력 할 수 있습니다 사실 거기 싶다. 그래서 실제로 모두의 여기에 관련? 음, 내가 실제로 뒤로 스크롤하자 여기에와 그림을 그릴 앞에 무슨 일이 있을지의. 우리는 다음과 일을 할 것이다 무엇 문제 2 세트는에 담구고 암호의 세계. 그래서이 문자열이기 때문에, 여러 문자의 순서, 어떤 이 말을합니까? 이것은 온라인 버전에없는 슬라이드. 그래서, 본에 해당된다는 주장 몇 년의 어리석은 광고 전 사실 기억 수도 그 기원 중 하나입니다. 그래서 암호화의 예입니다 또는 암호화. 당신이 원한다면 그것은 그렇게 밝혀 실제로 정보 나 공유를 보내 안전하게 누군가와 정보 이 같은 메시지처럼, 당신은 할 수 있습니다 편지를 스크램블. 그러나 일반적으로, 단어는 무작위로 뒤섞 없습니다. 그들은 어떤 방법으로 치환되는 또는 변경하고 어떤 식 으로든 있도록 - 죄송합니다. 그 다음 시간에 재미 스포일러입니다. 그럼 당신은 분명히 무엇을 매핑 할 수 있습니다 그 라인 업 B. 고시 O 대문자 현명한. 분명히 R 전자됩니다. 분명히 F-H-E-R은 S-U-R-E가됩니다. 그래서 그것은 매핑 거기 밝혀,과 이 경우 꽤 바보가있다 누군가가 그것을 알아 낸 경우 매핑? 이라고 뭔가 부패 13, 13 회전합니다. 그것은 암호화 멍청한입니다 메커니즘 그것이 그대로 그냥 있기 때문에 , 문자의 각 하나에 13을 추가 의미에서 바보가 당신 다만 경우 당신의 손에 자유 시간의 조금을 가지고 와 연필, 또는 당신은 그냥 생각 당신의 머리를 통해, 당신은 시도 할 수 가능한 모든 추가 - 하나, 둘, 세 점, 방금 점, 점, 25 전체 알파벳을 회전하고 결국, 당신은 알아낼거야 어떤 메시지입니다. 당신이 뭔가를 않았다 그래서 만약 사용자에게 메시지를 전달 초등학교 가장 친한 친구의 초등학교 경우 교사는 단순히를 읽어 메시지와 짐승이 솔루션을 강제로 당신은 얻었을 수도 있습니다 그것에 의해 답변. 지금은 물론, 현실 세계에서, 암호화는 더 복잡합니다. 이것은의 텍스트 조각입니다 사용자 이름과가 컴퓨터 시스템 암호는 거의 우리 모두가 수행하고 이 무엇 비밀번호 수도 있습니다 하드에 저장하는 경우에 좋아 보이는 하지만 암호화 된 형태로 구동한다. 이것은 문자 그대로 회전하지 않습니다 A는 B와 B는이 C.이다 훨씬 더 정교하지만 사용 일반적으로 비밀 키라고도 무슨 암호화. 이 그림은 다음을 말한다 몇 가지 아이콘 이야기. 왼쪽에, 우리는 무엇을 우리는 일반 텍스트를 호출합니다. 암호화, 일반의 세계에서 텍스트는 단지 원래의 메시지입니다 영어 나 불어로 작성 또는 어떠한 언어입니다. 당신이 그것을 암호화 싶은 경우에, 우리는 통과합니다 그것을 그림으로 자물쇠를 통해, 그래서 알고리즘의 어떤 종류, 어떤 기능을 누군가가 쓴 또는 프로그램 문자를 희망하는 안간힘 더 복잡보다 단지 13 추가 각각 있습니다. 당신은에 그 과정에서 무엇을 얻을 가운데가이 cyphertext이라고합니다. 섹시한 단어 친절. 그것은 그냥 암호화의 의미 일반 텍스트 버전입니다. 그리고 당신은 같은 비밀을 가지고있는 경우에만, 13 마이너스 13에 당신이 할 수있다 그런 해독은 메시지를 표시합니다. 그래서 문제의 것들 중 두 가지를 설정 당신은 해커의 경우 할거야 버전, 당신은 코드를 작성해야합니다 파악, 이러한 암호를 해독 그들이 있었고, 그들이 어떻게했다 우리가 비록 암호화, 당신에게 약간을 제공합니다 길을 따라의 안내. 표준 버전에서는 소개 암호의 몇 가지 암호화 메커니즘, 하나는 카이사르 하나라고 Vigenere라는 것을 아직도 가되어 회전 암호 뭔가, B는 무엇인가됩니다 만, 당신은 프로그래밍 할 필요가 실제로 비밀이있을 수 있기 때문에 일반적으로 숫자입니다 참여 키 또는 키워드 만 보낸 사람과 이들의받는 사람 메시지를 이해해야합니다. 자,이 사실은 화신가 현실 세계합니다. 이것은 예를 들어, 작은 고아 애니의 비밀 디코더 링하고, 실제로이를 구현할 수 있습니다 회전 암호 - 뭔가가되고, B가됩니다 뭔가 - 바퀴의 부부와 함께, 외부에 하나 안에 하나의 그런 그 당신은 휠을 돌리거나하는 경우 반지는 당신이 실제로을 줄 수 있습니다 다른 문자와 문자, 비밀 코드를 점점. 그리고 오늘 클리프 행어로 내가 내가 할 거라고 생각하는 것은의 비트입니다 후퇴하는 당신은 TV를 켜면 12 월 24 일, 당신을 볼 수 있습니다 에 대한 동영상 광고 nauseum 행 24 시간이다. 그러나 오늘, 여기 그것을 열 수 있습니다 우리에게 단지 2 분에게 교육학 관련 크리스마스 스토리 랄피라는 작은 동료와 함께. [동영상 재생] 되실 그것은 모든과 잡다한하는 것으로 알려져 랄프 파커는 이에 임명 리틀 고아 애니 비밀의 회원 원과 모든 자격이 명예 및 혜택 이에 발생. 리틀 고아 애니 - 서명했다. 잉크, 피에르 앙드레 연대. 명예와 이익 이미 아홉의 나이에. [라디오 오웬 어서, 그것과 함께 타고하자. 나는에 대한 모든 재즈가 필요하지 않습니다 밀수업자와 해적. 내일 밤에 - 들어 블랙 결론 모험 해적선. 지금, 그것은 애니의 비밀 시간 당신 구성원에 대한 메시지 비밀 원. , 아이를 기억한다. 애니의 비밀 서클의 구성원 만 애니의 비밀 메시지를 해독 할 수 있습니다. 기억, 애니 당신을 따라합니다. B2에 핀을 설정합니다. 여기에 메시지입니다. 12, 11, 2 - - 난 내 첫 번째 비밀 회의에서입니다. -25, 14, 11, 18, 16 - 피에르는 큰 목소리 오늘 밤에 있었다. 그 오늘의 메시지를 말할 수 정말 중요했다. -3 25. 그 애니 자신의 메시지입니다. 기억, 누구에게도 말하지 않습니다. -90 초 후에, 나는 단지 방에 있어요 집에서 어디 아홉의 소년 개인 정보 보호 및 해독에 앉아 있었다. 아하, B. 나는 다음에 갔다. E. 첫 번째 단어는 "수"입니다. S. 지금은 쉽게오고 있었다. U. 25. 즉, R.의 , 랄피 - 가자. 난 가야겠다. - 내가, 오른쪽 아래 마합니다. 맙소사. -T. O를해야합니다. 무엇을해야? 작은 고아는 무엇인가 애니 말을하려는거야? 무엇을해야? - 랄피, 랜디 가야했다. 당신은 나와 주시겠습니까? - 좋아, 엄마. 내가 나갈게. -I 가까이 지금까지지고 있었다. 긴장은 끔찍했다. 무슨 일이에요? 행성의 운명 월 저울에 달아. - 랄피, 랜디 가야 해. - 내가 맞는 밖으로 큰소리로 우는. - 그렇지. 내 손가락이 날아 갔다. 내 마음은 강철 함정이었다. 모든 구멍은 진동. 그것은 거의 분명했다. 그래, 그래, 그래, 그래, 그래. 당신 Ovaltine을 마시해야 -합니다. Ovaltine? 지저분한 광고? 개자식. [END 동영상 재생] 스피커 1 : 이것은 CS50이며, 그 문제 2 세트가됩니다. 다음 주를 참조하십시오. 스피커 2 : 다음에서 CS50이 발생합니다. 스피커 1 : 우리가하지 않은 그래서 하나의 주제 따라서 멀리 바라 보았다 함수 포인터의. 이제 함수 포인터는 단지 공공의 주소 하지만 많은 같은 기능 - 의 아들 -