[Powered by Google Translate] 데이빗 J. MALAN : 알았어. 이 CS50 있으며,이 일주일에 두번의 끝입니다. 당신은 내일이 시간 주변에 배가 될 것으로 예상 될 경우 우리가가는 알고 작은 그룹 내일, 목요일, 오후 1시 15분로 소집 할 수 있습니다. 당신은 답장하려면이 URL가 있어요. 공간이 제한되어 있으므로 양식이 시간에 의해 채워 경우 용서하십시오 이 양식을 작성. 재미있을 겁니다하지만 다른 URL이 있습니다. 그러므로 한 달의 시간에 대한에, 과정은 사용할 수 것입니다 모든 더 넓게 edX를 통해, 인터넷에 사람들은 할 것입니다 통해 사실, 매우 적극적으로 수업에 참여, 함께 따라 할 수. 그들은 CS50 어플라이언스와 CS50 토론하고의 대부분을 사용할 것 이미 이번 학기을 사용하고 계신 다양한 소프트웨어 도구를 제공합니다. 그리고 우리가 올해 실험로 수행 할 사업 중 하나 우리가 다른 하나는 음성으로 번역 할 수 있습니다 얼마나 많은 콘텐츠를 확인하려면 문자 언어. 이 프로젝트에 참여에 관심으로서,이있을 수면 우리는 코스의 영어 성적 증명서 및 자막을 제공합니다 강의와 반바지, 세미나 및 섹션과 같은 - 당신은 유창하게 말하거나, 아니면 유창하게 다른 언어를 작성하는 경우, 우리는 겠어 이 프로젝트에 당신을 상대 할 사랑으로서, 당신은 하나 이상의에 걸릴 비디오, 당신은 아주 잘 알고있는 언어로 그들을 번역. 당신에게 인터페이스의 의미를 제공하기 위해이 웹 기반 사용자 인터페이스가 우리는 본질적으로 같은 UI를 만들 것이다 사용한다는 점을 잊지 마십시오. 이건 내 일부 할로윈 전에 가르치는 것이 었습니다. 그리고 이러한 시간 기록 옆에 검은 색에 가장 오른쪽에, 당신은 그 날 내 입에서 나온 여러 가지를 볼 수 있습니다. 그리고 그 아래에, 당신은 다른 언어로 번역 할 수 있습니다. 매핑이 경우 영어로, 사이 정확히 하고, 스페인어를 말한다. 그래서 실제로 매우 사용자 친화적 인 도구입니다. 당신은 키보드 단축키로 매우 쉽게 빨리 감기 되감기 할 수 있습니다. 이 실험에 참가하고자하고 단어를 것입니다면 볼과 거기에 사람들의 잠재적 수천 읽고, 생각 마시기 바랍니다 참가 무료입니다. 이제 우리는 지나치게 월요일부터 새끼 고양이에 대한 한 단어를 보냈습니다 않도록 무서운 메시지가 나타납니다. 섹션 제안으로 근무 시간은 제안과 같은, 그런 건 알고 있지? 물론 디자인은 매우 학생들이 공동이 훨씬 있으며 함께 문제 세트와 문제를 극복해야 할 이야기. 그리고 정말 행은 작업이 궁극적으로 다시 내려 와요 제출해야 자신이어야합니다. 그리고 꽤 정직, 야 - 근무 시간에, 그것은 완전히 정상입니다 - 일부 채팅 할 - 그것은 완전히, 심지어 예상 할 수있는 일이야 당신 옆에 친구. 그 또는 그녀가 어떤 주제를 연구하고 있으며,이 같은 경우, 오, 잘 알려 내가 당신에게 내가 쓴 코드의 일부 라인의 모습을 제공합니다. 괜찮아요. 그 문제가 발생합니다. 그리고 그 학습의 과정, 제 생각 많이 유도. 머리가 약간 이상 기울어 때 선, 다시 넘어지기는 어디 여기에 너무 많이 초 또는 분 동안 정말 단을 가지고있는 당신의 친구에 대한 차단 해제 기회 였죠. 그리고 확실히 물건은 이메일 및 보관과를 통해 교환받을 때 같은, 너무 줄이 있습니다. 이 모든 수단으로, 편안하게 친구들과 채팅하는 것이 좋습니다 생각 그리고 psets 등에 대한 반 친구. 그리고 단지 당신이 궁극적으로 제출하는 것은 정말이되었다는 걸 깨달았 귀하의 생성이 아닌 다른 사람의 제품입니다. 귀여워 생물의 같은 맥락에서, 당신은 수도 이 사람 여기 알아요. 그래서 몇 년 전에서 엄청 시리 싸구려 영화입니다. 여기 아무도 Spaceballs 본 적있어? 괜찮아요. 여기에 좋은 숫자가 그럼. 그래서이 궁극적으로 오늘날 소개 우리의 멋지고 학술 방법입니다 암호화의 개념. 올 것이다 pset 2에 대한 도메인 특정 문제 그리고 어느 내일은 늦게 밤에, 암호의 세계에 뛰어하는 것입니다 정보를 암호화하거나 출격의 예술입니다. 그리고 궁극적으로 보안의 세계에 관한 것이다. 지금 보안 대부분의 우리는 상당히 평범한 메커니즘의 형태로 제공됩니다. 우리 모두가 사용자 이름과 비밀번호가 있습니다. 그리고 우리 모두는 대부분 아주 나쁜 사용자 이름과 비밀번호가 있습니다. 비밀번호가 여러 웹 사이트에 동일한 경우, 아마 우리가 아닙니다 가장 좋은 아이디어는, 우리는 학기 끝 부분에 논의겠습니다. 귀하의에 - 농담 - 비밀번호는 스티커 메모에 기록되어있는 경우 너무 반드시 최고의 디자인이지만 꽤 일반적인 아닙니다 모니터, 현상. 귀하의 비밀번호를 암호화 할 암호를 사용하지 않을 경우, 그들은 아르 특히 취약. 당신이 숨겨진 단어를 갖는하여 영리 슈퍼 인 것 같아요면 하드 비밀번호의이 드라이브는 아니지만 어딘가에 문서화 그 누구도에서 찾아 갈 수 없어하는 폴더에 해당 그것도 아주 없습니다 보안 메커니즘. 그리고 무엇 pset 2 소개하는 것은 암호화의 예술이며, 암호 같은 것을이 있도록 정보를 스크램블링 모든 더 안전. 수 있도록 매우 비 실제 세계와이 매우 실제적인 문제를 동기를 부여하는 방법 시나리오는, 내가이 일에서 여기 우리가 제일 좋아하는 클립 중 하나를 소개 영화 Spaceballs. [동영상 재생] - 헬멧, 당신 친구 인, 무슨 일이에요? 당신이 내 딸 한테 무슨 짓이야? 제가 재기 넘치는 젊은 플라스틱 외과 의사, 박사 필립을 소개 - 허가 전체에서 Schlotkin, 가장 큰 코 수술 남자 우주와 베벌리 힐스 (Beverly Hills). - 전하. - 코 수술? 이해가 안되는 데요. 그녀는 이미 코 수술을 받았어요. 그건 정말 16 선물했다. - 아니, 당신이 생각하는 게 아니에요. 그것보다 훨씬 더 있습니다. 당신이 공기 방패 나에게 조합을 제공하지 않는 경우, 박사 Schlotkin 겁니다 그녀의 오래된 코를 네 딸을 다시 제공합니다. - 아냐! 그거 어디서 났니? - 좋아. 내가 말 할께요. 내가 말 할께요. - 아니, 아빠, 안돼. 당신은해야합니다. - 당신 오른쪽, 내 사랑. 당신의 새로운 코를 그리워 할 것이다. 하지만 무슨 일이 있어도 그들에게 조합을 말하지 않을 수 없습니다. - 아주 좋아요. 박사 Schlotkin는 최악의 해. - 내 반갑습니다. - 아냐! 잠깐, 잠깐만. 내가 말 할께요. 내가 말 할께요. - 난 그게 작동 줄 알았습니다. 좋아, 나 한테 줘. - 조합은 하나입니다. - 하나. - 하나. - 두. - 두. - 두. - 세 - 셋. - 셋. - 넷. - 넷. - 넷. - 다섯 - 다섯. - 다섯. - 그래, 조합은 하나, 둘, 셋, 넷, 다섯입니다. 그건 내가 내 인생에서 들어 본 가장 멍청한 조합입니다. 그건 바보가 수하물에 미칠 것 일 이죠. 공주님, 당신을 감사합니다. - 무슨 짓을 한거야? - 내가 벽을 돌렸다. - 아니, 그렇지 않아. 당신은 전체 영화를 해제. - 내가 잘못 버튼을 누르면이어야합니다. - 글쎄, 그것을 다시 넣어. 영화를 다시 놔. - 예, 알겠습니다. 예, 알겠습니다. 가, Erna를 놔줘. , 그레첸 가자. 물론 당신은 내가 아직도 당신을 청구 할 것 알아요. - 글쎄, 일 했어? 문은 어디있어? - 그건 선생님했습니다. 우리는 조합이 있습니다. - 좋아. 이제 우리는 지구 Druidia에서 신선한 공기의 모든 마지막 숨을 수 있습니다. 조합은 무엇입니까? - 하나, 둘, 셋, 넷, 다섯. - 하나, 둘, 셋, 넷, 다섯? - 그래요. - 정말 놀라워요. 내 짐에 동일한 조합있어. 즉시 출발을 위해 Spaceball 하나를 준비합니다. - 예, 알겠습니다. - 제 수하물의 조합을 변경할 수 있습니다. - 아우! [END 비디오 재생] 데이빗 J. MALAN : 지금 모두 볼 수 놀라운 영화. 그래서 여기 컨텍스트가 안전하지 않은 데이터로 할 수있는 기회를 제공하는 것입니다 을 암호화하고 출격시켜야합니다. 그리고이 예를 들어, 암호화 된 메시지의 예입니다. 이와 같은 사실은 실제로 영어로 무언가를 말한다. 그러나 분명히 전적으로 분명 아닙니다. 그리고 우리는 떨어져 감히 지금 눈앞에 올거야 이건 비밀 여기에 메시지가 있습니다. 그러나 컴퓨터의 현실 세계에서 일이 심지어 그들이 그런것 같아 보이지 않는 영어 구문 일. 예를 들어, 여러분이 나 표준 리눅스 또는 Mac에서 찾을 수 있습니다 무엇 옛날 옛적에 있었던 파일에 유닉스 컴퓨터는 암호 파일을했다. 현재, 다른 장소로 이동 된. 당신이 시스템에서 올바른 위치에 본다면, 당신은뿐만 아니라 당신의를 볼 수 있습니다 사용자 이름 또는 시스템에 다른 사람의,하지만 당신은 볼 수 자신의 비밀번호를 암호화 버전입니다. 사실,이 단어 토굴는 다음과 같은 일이 암호화되어하는 것이 좋습니다. 그리고이 임의 문자와 문자와 숫자의 시리즈 등등 만 일반적으로 몇 가지 비밀을 알게하여 해독 할 수 있습니다 - 비밀 단어 비밀 번호입니다. 그리고 실제로, 암호화 궁극적으로 종기를의 예술은 일부의 믿을 수없는 정렬 및 다른 사람이하지 않는 일을 알고. 오늘 좀 더 자세히이 탐구되고 pset에 와서. 그리고 지금 통과 / 실패에 단어. 따라서 특히, 당신의 일부로서 pset 1 어플라이언스에 잠수, 그리고 한 자신에 대한 매우 새로운 세계, 그 좌절감을 실현하고 혼란과 단지 기술적 인 문제가 발생할 수 있습니다. 특히 너무 많은 새로운이 첫 번째 pset가, 그냥받는 것도 혹시 CD와 새로운 환경에서이 모든 비밀의 명령을 잘 알고. 그래서 실제 자료와 자체 프로그래밍에서 별도입니다. 그럼로 존재 근무 시간은 확실히 있다는 것을도 실현 지원 구조. 절에서는이 오는 일요일 시작합니다. 당신은 그냥 기분하는 경우 가장 중요한 것은,이은 없습니다 당신을위한 세상이, 정말 단지 시간이 걸릴 않습니다 알고 있습니다. 그리고 수업을 계획하고 나를 위해 년 전에이 기회가 아니었다 실패 / 통과, 솔직히, 나는 교실에서 발을 설정하지가 못했어요. 그리고 당신은 때까지를 변경할 말 코스의 다섯 번째 월요일 수 있습니다. 지금의 가장자리에면을 알고 그보다는 머리 다른로 물은 모두, 확실히 그냥 통과 / 실패 변경해 않습니다. 다시 일을 계획하고 하버드에있는 여기 정말이 문화가 아닙니다 모든 사람들이 정말 달성하거나 overachieve 싶은부터 실패 / 전달합니다. 솔직히이 밖에 무언가를 시도하는 훌륭한 방법입니다 않을 수도 있습니다 당신에게 익숙합니다. 그리고 당신은 아마도 매우 훌륭한 대부분의 경우에서 뭘하고 그만 둘거야 당신의 놀라운하게 해주죠. 그리고 더 구체적인 용어로, 전 않습니다 일반적으로 실패 / 통과 생각 당신은 넣어했다면, pset 0 경험했을 수도 특히 에 10시간, 15 시간, 25시간 일부 pset에 - 그리고 당신은 나온거야 벽에 머리, 그리고, 늦은 밤 슈퍼 점점 하지만 당신은 방법의 90 %가 pset를 취했습니다 당신이 방금 한 가지를 이해 할수 알아 - 당신은 정렬 할 수있는 정말,이 같은 클래스의 가장자리를 벗고 실패 / 통과 행복한 괜찮 말을, 나는 완벽하지 알아. 하지만이 일에 내 엉덩이를 내려했다. 나는 결국 곳과 매우 행복 해요. 그리고 그 패스가에 대한 기대에 부응 / 실패합니다. 따라서 염두에두고 않습니다. 괜찮아요. 하버드 대학교 (Harvard University) Wi-Fi 접속 설비를 사용하기 위해 노력 한 분들이 알 수 있도록 그 주위에 떠 CS50 SSID가 있다는 Wi-Fi 연결하면 더 좋은 행운이있을 수 있습니다. 당신이 시도하려는 경우 - 그것은이에 대한 암호있는 약간의 아이러니 더 나은 속도에 대해이에 연결하고 더 나은 없다고 알려 - 8이기 때문에 한, 둘, 셋, 넷, 다섯, 완전히 들어가 8 5 명 더 안전. 당신은 Wi-Fi 인터넷 접속 암호를 필요하면, 무선 여기 CS50에 연결합니다. 하나, 둘, 셋, 넷, 다섯, 여섯, 일곱, 여덟. 그래도 간헐적 연결 문제가 있다면 CS50에 게시물이 토론 우리는이 공간에 대해 알 수 힘을 알려드립니다. 괜찮아요. 특히 팬들 또는 소녀 분들을위한 그래서 빠른 맛보기, 모든 것을 애플. 내가 다시 몇 년에서 파는 것은 여기 ilock.c이 파일이었고, 단지에 종류의 더 구체적이고 더 복잡한 수 있도록 더 많은 기본적인 C의 일부 우리가 만들고있어 프로그램. 그래서 ilock.c이 파일을 열었습니다. 오늘의 강의 페이지에서 사용할 수 있습니다. 왼쪽 측면에서, 당신은 기능의 긴 목록을 참조하십시오. 따라서이 책을 쓴 친구, 기능을 많이 썼다 단지 주 이상. 그는 여기 도서관의 전체 무리를 사용했습니다. 그리고 우리가 스크롤을 시작하면 무슨 일이 실제로 것은 매우 우선, 저는 믿습니다, 원래 아이폰에 균열. 당신이 원래 아이폰을 본때를 보여 싶었을 때, 어느 untether을 의미합니다 는 AT & T 실제로에서의 특별한 소프트웨어를 설치하고 일을 애플은 사람들이하고 싶지 않았어 - 글쎄, 누군가가 악용 할 수 있습니다 정확히 파악 할 수있는 시간이 걸렸습니다 애플의 소프트웨어의 소프트웨어 결함, 실수, 버그. 그래서 ilock.c 태어났다. 당신은 컴퓨터에 컴파일하고 아이폰에 설치하는 경우 USB 케이블, 말을 통해 컴퓨터에 연결 된이 당신에게 줄 거라 아이폰과 해에 대한 관리자 또는 루트 권한이 정도는해야 당신이 원하는대로. 그리고이 매력적인 고양이와 마우스 애플 사이의 게임과가있는 것 같은데 그와 같은 특히 세계의 나머지는 많은 기업처럼 잠금을 시도 자신의 물건 만 그들이 의도 뭘 할 수 있도록. 그러나이 같은 사람들 덕분에, 낮은 수준의 이해 자세한 내용과,이 경우, C 프로그래밍과 친숙한 구조의 많은 우리가 게임을 시작 한, 당신은 정말을 활용 할 수 있습니다 당신이 적합 일부 법인 일 필요는 없습니다 표시 방식으로 하드웨어. 따라서 예를 들어, 나는이 무엇을하고 있는지 몰라. 그러나 GetVersion 아주 간단 소리. 그리고이 사람이 쓴 기능입니다 것처럼 보인다. 인수로 정수의 일부 종류를 가지고, 아무 것도 반환하지만,하지 않습니다 조건 경우, 조건 경우, 여기를 루프와 함께 루프에 나타납니다 깨, 그리고 어떻게 든 버전 번호에 관한 것이다. 우리는 아래로 스크롤하면 - 이러한 키워드의 많은 새로운 수있을거야, 그리고이 경우에도 여기에 기능 많은 걸 우리가 지금까지 본 적이 있사으로 표시하지 않을 수 있습니다 학기 코스 - 하루의 끝에서, 우리가했던 것과 동일한 규칙과 논리를 다음과 지금까지와 경기를하면서 말이죠. 그래서 귀하의 아이폰 3S로 나 4S 나 곧 95이 일 해독하기까지 너무 오래되었습니다 하지만 우리가했던 것을이 대단히이 세상에서 파생하고 있다고 에 잠수 해. 그러니 좀 더 간단한 예를 살펴 보자. 이 사람, 그냥 구문 예열 있으며, 다른 데이터하게 할 수 이건 그래서 우리가 얘기했지만 정말 C.에서 볼하지 않은 유형 파일 positive1.c했다. 그리고 상단의 의견에 따라이 단지 사용자가 제공하는 요구 양수. 그래서이 사용자 상호 작용에 대한 좋은 것입니다 DO-동안 루프의 예를 들어 당신이 뭔가를 할 사용자를 말할 필요 프로그램. 그리고 그들이 협조하지 않으면, 당신은 그들을 소리 또는 입력을 거부합니다. 사용자가이 같은 점에서 사건이, 24 오랫동안을 통해 라인에게 19을 갈거야 나에게 긍정적 인 번호를 부여하지. 지금 여기에 세부 행 18, 내가 왜이 모든 위의 n을 선언 않았습니다 루프 구조는 오른쪽 라인 22 다음에 반대하는 곳 실제로 N을 주겠나? 응? [안 들리게] 데이빗 J. MALAN : 그래, 범위의 문제. 그리고 속인의 임기에 범위에 무엇을 참조합니까? 응? [안 들리게] 데이빗 J. MALAN : 당신이 더 크게 조금 말할 수 있습니까? 스피커 1 : 특정 변수에 액세스 할 수 있습니다 곳. 데이빗 J. MALAN : 좋아요. 당신이 특정 변수에 액세스 할 수 있습니다 곳. 그리고 일반적으로 엄지의 규칙은 지금까지 왔습니다 그 일부의 범위 변수는 사용자가 본 것을 가장 최근에 중괄호에 의해 정의됩니다. 그리고이 경우에, 전 라인 22 n을 선언하는 실수를 한 경우 그 줄 일 것입니다. 나는 정수를 것, 그리고 라인 22에서 해당 변수 N에 넣어 것입니다. 그러나 어떤 코드의 라인은 지금 무슨 말을하는지 모를까요? 25 그래서,이 경우에는, 그 밖에 떨어지면 때문뿐만 아니라, 24 거였어 중괄호의. 그래서 아주 쉽게 간단하게 선언하여 그냥 좀 성가신의 비트 만 해결 기능 자체의 변수 이외의. 이제 우리는 오늘 오후에 볼 수 있습니다, 당신은 한 걸음 더 나아가 이동할 수 있습니다. 그리고 당신은 조금이라도 게으른 얻을 수 - 이은 일반적으로 권장 할 수 없습니다 - 하지만 당신이 게으른하고 변수를 세계적으로 넣어, 그래서하지 말을 할 수 내부 함수의 아닌 내부 루프의하지만 파일 자체에서 외부 I 줄 15 여기처럼 모든 기능을 당신이 썼어요. 그러나 일반적으로시 찌푸리게하고 있습니다. 우리가 해드립니다됨에 따라, 이에 대해 때때로 다른 문제에 대한 솔루션 실현 결국 참조하십시오. 그럼 지금부터, 우리는이처럼 갈거야. 하지만 우리가이 그냥 우리 자신을 표현 시작 다시 작성할 수 있는지 보자고 조금 다르게. 그래서이 프로그램은 단지 명확하게하기 위해, positive1입니다. 내가 여기서 가서 내 터미널 창에 입력 positive1을 보자. 그래, 컴파일됩니다. 나는 Enter 키를, positive1을 실행하는거야. 난 당신이 나에게 양의 정수를주는 요구합니다. 나는 -1 말합니다. 그건 작동하지 않았다. 0, 99, 그 일 것 같습니다. 아닐지도 가장 엄격한 테스트합니다. 하지만 적어도 우리가 옳은 궤도에 있다는 좋은 정신 검사입니다. 이제 내가 가서이 버전의 두 열 수 있습니다. 이미 다른 무엇입니까? 이 같은 일을 구현합니다. 하지만 분명히 다른이 시간으로 무엇을 어때요? 네, 녹색 있으므로 BOOL. Gedit은 BOOL로 알려진 녹색이 키워드로 강조하고 있습니다 이는 데이터 형식입니다. 이것은 C.의 모든 버전에 내장 오지 않는 당신은을 포함시킬 필요가 특정 라이브러리입니다. 우리의 경우, 나는 CS50 라이브러리를 포함 있도록 BOOL에 액세스 할 수 있습니다. 그러나 라인 18에, 우리는 감사 불리는 Boolean 값을 갖고있는 것 같다. 그래서 난이 아무것도 전화를 수 있습니다. 하지만 난 그냥 가지 어떤 의미 의미를 전달하는 것이 감사했다. 그래서 처음에 라인 18, 나는 분명히 감사하지 않아서 감사 부울 값은 한 줄에 18에 false로 초기화됩니다. 그리고, 그것은 단지 내가 23을 통해 라인 (21)에 여기까지 해낸 것은 한 것 같습니다 가지 내 논리를 재 작성. 더 기능적으로 다른 그럼. 사용자가 제공 한 INT는보다 클 경우 그러나 라인 (22)에 지금은 확인 0, 그럼 내가 단순히 true로 감사의 값을 변경합니다. 그리고 왜 그런 짓을합니까? 라인 25, 나는 명백하게 상태를 점검거야 때문입니다. 감사가 거짓 인 동안이 루프를 수행합니다. 그것이 최소한이기 때문에 그래서 버전을 하나의 대안으로이 제안 좀 더 직관적, 아마도. 그것은 영어에 근거 조금 더 있습니다. 감사가 거짓 인 동안 감사하지 않거나면서 다음을 수행하십시오. 그리고 이번에는 너무 무리가 사용자가 입력 한 내용 기억 상관 없어요 때문에 통지에 아무런 변수 n은 없습니다. 그래서 사실은, - 거기에 약간의 하얀 거짓말. 우리가의 하단에 가면 기능적으로, 프로그램은 약간 다릅니다 이제 내가 n은 무엇 기억 안 때문입니다. 하지만 여기에 보여주고 싶었도 우리가하고 GetInt을 본 적이하더라도 GetString는 지금까지 그래서 등호의 오른쪽에 사용되는 우리는 엄격하게 필요가 없습니다 값 기술적를 기억 해요. 어떤 이유로 당신이 방금 값을 저장 상관하지 않는 경우, 당신은 원하는 값을 확인하기 위해 단순히 GetInt 개방으로 쓸 수 있다는 것을 괄호 가까이 괄호. 우리가 말한 적으로 그 함수는 값을 반환하는 것이다. 이 정수 당신을 돌려 줄거야. 나는 99에 입력 할 때 그리고 당신은 정신적 GetInt, 이런 일이 있었는지 생각하면 숫자 99를 반환합니다. 그리고 개념적으로, 내 코드가 실제로 있었다 것처럼입니다. 99이 0보다 실제로 더 크다면 다음 감사 사실이된다. 지금 감사이기 때문에 그런 줄 25 우 실현, 우리는 끝났어. 그리고 라인 (26)에서, 우리는 단순히 말, 무슨 일이든, 양의 정수 주셔서 감사합니다 할 일. 지금 말하자면, 여기 약간의 구문 설탕을 해보자 구. 우리가이 세 번째와 마지막 변화와 함께이 줄 25 청소 할 수 있는지 보자 볼 positive3 인치 이제 어떤 코드의 라인 만 차이가? 그래, 25. 그리고 우리는 아직이 트릭을 보지 못했습니다. 하지만 우리가 무엇을 나타냅니다 월요일에 느낌표를 봤어요? 따라서, 또는 부정 없습니다. 그래서 Boolean 값을 가지고 값을 플립. 참은 거짓이된다. 허위 사실이된다. 그래서 내가 제안 것이라고하는 방법을 좀 더 직관적도 있습니다 난 아직 false로 감사 초기화하기 때문에 코드를 작성. 난 여전히 다음을 수행하십시오. 그 때가되면 나는 true로 감사 설정합니다. 하지만 지금은 정말 그냥 구두로 왼쪽에서 오른쪽으로이 코드를 번역 할 수 있습니다 감사하지 동안. 탕, 또는 느낌표, 그래서,하지의 개념을 나타냅니다 때문에 동안 감사 없습니다. 그럼 다시, 우리는 본질적으로 다른 새로운 개념을 도입하지 않았습니다. 우리가 스크래치와 함께 연주 할 때 우리는 다시 논리에 대해 얘기했습니다. 그러나 우리가 우리의 코드를 작성할 수 깨달았 여러 가지. 당신은가는 길을 알아내는 어려움을 겪고 일종의 너무 특히 pset1에있는 경우 일부 프로그램을 작성, 승률은있을거야 당신은 운이 있기 때문에 귀하 께서 일어날 수있는 솔루션의 수입니다. 예를 들어,이 프로그램의도 간단한위한 단지 3입니다. 괜찮아요. 그리고 이제 월요일에 기억, 우리는 반환 값이 메모를 떠났다. 그래서 처음으로, 우리는 그냥 메인이없는 프로그램을 작성 또한 여기 쓴 자신의 사용자 지정 기능이 있습니다. 그래서 34를 통해 라인 31에, 큐브 기능을 구현했습니다. 그것은 복잡한 없습니다. 그것은이 경우, 그냥 배 배입니다. 하지만 그런 일에 대해 중요한 것은 내가의 형태로 입력을 듣는데 것입니다 나는 배 배의 형태로 출력을 돌아가는거야. 그래서 지금은 전화를, 나 printf 혼자에 익숙해 많은처럼 수 있습니다 큐브 함수를 호출하여이 함수. 그리고 큐브 기능은 일부 입력을 걸립니다. 그리고 큐브 기능은 일부 출력을 반환합니다. 그리고 반대로, printf 뭔가를 했어요. 우리가 아끼던 아무 값도 반환하지 않았습니다 -에도로 옆, 그것은 값을 반환하지 않습니다. 당신은 일반적으로 그것을 무시합니다. Printf 뭔가 했어요. 이 화면에 인쇄의 부작용했다. 여기에 대조적으로, 우리는 큐브 기능이있는 실제로 뭔가를 반환합니다. 그래서 일반적입니다 - 이 익숙한 사람들을 위해, 그것은 매우 간단 좋습니다. 그러나 입력을 전달하고 점점의 생각을 가진 적은 알고에 대한 다시 출력, 그냥 뭔가 슈퍼 간단한 해보자. 편안한 사람이 간략하게 무대에 올 수 있을까요? 당신은뿐만 아니라 당신에게 카메라로 편안하게해야합니다. 그래. 그래, 이름이 뭐야? 켄 : 켄. 데이빗 J. MALAN : 켄. 좋아, 켄. 어서 올라 와요. 그럼 켄 여기 종류의 함수가 될 것입니다. 그리고가 진행이 짓을 보자. 의 조금 고급을 보자. 만나서 반가워요. 중앙 무대에 오신 것을 환영합니다. 괜찮아요. - 여기서이 버튼을 눌러 보자. 괜찮아요. 그래서 여기 당신은 현대적인 칠판을 갖추고 있습니다. 그리고 내가하는 것은 예를 들어, 주요 기능입니다. 그리고 내 손에 아이 패드가 없습니다. 음, 사실, 그렇게 할 수 없습니다 - 정말하는 방법을 기억하지 않습니다. 정말 좋은 필적이 없습니다. 그리고 따라서, 난 당신이 나에게 화면에 뭔가를 인쇄하고 싶습니다. 그래서 기본 프로그램 거예요. 그리고 내가 당신을 가지고 갈 건데 것은 내 글자에 작성하여이 말을하고 그런 다음 당신에게 의견을 전달. 이 운동은하지만 있도록 바보,이 함수의 개념 및 전화 기능이에 기능 정말 종기를 반환. 나는 주입니다. 난 그냥 화면에 ( "무언가") printf 작성했습니다. 이 프로그램을 실행거야. , 또는 매개 변수 - 그리고 가능한 한 빨리 printf라는지고, 하나의 인수를 때때로 - 큰 따옴표 사이에 있습니다. 여기 인수입니다. 나는 켄에 통과거야. 이제 그는 그 분명 몇 년 전에 몇 가지 수를 기록 블랙 박스입니다 만 화면에 물건을 인쇄하는 방법을 알고 있습니다. 따라서 실행합니다. 그건 나쁘지 않아. 그럼, 아주 좋아. 이제 켄이 실행 이루어집니다. 그가 나에게 뭔가를 다시 건네해야합니까? 그래서 우리는 지금까지 본 적이 없었 네. 다시 말하지만, printf 실제로 숫자를 반환 않습니다. 하지만 우리는 우리가 그것을 사용한 적이 있기 때문에 지금은 그 방법을 무시하는거야. 따라서 켄하기에 그입니다. 그리고 지금은 메인은 실행하기 위해 돌아 오면 - 메인은, 코드의 라인 때문에 다시 프로그램의 제어 인수 printf, 실행 이루어집니다. 그리고 우리는 다른 줄이 무엇이든 실행의 방법에 대해 이동합니다. 괜찮아요. 그래서 지금의이 약간 다른 예를 봅시다. 그리고 여기에서이 시간은,의 처음에 이곳에 화면을 지우 보자. 그리고 이번에는, 우리는 cubing 기능을 할 수 있습니다. 그러나 이번에는, 내가 출력 값을 기대합니다. 그러니 어서 가서 해주세요. 그래서 저는 말합니다 코드 줄이 X = 큐브 (x)를. 그래서 실제로 자 - 코드, 리콜의 라인은 다음과 같습니다. X = 큐브 (x)를. 그럼이 성공 할까? 그러니 어서 가서 다시 당신에게 흰색 화면을 주자. 그리고있는이 순간에에, X의 값이 내려 지금은 쓸 수 있지 시간은, 한 마디로 유지, 2, 보자 할 수 발생합니다. 그래서, 종이 (2)의 값에 서면으로 작성했습니다 제 값 x가되는 것입니다. 나는 켄에게 넘겨. 켄 : 그리고 난 답을 만드는가? 데이빗 J. MALAN : 예, 그냥 답을 작성하게. 좋아요. 그리고 지금 그가 나에게 뭔가를 반환 할 수 있습니다. 그래서 - 완벽한. 맘에 멋지네요. 이제 그는이 경우에, 8의 가치를 돌려 내줬습니다. 그리고 어떤 역할을합니까? 음, 사실, 보자. 이 권리를 얻을. 내가 그걸로 뭘해야하지? 지금은이 값을 가지고 실제로 그에 저장거야 메모리에 동일한 비트. 그러나 통지, 여기 어려움을 겪고있는 것 같아요. 어디 실제로 X의 값을 작성하려면 어떻게해야합니까 때문에 조금 혼란스러워? 내가 방금 한 것은 종이 켄 물리적으로 손이기 때문에 그 X 된 값 2를했다. 그리고 실제로, 그 무슨 일이 있었지. 그래서 당신이 함수를 호출 할 때, 그리고 인수에 전달하는 판명 '여러분, 안녕하세요 "를 좋아하거나 당신이 일반적으로, 2처럼 인수에 전달 그 논쟁의 사본을 전달. 그리고 여기 숫자 2를 썼다와 켄에 전달 것처럼, 그해야 아직도 어딘가에서 값이 사본을 가지고 것을 의미합니다. 실제로, 지금은 값이 8 다시이라도 한, 나는 다시 가야하기 때문에 내가 한때 숫자 2를 한 곳에서 RAM 실제로는 8을 적어 둡니다. 따라서 시각적으로 그대로 전달이 개념을 기억 가치의 사본. 켄은 그의 일을 뭔가를 내게 건네 -이 경우, 8과 같은 값입니다. 그리고 나서 그 값에 뭔가 의미있는 일을하고있을 경우 그 주변을 유지하고 싶습니다. 그래서이 모든 긴 전에 모든 너무 익숙한 될 것입니다. 여기이 데모에 대한 많은 켄 감사합니다. 괜찮아요. 아주 잘 했어요. 따라서 궁극적으로 기능의 일부에 관한 그 방법을 알아 보자 우리가했던 짓 전화. 그럼 내가 가서 여기 cubing 예를 다시 되돌려 보자. 그리고 우리가 실제로 더가 나타나기 시작하려는 경우 우리가가는 것을 알 숫자 x가에 전달되는 건 사실 염두에두고 있어야합니다 여기에 실제로 함수에 전달되는 일을 다릅니다. 그러니 다시 복사에 의해 전달이 꽤 될 것입니다 단지 순간에 밀접한 관계가있는. 그럼이 잘못된 아직 작동하지 않는 것을 살펴 보자. 나는 가서 세 번째 버그의 예를 개방하고있는 자연 결함이 있습니다. 그리고는 buggy3라고하며 교환 기능을 구현있어. 그래서 여기에 우리가 x와 y는 임의의로 초기화 된 주요 기능이 각각 1, 2,. 우리는 GetInt를 사용할 수 있지만, 우리는 간단한 운동이 필요합니다. 그럼 1과 2와 같은 하드 코딩입니다. 라인 21 및 22에서, 우리는 분명히 x와 y를 한 줄에 하나씩을 인쇄 할 수 있습니다. 그런 다음, 선 23 일, 나는, 점, 점, 점을 이러한 값을 교환있어 주장한다. 내가 외관상 스왑이라는 라인 24에서 함수를 호출 그 두 개의 인수를 걸립니다. 기능이 두 개의 인수를 취할 것은 완전히 합법적입니다. 우리는 printf 이미 그렇게 봤어요. 따라서 스왑 무리가 x와 y 소요됩니다. 그 이름에서 알 수 있듯이, 내가 그걸가 무슨 바랍니다 것입니다 이 두 값을 교환. 그래서 내가 줄 25 일 주장 교체. 그리고 가정에서 X와 Y를 다시 인쇄이 그들은 실제로 스왑 있었어요. 하지만 실제로이 프로그램을 실행하는 경우 - 나 터미널 창을 열 수 있습니다. 저 buggy3을 보자. 이름에서 알 수 있듯이,이 일은 좋게 끝나지 않을 수 있습니다. 나는 여기서 x는 1 것을 확인할 입력에 빠질 때 때문입니다. y는 2 명입니다. 그리고 아직 프로그램의 끝에, 그들은 사실 지금도 똑같아. 그럼 지금 켄과 함께, 무슨 실제로 무슨 일 시범에 따라? 음,이 스왑 기능에 뛰어 보자. 이 짧은 됐네요. 단지 긴 코드 몇 줄입니다. 그러나 간단한 이야기​​를 바탕으로 근본적인 문제가 무엇 말했 여기까지 켄과? 왜 스왑이 고장이야? [안 들리게] 그렇지. 그래서 우리는 변수, 사본 자체를하지 저장하고 있습니다. 즉, 스왑 분명히 두 개의 인수, 정수 걸립니다. 그리고 자의적으로 a와 b라는. 그리고 여기까지, 나는 각각 1과 2아르 x와 y에 전달했습니다. 하지만 말 그대로 X에 전달 아니야. 나는 그대로 Y에 전달 없어요. 나는 X의 사본와 y의 복사본을 통과거야. 당신이 복사하고 해당 값을 교환 붙여 넣기 것처럼 거의 같은 당신은 실제로 조작하고 싶습니다. 그 I, 프로그램이 실행을 시작하는 경우,이지면 라인, 35, 36 - 나는 그 이야기의이 시점에서, 선 37 때, 어떻게의 가치인가? 이야기의이 시점에서, 선 37,이 시점에서의 값이 무엇입니까? 그게 불과 1이어야합니다. 그래? x는 첫 번째 인수로 전달했기 때문. 그리고이 기능은 임의의, 최초의 인수를 호출합니다. 마찬가지로 Y, 두 번째 인수입니다. 그리고는 그냥 임의로 두 번째 인자 B를 부르고있어. 이제이 이분법은 실제로 매우 간단하게 설명되어 있습니다. 잘 생각해보세요. 우리는 모두 printf 쓴 사람을 만난 적이 있습니다. 따라서 반드시, 그 또는 그녀는 우리의 변수를 30 년 후에가는 아무 생각이 없습니다 호출 할 수 있습니다. 따라서 변수 부르는 구별이있을 당신이 글을하는 기능과 당신이 당신이 함수의 변수를 호출 전화 또는 이용할 수 있습니다. 다시 말해, 나는 x와 y로 내 변수를 작성했습니다. 그러나 다른 사람이 스왑 기능을 작성했을 경우, 그 또는 그녀는 확실히 내 변수를 호출하려고하는지 모르겠 것입니다. 그래서 이름이 이중성을 가지고 왜인지 알고 있습니다. 기술적으로, 나는 우연의 일치하여이 작업을 수행 할 수 있습니다. 그러나 아직도 사본로 전달 될 것입니다. 이건 그냥 쓴 심미적 그 사람 경우 순수한 우연의 일치 일 것 스왑은 동일한 이름을 사용했다. 괜찮아요. 따라서 이야기의이 시점에서, 선 37,은 1입니다. B는 2 명입니다. 그리고 지금은 놈들을 교환 진행합니다. 그럼 우선, 제가 실제로 훨씬 더 간단 해주세요. 나는 코드의 세 라인이 뭘하고 있었는지하지 않습니다. 난 그냥 이렇게 보자. B는를 얻을 수 있습니다. a는 b를 얻을 수 있습니다. 완료. 왜이 논리적으로 깨진입니까? 그것은 바로, 직관적 일 이네요? 따라서 B는된다. 그리고 B가됩니다. 그러나 문제는 라인 37 실행 자마자, 뭐가 것입니다 a와 b의 값을? 1, 같은. 당신이 말을, 사방에서 공격했기 때문에, 당신은 동일 할 수 b를 변경했습니다. 일단 라인 37가 실행되고, 잘 됐네요. 이제이 함수의 숫자 1 내부의 두 사본이 있습니다. 그럼 당신은 줄에 38이라고 할 때, A와 B를 얻을, 잘, 당신은 가지 끝장 났어. 당신은 1 ~ 1 할당 거거든요. 당신은 가지 당신이 신경 썼던 값을 잃었습니다. 그럼이의 원래 버전에, 내가 무슨 짓을했는지 확인합니다. 나는 대신이처럼 보이는 코드의 세 번째 라인을했다. 나는 임시 변수를 선언 - TMP은 매우 일반적인 이름입니다 임시 변수. 그것은 내가의 복사본을 만들고 싶어 일치하는 때문에 정수입니다. 나는 TMP의 내부의 사본을 저장합니다. 일단 라인 37 실행했다 의 값입니다 - 빠른 정신은 체크인 - 1. B의 값은 2입니다. 및 TMP의 값은 1입니다. 그래서 지금은 라인 38 실행합니다. 라인 38 실행되면 따라서 a는 b의 값을 취한다. 그리고 B는 2이었다. 그래서 지금은 2 명입니다. 따라서 이야기의이 시점에서, 2가, B는 2 및 TMP은 1입니다. 이제 논리적으로, 우리는 B에 불과 털썩의 tmp를의 값이 수 있습니다. 그리고 우리는 끝났어. 그래서 우리는 그 문제를 해결했습니다. 불행하게도, 난이 양식에이 프로그램을 실행할 때, 사실은 교체되지 않습니다 어떤 값입니다. 하지만, 왜 명확하게 하는가? 난 그냥 순간 전에서 논리적으로 문제가 해결되었습니다. 내가이 프로그램을 실행하면 다시 한 번,, x와 y는 년 말까지 변경되지 않은 상태로 유지 프로그램의 실행. [안 들리게] 데이빗 J. MALAN : 그래서 우리는 아무 것도 반환하지 않았습니다. 그래서 사실입니다. 때문에 지금까지 좀 문제가 여기가 있다는 사실을 알아하지만집니다, 우리가 돌​​아갈 수 있었던 유일한 방법은 한 가지입니다. 그런데, 여러분은 정말 하나의 값을 반환 할 수 있습니다 C.의 제한입니다 이 경우, 난 여기 갇혀있는 것 같아요 나는 X의 새 값을 반환하거나 수 있기 때문에 나는를 반환 할 수 Y의 새 값입니다. 하지만 모두 돌아 오길 바랍니다. 따라서 간단한 솔루션은 여기되지 않습니다 반환. 그러나 문제는 근본적으로 왜? 우리는 실제로 무엇을 바꿔 치기했을? a와 b. 그러나 a와 b는 우리가이 모든 걸 의미합니다 x와 y의 사본이 있습니다 일 - 우리가 스왑에 대해 얘기 삼분처럼 소비 기능과 이러한 변수의 세. 그리고 그 고립에 완벽하게 올바른, 잘 됐네. 그러나 a와 b의 범위는 여기에 다음 행에 있습니다. 그러므로, 루프처럼 당신은 내가 대한 내부 정수를 선언하는 경우 루프 - 마찬가지로, 함수의이 선언하는 경우 a와 b 안에 작성한, 그들은 그 함수의 경우에만 유효 안에. 어떤 즉시 스왑이 실행 완료 될 때 의미하며 우리는 한 줄에 24 일부터 이동 라인 25 x와 y는 전혀 변경되지 않았습니다. 당신은 변수의 사본을 교환 시간을 낭비. 그래서이 문제에 대한 솔루션이 실제로 비 명백한 것을 밝혀졌다. 이 값을 반환하는 매우 충분하지입니다 우리가 할 수 있기 때문에 하나의 값을 반환합니다. 그리고 정말 같은 시간에 x와 y를 모두 교환하고 싶어. 그래서 우리는 이렇게 돌아 왔 잖아요. 그러나 지금,이 문제는 근본적으로 사실에서 유래 걸 깨닫게 a와 b는 사본을 것을. 그리고 자신의 범위에 있습니다. 음, 어떤 방법으로이 문제를 해결하려고 까. 내가 실제로 돌아 스크롤하게하고 열 네 번째 변형, 보자 이, buggy4. 그리고 이건 어때? 이것은 우리가에 찔린를하기 전에 볼 수있는 비슷하지만 간단 문제 그것을 해결. 이 프로그램은 증가라고합니다. 그리고 분명 라인 18에 1 X 정수를 초기화합니다. 나는 그 x는 1 주장한다. 나는 그 때, 점, 점, 점을 증가 주장한다. 나는 그 증가를 호출합니다. 하지만 라인에서 22 번과 23, 난이 증가 된 주장한다. 나는 여기서 x는 아마, 그게 뭐든지간에 지금 2 주장한다. 그러나이 프로그램은 버그가 있습니다. 문제는 무엇입니까? 응? [안 들리게] 데이빗 J. MALAN : 그렇지. 따라서 x는 라인 18 일 분명히 선언되었습니다. 그 메인의 중괄호 안에 있습니다. 자, 이제 간단한 대답은 잘 x는 여기에 존재한다는 것입니다. 이 라인 32에 존재하지 않습니다. 그래서이 프로그램은 실제로도 컴파일되지 않습니다. 컴파일러는, 내가이 코드를 컴파일하려고 할 때, 나 한테 소리 지르고 것입니다 일부 선언하지 않은 식별자 또는 그 효과 뭔가에 대해. 사실 해보자. 이 buggy4을 것입니다. 저기입니다. 라인 32 선언하지 않은 식별자 X의 사용합니다. 그리고 실제로, 어디이 유용합니다 수 있도록 오늘 더 명시 해 근무 시간과 집에서. 이 cryptically 작성, 좀납니다. 그러나 꽝가 있다는 사실 말은, 우리 외쳤다 buggy4.c : 32:5, 사실은 유용합니다. 이 오류가 문자 위치 5 번 라인 32에 있다는 것을 의미합니다. 하나, 둘, 셋, 넷, 다섯 그럼. 문제가있는 곳 사실입니다. 또한 근무 시간에 집에서 염두에두고, 여기 운입니다. 한 실수 있습니다. 이 수정 상대적으로 쉽게거야. 하지만 당신이 다시 압도적 오류 메시지의 전체 화면 전체를한다면, 맨 아래 하나가 단지의 증상 일 수도 있다는 인식 맨 위의 사람들. 그래서 항상 맨 아래에서 버그를 심판. 당신을 제안하는 데이지 체인 효과가 있기 때문에 당신은 실제로 것보다 더 많은 문제가 있습니다. 내 목표는 x를 증가시키는 경우 그럼 우리는이 문제를 해결 수 있을까? 그게 뭐야? 좋아요. 그래서 우리는 x가 글로벌 할 수 있습니다. 의는 내가 이전에 경고하는 바로 가기를 보자. 그러나 도대체 우리는 단지 빠른 수정이 필요합니다. 그냥 여기까지 정수 x를 가정 해 보자. 그 X 전세계를합니다. 이제 메인은에 액세스 할 수 있습니다. 그리고 증가는에 액세스 할 수 있습니다. 그리고 내가 가서 지금이 컴파일한다. buggy4을 입력하십시오. 이제 컴파일 보인다. 하자 buggy4를 실행하고, 실제로 일 것 같습니다. 이제이이 일 중 하나입니다 - 내 말대로 난 여기 한 것처럼, 난 그렇게 생각하지 않음으로, 그렇게. 일반적으로하기 때문에, 우리의 프로그램은 훨씬 더 흥미로운 얻을 수되고 이것보다 훨씬 더. 그리고 인생의 문제에 대한 해결책이 바로 아 경우, 모든 넣어 파일의 맨 위에있는 변수는 매우 신속하게 프로그램이 뭔지 관리 엄청 시리 어렵다. 이 새 변수 이름을 생각 어려워 져. 이 변수가 무엇을 무엇을하고 있는지 이해하기 어려워 져. 그리고 일반적으로,이 좋은 해결책이 아닙니다. 그러니 이렇게 까. 우리는 여기서 전역 변수를 사용하지 않습니다. 나는 x를 증가시키고 않습니다. 그래서 분명히 수 - 우리가이 작업을 수행하기 때문에 하루의 끝에서, 그것은 바보 같은 이야기 이죠. 그 연산자에 대해 알고, 또는하지 않은 경우하지만 난이 허락되지 않았어요 자체 메인에서 변경하는 방법 다른이, 여기에 켄을 구현 할 수 시간이 아닌 정육면체이 아니라 증가? 어떻게 여기에있는 것을 변경하려면 어떻게해야합니까? 그래. [안 들리게] 데이빗 J. MALAN : 그래, 좋아. 제가 왜 X에서 전달하지 않습니다? 그리고보다는 돌려, 왜 그냥 돌아 X + 1을 안해? 이제 몇 가지만 더 여기 변경해야합니다. 나는 오른쪽 궤도에입니다. 그럼 내가 또 뭘을 조정해야하나요? 다른 사람. 응? [안 들리게] 데이빗 J. MALAN : 저는 증가의 반환 유형을 변경해야 이 무효화 아니니까. 플레이는 아무 것도 반환되지되지는 뜻 이죠. 하지만 분명히, 지금입니다. 그래서이 요구 무엇이든과 일치하도록 int로 변경 사실은 돌아가는거야. 지금 뭔가 다른이 아직 버그가 있습니다. 응? [안 들리게] 데이빗 J. MALAN : 나는 x를 증가 할 필요 건가요? [안 들리게] 데이빗 J. MALAN : 아, 그래서 나는 x를 통과해야합니다. 그래서 여기에이 작업을 수행해야합니다. 프로토 타입 그래서, 여기를 변경해야합니다. 그래서이 정수가 될 수 있습니다. 이 될이 - 음. 사실 난 여기에 버그를 갖추고 있습니다. 의 이거 먼저 문제를 해결 보자. 이 사실은 무엇을해야합니까? 그래서는 정수 뭔가있을 있어요. 그것은 X가 될 수 있습니다. 귀하의 변수 x의 모든 전화를 시작하면 솔직히, 그것은 얻을 수있어 갈수록 명확되는 어떤 것입니다. 그냥 임의로 제에 대해 다른 명명 규칙을 선택 두자 도우미 기능, 작곡 기능. 우리는 전화 할께. 아니면 우리가 전화를 할 수 - 가자의는보다 명시 적으로 even_number 전화하십시오. 그래서 제가 전화 번호는 플러스 1대로 반환해야합니다. 그리고 지금 난 여기 한 한 가지를 변경해야 여기에 다른 것까지. 나는 첫 번째 줄 21 변경하려면 어떻게해야합니까? I는 x에 할당 할 수 있습니다. 그래서 난 증가 x를 호출 할 수 없습니다. 나는에 X의 값을 변경하여 답을 기억해야 왼쪽. 그리고 x는 지금하더라도 왼쪽과 오른쪽, 그거 정말 괜찮 때문에 오른쪽이 처음 실행됩니다 다음 왼쪽에 plopped됩니다 손 건,이 경우 X. 그리고 마지막으로, 이제 쉽게 수정 프로그램입니다. 이것은 단지 어떤 아래로 일치해야합니다. INT 번호입니다. 괜찮아요. 정말 바보 같은 기능에 대한 변경 사항의 전체 무리 그럼. 하지만 우리가 점점 더하고 싶어한다고 일 대표. 그럼 buggy4을합니다. 어딘가 실수했습니다. 오, 맙소사. 다섯 실수 같은 여섯 줄 프로그램입니다. 따라서 문자가 줄 18 무슨 5의? 괜찮아요. 그래서이 정수를 선언해야합니다. 괜찮아요. 그러니 다른 오류를 왕창 보자. 오 이런 세상에. 19, 18, 21. 그러나 다시, 그냥 화면을 깨끗하게 - 컨트롤 여기에 L - 재 실행 꽝. 다섯 문제는 실제로 그 하나입니다. 이제 입력, 어디 buggy4을 실행할 수 있습니다. 휴. X가 제대로 증가되었습니다. 괜찮아요. 숫자를 증가하는 방법에 대한 질문? 응? 스피커 2 : 왜 당신이 지금 변수에 숫자 x를 변경할 수 있다는 것입니다 이름과 당신이 무슨 뜻인지 알 겠지? 데이빗 J. MALAN : 좋은 질문입니다. 그것은 방금 번호를 x를 변경할 수 있으며 프로그램이 알 수있는 방법입니다 바로? 그럼 다시,이 추상화이라고 생각합니다. 나는 주이고 켄이 증가하는 경우 따라서, 솔직히, 난 상관 없어 켄은 그의 아이 패드 부르는. 그 사람이 자신의 구현과 관련있는 건 전화를하든 상관 없어 이 기능의. 그래서이 I, 메인은하지 않는 구현 세부 사항입니다 신경해야합니다. 그리고 단순히 전화 번호가 여기, 지속적으로 내부의 기능을 변경 여기 번호, 그건 내가 다시 컴파일로 너무 오래 걸립니다 전부입니다. 우리의 많은 분들을 운전과 함께 - 당신이 생각하는 경우 말하자면 것 같아요 왔다, 또는 심지어 차를 운전 한 경우 라이센스 - 우리 대부분은 자동차 후드 아래에 어떻게 작동하는지 모르겠어요. 당신이 후드 우리의 대부분을 열면 그대로 - 자신이 포함 - 정말 우리가보고 알고하지 않을 수 있습니다. 당신은 지금이 같은 물건을 느낄 수 있습니다듯한 느낌. 그러나 우리는 정말 자동차가 어떻게 작동하는지 신경 필요가 없습니다. 우리는 상관 할 필요가 없습니다 어떤 내부의 막대와 피스톤 및 케이블의 모든 차를 실제로 수행 할 수있다. 당신은 피스톤 부르는 같은 상관 없습니다 그래서 여기에 이​​번 케이스는 아니군요. 같은 생각. 응? [안 들리게] 데이빗 J. MALAN : 변수 XA의 순간 더 많은 용도는 전에가있을 경우, 너, 프로그래머, 어디에나을 변경해야합니다. 아니면 말 그대로, 파일, 메뉴를 누른 다음 찾기 / 바꾸기 수 그런 일. 하지만 당신은 이러한 변경을 직접해야 돼 있습니다. 당신은 일치해야합니다. [안 들리게] 데이빗 J. MALAN : 여기 같은 특정 순서? 이 였다면 다른 번호를 INT? 그래. 이 함수를 호출 할 때 그럼 순서는 중요. 나는 무언가를 쉼표 뭔가 함께 증가를 호출 한면 직접 매핑가 있습니다. 제목이 무엇이든 첫 번째 변수는, 첫 번째의 사본을 만들어 여기에 인수입니다. 죄송합니다,이 괄호 안됩니다. 두 번째와 두 번째 인수 라인 업. 주문 그럼, 그래, 중요합니다. 괜찮아요. 죄송하지만 지금은 거기 도착하는 먼 길을했습니다. 다른 질문? 괜찮아요. 그래서 우리가 실제로 무슨 일이 벌어지고 있는지에 대한 그림을 그릴 수없는 경우 보자 여기에 후드 아래, 말하자면합니다. 그래서이 컴퓨터의 메모리를 나타낼 수 직사각형입니다. 최소한 메모리가 작동하는 방법이나 RAM의 작동 방식 모를 않더라도 당신이 한 움큼 요즘이 있다고 가정합니다. 당신이 그 메가 바이트있어. 당신은 기가 바이트있어. 그리고 우리는 바이트 방금 뭐 것을 주 제로에서 알지? 8 비트. 좋아요, 그럼 8 0과 했죠. 컴퓨터가 요즘의 RAM 공연, RAM의 두 기가되어있는 경우, 당신은이 메모리 억 ~ 2 억 바이트, 또는 약 8,000,000,000 또는 16000000000 내 컴퓨터의 비트. 지금 작은 털 윌리의 예와는 달리, 그것은 자기 입자가 아니야 일반적으로 더 이상은. 점점 더, 노트북에서 적어도, 그것은 고체 상태 드라이브, SSDs, 그건 단지 어떤 부품을 이동 없습니다. 다 전자입니다. 그것은 사용하는 모든 전기입니다. 그러니 그냥 하나 또는 두 개의 대표로 직사각형의,하지만 생각 당신이 가지고 메모리 기가 바이트. 그래서 메모리의 덩어리입니다. 지금 컴퓨터 과학의 세계의 오프 분할 덩어리가 있죠 메모리는 다른 일을합니다. 이 컴퓨터의 RAM 인 경우 그럼 예를 들어, -로의 제안 이 사각형은 - 그래서, RAM의 상단에, 국제 대회에서 그 방법을 찾아 변 말하자면, 텍스트 세그먼트라는 것을 일반적입니다. 그 시절에는 자네가 컴파일 한 0과 사랑하는 사람들이 있습니다. 그래서 우리는 a.out가 무엇인지에 후드 아래 보았다했을 때, 모든 0과 사랑하는 사람들 - 당신이 프로그램을 실행하면, 이러한 0과 사랑하는 사람들은 하드에서로드되는 RAM라는 걸에 거리에 있습니다. 그리고 RAM에, 그것들은 상단에 넣어하고 있습니다. 지금 한편, 다른 일이 있습니다. 초기화 데이터, 초기화되지 않은 데이터입니다. 메모리의 저 두 swaths은 전역 변수를 참조하는 당신은 자주 사용하지 않습니다. 당신이 있다면 때때로, 그들은뿐만 아니라 거기에 결국. 그런 다음 다른 물건이 있어요. 우리가 많은 시간을 할애하지 않습니다 환경 변수. 하지만 두 가지 중요한 일들은이를 통해 다시 올 것이다 학기 스택과 힙. 위한 프로그램을 실행 할 때 사용자 컴퓨터의 메모리의 대부분은 예약되어 뭔가가 스택을 전화 뭔가가 힙을했다. 그리고 우리는 오늘날 힙에 대해 이야기하지 않을거야,하지만 우리는 것 스택에 대해 이야기. 그리고 스택은 식당처럼의 영상을 만들어 보도록하기위한 것입니다 어디 식사 메이 하우스에서 쟁반, 또는 원하는 당신은, 할 일 식당 홀 직원은 매일 청소. 그들은 최대의 층에서 올려 쌓아. 그리고 마찬가지로 메모리에,에 뭔가를 넣어의 생각이 스택에 뭔가를 넣어, 스택에 뭔가를 넣어, 스택. 그리고 우리는이 무슨 뜻이에요? 음,,이 사진의 바로 아래쪽에 들어 컴퓨터의를 확대하자 RAM, 다음을 제안합니다. 그것은 당신이 a.out과 같은 프로그램을 실행하거나 인사 할 때 무엇이​​든 밝혀 이 프로그램은, 당신이 작성한 것입니다 다시 그 0과 사랑하는 사람들은 하드 드라이브에서로드됩니다 - 어떤 장기 저장, 당신은 플러그를 뽑아 경우에도이 유지 - RAM에로드. RAM은 하드 드라이브보다 빠릅니다. 그것은 하드 드라이브보다 작은 크기입니다. 당신이 그들을 실행하는 동안 프로그램이 사는 곳 있잖아. 그래서 더블 Mac이나 PC에 프로그램을 클릭합니다 - 그것은에서로드있어 RAM에 하드 드라이브. 이 RAM에로드 마자 0과 사랑하는 사람들은,가는 길 상단에 이동 텍스트 세그먼트 소위. 하지만 최대한 빨리 당신의 프로그램이 실제로 시작으로 주요 실행 함수가 호출됩니다. 그리고 주, 우리가 본대로,들은 지역 변수가 있습니다. 그리고 ints와 문자열과 문자와 같은 수 있습니다. 그러므로 당신이 작성한 것을 프로그램 또는 가지고있는 프로그램 경우 더블은 주 안에서 몇 가지 변수를 사용하여 클릭, 그들은에 도착 메모리의 스택의 바닥은 너무 말을합니다. 이제 더 구체적으로,이 사실은 무엇을 의미합니까? 이것은 단지 의미 우리는 일을 수 일이 생길까 - 귀하의 컴퓨터에 번호를 RAM의 바이트를하게되면 알이 이 바이트 숫자 0이 될 수 있습니다. 이 바이트 숫자 하나, 둘, 셋, 넷, 다섯, 여섯, 모든 일 수도 좋아하도록하는 방법 - 2000000000 거기에 상단에있는 모든 방법 것이다. 다시 말해, 우리는 바이트의 관점에서 RAM 또는 메모리에 대해 이야기, 그 그 사람이 각각의를 수에 어떤 결정했음을 의미 메모리의 그 덩어리. 그래서 당신은 정수 32 비트가 필요하거나 당신은 숯불 8 비트, 어디서이 필요합니다 그들은 메모리에 결국합니까? 그럼 개념적으로, 그들은 그냥이의 하단에 도착 점은 스택을했다. 주이 기능을 호출하면 그런데 지금은 흥미로운 것은 있습니다. foo는, 그냥 임의의 이름이라는 기능을 가정 해 보겠습니다. 메모리의 스택의 하단에 어떤 일이 벌어 질까 주입니다. 푸 지금은 메모리에 메인의 상단에 놓입니다. foo는 개념적 위의 종류 결국 않은 지역 변수 있도록 메인에있는 그. foo는이 바라는 또 다른 함수를 호출하면 그 변수는 여기서 끝. 바는 여기 여기에 다른 뭔가를, 여기 호출합니다. 그래서 프로그램을 실행하는 방법에 대한 흥미로운 것은, 당신이 함수를 호출된다는 것입니다 그리고 그 함수는 함수를 호출하고, 그 함수는 함수를 호출하는 것처럼, 당신은 메모리 기능이 스택을 구축 할 수 있습니다. 만 함수가 반환되면 그 메모리를 다시 나올 않습니다. 따라서 컴퓨터 프로그램에서 메모리가 부족 할 수있는 가장 쉬운 방법 중 하나가하는 것입니다 돌아 오지 않을 기능을 작성합니다. 따라서 예를 들어, 어디를 많이 보여 보자 의도적으로 버그 프로그램입니다. 내가 가서 # , int는 주를 (무효)를 포함 하죠. 그리고 그렇게 할거야하면서 아마도 절대 그런 일 없을 (2> 1) 우리 변경할 수 있습니다. 그리고 내가 지금 가서 printf하자. 사실, 그 이하 시각적으로 재미있을거야. 이 작업을 수행하자. INT를위한은 (i = 0; 전> 0). 이 실수를하자, 내가 + +. 여기의 printf하지 맙시다. 의 내가 설교 한 것을 연습 보자. 의 여기 방법을 보자. 무효 합창, 우리는 INT 내가 말할 수 있습니다. 그리고 나서 printf, 말할거야 - 오, 그럼이 더 재미있게 만들어 보자. 의는 실제로 전혀 아무런 내용도 출력되지 보자. 그냥 이렇게합시다. 합창은 (i). 괜찮아요. 때문에 그래서이 버그인가요? 내가가는대로 프로그램이 실제로 아무 짓도하지 않기 때문에이를 만들고 있어요 관심. 하지만 그게 목표 없습니다. 목표는 누구의 주요 기능 뭐 확실히을 수행하는 프로그램을 작성하는 것입니다? 자체를 호출합니다. 실제로, 우리는 루프를 필요하지 않습니다. 가자는 정말의 시력을 잃지 않도록으로 너무이 단순화 기본 버그. 주요 통화 합창 일부 합창을 노래합니다. 그럼 내가 멍청한 짓을 했어, 그리고 내가 생각 때문에 합창 통화 합창을했다 다른 사람이 어쩌면를 구현하려고했습니다. 그리고 이제이 아직 컴파일하지 않을 수 있습니다. 나는 무엇을해야합니까? 제가 프로토 타입을 필요 기억 해요. 그래서 여기 공극 합창 (INT i를)를이 필요합니다,. 그래서 지금, 여기 내려 갔는데 - 실제로, 그럼 더 큰 창을 사용할 수 있도록. 가 진행하고 합창을 보자. 가 진행하고 합창을 보자. 미확인 declarer 전을 사용하십시오. 오, 바보 같은 짓이었다. 우리는 인자를 필요하지 않습니다. 그냥 이렇게합시다. 우리는이 방법을 시작했습니다 기원합니다. 그것은 쓰기 훨씬 쉽게 프로그램이었습니다. 그래서. 지금의 내 터미널 창, 재 운영 꽝로 가자. 여기 우리는 간다. 그건 정말 빠른 데요. 무엇 실제로하지만 일이 있었죠? 음, 지금은 인쇄 행을 추가합니다, 그래서 우리는 볼 수 있습니다. 그럼 내가 printf한다고 가정 해 보겠습니다, 그럼, 난 여기에있어. 자, 어떤 변수는, 우리는 그처럼 떠나 없습니다. 나를 다시 실행합니다 봅시다. 나를 다시 실행 합창 보자. 그리고 어서. 계속 해요. 옆으로, 왜 아직 추락하지 않았나? 세분화 잘못 전에 매우 빨리 일어났다. [안 들리게] 데이빗 J. MALAN : 그렇지. 그래서 인쇄 할 시간이 걸립니다. 그것은 단지 컴퓨터의 부분에 더 많은 노력이 소요됩니다. 그리고이 있습니다. 세분화 잘못이야. 그렇게 빨리 프로그램이 실행 얼마나납니다. 당신은 아무것도, 슈퍼 빠른 인쇄를하지 않은 경우. 어떤 일이 벌어지고 있기 때문에 그러나 우리는 여전히이 분류 오류 있나? 글쎄, 당신은 컴퓨터의 메모리가 배치되는 방법이 생각해 보면 메인으로 발생합니다. 하지만 여기 - 우선은이 코러스를 호출하고이 합창 전화 할게 있어요. 난 지금 내 미학을한다면 지금이 그냥 합창 말 것입니다 코러스, 합창, 합창, 합창, 합창, 합창, 광고 에드. 그리고 결국, 무​​슨 일이있는 거에요? 큰 그림 그대로이 경우, 어떻게는 개념적 어떻게됩니까? 스택 오버런 힙. 또는 더 나쁜, 당신 만의 텍스트 세그먼트를 포함 모든, 오버런 프로그램을 대표하는 0과 사랑하는 사람들. 즉,이 게임은 정말 슈퍼, 슈퍼 좋지 않습니다. 그래? 당신의 프로그램은 통제 불능 몰락했다. 당신은 당신 때문에 바보의 모든 의도 것보다 더 많은 메모리를 사용하는 이 경우 실수. 또는이 경우 아주 신중하게 수행 기능 자체를 호출. 이제이 모든 나쁜 아닙니다. 자신을 호출하는 함수는 실제로 큰 힘을 가지고 당신은 올바르게 사용하면. 나는 제대로 여기를 사용하지 않았습니다. 그래서이 모든 나쁜 아닙니다. 하지만 실제로는 자신을 호출하는 절대 멈추지 있다는 사실이 매우 중요한 요소입니다 여기에이 프로그램의 약점. 어디 우리는이 모든거야? 음, 정말 무슨 일 이죠? 제가 증가 함수를 호출 할 때, 우리가 그 예에서 뭐하고 것처럼 난 내가 통과 한 같은 값을 제가 전화 번호 하나의 복사본을 전달합니다. 따라서 다음과 같은 문제가 발생합니다. 그러니 증가의 예에 가자. 그리고 여기이 남자. 그래서 여기 실제로 일어나고있는 일이지. I는 증가했는데, 나는 어떤 pictorially, X에서 통과 할 때 이곳에서하면이 있습니다 - 여기 저장된 1의 값이, 나는 실제로 증가를 호출하는 경우, 그 지금 코러스라고합니다 - 그래, 그게 날 여기 밀어 내고있어. 그럼이 증가이라고 불러. 그리고 우리는이 다음 함수가 될거야 건지 모르겠어요. 그래서 실제로 일어나는 것이 주요 어딘가에 여기있어, 내가 덩어리가 숫자 1을 저장되는 메모리. 제가 증가를 호출하면, 제가 메모리의 또 다른 덩어리를 사용하여, 지금이야 1의 사본을 갖추고 있습니다. 그 가치를 증가 할 때,이 2가됩니다 - 끔찍에 기록 여기에 화면. 그런데, 어떻게 증가를 반환하자마자 어떻게됩니까? 이 메모리가 단지 운영 체제로 전달됩니다, 그 의미 모든 당신은 아무 도움이되지 않습니다 했어요. 원래 주에 포함 된 사람은 실제로 아직도 있습니다. 어디 우리는이 같이 갈거야? 글쎄요, 메모리에이 백업이의 순서를 백업해야한다는 판명 당신이 물건을 집어 넣는 수있는 바이트 그리고 우리가 이미 퍼팅이 포함됩니다 무언가를 본 것이 밝혀 일들이 다시 백업 백업 백업합니다. 지금 주 하나 일주일에 두번을 기반으로하는 문자열은 무엇입니까? 그래서 그냥 문자의 집합입니다. 그럼 당신이 메모리에 번호를 넣을 수처럼 밝혀, 유사 할 수 있습니다 메모리에 문자를 넣어. 그리고 일단 우리로 돌아가려면 뒤로를 다시 메모리에 넣어 문자를 시작 다시, 그것은 루프에 같은 사물의 단순한를 사용하거나 것이 밝혀 잠시 루프, 우리는 반복 할 수 있습니다 - - 문자열에있는 문자를 통해 왼쪽에서 오른쪽으로 그리고 모두 다른 문자에 넣어 마사지 시작합니다. 궁극적으로, 우리는을 할 수 있도록 B. B는 C가 될 수 될 수도 말이되는 영어 문장은 그 각각의 변환 편지는 우리 컴퓨터의 메모리를 도보 한 번에 하나 왼쪽으로 실제로 암호화 권리. 그럼 여기서 우리 다섯 분 휴식을 취하게하고, 우리가 돌​​아 왔을 때, 우리끼리 정보를 출격이 과정을 시작합니다. 괜찮아요. 우리가 어떤 암호에 뛰어 이러한 일들이 배열이라는 전에, 저에게 알려 모든 질문에 대한 일시 정말 가지 혼란 같은 느낌 때문에 일부 해당 주제. 우리가 할 수있는 경우에 그래서 지금의이 해결 보자. 그래서 우리는 반환 값에 대해 얘기. 우리는 인수에 대해 얘기. 그리고 우리는 우리가 주에 돌아 오면되는이 개념에 대해 얘기 이 스택의 전체 무리로 메모리를 보는, 이리와 쟁반은, 말하자면합니다. 올라 아래에서 스택에 넣어됩니다 각 트레이는 나타냄 함수는 그 현재라는 받고 있어요. 질문? 그래서 말인데 - 제가 질문을 해 봅시다. 난 망치고 유지하지만 지금은 괘 - 있던 모든 소년의 얼굴을 보았다. 그래서 우리는 그에게 다시 돌아 올꺼예요. 그럼 내가 여기서 물어 보자. 내가 그것을 우리의 이전의 Q & A.의 일부 전에 어떤 건지이 다시 단순화하자 그리고 증가가 열려 괄호가 있다는 사실, INT 수치는 폐쇄 괄호. INT 숫자는 무엇을 나타 냅니까? [안 들리게] 데이빗 J. MALAN : 인수입니다. 좋아요,하지만 인수가 뭐죠? [안 들리게] 데이빗 J. MALAN : 미안 해요, 뭐죠? 스피커 3 : 그래서 당신이 통과 일 데이빗 J. MALAN : 좋습니다. 그래서 당신이 통과되도록 일 그리고 더 일반적으로, 그냥 입력입니다. 당신은 인생의 기능 및 그 기능의 목적을 작성하는 경우 수행하는 것입니다 그리고 만약 당신이 그것을 사용 좀 다른 모든 시간을위한 단 하나의 방법 정말 무슨 일이 것은 입력으로 제공하는 것으로 보일 수있을 것입니다 그 사람들 때문에 그 입력을 할 때마다 다른 것을 수행 할 수 있습니다. 그래서 함수가 입력을 소요 할 때 두 가지를 지정해야합니다. 당신은 순수하게 그 입력에 부여 할 이름에 대한을 지정해야합니다 자신의 편의성 있도록이 기능에 참조 할 수 당신 I 줄 32 여기했던 것처럼 자신이 작성됩니다. 하지만 당신은 또한 C는 프로그래밍 언어이기 때문에 유형을 지정해야합니다 단지 필요로하는 당신이 변수를 원하는 경우, 당신은 컴퓨터를 얘기해야한다는 것을 데이터는,이게 입력 있도록 많은 부분에서는에 얼마나 많은 비트를 알고 그 변수에 할당합니다. 벌써 6 될 수 있기 때문에 - 미안, 여섯되지 않습니다. 이 16이 될 수 있습니다. 이 8이 될 수 있습니다. 심지어 64, 32이 될 수 있습니다. 그러나 컴퓨터는 알아야합니다. 이제 왼쪽에있는 INT는 반대로 무엇을 제시 하는가? [안 들리게] 데이빗 J. MALAN : 그게 뭔데? [안 들리게] 더 구체적으로 함수의 종류와, : 데이비드 J. MALAN 의 출력 유형. 맞아. 따라서 괄호 안의 것은 반면의 입력은 어떤 경우 나타냅니다 왼쪽의 물건은 출력을 나타냅니다. 이 경우에는 증가는 분명히 정수를 반환합니다. 그리고 정수는이 함수의 반환 유형입니다. 그게 무슨을 반환한다는 것은 무슨 뜻입니까? 그대로, 당신은 키워드 반환을 사용합니다. 그리고 만약 당신이 키워드의 오른쪽에 재하는 것은 경우 정수, 그리고 우리가 약속 한 것과 실제로 일치합니다. 당신은 이런 일을 할 수 없습니다 - 안녕하세요, 세계 - 그 문자열이기 때문이다. 분명히이 정수가 아닙니다. 그래서 짧은에, 부담이 우리를 정말이야 프로그래머는, 같은 특정 할 수 우리가 뭘 돌려하고 실제로 그것을 반환에 대한 이동합니다. 그리고 상황이 있어서요가 더 분명하게 이해할 수 있도록 - 거기에 그는 다시입니다. 컨텍스트 - 놀랍게도는 순간에오고 있습니다. 여기 문맥 지금, 다시 컴퓨터의 메모리는 것입니다 기가바이트, 이기가바이트, 뭐든간에. 어쩌면 더. 아마 덜. 그러나 컴퓨터가 다른 섹션을 갖는으로 보는. 무언가가 거기 간다. 다른 무언가가 거기 간다. 다른 물건은 중간에갑니다. 그리고 오늘, 우리가이 얘길 시작합니다. 그러나 우리는이 시간이 지남에 돌아 가면됩니다. 지금은 우리가 정말 신경 메모리의 유일한 조각의 텍스트 세그먼트입니다 단지 0과 사랑하는 사람들을 나타냅니다 때문 그 꽝이 출력되었습니다. 그래서 당신은 a.out과 같은 키보드에서 명령을 실행하거나 할 때 더블 맥 OS 또는 Windows에있는 아이콘을 클릭하면 프로그램이 하드에서로드있어 RAM에 운전. 그리고 그것은 말하자면, 컴퓨터의 RAM의 상단에 plopped있어. 프로그램이 시작대로 한편, 실행하고 메인이 관여 하죠 프로그램이 작성 또는 프로그램을 Microsoft 또는 애플 썼다는의 지역 변수는 컴퓨터의 메모리의 하단에 아래에 결국. 메인이 다른 함수를 호출한다면 그 자체가 변수 나이 있다는 인수는, 사람들은 위 끝. 그 함수가 뭔가를 호출한다면, 그들은 그 위에 결국 그 위에, 그 위에. 그리고 한 번만 함수는 이렇게 트레이 스택을 수행 실행 완료 말하자면, 낮은 낮은 얻을 시작합니다. 그리고 여러분이 큐브 호출 할 때 왜 다음, 요약, 설명 뭐야 - 또는 당신은 증가를 호출 - 당신은 가치의 사본을 전달하고 있습니다. 그리고 그 pictorially 의미하는 것은 그대로를 작성하는 것입니다 메모리의 다른 부분에 1 번, 변화 그 경우 1로 2, 증가 - 또는 8, 큐브의 경우 - 다음 증가 나 큐브처럼 곧 그 메모리를 열어 기능으로 돌아갑니다. 질문. [안 들리게] 데이빗 J. MALAN : - 전역 변수가 어떤에 저장됩니다 현재 초기화 데이터 또는 초기화되지 않은 데이터를했다. 당신이 전역 변수가있을 경우 차이가 존재, 당신은 그것을 지정 즉시 서명 동일있는 값은, 거기 맨 위에 끝납니다. 방금 값이없는 INT X 세미콜론을 말한다면, 그것은 약간 마무리 단순히 대회의 RAM에서 낮은. 다른 질문입니다. 괜찮아요. 우리가 할 수있는 일이있는 더 강력한 생길 그래서이 사진은 다시 올 것이다 컴퓨터. 하지만 지금은 암호화의 특정 유형에 대한 간략한 소개를 두자 세계의 모든 문제가 해결되지 않지만 해결합니까 암호화 그들 중 일부. 여기이 경우, 우리는 비밀 키 암호화라는 게있어. 그리고 비밀 키 암호화는 이름에서 알 수 있듯이, 보안을 유래 비밀의. 당신이 초등학교로 돌아가고, 경우에 따라서 예를 들어, 당신은 합격하는 당신이에 깔아 뭉 갠다 소년이나 소녀에게 비밀 연애 편지 - 만약 청중을 통해 그를 전달하고 싶어, 당신은 아마 쓸 것 이러한 영어 노트간에 모국어는, 오히려, 당신 를 암호화 할 수 있습니다. 아니면 요즘 그들에게 문자 메시지를 보내 수 있습니다. 하지만 당신은 실제로 교실을 통해 그들에게 메모를 전달 할 수 있습니다. 그리고 이러한 방식으로, 안전하게이 작업을 수행하는 귀하의 친구와 선생님 당신이 글을하는지 모르겠어, 당신은 상당히 간단 마련 할 수 알고리즘 - 당신이 될 수 있지만 젊은 - 그냥 단어를 출격시켜야합니다. 대신를 작성하는 그래서 대신에 B의 B.를 작성 할 수, 당신은 쓸 수 있습니다 C. 대신 C, 당신은 D를 작성, 등등 수 있습니다. 또는 문자보다 정교한 번역을 마련 할 수 다른 글자합니다. 그러나 캐치가이 메모를 보내는 누구에 아들, 딸 것은에 필요 뭔가를 알고. 어떤 무엇, 분명히? 당신의 비밀이 무엇인지,처럼. 마찬가지로으로하고 학사 C를과 DS 간의 매핑는 무엇인가? 그냥 때까지 계속 문자 각각에, 말하자면, 하나를 추가하는 B를, B는 C에? 그것보다 더 복잡한가요? 따라서 당신과 당신의 호감이 비밀 정보를 가지고해야합니다. 하지만 여기 캐치-22의 종류가 있습니다. 이 처음 인 경우는 통해 사랑의 편지를 보낼 클래스, 어떻게 그 친구 또는 여자가 비밀도 무엇 때문인지 알고가는거야? 따라서 비밀 키 암호는 모든 세계의 문제를 해결하지 않습니다. 그리고 우리가 향해에 돌아 오면 한 관계는 실제로이 학기의 끝. 마찬가지로, 우리 중 어떤 아마도 적 전송되지가 - 마찬가지로, 우리의 대부분에서, 예를 들어, 사용할 수있는 사람을 알고하지 않습니다 Amazon.com. 아직, 우리 중 많은 사람들은 아마 Amazon.com에서 물건을 구입했습니다. 그리고 우리는 가정을 가르쳐 왔던이 전자 상거래 거래는 안전합니다. 그래? URL은 아마도 https를 말합니다. 멍청한 자물쇠 아이콘이 어딘가에 어쩌면있다. 귀하의 신용 카드 정보를 확보 암호화 어떤 종류의가 귀하와 Amazon.com 사이에 있습니다. 암호화 아직 몇 비밀을 파악하고, 관련 있다면 아직 난 아냐 아마존에서 아는 사람, 내가 확실히 어떤 종류의를 준비 못 했어 아마존에서 사람과 비밀은, 어떻게 내 컴퓨터 또는 내 브라우저에서 이런 짓을하는 거지? 해결하는 모두 암호화 기타 유형의가 있다는 사실을 알아 음, 변 그 문제가 발생했습니다. 그러나 오늘, 우리는 당신이 준비 할 수있는 간단한 하나의에 초점을합니다 플러스 1로와 B들 사이 매핑과 같은 몇 가지 비밀을 알고 전진. 그리고 암호화 과정은 일반적으로이 포함됩니다. 당신은 왼쪽에 여기 묘사 된 일부 일반 텍스트를 수 있습니다. 당신은 알고리즘 또는 프로 시저의 어떤 통해 실행 그 암호화를위한. 어쩌면 그건 그저 A는 B이 마치, B는 C.됩니다 그리고 당신은이 생깁니다 텍스트를 암호화. 한편, 한 번 초대를 수락하거나 거절은 그 비밀 노트를 받고, 그 또는 그녀가에 다음이 일반적으로 얻을 수 있도록 그 알고리즘을 전환하여 해독 일반 텍스트를 백업합니다. 이제이 물리적 화신이 있습니다. 예를 들어,이 작은 비밀 디코더 링입니다. 그리고이 두 개의 다이얼이 있다는 의미에서 링입니다. 이 물건의 외부 주변에서 Z까지 문자가가 그들은 무작위 순서가 있지만. 그리고 안쪽에,이있는 등 그 어떤 숫자가 실제로있다 링, 당신은 가지 줄 수 있도록 외부가 아닌 내부를 중지 할 수 있습니다 문자와 숫자. 그리고 당신은 볼 것 클립 - 당신 24 / 7 본 몇 가지 중 크리스마스 스토리라는 영화에서 크리스마스 시즌에 걸쳐 다양하게 준비되어 있습니다. 당신은 그 작은 Ralphie 무엇 작은 고아를 알아낼 수 있도록 자했습니다 볼 수 있습니다 애니의 비밀 메시지가에서, 내 생각, 전달 된 그에게했다 시리얼 박스에 숫자 메시지를 형성하고 있습니다. 그리고 당신은 방문한 모든 작은 카드를 축적했다 시리얼 상자 인치 당신이 그들을 들여 보내했습니다 당신은 당신이 마침내 파악 할 수 있도록 비밀 디코더 링을 다시했습니다 매핑이 문자와 숫자 사이에 무엇인지, 또는 문자와 문자. 그래서 pset 2 동기를 부여하기 위해 당신에게 크리스마스 스토리에서 짧은 클립을 제공하고 배열의 순간에서의 토론,. 그래서 여기에 우리가 Ralphie 있습니다. [동영상 재생] - 예정은 랄프 파커가 본인 임명하는 모든과 잡다한에게 알려진 리틀 고아 애니 비밀 서클의 회원하며 모든 권리가 명예와 혜택은 이에 발생. , 리틀 고아 애니 - 체결. 피에르 앙드레, Countersigned! 잉크에! 이미 9 살에서 영예 및 혜택. 이리와, 좀 까. 나는 밀수업자와 해적에 대한 모든 재즈 필요하지 않습니다. 블랙의 결론 모험을 위해, 내일 밤에 들어 해적 선박. 지금 당신 회원 애니의 비밀 메시지에 대한 시간 비밀 서클의. 기억 얘들 아, 애니의 비밀 서클 회원 만 해독 할 수 있습니다 애니의 비밀 메시지가 나타납니다. 단, 애니는에 따라 있습니다. B2에 핀을 설정합니다. 다음은 메시지입니다. 12, 11 - - 내가 처음으로 비밀 회의입니다. -14, 11, 18, 16 - - 피에르 좋은 음성 오늘 밤에했다. 오늘 밤의 메시지가 정말 중요하다고 말할 수 있습니다. -3, 25. 그 애니 자신의 메시지예요. 단, 누구에게도 말하지 마세요. -90 초 후에, 나는 집에있는 유일한 방에있어 위치 별거 소년 개인 정보 보호 및 해독에 앉아 수 있습니다. 아하, B. 난 다음에 갔었 어. E.는 첫 번째 단어는있을 수 있습니다. S. 지금은 쉽게오고 있었다. U. - 오, Ralphie을에 있습니다. 나는 가야 해. - 내가, 바로 mA합니다. 윙 소리 나다 - 이런. -T, O.는해야합니다. 어떻게해야? 말하고자하는 리틀 고아 애니 무엇입니까? 어떻게해야? - Ralphie! 랜디 가야 해있다. 당신은 나와 줄래? - 알았어, 엄마. 바로 나올거야. - 지금은 점점 가까워지고되었습니다. 긴장은 끔찍했습니다. 그게 뭐죠? 행성의 운명은 경각에 응답하지 않을 수 있습니다. - Ralphie! 랜디는 가야 돼있어. - 내가 환호 네. - 이런, 거의 다. 내 손가락이 날아 갔다. 내 마음은 강철 덫이었다. 모든 기공은 진동. 거의 분명했다. 아, 그래, 그래, 그래. 당신의 Ovaltine을 마실해야 -합니다. Ovaltine? 싸구려 상업? 개자식. [END 비디오 재생] 데이빗 J. MALAN : 그래서 우리가 암호화되어 있습니다. 그래서 우리는 방법을 컴퓨터에 구현에 대한 이동하거나 수 이런 상황을 나타내는? 음, 우리는 좀 더 유연하게보다 자신을 표현하는 방법이 필요 우리 변수는 지금까지 수 있습니다. 우리는 ints를 했어. 우리는 문자를 했어. 우리는 수레와 복식과 몇 가지 다른 했어. 하지만 그 정말 우리를 허용하지 않습니다 메모리의 개별 조각 단어와 문장 및 구문 등을 표현한다. 사실, 그런 것을 문자열을 호출했습니다. 하지만이 정말 CS50에 불과 단순화 약속 우리가 돌​​아 껍질에 장래한다는 라이브러리입니다. 그리고 여기에을 수행하는 시작하자. 내가 가서 파일을 열어 보자 - 이러한 파일의 평소 온라인으로 사용할 수 있습니다 - 문자열 관련이없는 문제를 해결할 array.c라고하지만, 그 바탕으로 그림을 우리가 뭔가를 사용하는 방법에 대한 여기 그림은 배열을했다. 배열은 데이터 형식입니다. 그것은 종류의 변수의 종류, 야, 거기 여러 개의 작은 데이터 형식을가 그 안에 돌아 백업 백업 백업합니다. 따라서 예를 들어, 우리는 당신에게 제공하는 작은 프로그램을 작성하려는 경우 퀴즈, 당신은 어쩌면 아주 쉽게 두가 50 같은 코스 평균 퀴즈 이 프로그램을 작성 - 심지어 지난 주 재료의 일부를 기반으로 - GetInt와 변수 몇를 사용하여. INT quiz1, INT quiz2, 그것은 매우 간단입니다. 그것은을 요구하는 프로그램을 구현하는, 어쩌면 코드, 최대 20 줄의 10 살 인데요 후 두 퀴즈 점수 및 사용자를 추가하여 평균을 계산 함께, 두에 의해 분할 한 다음 결과를 인쇄합니다. 우리는 아마도 이후에 아주 쉽게 지금 그렇게 할 수 분의 일부 번호입니다. 그러나 문제는 50 퀴즈 또는 네 세 있다고 가정 그입니다. 니가 가진 클래스에 동일한 프로그램을 사용하고 싶다고 가정 해 봅시다 매주 퀴즈. 매주 퀴즈 한 클래스에 대해 생각해보십시오. 한 학기에 16 정도 주 정도가 있으면 이제 16 변수를 가지고 - INT quiz1, INT quiz2, INT quiz3, 정수 quiz4. 이 중복을보십시오 즉시이 복사 및 붙여 넣기 코드, 당신이 더 좋은 방법이 있었으면되기 시작한다. 그리고 고맙게도 때문에 배열의이 있습니다. 그래서 한번 해보자 구. 첫째, 내가 우리가 지금까지 사용하지 한 매우 단순한 일을 소개하겠습니다 하지만 코드에서 종종 볼 수 있습니다. 이것은 일반적으로 상수라는거야. 따라서이 값이 변경 없다는 의미에서 상수입니다. 상수를 만드는 인간의 대회는 모든 자본을 사용하는 것입니다 정말 코드에서 서 너무하는 편지. 그리고 당신은 C에서 사용하는 특별한 키워드는 # 정의되어 있습니다. 당신이 그렇게 말하면 # 그 다음에, 당신이 사용하고자하는 단어를 공간을 정의 다음 상수의 이름, 상수의 값입니다. 통지 그래서이 변수에 무언가를 할당 다릅니다. 등호가 없습니다. 더 세미콜론가 없습니다. 이것은 일반적으로 선행 처리기 지시어로 알려진 곳입니다,하지만에 대한 자세한 그 또 다른 시간. 지금이라는 변함 값이 누구의 실제를 퀴즈 생성 숫자 값은 2입니다. 그럼 어디에서나이 파일을 통해 퀴즈, 퀴즈, 퀴즈 참조 그건 단지 숫자 2. 지금 주요 보면 지금, 우리의 방법이 작품을 보자. 처음에는 조금 이상한 보입니다. 그러나 일주일에에서 모든 것들입니다. 등급의 사용자에게 문의하십시오. 우리가 어떻게이 작업을 수행합니까? 음, 라인 22 - 이게 정말 육즙이 부분입니다 - 나는 부동하지만, 단 하나의 수레를 선언합니다. 나는 오히려 부동 소수점 값의 배열을 선언거야. 그 변수는 여기에 암시로, 성적이라고 할 예정이다. 그러나 새 구문의 유일한 조각은 다음 사실이 대괄호 아르 나는 부동 등급 다음엔 오픈 브라켓과 번호를 말 한. 이 상수 인 경우 우리가 이런 짓을 같은 통지서,이 단지이다. 이 어이 컴퓨터가, 나 두 수레를 제공하고, 전화를 총체적으로 보자 의미 그 성적. 이 같은 훨씬 더 지루한 과정에 대비하고 있습니다. , grade1 띄워 grade2 떠, 등등. 따라서 배열은 우리가이 아이디어를 구현 할 수 있지만, 훨씬 덜 messily에 우리가 말 대신 16 16 코드 한 줄을 쓸 수 있도록하는 방법 주 학기. 지금 이것에 대해 생각하면 그래서에 하드 코딩이 싶지 않았어요 논리적 - 3 CS50 변경 대신 퀴즈 내년 같아요. 그리고 여기에 숫자 2를했​​다. 여기서 숫자 2를했​​다. 여기서 숫자 2를했​​다. 여기서 숫자 2를했​​다. 그것은이 실수 할 수 있고 실수로 변경하는 것은 매우 지루하고 아주 쉽게됩니다 한 3 값과 (2)의 다른 가치를보고 싶어요. 그래서이 거리에 대신 추상적으로 이동이 상수를 사용거야, 그와 같은 이름은 결코 변경 사항을 제안합니다. 그리고 지금, 우리는 다른 권한이 있는지 여부에 상관없이이 올해 또는 다음, I 퀴즈 없습니다 그냥 상단에있는 여기, 한 곳에서 변경해야합니다. 그래서 그런 상수는 모든 작업이 완료되었습니다. 한편, 새로운 개념 기능은 배열의 것입니다. 따라서 대괄호 나 한테 많은 수레를 포기하고 총체적으로 저를 할 수 있습니다 여기 성적 전화하십시오. 그래서 지금 내가해야 할 일을 살펴 보자. 여기에 라인 24에서 루프의 시작 부분입니다. 이건 정말 별건입니다. 단지 퀴즈를 사용하는 대신 하드 코딩 된 숫자있어. 그러나 지난 주부터이 지적 다른 건 아무것도 없습니다. 이건 그냥 printf 있습니다. 따라서 printf ( "% d 개 중 퀴즈 번호 % d 개") 난 그저 내가 퀴즈 제공을 인쇄 할 때문에 두 번째 중 하나를 다음 두 둘. 그래서이 순전히 미적 것입니다. 그러나 흥미로운 부분은 이제 라인 27에 있습니다. 부동 소수점과 두 자리 표시 자 중 하나를 입력하기 위하여 값을 다시 대괄호를 사용합니다. 루프이 내가 동등 시작 되었기 때문에이 경우는 제가을 사용 분명 어떤 가치? 0. 따라서이 루프의 첫 번째 반복에서, 저는 것처럼입니다 코드에서이 썼다. 그러나이 루프의 두 번째 반복에, 그것은 것처럼 것입니다 I 내 코드에서이 썼다. 하지만 변수를 사용했다는 사실이 완벽 이름 때문에 제안, 그것은 모든 반복에 그 값을 변화있어. 그래서 한 번에이 배열 한 자리를 작성 한 것 뿐이예요. 이 배열은 어떻게 생겼는데? 글쎄, 이유는 여기 화면에있는이 슈퍼 간단한 사각형을 그린 전에 이런 이유로이었다. 배열, 그냥 메모리의 또 다른 청크 다음 메모리의 덩어리입니다 메모리의 또 다른 청크 다음, 등등. 내 배열의 크기는 (2)의 경우 그럼, 여기이 경우, 모든 나는이 일을 할 것입니다 내 퀴즈 점수에 입력, 여기가 좋아. 이 하나 100있어. 그리고 제가 하나에 99도. I는 요청 하였기 때문에 다음이 메모리도 사용할 수 없을 수도 사이즈 2의 배열에 대한 컴퓨터. 이러한 사각형이 남아 있습니다. 그래? 만이라해도 당신은 여전히​​, RAM의 두 기가 바이트가 이 수레를 요청. 따라서 배열 뒤에 아이디어는 컴퓨터가 단지 메모리의 덩어리 걸립니다 있다는 것입니다 그리고 백업 백업 백업 다시 작은 조각을 apportions. 그리고 그렇게 모든 배열이 있습니다. 당신이 일을 넣을 수 있습니다 내부에있는이 메모리의 연속 된 덩어리입니다. 이제이는 좀 지루 연산을 수행하는 발생합니다. 여기 아래로 스크롤하면 그때 배열을 통해 반복 곳이 있습니다. 나는 배열에있는 모든 값의 합계를 내줄. 그리고 사실을하려면 여기를 둥근 기능을 사용 퀴즈로 나누어 합계. 하지만 지금은 충분한 연산의 일종으로 좀 손을 흔들 보자. 그러나 나를 위해하고있어 모든 궁극적으로 평균을 계산합니다. 그리고 그래서 일단 퀴즈 플러스 초 퀴즈, 2로 나누어, 인쇄 정수로 당장 나가. string1라는 다른 예제하지만 그건 지금 전환, 이는 비슷한 사진 만 사용 문자열을 그린다. 내가 가서 한 순간을 위해이 일을 간단하게 보자. 그리고 지금의 들여 쓰기를 용서 하소서. 이 예제의 라인 (19)의 공지 사항, 전 사용자로부터 문자열을. 하지만 다음 라인에 22 이후 일을하는지 확인합니다. 나는 실제로 내가에서 최대 반복거야 - 그리고이 새로운 마술입니다 - 나 strlen, 문자열의 길이. 이렇게하면 그것을 문자열을 전달하는 경우가 있단 C와 함께 제공되는 기능입니다 그 문자열에 얼마나 많은 문자입니다. 그게 전부 야. 그건 그냥 있기 때문에 대신 문자열 길이 나 strlen 있다는 사실은 더 간결. 30 년 전, 사람들은 간결 가능한 한 물건을 쓰기 좋아합니다. 그래서 우리는 여기 규칙을 지켰습니다. 난 + + 그냥 각 반복에서 i를 증가 의미합니다. 그리고 지금은 정말 재미있는이를 확인합니다. 따라서 라인 24에, 나는 컴퓨터를 말 나에게 여덟 문자를 제공 비트, 그리고 C 전화하십시오. 하지만이 오른쪽 말씀에 무엇입니까? 영어로, 그 무엇을 나타 냅니까? [안 들리게] 데이빗 J. MALAN : 그렇지. 나에게 배열의 첫 번째 문자를 제공합니다. 이상 일반적으로 저에게 배열의 i 번째 문자를 제공합니다. 그리고 컴퓨터 과학자로, 우리가 실제로 있다고 지금은 중요 실현 0에서 계산. 당신은이 일을 시작하는 지금 재량이 없습니다. 이제 컴퓨터의 기대에 따라 행동해야하고 [0]가 처음이 될 것입니다 때문에 제로에서 계산 문자열에 문자가 있습니다. [1]는 두 번째가 될 것입니다. [2] 세 번째, 등등 될 것입니다. 이 프로그램 그래서, 나는 그것을 컴파일하는 경우 -이, 다시, string1입니다. 그럼 string1을합니다. 그리고 지금은 내 터미널 창에서 string1을 실행합니다. 이 입력을 기다리고 있어요, 그래서, 데이비드 말에 입력 겠어. 입력합니다. 그리고 지금은 모든 다른 라인에 데이비드 인쇄 때문에 내가하는 일이납니다. 한 번에 한 문자를 인쇄 할거야. 이제 우리는이 일에 지금 세부로 이동하지 않습니다. 하지만 여기이 수표 전 순간을 삭제했습니다. 그것은 사용자가 올바르게 작동 적대하거나 경우 해당 밝혀 혼란에, 당신은 실제로 어떤 길이의 문자열을 제공하기 위해 실패 할 수 있습니다. 당신이 키보드의 잘못된 키를 누르면 경우, 줄 수 있습니다 전혀 문자열 없습니다. 당신은 악의적 인 경우 또는의 기가 바이트의 가치에 붙여 넣으려고 수 이 문자열을 작성하는 에세이. 컴퓨터의 메모리가 부족 실행한다면, 그건 우리가 가고있는 것이 밝혀 널 (null)이라는 특수한 값을 돌려 받기 위해. 그럼 지금부터, 단지 널 (null)이라는 특별한 가치가 있다는 알 우리가 다른 것들 사이에, 메모리가 부족 때 확인 할 수 있습니다. 하지만 지금 string2를 열고 경우, 여기 차이가 발생하는 경우가 종종 있습니다. string2와 여기 차이를 확인할 수 있습니다. string2를 통해, 루프이 조금 다릅니다. 우리가 그 다른 시간에 대해 이야기 할 수 있도록 내게 nulls를 삭제 보자. 그런데 루프의이 시간에 대한 다른거야? 그리고 앞의 예를 다시 사용할 수 있습니다. 그래서 버전 두. 이 버전입니다. 하나, 둘, 하나 둘. 그래서 나 strlen 전화는 어디? 이 루프의 처음 부분에 있어요. 내가이 짓을하는 이유에 대한 어떠한 생각? 그래. [안 들리게] 데이빗 J. MALAN : 우리가 함수를 매번 전화를하지 않는 군. 그렇지. 사람들이 슈퍼 간단한 걸 루프에 대한 기억에서 당신이 어떤 종류의 번 이 초기화 것을 이해 상태 및 업데이트. 문제는 조건이 모든 일에 일어날 일이 바로 그 것입니다 루프의 반복. 그리고 여기이 예에서, 어떻게 사실에 대한 나쁜 것입니다 이쪽은 내 상태입니다? 다시 나 strlen를 호출하고 다시하고 다시하고 있습니다. 하지만 내가 다윗을 입력 한 다음, 그 문자열의 길이는 다섯입니다. 그리고 때문에 루프의 모든 반복에 변함이 없을거야 문자열은 여전히​​ D-A-V-I-D. 그래서이 될 무슨 일이에서 힌트입니다 하지 만 - 디자인 결정으로 알려진 점점 더 중요하게 생각이야, 컴퓨터가 불필요한 작업을 수행합니다. 지금은 표준 버전의 pset 2, pset 2 미리보기는대로 실제로 암호의 일부 번호 일부를 구현하기 위해 도전하는 것 암호화 알고리즘의 수, 당신은 할 수 있도록 암호화 및 암호 해독을 모두 많은 한 Ralphie 같은 비밀 메시지, 거기 디코딩. pset 2의 해커 판에서, 우리는 조금 더 갈거야. 우리는 포함 된 실제 컴퓨터 시스템에서 당신에게 파일을 넘겨거야 전체 사용자 이름 및 실제 암호화 된 암호의 무리, 그리고 도전 해커 판 해당 비밀번호와 그림 자극이 될 것입니다에 어떤 암호화 또는 무슨 비밀하는 것은에 실제로 사용 된 아웃 그 암호를 생성합니다. 그리고 우리가 여기 C의 전주지하는 새로운 기능을 사용하여이 작업을 수행하는 것 당신이 명령 줄 인수로 알려진 중 데모. 당신의 일부 섹션이나 교과서에서 보셨을 수도 있으므로 따라서는 밝혀 메인은 ​​항상 괄호 안에 무효 필요가 없습니다. 그것은 두 개의 인수와 함께, 메인도 같이 작성 될 수 있다는 판명 argc는 이후에 입력하는 단어의 숫자입니다 argc와 argv가, 명령 줄에있는 프로그램의 이름입니다. 그리고 변수는 argv는 실제 단어입니다. 거기에 대괄호가 제안 때, 변수는 argv는 분명히 배열입니다. 이 메모리에 문자열 뒤에 문자열 뒤에 문자열이 될거에요. 그래서 우리는 pset 2 시작 할 수있을 것입니다 같이. 나는 argv1을하면 그건 우리가 월요일에 다시로 돌아와 및 실행됩니다 예입니다 그, 그건 아직 아무것도하지 않는 것 것을 확인할 수 있습니다. 단지 자신의 이름을 출력합니다. 하지만이 프로그램은 분명히 반복하는 작별 인사 클래스가 통지 말한다면, 프롬프트에 입력 된 단어의 각 이상. 그리고 사용자가이 단어에 대한 액세스 권한을되는 수단 프롬프트에 입력은 정수에서 이번 주말부터 주요 변경하는 것입니다 메인은 ​​(무효) 주 (argc, argv가)를 INT합니다. 그래서 명령 줄 인수를 탄생 될 것입니다. 일단 당신이에서 정말 세련된 얻을, 당신은 작성하실 수 있습니다 위와 넘어 등 여기이 아니라 정말 trippy 프로그램, 기능 중 일부는 우리가 지금까지 수행하지만 모든 아주 강력했습니다. 그래서 우리는 화면에이 함께이 일을 맡길 수 있습니다. 우리는 월요일에 표시됩니다.