[음악 재생] 데이비드 마란 : 좋아. 이것은 CS50이며,이 주 (2)의 단부이다. 내가 수 없습니다 정말 미안 해요 이 모든 오늘 당신과 함께, 하지만 당신은 아주 좋은 손에있어. 저를 소개 할 수 있도록 허용 CS50 자신의 롭 보덴. 롭 BOWDEN : 그리고 물론, 다음 우리는 사실의 재미를 확인해야합니다 그는 우리에게 수직을 보냈다고 비디오 및이 표시됩니다. [비디오 재생] [음악 재생] [발자취] -이 비디오는하지 않았다 이 방법으로보고있다. 그것은 막을 수 있었다. 더 수직 동영상을 말합니다. - 수직 동영상을 때 일이 카메라 잘못된 방향으로 누르고 있습니다. 동영상이 종료됩니다 최대 쓰레기처럼 보이는. - [그런트] 중독 점점 더 많은 사람들이 저기있다 매일 수직 비디오를 만들기 위해. 이 균열되거나 아무것도 아니에요, 하지만 여전히 정말 나쁜입니다. 서로 다른 두 가지 종류가 있습니다 VVS을 앓고있는 사람들. 첫 번째 그룹은 취급 동영상은 사진처럼 촬영합니다. 그들은 어떤 해를 의미하지 않는다. 그들은 그냥 이해가 안 돼요 당신이 사진을 설정할 수 있지만, 당신이 정말로 비디오를 켤 수 없습니다. [CRASH] - [원숭이 소리] 년 - 다른 그룹의 사람들입니다 누가 [삐] 포기하지 않습니다. - 수직 비디오 증후군 위험합니다. 동영상 사진은이 항상 수평이었다. 텔레비전은 수평이다. 컴퓨터 화면은 수평이다. 사람들의 눈은 수평이다. 우리는에 만들어지는 것이 아니다 수직 동영상을 감상. - 난 수직 비디오를 사랑 해요. 아무도 없어요 당신에 대한 관심. -if이 문제의 체크, 당신이 너무 왼쪽으로 네 개의 비디오를 보여주는 시작됩니다 한 번에 단지 대역폭을 저장합니다. -Letterboxed 수직 동영상 것 우표의 크기. - 그리고 그것은 도처에 확산됩니다. 동영상 화면이 항상 수평이었다. 수직 비디오가 될 경우 허용, 영화관 키가 크고 마른 체형해야 할 것이다. - 그리고 영화관의 모든 것 철거 및 재건 얻을 수 있습니다. 그리고 시간에 그들은 다시했다, 밀라 쿠니스는 과거와 못생긴 것입니다. -Birds 그들에 충돌하고 죽을 것이다. 되겠지 그럼 모두 뻣뻣한 얻을 찾고에서 목. - 그리고 아무도에 앉아 없습니다 앞줄 다시. - 조지 루카스가 다시 해제합니다 스타 전쟁 마른 버전을 again--. - 난 말할 정말 수 없었어 내가 말하고 싶었던 이야기. 이것은 나를 위해 좋은 기회였다 새로운 기술을 실험. 바보 - 넌. 모바일 장치에 사용되는 -Every 시간 기록 비디오, 유혹이있다. 그냥 '아니오'라고. 조지 루카스에 '아니오'라고. 이전 밀라 쿠니스에 '아니오'라고. 더 수직 동영상을 말합니다. 당신이 누군가가 그 일을 보는 경우에 - 그리고, 말 "당신은 그 권리 더미를 촬영하지있어!" [음악 재생] [END 재생] [박수] [AUDIO OUT] 롭 BOWDEN : --simple 암호의 형태, 이는 기본적으로 암호화입니다 비밀 메시지 및 암호 해독. 그래서 여기에 우리는 매우 단순한 장난감이있다. 상기 아이디어는 외륜이며 내부 링 주위를 회​​전한다. 그리고 당신은 내가 확대 어쩌면 경우, 볼 수 있습니다 에, 그것은 보이지 하라구, 그건 ... 그러나, 같은 숫자 1-- 아니라, 그 이동. 숫자 1은 문자에 매핑 편지에 ​​X, 2 번지도 J. 어려운 믿을 수 없을만큼 앞으로 건너 뛸 수 없습니다. 편지 2 제이에 매핑 번호 3 그래서 D.에 매핑 이 반지는 제공 할 수 있습니다 누군가 메시지가 1, 2, 3. 어떤 이유로 당신을 위해 그들에게 XJD을 말하고 싶다. 하지만 당신은 그 (것)들을 제공 할 수 있습니다 숫자의 몇 가지 메시지, 그들은이 링을 한, 그들은 당신이 말하고자하는지 해독 할 수 있습니다. 그래서 당신이 본 하셨을 수도 있습니다 암호화의 특정 예 전에 크리스마스 시즌 주위 경우 당신은 크리스마스 이야기를 봤다. 당신은 본 적이 경우 그 전에, 다음 단지 문자 그대로에 TBS를 켭니다 크리스마스 이브에 언제, 그들은 단지 다시 다시 보여 있기 때문에 하루 종일 다시 다시 다시합니다. 그리고 관련 동영상이 있습니다. [비디오 재생] 이 모든 잡다한에 알려진 -bE 랄프 파커는 이로써입니다 리틀의 일원으로 임명 고아 애니 비밀 서클 모든 명예를받을 권리가있다 및 혜택은 이에 발생. 리틀 고아 애니 서명했다. 잉크 피에르 앙드레 연대! 명예와 혜택 이미 아홉의 나이에! [라디오에서의 외침] - 이리. 의 그것과에하자. 나는 모든 재즈가 필요하지 않습니다 밀수업자와 해적에 대한. 함께 들어 봐요 내일 밤 결론 모험 블랙 해적선의. 지금, 그것은 시간이다 애니의 비밀 메시지 비밀 서클의 당신 회원. 아이, 회원 만 기억 애니의 비밀 서클의 애니의 비밀 메시지를 디코딩 할 수있다. 기억, 애니는 당신에 따라 있습니다. B2에 핀을 설정합니다. 여기서 메시지이다. (12). (11). 2. - 난 내 첫 번째 비밀 회의입니다. -25. (14). (11). 18. (16). - 오, 피에르 큰 음성 오늘 밤에 있습니다. 나는 오늘의 말할 수 메시지가 정말 중요했다. -3. 25. 즉, 애니 자신의 메시지입니다. 아무에게도 말하지 않는 기억. - 다섯 초 후에, 나는 단지에있어 집에 방 어디 아홉의 소년 개인 정보 보호 및 디코딩에 앉아 있었다. 아하! B! 나는 다음에 갔다. E. 첫 번째 단어는 "수"입니다. S.는 이제 쉽게오고 있었다. 미국 (25). 즉, R.있어 - 이리에, Ralphie! 내가 꼭 가야했습니다! 오른쪽으로 오티스, 엄마! 맙소사. 무엇을해야 - 토니 오는 "반드시"? 어린 고아이었다 무엇 애니 말하려고? 무엇을해야? -Randy 가야했다! 당신은 나와 주시겠습니까? - 모든 권리, 엄마! 금방 나올 것이다! 나는 가까이 지금 얻고 있었다. 긴장은 끔찍했다. 그것은 무엇인가? 행성의 운명 균형에 응답하지 않을 수 있습니다! -Ralphie, 랜디 가야! 큰 소리로 우는 바로 나올 할께! 거의 다 왔어! 내 손가락이 날아 갔다. 내 마음은 강철 덫이었다. 모든 구멍은 진동. 그것은 거의 분명했다! 네. 네. 네. 네. 당신의 Ovaltine을 마실해야합니다. Ovaltine? 지저분한 상업? 개자식. [END 재생] ROB BOWDEN : 그래서 그 방법 Ovaltine는 암호화에 관한 것이다. 기본적으로 CS50는 광고 Ovaltine, 그래서 우리는 할 수 Ovaltine에 대한 싸구려 상업합니다. 괜찮아. 이제 실제 컴퓨터 과학. 월요일에 기억 우리는 중단 문자열에 깊은 다이빙. 그래서 우리는 처리했다 문자열 "Zamyla." 그리고 우리는 인식되었다 우리가 처리 할 수​​ 있다는 사실 일련의 문자로 "Zamyla". 그리고 우리가 배운 것을 기억 대괄호 표기법. 이 저장되어 있다면 다음 문자열에 "S" 우리가 말했다 경우의 브래킷 0, 그 것 편지 자본 (Z)를 표시 그리고 우리의 브래킷 (1),라고하는 경우 첫 번째 소문자를 나타냅니다, 등의 브래킷 (5)까지, 이는 마지막을 나타냅니다. 이제 기억 이 문자열의 길이는 6입니다 하지만 캐릭터 라인의 인덱스는 0 ~ 5, 그 통해 Z는 마지막. 그래서 지금은 더 큰 그림에 맞는 컴퓨터의 메모리, 당신의 RAM. 그래서 어딘가에 프로그램이 당신은 당신의 컴퓨터를 실행하는 Zamyla을 기억해야합니다 메모리의 어딘가에. 그래서 자원 봉사를 할 수 있습니까? 예, 부탁합니다. 그리고 당신의 이름은 무엇인가? 딘 : 딘. 롭 BOWDEN : 딘? 딘을 만나서 반갑습니다. 그래서 여기 와서 우리는 당신이 그리 할 겁니다 메모리 우리의 좋은 멋진 레이아웃. 지금은 메모리를 생각하고 싶어요 바이트의 하나의 긴 스트립으로, 하지만 단지 표시 목적으로 우리는거야 그냥 왼쪽에서 오른쪽, 위쪽에서 아래쪽 않습니다. 그래? 그래서 보여거야 Getstrings.c을 program--. 그리고이 모든 프로그램입니다 하 네 문자열을 요청 와 사용자로부터 하여 GetString 다음 인쇄 무엇이든 첫 번째 문자열을 입력하는 것은이었다. 우리는 네를 통해 두 가지를 무시하고있다. 그래. 그래서 여기들을 당장 경우 내가 먼저 요청 (S1). 그래서 당신은 컴퓨터입니다. 그리고 당신하여 GetString을 구현하고 있습니다. 그래서 당신은 문자열에서 요청 나, 나는, 확인, 딘을 말한다. 문자열 줘 "딘." 그래서 어딘가 메모리에 당신 기억해야 "딘." 그래서 어딘가 메모리에 쓰기. 완벽한. 그래. 그래서 지금 우리는 S2있다. 그리고 S2가 될 것입니다 하여 GetString에 요청. 그래서 문자열을 입력거야. 내가 입력하는거야 "한나를." 그래서 어딘가 메모리에 "한나"를 입력합니다. 그래. A-H. 좋아, 그럼 이제 S3. 그리고 그것은 또 다른 될 것 하여 GetString에 요청합니다. 그래서 지금 "마리아."를 입력 괜찮아. 그리고 마지막으로있다 하여 GetString에 요청, S4. 그래서, 나도 몰라. 어떻게 우리가 가야에 대해 antidisestablishmentarianism. 그래서 메모리에 저를 입력합니다. 그래. 그래서 그냥 "롭."할 그래. 왜 그랬는지 이제 explain-- 당신은이 공간을 떠나? 이 공백이 이유는 무엇입니까 여기, 여기, 그리고 여기까지 공간? 네. 내가 갈 때 그래서 알 그렇다면 s1-- 인쇄 우리 했다 "한나"실행 바로 옆에 "딘" 우리는 때 아는 방법 문자열 "딘은"끝? 그래서 문자열 (S1)를 인쇄하는있을 수 있습니다 그냥 "DeanHannahMariaRob"인쇄 그것은 어떠한 단서가없는 경우 "딘은"실제로 종료의 경우. 괜찮아. 그래서 메모리의 방법 우리는 실제로 문자열의 끝을 나타내는 백 슬래시 0으로합니다. 그래서이 공간은 우리가 원하는 정확히입니다. 그것은 백 슬래시 0이어야합니다. 이 백 슬래시 0이됩니다 이 백 슬래시 0이됩니다. 그리고 당신은 멋진 상을 가질 수있다 완벽한 자원 봉사 인을위한. 스트레스 공을 잡아! 그래. 그래서이 문자 백 슬래시 제로입니다 어떻게 우리는 문자열의 끝을 나타냅니다. 그것은 어떻게하면 주어진 프로그램의 문자열을 인쇄하고 싶어 우리가 배운 기억 how-- 그건 나 strlen 함수 지난 주? 문자열 길이? 그것은 문자열 길이가 수 방법 문자열 인 시간을 결정. 그냥 반복 유지 문자를 통해 그것을 발견 할 때까지 제로 문자를 백 슬래시. 중요한 것은 실현 그래서 백 슬래시 제로 문자에 대한 이 표현되어있어 비트 모두 0으로. 그래서이 뚜렷한 것을 알 제로 문자에서. 그래서 제로 문자, 당신은 기억한다면 예를 들어 그는 마지막에 준 강의의 문자지도 곳 65 자본의지도와 같은 이러시면. 97지도를 소문자. 소문자 b를 98 것이다. 그래서 숫자 0지도는 그렇게하지 ​​이러시면 내 머리 위로 떨어져 알고있다. (44) 또는 (45). 어딘가에 그 지역에서. 그래서 문자 0은 실제 수있다. 그러나 백 슬래시 제로 모두 0 비트 맵. 그래서 차이가있다 백 슬래시 제로 사이, 이는 우리가 널 (NULL) 종료를 호출합니다. 구별 사이가있다 백 슬래시 제로 문자 제로. 괜찮아. 그래서 문자열에 대한 자세한 조금 이야기. 그럼 우리는 어떻게 여기를 참조하십시오 그것은 메모리에 배치 될 것이다. 그래서 순서와 같은 문자열이 아이디어 characters--의 공식 컴퓨터가 그렇게 시퀀스 sciency 용어는 배열입니다. 그래서 우리는 문자열을 부를 것 문자의 배열. 그리고 실제로 다른 데이터가 우리가 밖으로 배열을 만들 수 있습니다 유형. 그래서이 동기를 부여하기 위해, 예를 들어 봐. 우리는 내가거야 ages0.c를 호출합니다 복사 우리의 템플릿을 붙여 넣습니다. 그래. 이 프로그램에 그래서 우리 하고 싶은 나이를 잡아이다 과정에서 세 학생. 그래서 우리가 알고있는 INT age-- 지금은 0을 말할거야. 그래서 당신은 age1 말을하고 싶지만, 수 목적을 위해 우리는 매우 곧 볼 수 있습니다, 나는 INT의 age0가의 getInt 동일 말할 것이다. getInt는 동일한 호출 그래서 우리는 내가를 사용했던 것을 메시지를 표시 할 일이 없습니다 "나에게 나이를 제공합니다."라고 그러나 단지를 요청합니다. 그리고 age1은의 getInt 같습니다. 그리고 INT의 age2은의 getInt 같습니다. 그래서, 다시, 세 학생 만 궁극적으로 변수 인덱스 age2 통해 age0 있습니다. 그래. 그래서이 프로그램을 할 것입니다 어떤 우리는 age0, age1 및 age2으로 원하는, 하지만이 프로그램은 궁극적으로 세 학생들을 위해 작동합니다. 그래. 그래서 지금은 4 명의 학생이 원하는 경우에 무엇을? 글쎄, 난 다시 가야하는거야 내 코드에 주석을 변경, 그리고 지금 우리는 지능 age3은의 getInt 같습니다. 그래. 그럼 누가 여기에 문제를보고? 문제는 무엇인가 설정의 종류와? 그래. 그래. 그래서 우리는을 만드는 각 학생에 대한 변수입니다. 이제 작동하지만, 궁극적으로 지금의 나는 경우 내가 살을 잡아 싶다 "라고 학생 8 또는 16 명 또는 그러나 많은 학생들 CS50 학생들의 수백 캠퍼스에 학생의 수천 또는 세계에있는 사람들의 수십억? 그래서 궁극적으로는 지속 가능하지 않다. 당신이 자신을 복사 볼 때마다 이 같은 붙여 넣기 코드, 당신은 일반적으로 느껴야한다 더 나은 방법이있다. 우리가 소개하는 곳 그래서이다 배열 선언. 그래서 당신은 배열을 선언 할 때, 이것은 무엇 일반적인 형식입니다 처럼 보일 것입니다. 우리는 유형을 말하는 것입니다. 그리고, 우리는 갈거야 그 배열의 이름을, 단지 우리가 어떤 주어진 변수를 정의로. 그리고 마지막으로 우리가 사용하는 이 브래킷 표기법 다시 하지만과는 다른 맥락에서 어떻게 우리가 이전에 그것을 사용했다. 그래서 여기이 정상처럼 보이는 우리가 본 적이 변수 선언. 그래서 우리는 전에 INT X 세미콜론을 보았다. 그런데 지금 우리는 무언가를 볼 수 있습니다 INT X 브래킷 (5) 등을들 수있다. 그리고에이 아이디어를 넣어 우리가 잔 마셔요의 getInt 프로그램 그래서 우리는 구현할 수 있습니다 동일한 방식으로이. 의 우리가 사용하는 경향이 CS에 있다고 가정 해 봅시다 무언가의 수 N. 그래서 여기에 우리가 갈거야 4 명의 학생을 저장합니다. 그리고 지금 우리는 INT의 나이를 말할 수 브래킷은 확실히 그것을 yet--하지 N-- 4 명의 학생의 배열을 선언합니다. 그래서이에 어떻게 보일지 메모리는이 유사합니다. 이 선택을 취소합니다. 그리고 우리는 어딘가에있을거야 memory--에 내가 거기에이를 놓을 게요. 그래서 어딘가 메모리. 하나 둘 셋 넷. 우리는 행에 4 개의 정수가 네 개의 정수의 배열. 그래서, 현재, 무엇 인 이 상자 중 하나의 크기? 그래. 그것은 4 바이트입니다. 그것은 32 비트입니다. 그래서 지금은 다르다 배열이 우리 문자 이전, 배열을 보았다. 문자열의 각 상자는 하나의 바이트했다 문자는 한 바이트이기 때문이다. 그러나 정수의 배열로, 각 상자는 순서로 4 바이트이어야한다 전체 정수에 맞게. 그래서 이것은 무엇의 배열 네 정수는 같을 것이다. 그리고 다시 코드. 이제 우리는 실제로 저장할 그 배열에 정수. 그래서 지금은 매우, 매우, 매우이다 어떤 점에서이되는 일반 패턴 근육 기억된다. 그래서 0과 동일 int로. 나는 n보다 적은. 나는 플러스 플러스. 연령대는 난의 getInt 같습니다. 그래서 루프, 형식, 당신은 매우 익숙해합니다. 그래서이 일반적으로 우리가 어떻게 것 거의 모든 배열을 반복. 이제 이런 종류의 통지 처음부터 그 이유를 설명 우리는 루프 INT 갈 위해하지 않았다 나는보다 작거나 10과 동일, 1과 같다. 부터 시작하는 것이되는 이유 제로의 배열과 잘이 일을합니다. 그래서 배열은 인덱스 제로입니다. 이 배열의 길이가 4 인 경우, 지수는 0 ~ 3입니다. 제 1 관통 그래서 루프에 대한이의 반복 우리는 나이를 설정하는거야 의 getInt를 호출 동일 브래킷 0. 그래서 무슨 일이 있었 어떤 키보드로 입력합니다. 두 번째 패스에서, 우리는있어 의 getInt에 age1 동일하게 설정. 셋째 패스, age2. 최종 패스 age3. 루프의 첫 번째 패스에 그렇다면 나는 키보드로 숫자 4를 입력 우리는 여기에 4를 삽입합니다. 내가 입력 한 두 번째 패스에 경우 50, 우리는 여기에 50을 넣어 것입니다. 세 번째 패스에 나는 수도 입력 한 음, 한 음, 다음 마지막으로 내가 0--를 입력 할 경우 지금이 인덱스 세 이었다는 것을 기억한다. 우리 루프 다시 후, 나는입니다 가는 4로 증가한다. 난 더 이상 4 N, 이하 없다. 그리고 우리는 루프의 탈옥. 그래서이 잘못 무엇을 할 것인가? [들림]? 청중 : [들리지] 네. 그래서 배열은 4 개소가 있습니다, 이는 3를 통해 인덱스 0으로 의미한다. 이 경우라면, 내가 것 그래서 어떤 점에서 값 4에 걸릴. 연령대 4 설정한다 어떤이 이상 여기에 발생 내가 무슨 말을했는지에 6을 입력합니다. 즉 6이 설정됩니다. 그러나 우리는 여기에 무엇을 모른다. 이 메모리 아니다 것을 우리는 접근했다. 그래서 당신은 기억한다면 이전 강의, 그는 Zamyla의 값을 인쇄하고, 어떤 점에서 그는이 분할 충돌 잘못. 그래서 당신은 아마 볼 수있을 것입니다 당신만큼 분할 오류 문제 세트의 일부를 구현합니다. 하지만이 방법 중 하나 인 당신은 분할이 발생할 수 있습니다 당신이 액세스 할 시작할 때, 잘못 당신이 안 방법으로 메모리. 그래서 우리는에 접근하지 않았다 이 위치는이 버그입니다. 그래서이 좋습니다. 지금은 아직 작은이 이 코드를 사용하여 문제를 해결합니다. 그리고 우리가 걸 기본적이다 여전히 4 명의 학생에 붙어. 지금은 OK, 학생 8을 사용합니다. 그것은 그렇게 큰 거래를하지 않습니다. 나는 변경에 갈 수있는 의견, n은 변경할 수 있습니다. 지금이 여덟 학생들과 함께 작동합니다. 나는이를 컴파일하고 실행하는 경우 이, 그것은 가구 있구만 표시됩니다 그것은 여덟에 대한 정수를 요청합니다 학생들과 그냥 작동합니다. 그러나 필요에 이상적 이하의 프로그램을 매번 다시 컴파일 나는 학생들의 수를 변경하려면 나는에 대한 나이를 입력 할 것인지. 그래서 최종 개선에 우리가 here-- 살펴 보 겠지만이, 우리는있어 사람의 수를 요청하는 것. 여기서 우리는 번호가 객실에있는 사람들의 또는 실내에있는 사람의 나이. 그러나 우리는 수를 요청하는거야 사용자의 방에있는 사람들의. 그래서이 동일한 DO-동안이다 우리가 전에 본 적이 루프. 그것은 동일한의 할-whil​​e 루프 당신 문제 세트에 구현 될 수있다. 그러니 그들이있는 한 1보다 n이 덜 입력, 그래서에있을거야 방에 적어도 한 사람. 만큼 그들이있는 한 1보다 n이 덜 입력, 우리는 다시 물어 유지하는 것입니다. 번호를 입력하세요 방에있는 사람들의. 이제, 우리는 한번 번호가 room--에있는 사람들의 그래서 나는이 것을 입력 할 수 있습니다 이 방 200 명이다. 여기에 아래 우리는 올거야 및 크기 (200)의 배열을 선언. 우리의 배열을 선언하고 충분히 큰 200 세를 개최합니다. 내려오고, 그것은 루프의 당신은 매우 익숙해 질 것이다. 그래서이 배열의 반복, 각 위치에 할당 해당 배열의 정수이고 다음 궁극적으로 우리는 여기있어 다만 반복의 예 점점 그 배열을, 값을 할당하지, 그러나 값에 액세스 할 수 있습니다. 여기에 우리는 볼 우리가 지금부터 올해 말, 사람 %는 내가 세 %가됩니다 첫 번째 %는 내가 1을 더한입니다. 그래서 나는이 인덱스 변수이다. 그리고 두 번째 %의 난을 될 것입니다 세 배열 플러스 (1)에 저장된 값입니다. 그래서이 플러스 1은 우리가있어해서입니다 이 1을 더한 제 말 세 난 플러스 1. 이 더하기 1은 우리가있어해서입니다 지금 사람으로부터 올해 말 이 오래된 것입니다. 왜이 내가 더하기 1은? 왜 우리는 거기에 1을 더한 있나요? 그래. 네. 그래서 배열은 0 색인 기억한다. 우리는이를 인쇄하는 경우 그래서 누군가는 출력을 읽으려면 다음 아마 그들은 무언가를보고 싶어 사람 한 사람의 수 같은, 20 세 될 것입니다. 사람의 두 번째 15 세 이상이어야합니다. 그들은 오히려 사람을 볼 것 숫자 0 15 세입니다. 그래서이 컴파일 그냥보고 무엇을 그것은 일부 공간을 만들기 그때 엔 보인다. 나이 컴파일합니다. 나이를 실행. 우리는 방에있는 사람 수를 참조하십시오. 그래서이있다 말할 것이다 방에 세 사람. 사람의 번호를 하나의 시대, 의 15, 20, 25을 가정 해 봅시다. 그리고 지금은 년에서 말할 것이다 지금은 16, 21, 26이 될 것입니다. 의이 함께 작동하는지 보자 3 같지 않은 N. 그래서 만약 내가 사람들의 수는 하나 5라고 두 개, 세 개, 두 번, 지금부터 년 그들은, 둘, 셋 수 있습니다 네, 세, 두 살. 그래서 난 그냥 그대로 수 쉽게 N 10,000 수있다. 지금은 아주 여기 앉아있을 것입니다 반면 나이를 입력하지만, 이것은 작동한다. 이제 메모리의 어딘가에 우리 크기 만의 배열을 가지고 그래서 궁극적으로 40,000 바이트가 있으므로 이들 정수의 각 4 바이트. 그래서 배열있다 크기 만 여기서 우리가 할 수있는 그 만명의 나이를 저장합니다. 괜찮아. 이 중 하나에 대한 질문? 그래. 당신이 음수를 주면? 이제 어떻게되는지 보자. 이 특정 case-- 번호 그래서 방, 음 하나에있는 사람들의. 그것은 그 거부, 여기에 우리가 일 때문에 N인지한다는 사실을 처리 할 덜 한 것보다 우리는 다시 물어 것입니다. 당신을 선언하려고하면 음의 크기의 배열, 그것은 일반적으로 작동하지 않습니다. 그럼 해보자. 의 무시하자 어떤 n의 값들이 입력 그냥 INT 연령대에게 부정적인 하나를 말한다. 심지어 컴파일하는 경우 보자. 나는 확실하지 않다. 아니. 그래서 나이가로 선언 음의 크기와 배열입니다. 그래서 선행이 배열 할 수 없습니다 인식 음의 크기 여야하고 그것을 거부합니다. 이제, 우리는 처리하지 않은 경우 이 DO-whil​​e 루프 올바르​​게, 우리가 확인되지 않은 경우 N 미만이면 1-- 의 우리를 바로 봅시다 모든이가 없었어요 대신 우리는 단지 정수를 잡아. 아무리 그 정수가 무엇인지, 우리는 그 크기의 배열을 선언. 그래서 컴파일러는 할 수 없습니다 아마도 지금 불평하고있다. 나는이 항아리 컴파일하는 경우 그래서 불평 할 수 없다, 이 난 것을 알 수 없기 때문에 음수를 입력하는 것, 이는 유효하지 않을 수 있습니다. 모든 것이 내가 수도, 알고 양수를 입력, 이는 완벽하게 유효합니다. 나는 1 마이너스 입력하면 그래서 나는 상상 방에있는 사람들은 오류를 세그멘테이션. 그래서 확인. 그럼이를 그냥 추가 할 수 원래 무엇을 유지. 그래서 나이를 확인합니다. 지금은 시도하려는 경우 부정적인 그렇게하자 age-- 방에 오명가 말한다. 사람의 번호를 하나의 시대 , 사람 세 음 4 제로는, 사람이 확인 three--입니다. 그래서 여기, 년 지금부터, 사람 번호 하나는 3 세 음수가 될 것입니다. 그래서 아마 이해가되지 않습니다. 하지만 그건 그냥보고 있기 때문에 코드를 모두 우리가하고있는 의 getInt를 요청한다. 이제, 우리가 있었다면 GetPositiveInt 기능 또는 우리는 단지 이런 짓을했다 거기 같은 while 루프의 종류, 다음이 완벽하게 정상적으로 작동합니다. 그러나이 특히 경우, 우리는하지 않습니다 음의 값을 처리 할 일이. 배열에 대한 다른 질문? 그래. 그래서 우리는 지금 배열을 보았다. 그리고 우리는 사용할 필요 해요 명령 줄 인수를위한이. 그래서 문제에 two-- 설정 나는 당신의 많은 것을 알고 여전히 문제 설정 작업을 할 수 있습니다 하나,하지만 문제는 두 가지가오고 설정합니다. 문제는 두 가지를 설정, 당신은 거 야 문자열, 배열을 처리해야, 및 명령 줄 인수. 명령 줄 인수는 그래서 무엇인가? 지금, 당신은 여기를 볼 수 있습니다 정확히 무엇을위한 작은 맛보기 가는 일이 일어나고있다. 우리는 INT 주, INC는 argc 참조 문자열 argv와 브래킷. 그래서 처음의 해석을 시도하자 무슨 말을하려고. 좋아, 이제. 그래서 명령 줄에서 당신은해야합니다 이러한 명령 중 일부에 익숙해 지금, 당신은 아마 실행했습니다 전에 단말기에 CD. 그래서 우리는 CD를 PSET1을 말한다면, 당신은 그 것을 알고있다 PSET1 디렉토리로 변경합니다. 이제 당신은 적이 없음을 알 전에이 같은 프로그램을 작성합니다. 당신이 작성한 각 프로그램, 당신은, 말하자면, 실행됩니다 마리오 슬래시 점, 점은 욕심 슬래시, 다음을 입력를 묻는 메시지를 표시 할 수 있습니다. 자,하지 무슨이다 디렉토리를 변경한다. 당신이 CD를 실행하면 다음 말을하지 않습니다 당신은 CD에있는 디렉토리에 원하는거야? 대신, 당신은 단지 말, CD의 PSET1 및 그냥 PSET1 디렉토리로 이동합니다. 그래서 마찬가지로 우리는 다른 예를 가지고있다. 안녕하세요합니다. 당신이 만드는 실행하면 다음 말을하지 않습니다 어떤 프로그램이 당신이하고 싶습니다? 당신은 단지에서 말 명령 행 안부를 확인합니다. 이동은 또 다른 예이다. 우리가 이동하는이 하나 하나의 디렉토리를 파일 mario.c. 그래서 지금 우리는이 예제를 알고 우리가 정말 두 개의 인수를 전달하고 있습니다. 첫 번째 인수로 mario.c이있다, 도트 점은 두 번째 인수입니다. 그리고 당신은, 당신을 실행할 때 정말 긴 명령을 참조하십시오 line-- 정말 긴 명령 명령 줄에서 인쇄. 그래서 긴이 command-- 그것의 짧은 부분이다, 하지만 지금 우리는 세 가지가 명령 줄 인수. 도트 대시 제로, 인사 및에서는 hello.c. 그래서 이러한 명령 줄입니다 인수, 인수 당신은에 전달하고 있다는 명령 행 있도록 메시지가 표시 할 필요가 없습니다 당신은 프로그램을 실행할 때. 그것은 좌절 될 때 경우 당신이 연타를 실행 시켰을는 확인 "고 말했다 program--하는 어떤 파일은 컴파일된다? 에서는 hello.c. 무엇 플래그 당신 것 입력 하시겠습니까? 대시 오. 당신은 무엇을하고 싶습니다 파일이 호출 할 수 있습니까? 안녕하세요. 아니, 당신은 연타를 실행 오 안녕하세요에서는 hello.c를 대시. 그래서 다시이 찾고. 지금 argc--는 argc 인수 카운트입니다. 이 명령 줄 수있어 인수는 명​​령 줄에 입력. 글쎄, 기술적으로 argv-- V는 벡터를 의미 이는 기본적으로 배열을 의미한다. 하지만 당신은 그것을 무시할 수 있습니다. Argv-- 우리는 문자열 변수는 argv가 그래서 문자열 argv와 브래킷. 그래서이의 또 다른 형태이다 당신이 전에 보지 못한 브래킷. 그래서 우리는 본 적이 브래킷 우리가 말한 표기, 같은 문자열들 Zamyla는 같습니다. S 브래킷 0 문자 Z. 액세스 우리는 또한 브래킷 경우를 본 적이 우리는 INT 세 5 괄호 말했다. 즉, 크기 5의 배열을 선언했다. 그래서 여기의 버전입니다 브래킷은 우리가 전에 보지 못했어요. 문자열 변수는 argv의 그래서 이런 종류의 그 완전히 익숙 할 것이다 그냥 문자열이 될 것이라고. 이제 괄호 표시 것을이 배열입니다. 그래서 문자열 argv와 브래킷 수단 그 변수는 argv는 문자열의 배열입니다. 이제 기술적으로 문자열 문자의 배열입니다. 그래서 지금 배열입니다 문자들의 배열. 그러나 생각하기가 훨씬 쉽다 문자열이처럼 배열. 왜 괄호는 비어있을 수 있습니다? 마찬가지로, 왜 우리는 말할 수 없다 브래킷 5, 브라켓 N? 그래. 그래. 우리는 얼마나 많은 모르겠어요 입력이가 될 것입니다. 그래서 우리는 그 소리 예를 보면, 우리는 인사에서는 hello.c O를 대시를 연타 말한다. 특히이 경우,이 일어날 세 개의 명령 줄 인수한다. 그래서 brackets-- 우리는 볼 수 있습니다 두 번째에서 세 가지를하지 않을 것입니다. 그것은 기술적으로 네 것입니다. 그러나 브래킷, 우리는 것 말하자면, 세 가지가 있습니다. 하지만 지금 우리는 이동 보았다 경우 mario.c 점 점, 괄호 우리는 그들에 두를 데려 가고 싶다는 것입니다. 그리고 명령의 많이있다 그 커맨드 라인의 개수가 유동적 인수. 그래서이 버전의 대괄호 표기법을 나타냅니다 변수는 argv는 문자열의 배열 것입니다. 그러나 우리는 얼마나 많은 몰라 문자열은 해당 배열에 있습니다. 어떻게 우리는 어떻게 알 수 있습니까 많은 문자열은 배열에있는? 즉, 전체 포인트는 argc이다. ARGC는 argv를 얼마나 오랫동안 우리에게 알려줍니다. 그래서 마지막 것은 유지하기 마음은, 그 기술적으로 명령 자체가 하나로 계산 명령 줄 인수. CD의 PSET1 그래서 두가 명령 줄 인수. 자체 프로그램, CD, 다음 그것의 실제 인자 부분 PSET1. 당신이 지금까지 작성한 모든 프로그램 한 명령 줄 인 공방 점했다 마리오 슬래시. 즉, 단지 명령 줄 인수입니다. 그래서 지금 그 소리보고 오 안녕하세요에서는 hello.c를 대시. 그래서는 argc는 무엇인가? 4. 그래서 ARGC은 4입니다. 연타, 그래서 argv와 브래킷 0 연타입니다. argv와 브래킷 1 대시 0입니다. argv와 브래킷 2 안녕하세요이며, argv와 브래킷 3에서는 hello.c입니다. 좋아, 그럼이에 대한 질문, 그리고, 우리는거야 일부 프로그램의 예를 보면. 그래. 그래서 우리는 hello3.c 살펴 보겠습니다. 그래서이에서 잘 알고 있어야합니다 첫 번째 C 예제 중 하나 우리가 말을 우리는 어디에서 인사했다 세계는, 그러나 지금이 더 일반적이다. 그래서 여기에 우리는 안녕 말 %의 백 슬래시 n 개의 변수는 argv 브래킷 1. 이 시점까지 최대 있도록 Notice--,이다 무엇을 내 템플릿 파일처럼 보였다있다. 나는 INT 주 (무효)가 있고, 그 다음 나는 것 주요 기능에 뭔가. 이제 대신, 한 번 우리는 처리 시작 명령 줄 인수, 우리는을 명시 할 필요가 메인의 다른 형태. 그래서 hello3보고 다시 메인는 것입니다 INT의 ARGC들을 당장 두 개의 인수를 사용하려면 명령 줄 인수의 수, 문자열 괄호는 argv, 실제 문자열은 명령 줄에 입력. 그래서 나는 그것을 바꿀거야 템플릿은 그 사실을 반영합니다. 지금 때마다 쓰기 프로그램, 당신이하지 않으면 명령 줄을 취할 필요 인수 후 바로 INT 주 (무효)를 사용합니다. 하지만 지금은 당신이 작성하는 경우 명령 줄 인수 프로그램, 어떤 당신이 문제에 대한 일을 할거야 지금 실행중인 것을 two-- 설정 수행해야 프로그램 명령 줄 인수, 이 양식의 기본이 필요합니다. 그래서 here--이 큰 사용법은 명령 줄 인수. 그래서 변수는 argv 1 인쇄. 확인 그래서 컴파일하자 이 프로그램을 실행합니다. hello3합니다. 컴파일합니다. 점은 hello3 슬래시. 그리고 이제, 말을하자 "롭." 안녕하세요 롭. 나는, "안녕하세요 마리아,"안녕하세요 마리아를 말한다면. 마리아 안녕하세요. 한나는 여전히 안녕하세요 "라고 마리아, "나는 아니에요 때문에 우리는 argv 2 아무것도. ARGV 2는 지금 "한나."것 ARGC 3이 될 것이다. 내가 이런 짓을하면? 그래서 안녕하세요줍니다. 그는 잠시 사실에 감동 즉, 기술적하여 GetString null을 반환 할 수 있습니다, 그러나 우리는를 얻을 수 있습니다 더 무엇을 널 (null)로 많은 사실입니다. 그러나의 문제로 가져 더 일반적으로 나쁘다는 사실. 우리는 경우 뭔가 잘못했다 그것은 "안녕하세요줍니다."인쇄하는 것 그리고 그 이유는 우리는했다 is-- 아니라 뭔가 잘못, 나는 점 슬래시 hello3를 실행할 때, ARGC는 1. 그래서 변수는 argv의 길이가 1이었다 의미한다. 어레이의 길이가 1 인 경우 유일하게 유효한 색인은 0이다. 그리고 여기에 1 밖에 argv를 이 배열의 범위. 내가 시도 할 때 이전과 유사했다 어레이의 외측 단부 (6)를 저장한다. 그래서 내가 뭔가에 액세스하려고 해요 변수는 argv 카운트의 외부, 우리는 널 있어요. 너무 더 나은 버전 이, 개선, 명시 적으로는 argc를 확인하고 있습니다. ARGC 2에 해당한다면, 그것은 우리가 실행 의미 도트 슬래시 hello3 롭 같은. 그리고 "안녕하세요 롭."인쇄합니다 ARGC이 동일하지 않을 경우 2, 그것은 단지거야 당신이 넣어 어떤 무시 명령 줄 인수에 명령 줄 인수로. 당신이 전혀 넣지 않은 경우 또는,이다 그냥 무시하고 그냥 말을하려고, "당신을 안녕하세요." 그래서이 컴파일. hello4합니다. 그리고 hello4를 실행. 그것은이 방법으로 실행, 무엇을 인쇄해야 하는가? "여러분 안녕하세요." 여러분 안녕하세요. 무엇 hello4 롭은 어떻습니까? "안녕하세요 롭." 그리고 마지막으로, 안녕하세요 롭 마리아 "안녕하세요"다시 그냥 당신이 정말로 입력하지 않았기 때문에 이 예상 뭔가. 당신은 더 이름을 입력 이 처리 할 수​​있는 것보다, 그래서 그냥이 기본값 안녕하세요 당신의 행동. 이 질문에 그래서? 또는 명령 줄 인수? 좋아, 그럼 한 번 봐 복용 사용의 몇 가지 더 예 명령 줄은 처음 arguments-- 우리는 대시 1 점 C를 argv를했다. 그래서 코멘트 멀리 줄 것을 이 프로그램은 일을해야한다. 그러나, 루프이들을 당장 알 이것은 정확한 패턴과 일치 내가 전에 말을했다. 우리는 될 일이 N 대신 ARGC를 사용하여. 지금 ARGC 정말 N이다. 그것은 argv 배열의 길이입니다. 그래서 argv를 반복된다 배열의 printf - 보내고 각 변수는 argv 값을. 나는이을한다면. 변수는 argv 1을 확인합니다. 그것은 컴파일합니다. 점은 변수는 argv 1을 슬래시. 그냥이 실행을 인쇄 슬래시는 argv 1 점 그 유일한 명령 줄 이후 프로그램 이름을 인 공방. 항상 least--에있을 것입니다 는 argc는 1보다 작을 수 없습니다 이후이 항상 것 이상 실행 프로그램의 이름. 그래서 1 롭 1 ARGV 인쇄됩니다 argv를 다음 새 줄에 "롭." 첫 번째 반복에 따라서 이 루프, 나는 0입니다. ARGV 0는 프로그램 명이다. 점은 변수는 argv 1을 슬래시. 그리고 1 내 첫 번째 argv를 롭입니다 명령 줄 인수. 이 시점에서, 우리는 argc의 동일하다. 우리는 루프에서 벗어나 우리는 완료. 그래서이 임의의에 대해 작동합니다 명령 줄 인수의 수입니다. 주의는 argv를 0, 변수는 argv를 인쇄 1, 변수는 argv 2, argv를 3, 변수는 argv 4. 그리고 더 argv를 5도 없다. ARGC 5와 같다. 그래서 5와 동일한에서 argc--에서, 우리는 루프의 탈옥. 그래. 우리는 전에 그에 대한 질문 그래서 더 복잡한 예를 살펴? 그래서 2 argv를. 괜찮아. 그래서 우리는 여전히 인쇄하는 명령 줄 인수. 하지만 지금 우리가 주목 for 루프 중첩. 그래서이 일을합니까? 그래서 첫 번째 루프는하고있다 정확히 무엇을 이전했다. 우리는 여전히 이상 반복하고 각 명령 줄 인수, 하지만 지금이 두 번째 loop-- 우리는했습니다 또한 전에 이런 일을 본. 그는 이상 반복 할 때 Zamyla는 Z-A-M-Y-L-을 인쇄. 그래서 INT j에 대한이 두 번째 루프는 동일 0, N argv와 브래킷 난의 나 strlen 같다. 그래서 처음에 대해 생각해 봅시다 짓이야의 통해 살펴 보겠습니다. 의 어떤 컴퓨터가 있다고 생각하자 그냥 점으로 나는이 프로그램을 실행 한 경우 수행 argv를 대시 2 슬래시. 그래서 만약 내가 다음,이 코드를 실행 ARGC 1과 동일 될 것입니다. 그리고 문자열은 거기 argv-- 변수는 argv에서 하나의 인덱스가 될 것, 그리고 그 점에 동일한 될 것 argv를 슬래시 2-- 프로그램 이름을. 좋아, 그럼 지금은보다 내가 더 적은, 0과 동일 1, 난 플러스 플러스 INT의 j는 0에 해당위한, N에서, 그래서 변수는 argv 브래킷 0의 나 strlen 같다 이 루프의 첫 번째 반복. 변수는 argv 브래킷 0 점 슬래시는 argv 2입니다. 그래서 문자열의 길이는 무엇인가? 음, A-R-G-V에게 대시 2 슬래시 점. 그 나 strlen 그래서 것은 8 할 것이다. 그래서 j는 0과 동일, n은 8과 같다. 긴 J 8, j 개의 ++ 미만으로. 그리고 그와 함께 우리가 될거야 하나의 문자를 인쇄하는 나는 J를 괄호는 argv 브라켓입니다. 그래서 나만은 0이다. 우리는 여전히 하나가 명령 줄 인수. 그 첫 번째 반복에서 루프, 우리는있어 인쇄 될 것 argv와 브래킷 0 브래킷 0. 그리고 j는 증가 할 것이다. 그리고 우리는 인쇄에가는거야 argv와 브래킷 0 브래킷 1. 그리고 브래킷 0 브래킷 2는 argv. 그래서 이것은 우리의 첫 만남이다 다차원 배열. 내가 말한 것을 이전의 기억 그 변수는 argv는 기술적으로 문자의 배열의 배열. 그래서 여기 뭔가처럼 말했다 경우 문자열들, argv와 브래킷 나는 동일 다음 나는 S 말했다 브래킷 J,이 같은 일을 달성 할 것이다. 지금, 당신은 이전의에게 브래킷 J 봤어요. 그건 그냥 j 번째 액세스 것 이 캐릭터 라인의 문자. 이와 그래서, 우리는 점점 i 번째 변수는 argv의 j 번째 문자. 그래서이 궁극적으로 출력해야합니까? 변수는 argv 2를 확인합니다. 그것은 컴파일합니다. 점은 변수는 argv 2 슬래시. "롭 마리아 한나" 우리에게 약간의 공간을 제공합니다. 그래서 우리는이 출력 것을 볼 자신의 라인과 슬래시에 점 자신의 라인에 자신의 라인에. 이 밖에 각 인쇄거야 개별 문자 각 명령 줄 인수의. 그리고 그들 사이에, 이 때문에 새로운 라인의 우리는에서, 여기에 아래로 인쇄하는 그들 사이에 새로운 라인을 인쇄 할 수 있습니다. 그래서이 유사하다 이전 argv를 대시 1, 각 인쇄하는 명령 줄 인수, 하지만 지금 우리는 인쇄하는 명령 줄 인수 다음 각 통해 반복 각 명령 줄 인수의 문자 이 출력을 얻을 수 있습니다. 그래? 이 질문에 그래서? 주의 할 점은 것입니다 명령 줄 arguments-- 그래서 그들은 같은 공백으로 구분됩니다 당신은 자연스럽게 그들을 것으로 예상된다. 그래서 문자열에 공백이있을 수 있습니다. 그것은 매우 중요하지,하지만 난 경우 세 번째 명령 줄 인수를 원했다 그때, 거기에 공간을 가지고 이 같은 것을 말할 수 있습니다. 그래? 그래서 지금은 여전히​​ 세 가지가 있습니다 명령 줄 arguments-- 잘 4. 도트는 argv를 대시 2 슬래시, 롭, 마리아, 그리고 한나 블룸버그. 그래. 이에 대한 질문? 특별한 것은 없다 공백 문자에 대한. 그것은 그냥 될 일이 명령 줄은 공백 문자를 처리 방법으로 각 인수를 구분합니다. 괜찮아. 그럼 문제 세트 당신이 될거야 two-- 비밀 키 암호를 찾고 있습니다. 그 예에 따라서, 유사 우리는 크리스마스 스토리에서 보았다 당신은 몇 가지를 구현 될거야 메시지를 소정의 알고리즘, 당신은 수있을거야 그 메시지를 암호화 그 비밀과 그 사람 만 키, 그 디코더 링, 암호를 해독 할 수 있어야한다. 그래서 표준 버전입니다. 당신은 구현 될거야 두 개의 서로 다른 버전. 당신은 살펴 일어날 경우 해커가 지금 edition--에서, 우리는 줄거야 당신이 같은 문자열, 이는 암호화 된 암호를 나타냅니다. 그래서 당신의 목표는 파악하는 것입니다 해독 된 암호는 무엇인지. 지금이 실제로 어떻게 암호입니다 많은 컴퓨터에 저장되며, 그리고 그것은 단지이 저장 문자의 임의의 문자열. 당신은 그것을 이용하는 방법을 알아 내야합니다 문자의 임의의 문자열에서 원래 암호가 무엇인지에. 그리고 마지막으로, 후이 문제 세트, 당신은해야 이 무슨 뜻인지 이해할 수. 그래서 당신은 암호를 해독하는 방법을 배우게됩니다 임의의 문자열의 종류. 마찬가지로 주에서 기억한다면 0, 당신은이 URL을 본 적이 있습니다. 그리고 당신은 할 수 있어야 결국이 암호를 해독. 당신은 행복하지 않을 수 있습니다 때를 암호를 해독하고 링크를 클릭합니다. 괜찮아. 오늘은 그것을이다. 그래서 다음 주에 당신을보고! [전자 음악 연주]