1 00:00:00,000 --> 00:00:02,270 [Powered by Google Translate] [주 2, 계속] 2 00:00:02,270 --> 00:00:04,220 [데이비드 J. Malan, 하버드 대학교] 3 00:00:04,220 --> 00:00:06,880 [이 CS50입니다. - CS50.TV] 4 00:00:06,880 --> 00:00:10,990 괜찮아요. 이 CS50이며,이 2 주간의 끝입니다. 5 00:00:10,990 --> 00:00:14,410 당신은이 시간 주변에 내일 배 고플이 예상되는 경우 6 00:00:14,410 --> 00:00:18,620 우리가 소그룹 내일, 목요일, 오후 1시 15분로 소집 할거야 알고. 7 00:00:18,620 --> 00:00:21,360 당신은 답장하려면이 URL가 있어요. 8 00:00:21,360 --> 00:00:26,740 공간이 제한되어 있으므로, 양식이 양식을 작성하는 시간으로 채워 경우 용서하시기 바랍니다. 9 00:00:26,740 --> 00:00:29,300 관심있을 또 다른 URL,하지만이 있습니다. 10 00:00:29,300 --> 00:00:32,369 단 한 달의 시간에 대한 년, 과정은 사용할 수 것입니다 11 00:00:32,369 --> 00:00:36,890 모든 더 넓게 edX을 통해,이를 통해 인터넷에서 사람들이 함께 따라 할 수 있습니다 12 00:00:36,890 --> 00:00:39,380 사실, 매우 적극적으로 수업에 참여. 13 00:00:39,380 --> 00:00:42,270 그들은 토론 CS50 어플라이언스와 CS50를 사용합니다 14 00:00:42,270 --> 00:00:45,490 우리는 이미이 학기을 사용하고있는 다양한 소프트웨어 도구의 대부분. 15 00:00:45,490 --> 00:00:48,710 그리고 우리가 올해 실험로 수행 할 사업 중 하나 16 00:00:48,710 --> 00:00:51,930 우리가 번역 할 수 있습니다 얼마나 많은 콘텐츠 표시하는 것입니다 17 00:00:51,930 --> 00:00:53,960 다른 음성 및 서면 언어로. 18 00:00:53,960 --> 00:00:57,500 이 프로젝트에 참여에 관심이있을 수면 19 00:00:57,500 --> 00:01:02,270 우리는이 과정의 강의 영어 성적 증명서 및 자막을 제공 할 것입니다된다 20 00:01:02,270 --> 00:01:05,450 와 반바지, 세미나 및 섹션과 같은 21 00:01:05,450 --> 00:01:08,200 당신은 유창하게 말하거나, 유창하게 다른 언어를 작성하는 경우 22 00:01:08,200 --> 00:01:12,290 이 동영상 중 하나 이상에서 수행된다 우리는이 프로젝트에 참여를 유도 싶어요 23 00:01:12,290 --> 00:01:15,200 당신은 아주 잘 알고있는 언어로 그들을 번역. 24 00:01:15,200 --> 00:01:18,700 >> 당신에게 인터페이스의 의미를 제공하기 위해이 웹 기반 사용자 인터페이스가 25 00:01:18,700 --> 00:01:22,090 우리는 본질적으로 같은 UI를 만들 것이다 사용한다는 점을 잊지 마십시오. 26 00:01:22,090 --> 00:01:24,290 이건 내가 어떤 할로윈 전 교수 였는데 27 00:01:24,290 --> 00:01:27,390 이러한 시간 기록 옆에 검은 색에 가장 오른쪽에, 28 00:01:27,390 --> 00:01:31,210 당신은 그 날 내 입에서 나온 여러 가지를 볼 수 있습니다 29 00:01:31,210 --> 00:01:34,850 다음 아래는 다른 언어로 번역 할 수 있습니다 30 00:01:34,850 --> 00:01:38,690 매핑이이 경우에, 사이 정확히, 영어와는 스페인어를 말한다. 31 00:01:38,690 --> 00:01:40,440 그래서 실제로 매우 사용자 친화적 인 도구입니다. 32 00:01:40,440 --> 00:01:43,370 당신은 키보드 단축키로 매우 쉽게 빨리 감기 되감기 할 수 있습니다. 33 00:01:43,370 --> 00:01:47,490 이 실험에 참여하고 있고하고자한다면 당신의 말은 본적이 읽고 34 00:01:47,490 --> 00:01:51,850 거기에 사람들의 잠재적 수천 참가하여 주시기 바랍니다. 35 00:01:51,850 --> 00:01:54,350 월요일부터 새끼 고양이에 대한 한 마디. 36 00:01:54,350 --> 00:02:00,350 우리가 너무 무서운 메시지를 전송했습니다 않도록, 사무실 시간 제안으로, 그 실현해야 37 00:02:00,350 --> 00:02:03,300 섹션 제안대로, 코스의 설계는 매우이다 38 00:02:03,300 --> 00:02:07,360 학생들은 문제 세트를 통해 협력하고 일을 이야기합니다, 39 00:02:07,360 --> 00:02:11,260 함께 문제, 그리고 정말 선이 그냥 내려 오는 40 00:02:11,260 --> 00:02:16,010 다시, 당신이 궁극적으로 제출 한 작품이 곧 자신이 될 것입니다. 41 00:02:16,010 --> 00:02:18,860 그리고 아주 솔직히, 근무 시간에 그건 완전히 정상입니다 42 00:02:18,860 --> 00:02:22,240 그것은 완전히 당신 옆에 어떤 친구와 채팅을 할, 심지어 예상 할 수있는 일이야. 43 00:02:22,240 --> 00:02:24,370 >> 그 또는 그녀가 어떤 주제에 어려움을 겪고 있으며, 당신은 같은 경우 44 00:02:24,370 --> 00:02:27,940 "오, 그래, 당신에게 제가 쓴 코드의 일부 라인의 단면을달라고"그건 괜찮아요 45 00:02:27,940 --> 00:02:31,250 그런 일이, 그리고 그 학습의 과정, 제 생각 많이 유도. 46 00:02:31,250 --> 00:02:36,750 머리가 너무 많이 초 동안 여기 종류의 기울어 끝나면 어디 선이 교차됩니다 것은 47 00:02:36,750 --> 00:02:41,160 또는 정말을위한 시간은 방금 당신의 친구를 차단 해제 기회됐다 니 48 00:02:41,160 --> 00:02:44,160 그리고 확실히 물건은 이메일 보관 및 같은을 통해 교환받을 때 49 00:02:44,160 --> 00:02:45,640 너무 라인이 있습니다. 50 00:02:45,640 --> 00:02:48,620 이 모든 방법으로 편안하게 친구들과 채팅 없길 바랍니다 51 00:02:48,620 --> 00:02:52,810 그리고 psets 등에 관한 불과 반 친구들은 궁극적으로 제출 한 것을 걸 깨닫게 52 00:02:52,810 --> 00:02:57,340 정말 당신의 창조가 아닌 다른 사람의 제품이어야합니다. 53 00:02:57,340 --> 00:03:00,490 pset2에 대한 도메인 별 문제 그리고 하나 54 00:03:00,490 --> 00:03:04,740 내일은 늦게 밤에 와서됩니다, 암호의 세계에 뛰어들입니다 55 00:03:04,740 --> 00:03:08,970 어떤 정보를 암호화하거나 출격의 예술이다 56 00:03:08,970 --> 00:03:12,600 이 궁극적으로 보안의 세계에 관한 것이다. 57 00:03:12,600 --> 00:03:16,560 이제 우리의 대부분에 대한 보안은 매우 평범한 메커니즘의 형태로 제공됩니다. 58 00:03:16,560 --> 00:03:19,050 우리 모두는, 사용자 이름 및 비밀번호를 59 00:03:19,050 --> 00:03:23,450 그리고 우리 모두는 대부분 아주 나쁜 사용자 이름과 비밀번호가 있습니다. 60 00:03:23,450 --> 00:03:28,240 >> 비밀번호가 여러 웹 사이트에 동일한 경우, 아마도 가장 좋은 생각은 아니 네요 61 00:03:28,240 --> 00:03:30,070 우리는 학기 끝으로 논의겠습니다. 62 00:03:30,070 --> 00:03:34,720 농담 - - 비밀번호가 스티커 메모에 기록되어있는 경우 모니터에, 63 00:03:34,720 --> 00:03:38,350 너무 반드시 최고의 디자인이지만 꽤 일반적인 현상이 아닙니다. 64 00:03:38,350 --> 00:03:42,470 그리고 귀하의 비밀번호를 암호화 할 암호를 사용하지 않는 경우 65 00:03:42,470 --> 00:03:44,210 그들은 특히 취약합니다. 66 00:03:44,210 --> 00:03:47,270 당신이 숨겨진 Word 문서함으로써 영리 슈퍼 인 것 같아요면 67 00:03:47,270 --> 00:03:49,910 어디 선가 하드 드라이브에 그 암호를 모두 가지고 68 00:03:49,910 --> 00:03:53,670 하지만 아무도 그것도 아주 보안 메커니즘은 아닐지라도,에서 찾아 갈 수 없어하는 폴더에 있습니다. 69 00:03:53,670 --> 00:03:56,990 그리고 무엇 pset2이 소개하는 암호화의 예술이다 70 00:03:56,990 --> 00:04:02,010 암호 같은 일들이 모두 더 안전 있도록 및 정보를 출격. 71 00:04:02,010 --> 00:04:05,790 여기 문맥입니다 안전하지 않은 데이터가있는 72 00:04:05,790 --> 00:04:07,930 를 암호화하고이를 교란시키는 기회를 제공합니다. 73 00:04:07,930 --> 00:04:11,470 그리고이 예를 들어, 암호화 된 메시지의 예입니다. 74 00:04:11,470 --> 00:04:14,700 이와 같은 사실은 실제로 영어로 무언가를 말하고 있지만 그것이 전적으로 분명 아닙니다. 75 00:04:14,700 --> 00:04:18,279 그리고 우리는 여기에 비밀 메시지가 무엇인지 떨어져 감히 지금이 눈앞에 있습니다. 76 00:04:18,279 --> 00:04:23,490 사람들이 영어 문구로되어 있습니다 그러나 컴퓨터의 현실 세계에서, 일조차 보이지 않네요. 77 00:04:23,490 --> 00:04:28,430 예를 들어, 여러분이 표준 Linux 또는 Mac 또는 UNIX 컴퓨터에서 찾을 수 있습니다 무엇 78 00:04:28,430 --> 00:04:32,070 시간이 암호 파일이라는시 파일에 그 한 번이었다. 79 00:04:32,070 --> 00:04:34,200 >> 오늘날 다른 곳으로 이동되었습니다있어. 80 00:04:34,200 --> 00:04:39,210 당신이 시스템에서 올바른 위치에 보면하지만, 당신은 사용자 이름뿐만 아니라이 표시됩니다 81 00:04:39,210 --> 00:04:43,400 또는 시스템에 다른 사람의,하지만 당신은 자신의 암호의 암호화 된 버전을 볼 수 있습니다. 82 00:04:43,400 --> 00:04:47,980 사실,이 단어 토굴은 다음과 같은 콘텐츠가 암호화하는 것이 좋습니다 83 00:04:47,980 --> 00:04:52,680 이 임의 문자와 문자와 숫자의 일련 등등 84 00:04:52,680 --> 00:04:56,480 만 일반적으로 몇 가지 비밀을 알게하여 해독 할 수 있습니다 - 85 00:04:56,480 --> 00:04:58,840 비밀 단어 비밀 번호 - 86 00:04:58,840 --> 00:05:03,160 그리고 실제로, 암호화 궁극적으로 종기를의 예술은 일종의 신뢰하는 87 00:05:03,160 --> 00:05:05,650 그리고 다른 사람이하지 않는 일을 알고. 88 00:05:05,650 --> 00:05:10,090 그래서 우리는 오늘 좀 더 자세히이 탐구되고 pset에 와서. 89 00:05:10,090 --> 00:05:12,200 그리고 지금 통과 / 실패에 단어. 90 00:05:12,200 --> 00:05:15,360 여러분 중 몇몇은 pset1, 어플라이언스로 다이빙 한 특히 91 00:05:15,360 --> 00:05:19,080 그리고 자기 자신이 매우 새로운 세계는 걸 그 좌절감과 혼란 92 00:05:19,080 --> 00:05:21,700 불과 기술적 인 문제는 매우 예상 할 수 있으며, 93 00:05:21,700 --> 00:05:24,180 특히 너무 많은 새로운이 첫 번째 pset과, 94 00:05:24,180 --> 00:05:27,730 단지 있나요 및 CD에 익숙 받고 모든 마법 명령 95 00:05:27,730 --> 00:05:33,050 그리고 새로운 환경, 그리고 그 실제 자료와 자체 프로그래밍에서 별도입니다. 96 00:05:33,050 --> 00:05:36,940 따라서 지원 구조로 존재 근무 시간은 확실히 있다는 것을 너무 알고 있습니다. 97 00:05:36,940 --> 00:05:38,880 >> 절에서는이 오는 일요일 시작합니다. 98 00:05:38,880 --> 00:05:42,960 가장 중요한 것은, 당신이 당신을 위해 세계가 못 돼서 기분이 경우, 99 00:05:42,960 --> 00:05:44,710 정말 단지 시간이 걸릴 않습니다 알고 있습니다. 100 00:05:44,710 --> 00:05:48,600 그리고, 실패 / 클래스 패스를 계획하고 나를 위해 년 전에이 기회가 아니었다 101 00:05:48,600 --> 00:05:50,990 솔직히 말해서, 나는 교실에서 발을 설정하지가 못했어요. 102 00:05:50,990 --> 00:05:53,690 그리고 당신은, 때까지이을 변경 말 코스의 다섯 번째 월요일 수 103 00:05:53,690 --> 00:05:58,280 지금의 가장자리에 있다면, 모두 알고 있습니다보다 머리 다른 물로, 104 00:05:58,280 --> 00:06:01,260 확실히 그냥 통과 / 실패 변경해 않습니다. 105 00:06:01,260 --> 00:06:04,570 다시 일을 계획하고 하버드에있는 여기 정말이 문화가없는 패스 / 실패 106 00:06:04,570 --> 00:06:08,670 모두가 정말을 달성하거나 overachieve하고자부터 107 00:06:08,670 --> 00:06:11,130 솔직히이 밖에 무언가를 시도하는 좋은 방법입니다 108 00:06:11,130 --> 00:06:16,720 ,, 꽤 좋은 당신에게 익숙하지 않을 수 있습니다, 당신은 대부분의 경우에 일을 끝낼께요 109 00:06:16,720 --> 00:06:18,210 귀하의 깜짝 선물 아마도 많이. 110 00:06:18,210 --> 00:06:20,980 그리고 더 구체적인 용어로, 전 않습니다 일반적으로 실패 / 통과 생각 111 00:06:20,980 --> 00:06:22,940 당신이 pset0 경험했을 수도 특히, 112 00:06:22,940 --> 00:06:26,560 당신은 어떤 pset에 10 시간, 15시간, 25 시간 넣어 경우 113 00:06:26,560 --> 00:06:29,920 그리고 당신은 벽에 머리를 흔들며하고 있으며 늦은 밤 슈퍼 점점 114 00:06:29,920 --> 00:06:33,950 하지만 방법의 pset 90 %를 찍은 그리고 당신은 한 가지를 이해 할수 115 00:06:33,950 --> 00:06:36,520 정말이 같은 클래스의 가장자리를 벗고 실패 / 통과, 116 00:06:36,520 --> 00:06:39,100 당신은 행복하게, 좋아, 난이 완벽하지 알아 "라고의를 정렬 할 수있는 117 00:06:39,100 --> 00:06:42,350 하지만이 문제에 엉덩이 일, 나는 "그게 어디로 갔는지와 매우 행복하다 118 00:06:42,350 --> 00:06:44,850 그 패스가에 대한 기대에 부응 / 실패합니다. 119 00:06:44,850 --> 00:06:47,540 따라서 염두에두고 않습니다. 괜찮아요. 120 00:06:47,540 --> 00:06:50,520 >> 하버드 대학교 (Harvard University) Wi-Fi 접속 설비를 사용하기 위해 노력 한 분들 자, 121 00:06:50,520 --> 00:06:54,780 주위에 떠 CS50 SSID, Wi-Fi 인터넷 접속이있는 걸 알아 122 00:06:54,780 --> 00:06:56,490 당신은 더 좋은 행운이있을 것을. 123 00:06:56,490 --> 00:07:00,130 조금 아이러니 당신이에 연결을 시도하고 싶은 경우에 대한 비밀번호, 124 00:07:00,130 --> 00:07:08,350 그리고 더 낫지 않을 경우 저희에게 알려 - - 더 나은 속도를 위해 12345, 모든 방법은 최대 8까지입니다 125 00:07:08,350 --> 00:07:10,910 8 5보다 더 안전 때문입니다. 126 00:07:10,910 --> 00:07:16,910 당신은 Wi-Fi 인터넷 접속 암호를 필요하면,,, 무선 여기 CS50에 12,345,678 연결 127 00:07:16,910 --> 00:07:20,380 그래도 간헐적 연결 문제가있는 경우와 CS50에 게시물이 토론 128 00:07:20,380 --> 00:07:25,420 우리는이 공간에 대해 알 수 힘을 알려드립니다. 괜찮아요. 129 00:07:25,420 --> 00:07:32,230 특히 모든 것을 애플의 팬 소년 또는 소녀 분들을위한 그래서 빠른 맛보기. 130 00:07:32,230 --> 00:07:37,460 내가 다시 몇 년에서 파는 것은 여기 iUnlock.c이 파일을했다 131 00:07:37,460 --> 00:07:39,930 그냥 가지 더 구체적이고 더 복잡하게하는 132 00:07:39,930 --> 00:07:42,560 우리가 만들고있어 더 기본적인 C 프로그램의 일부. 133 00:07:42,560 --> 00:07:46,910 그래서 iUnlock.c이 파일을 열었습니다. 오늘의 강의 페이지에서 사용할 수 있습니다. 134 00:07:46,910 --> 00:07:49,810 왼쪽 측면에서이 기능의 긴 목록을 참조하십시오. 135 00:07:49,810 --> 00:07:53,230 따라서이 책을 쓴 동료는 주요보다 더 많은 기능을 많이, 잘 썼다. 136 00:07:53,230 --> 00:07:57,340 그는 여기 도서관의 전체 무리를 사용하여, 우리는을 통해 스크롤을 시작하면, 137 00:07:57,340 --> 00:08:04,890 어떤이 실제로하는 것은 원래 아이폰에 대한 매우 먼저 저는 믿습니다, 균열입니다. 138 00:08:04,890 --> 00:08:09,830 >> 당신이 원래 아이폰을 본때를 보여 싶었을 때, 어느 AT & T에서 untether을 의미합니다 139 00:08:09,830 --> 00:08:13,710 실제로, 거기에 특별한 소프트웨어를 설치하고 애플은 사람들이하고 싶어하지 않은 일을 140 00:08:13,710 --> 00:08:18,480 누군가가, 그들은 소프트웨어 결함을 악용 할 수 있습니다 정확히 어떻게 한건지 할 수있는 시간이 걸렸습니다 141 00:08:18,480 --> 00:08:22,690 따라서 애플 소프트웨어의 실수, 버그, 그리고이 태어난 iUnlock.c .. - 142 00:08:22,690 --> 00:08:26,760 당신이 컴퓨터에 컴파일하고 아이폰에 설치하는 경우 143 00:08:26,760 --> 00:08:29,430 그는 USB 케이블, 말을 통해 컴퓨터에 연결되었습니다 144 00:08:29,430 --> 00:08:32,450 이 귀하의 아이폰에 대한 관리자 또는 루트 권한을 줄 거라 145 00:08:32,450 --> 00:08:34,620 그리고 거의 당신이 원하는대로하도록 내버려. 146 00:08:34,620 --> 00:08:36,400 그리고이 매력적인 고양이와 마우스 게임가있는 것 같은데 147 00:08:36,400 --> 00:08:39,340 애플 특히 세계의 나머지 사람들과 같은 사이 많은 기업처럼, 148 00:08:39,340 --> 00:08:43,350 만 그들이 의도 뭘 할 수 있도록 자신의 물건을 봉쇄하려고합니다. 149 00:08:43,350 --> 00:08:47,360 하지만 이런 사람과 낮은 수준의 세부 사항의 이해 덕분에 - 150 00:08:47,360 --> 00:08:50,830 이 경우 C 프로그래밍 - 그리고 익숙한 구조의 많은 151 00:08:50,830 --> 00:08:55,280 우리가 게임을 시작 한, 당신이 실제로 하드웨어를 활용 할 수 있습니다 152 00:08:55,280 --> 00:08:59,250 방식으로 당신은 적합 및 일부 법인 일 필요는 없습니다 참조하십시오. 153 00:08:59,250 --> 00:09:01,600 따라서 예를 들어, 난이 무엇을하고 있는지 몰라 154 00:09:01,600 --> 00:09:03,580 하지만 GetVersion은 매우 간단 소리 155 00:09:03,580 --> 00:09:05,710 이이 사람이 쓴 기능입니다 것처럼 보인다. 156 00:09:05,710 --> 00:09:09,250 그것은 인자로 정수의 어떤 필요, 아무 것도 반환하지 않습니다 157 00:09:09,250 --> 00:09:13,710 하지만 여기서 루프와 경우 조건, 조건을 어기면과 루프에 나타납니다 158 00:09:13,710 --> 00:09:16,770 우리가 아래로 스크롤하면 그리고 어떻게 된 일인지 버전 번호에 관한 159 00:09:16,770 --> 00:09:19,650 이러한 키워드의 많은 새로운 될 것이다에도 마찬가지입니다. 160 00:09:19,650 --> 00:09:22,590 그리고 우리가 본 적이 있사 볼 수 있습니다 여기에 함수의 전체 많아 161 00:09:22,590 --> 00:09:24,350 학기의 과정 동안. 162 00:09:24,350 --> 00:09:29,160 >> 하루의 끝에서, 우리가 지금까지 장난 한 것과 동일한 규칙과 논리를 따른다. 163 00:09:29,160 --> 00:09:34,340 그래서, 당신 아이폰 3S로 나 4S 나 곧 95이 일을 해독하기까지 너무 오래되었습니다 164 00:09:34,340 --> 00:09:38,830 하지만이 대단히 우리가로 다이빙 한이 세상에서 파생 있다는 알아요. 165 00:09:38,830 --> 00:09:42,280 의 좀 더 간단한 예를 살펴 보자 : 166 00:09:42,280 --> 00:09:46,260 이 사진은, 그냥 구문 예열을 이용하고 일부 다른 데이터 형식 167 00:09:46,260 --> 00:09:48,910 우리는 얘기를했지만 정말 C.에서 볼하지 않은 168 00:09:48,910 --> 00:09:53,670 이 positive1.c라는 파일이며, 상단의 의견에 따라, 169 00:09:53,670 --> 00:09:56,070 이 단지 사용자가 양수를 제공하는 요구합니다. 170 00:09:56,070 --> 00:09:59,910 따라서 사용자 대화 형 프로그램 좋다 DO-동안 루프의 예를 들어 171 00:09:59,910 --> 00:10:02,070 당신이 뭔가를 할 사용자를 말할 필요가있는 곳, 172 00:10:02,070 --> 00:10:05,530 그리고 그들은 당신이 그들을 소리 또는 입력을 거부 협조하지 않으면. 173 00:10:05,530 --> 00:10:10,480 점에서 사례 : I 24를 통해 라인에게 19을 갈거야 174 00:10:10,480 --> 00:10:14,620 너무 오래 같이 사용자 나에게 긍정적 인 번호를 부여하지 않았습니다. 175 00:10:14,620 --> 00:10:21,340 라인 18 여기이 세부, 왜이 전체 반복 구조 위의 n을 선언 않았습니다 176 00:10:21,340 --> 00:10:26,870 로 오른쪽 라인 22 옆에 난 사실 N를 얻을 관심 장소로 반대? 그래. 177 00:10:26,870 --> 00:10:29,330 [학생] 범위입니다. >> 네, 범위가 너무이 문제. 178 00:10:29,330 --> 00:10:31,770 그리고 시민들의 관점에서, 범위에 무엇을 참조합니까? 179 00:10:34,880 --> 00:10:41,560 그래. >> [안 들리게 학생 응답] >> 당신은 크게 조금 말할 수 있습니까? 180 00:10:41,560 --> 00:10:45,440 [학생] 해당 변수에 액세스 할 수 있습니다 곳. >> 좋아요. 181 00:10:45,440 --> 00:10:47,610 당신이 특정 변수에 액세스 할 수 있습니다 곳. 182 00:10:47,610 --> 00:10:50,990 그리고 일반적으로 엄지의 규칙은 지금까지 왔습니다 그 몇 가지 변수의 범위 183 00:10:50,990 --> 00:10:56,140 당신이 본 한 가장 최근의 중괄호에 의해 정의됩니다. 184 00:10:56,140 --> 00:11:03,070 >> I 줄 22 n을 선언하는 실수를 한 경우 그리고이 경우에, 그 라인 일 것이다. 185 00:11:03,070 --> 00:11:10,840 , 난 정수를 것, 그리고 라인 22에서 해당 변수 N에 넣어 것입니다 186 00:11:10,840 --> 00:11:17,060 하지만 어떤 코드의 라인은 지금 무슨 말을하는지 모를까요? >> [학생] 25. 187 00:11:17,060 --> 00:11:23,840 [Malan] 25,이 경우는 중괄호 외부 내리는 때문에뿐 24 밝혀졌다. 188 00:11:23,840 --> 00:11:28,550 그래서 아주 쉽게 간단하게 변수를 선언하여 그냥 좀 성가신의 비트 만 해결 189 00:11:28,550 --> 00:11:30,700 기능 자체의 외부. 190 00:11:30,700 --> 00:11:32,760 우리는 당신이 한 단계 더 갈 수 오늘 나중에 볼 수 있습니다 191 00:11:32,760 --> 00:11:34,940 당신은 조금이라도 게으른 얻을 수 있습니다. 192 00:11:34,940 --> 00:11:39,660 그리고이 일반적으로 권장 할 수 없습니다,하지만 당신이 게으른 얻을 수 193 00:11:39,660 --> 00:11:44,150 해야하고, 루프의 내부, 함수의 내부는 안 말하자면, 전 세계적으로 변수를 넣어 194 00:11:44,150 --> 00:11:49,800 I 줄 15 여기처럼하지만 파일 자체에, 모든 기능 이외에 당신이 작성했습니다. 195 00:11:49,800 --> 00:11:55,220 이것은 일반적으로,시 찌푸리게하지만, 이렇게하는 경우에 종종 다른 문제에 대한 솔루션입니다 사실입니다 196 00:11:55,220 --> 00:11:56,910 우리는 결국 볼 수 있습니다. 197 00:11:56,910 --> 00:11:59,500 그럼 지금부터 우리는이처럼 갈거야,하지만 우리가 다시 작성할 수 있는지 확인합시다 198 00:11:59,500 --> 00:12:02,360 단지 다른 우리 조금을 표현 시작합니다. 199 00:12:02,360 --> 00:12:05,550 이 프로그램은, 그냥 명확하게하기 위해, positive1입니다. 200 00:12:05,550 --> 00:12:11,980 내가 여기서 가서 내 터미널 창에 입력 positive1을 보자. 201 00:12:11,980 --> 00:12:15,080 괜찮 컴파일됩니다. 나는 Enter 키를, positive1을 실행하는거야. 202 00:12:15,080 --> 00:12:19,250 난 당신이 나에게 양의 정수를주는 요구합니다. 나는 -1 말합니다. 그건 작동하지 않았다. 203 00:12:19,250 --> 00:12:22,340 0, 99. 그런 일 것 같습니다. 204 00:12:22,340 --> 00:12:25,310 아닐지도 가장 엄격한 테스트,하지만 적어도 그것은 좋은 정신 검사입니다 205 00:12:25,310 --> 00:12:27,100 우리가 오른쪽 궤도에 있다고. 206 00:12:27,100 --> 00:12:29,570 >> 그래서 지금, 내가 가서이의 버전 2를 열어 207 00:12:29,570 --> 00:12:32,800 이미 다른 무엇입니까? 208 00:12:32,800 --> 00:12:39,030 이 같은 일을 구현,하지만 분명히 다른이 시간을 얻을 수있어? 209 00:12:40,790 --> 00:12:47,090 녹색이 BOOL. 그것은 녹색, 데이터 유형 BOOL로 알려진이 키워드에 강조 표시됩니다. 210 00:12:47,090 --> 00:12:50,510 그것은 C.의 모든 버전에 내장 된 오지 않아 211 00:12:50,510 --> 00:12:52,650 당신은 특정 라이브러리를 포함해야합니다. 212 00:12:52,650 --> 00:12:56,460 우리가 BOOL에 액세스 할 수 있도록 우리의 경우에는, 나는 CS50 라이브러리를 포함되어 있습니다. 213 00:12:56,460 --> 00:12:59,860 그러나 라인 18에, 우리는 감사 불리는 Boolean 값을 갖고있는 것 같다. 214 00:12:59,860 --> 00:13:02,190 이 아무 것도 신고 할 수도 있지만, 나는 감사라는 215 00:13:02,190 --> 00:13:04,750 단지 종류의 몇 가지 의미 의미를 전달합니다. 216 00:13:04,750 --> 00:13:07,700 그래서 처음에 라인 18, 나는 분명히 감사가 아니야 217 00:13:07,700 --> 00:13:12,230 감사 부울 값은 한 줄에 18에 false로 초기화되기 때문입니다. 218 00:13:12,230 --> 00:13:16,500 그리고 그것이 내가 23을 통해 라인 (21)에 여기에 무슨 짓을했는지 보인다 219 00:13:16,500 --> 00:13:19,200 그냥 가지 내 논리를 재 작성 한합니다. 220 00:13:19,200 --> 00:13:26,100 더 기능적으로 서로 다른 그래서 INT는 사용자가 제공 한 경우하지만, 라인 (22)에 지금은 확인 221 00:13:26,100 --> 00:13:31,360 0보다 큰, 그럼 간단하게 true로 감사의 값을 변경합니다. 222 00:13:31,360 --> 00:13:35,590 그리고 왜 그런 짓을합니까? 라인 25 때문에, 확실히 나는 병을 확인하는거야. 223 00:13:35,590 --> 00:13:39,760 감사가 거짓 인 동안이 루프를 수행합니다. 224 00:13:39,760 --> 00:13:42,960 그래서 버전 1에 대한 대안으로 제안 225 00:13:42,960 --> 00:13:47,050 가 아마 적어도 좀 더 직관적이기 때문에, 좀 더 영어​​에 근거입니다. 226 00:13:47,050 --> 00:13:51,980 감사가 거짓 인 동안 감사하지 또는면서 다음을 수행하십시오. 227 00:13:51,980 --> 00:13:56,220 그리고 이번에는 너무 내가 외관상 사용자가 입력 기억 상관 없어요 228 00:13:56,220 --> 00:14:00,050 통지하기 때문에이 아무런 변수 N, 그래서 사실은, 약간의 흰 거짓말은 없습니다. 229 00:14:00,050 --> 00:14:03,290 >> 우리는 그것의 하단에 도착하면 기능적으로, 프로그램은 약간 다릅니다 230 00:14:03,290 --> 00:14:04,960 나는 여기서 n은 무엇 기억 안 때문입니다. 231 00:14:04,960 --> 00:14:09,120 하지만 여기에 보여주고 싶었도 우리는 GetInt을 본 적이하더라도 232 00:14:09,120 --> 00:14:13,780 과의 오른쪽에 사용되는 GetString 지금까지 등호 233 00:14:13,780 --> 00:14:17,310 우리가 엄격하게 필요가 없습니다 값 기술적를 기억. 234 00:14:17,310 --> 00:14:20,290 만약 그냥 값을 저장 상관 없어 어떤 이유를 들어, 235 00:14:20,290 --> 00:14:25,540 당신은, 우리가 단순히 GetInt으로 쓸 수 있다는 것을,이 값을 확인하려면 236 00:14:25,540 --> 00:14:27,320 열린 괄호 가까이 괄호. 237 00:14:27,320 --> 00:14:30,570 우리가 말한 적으로 그 함수는 값을 반환하는 것이다. 238 00:14:30,570 --> 00:14:32,220 이 정수 당신을 돌려 줄거야. 239 00:14:32,220 --> 00:14:34,460 그리고 당신은 정신적, 이런 일이 있었는지 생각하면 240 00:14:34,460 --> 00:14:38,190 나는 99에 입력 할 때, GetInt은 숫자 99를 반환 241 00:14:38,190 --> 00:14:41,840 그래서 개념, 내 코드가 실제로 있었다 것처럼입니다. 242 00:14:41,840 --> 00:14:45,950 99이 0보다 실제로 더 크다면 다음 감사 사실이되고, 243 00:14:45,950 --> 00:14:50,810 지금 감사이기 때문에 다음 줄에 25 우 실현, 우리는 끝났어, 244 00:14:50,810 --> 00:14:53,970 및 라인 (26)에서, 우리는 단순히 '긍정적 인 정수에 대한 감사합니다 "라고 245 00:14:53,970 --> 00:14:55,960 이 할 일 뭐든간에. 246 00:14:55,960 --> 00:14:59,140 지금 말하자면, 여기 약간의 구문 설탕을 해보자 구. 247 00:14:59,140 --> 00:15:04,670 우리가 positive3이 세 번째와 최종 변종이 줄 25 청소 수 있는지 봅시다. 248 00:15:04,670 --> 00:15:13,600 >> 지금 어떤 코드의 라인 만 차이가? >> [학생] 25. >> [Malan] 네, 25. 249 00:15:13,600 --> 00:15:17,680 그리고 우리는 아직이 트릭을 보지 못했지만, 우리는 월요일에 느낌표를 봤어요 250 00:15:17,680 --> 00:15:21,070 이는 무엇을 나타냅니다? >> [학생] 없습니다. >> 못하거나 부정. 251 00:15:21,070 --> 00:15:23,510 그래서 Boolean 값을 가지고 값을 플립. 252 00:15:23,510 --> 00:15:25,810 참 거짓되고, 거짓 사실이된다. 253 00:15:25,810 --> 00:15:30,420 이 그래서, 내가 제안 것이라고 코드를 작성도 좀 더 직관적 인 방법입니다 254 00:15:30,420 --> 00:15:33,430 난 아직 false로 감사 초기화하기 때문에, 난 여전히 다음을 수행 255 00:15:33,430 --> 00:15:36,010 그 때가되면 나는 true로 감사 설정 256 00:15:36,010 --> 00:15:40,880 하지만 지금은 정말 그냥 구두로 왼쪽에서 오른쪽으로이 코드를 번역 할 수 있습니다 257 00:15:40,880 --> 00:15:45,630 동안 (감사!), 탕이나 감탄 점은,하지의 개념을 나타냅니다 때문에 258 00:15:45,630 --> 00:15:47,580 그래서 감사하지 동안. 259 00:15:47,580 --> 00:15:49,900 그럼 다시, 우리는 본질적으로 다른 새로운 개념을 도입하지 않았습니다. 260 00:15:49,900 --> 00:15:53,730 우리가 스크래치와 함께 연주 할 때 우리는 다시 논리에 대해 얘기 261 00:15:53,730 --> 00:15:56,720 하지만 우리가 여러 가지 방법으로 우리의 코드를 작성할 수 지금 알고 있습니다. 262 00:15:56,720 --> 00:16:01,060 따라서 특히 pset1에 당신이 어떤 프로그램을 작성하는 방법을 알아 내려고 애 쓰고 일종의 경우 263 00:16:01,060 --> 00:16:04,340 솔루션의 숫자가있을 수 있기 때문에 확률은 당신이 운이 아르 264 00:16:04,340 --> 00:16:06,110 당신은에 일어날 수 있는지 확인하십시오. 265 00:16:06,110 --> 00:16:10,500 예를 들어,이 프로그램의도 간단한에 불과 3입니다. 괜찮아요. 266 00:16:10,500 --> 00:16:14,200 그리고 지금 월요일에 우리가 반환 값이 메모에 남아 기억합니다. 267 00:16:14,200 --> 00:16:18,450 그래서 처음으로 우리가 주이없는 프로그램을 작성, 268 00:16:18,450 --> 00:16:22,550 또한 여기 쓴 자신의 사용자 지정 기능이 있습니다. 269 00:16:22,550 --> 00:16:26,810 그러니까 줄 31에서 34을 통해 나는 큐브 기능을 구현했습니다. 270 00:16:26,810 --> 00:16:30,240 그것은 복잡한 없습니다. 단지 * A * 이번 케이스는 아니군요. 271 00:16:30,240 --> 00:16:34,750 하지만 그런 일에 대해 중요한 것은 내가의 형태로 입력을 데려 갈 것입니다 272 00:16:34,750 --> 00:16:39,180 나는 * A *의 형태로 출력을 돌아가는거야. 273 00:16:39,180 --> 00:16:43,560 그래서 지금 제가있는 능력을 가지고 정도는 나도 prinf 혼자에 익숙해 같은, 274 00:16:43,560 --> 00:16:47,240 큐브 함수를 호출하여이 함수를 호출합니다. 275 00:16:47,240 --> 00:16:51,970 >> 그리고 큐브 기능은 일부 입력을 차지하며 큐브 기능은 일부 출력을 반환합니다. 276 00:16:51,970 --> 00:16:56,960 대조적으로, printf는 짓을 했어. 277 00:16:56,960 --> 00:17:00,840 옆으로는 값을 반환 않는다하더라도 그것은 우리가 아끼던 아무 값도 반환하지 않았습니다; 278 00:17:00,840 --> 00:17:03,110 당신은 일반적으로 그것을 무시합니다. 279 00:17:03,110 --> 00:17:06,510 Printf 뭔가 했어요. 이 화면에 인쇄의 부작용했다. 280 00:17:06,510 --> 00:17:11,770 여기에 대조적으로, 우리는 실제로 무언가를 반환하는 큐브 기능을 갖추고 있습니다. 281 00:17:11,770 --> 00:17:15,520 그래서 익숙한 사람들을 위해, 그것은 매우 간단 좋습니다. 282 00:17:15,520 --> 00:17:19,640 그러나 입력을 전달하고 출력을 다시 가봐야의 생각과 덜 익숙한 사람들을 위해, 283 00:17:19,640 --> 00:17:21,950 그냥 뭔가 슈퍼 간단한 해보자. 284 00:17:21,950 --> 00:17:25,490 편안한 사람이 간략하게 무대에 올 수 있을까요? 285 00:17:25,490 --> 00:17:28,040 당신은뿐만 아니라 당신에게 카메라로 편안하게해야합니다. 응? 좋아요. 286 00:17:28,040 --> 00:17:31,240 이름이 무엇입니까? >> [학생] 켄. >> 켄. 괜찮아요. 켄, 일어에 있습니다. 287 00:17:31,240 --> 00:17:35,050 켄 여기 종류의 함수가 될 것입니다. 288 00:17:35,050 --> 00:17:38,720 가 진행이 짓을 보자. 의 조금 고급을 보자. 289 00:17:38,720 --> 00:17:42,260 만나서 반가워요. 중앙 무대에 오신 것을 환영합니다. 괜찮아요. 290 00:17:42,260 --> 00:17:46,640 - 여기서이 버튼을 눌러 보자. 괜찮아요. 291 00:17:46,640 --> 00:17:49,820 그래서 여기 당신이 현대적인 칠판을 가지고 292 00:17:49,820 --> 00:17:53,470 그리고 내가하면, 예를 들어, 기본 기능입니다 293 00:17:53,470 --> 00:17:56,460 그리고 내 손에 아이 패드가 없습니다. 294 00:17:56,460 --> 00:17:59,710 >> 음, 난 그렇게 할 수 없습니다 - 정말하는 방법을 기억하지 않습니다. 295 00:17:59,710 --> 00:18:02,480 정말 좋은 필기가 없습니다 296 00:18:02,480 --> 00:18:05,520 그래서 따라서 당신이 내게 화면에 뭔가를 인쇄하고 싶습니다. 297 00:18:05,520 --> 00:18:12,040 나는 주 프로그램 당하고 있어요, 그리고 당신이이 말을하지 않을 수 없네요 298 00:18:12,040 --> 00:18:16,720 내 글자에 작성하고 당신에게 의견을 전달하여. 299 00:18:16,720 --> 00:18:20,400 이 운동은하지만 바보, 함수의 개념과 함수를 호출 300 00:18:20,400 --> 00:18:22,400 이에 기능 정말 종기를 반환. 301 00:18:22,400 --> 00:18:26,260 나는 주이고, 난 그냥 화면에 printf, 견적 - 인용을 끝 맺다 뭔가를 작성했습니다 302 00:18:26,260 --> 00:18:29,110 나는이 프로그램을 실행하고 있으며, 빠른 시일 printf라는됩니다 303 00:18:29,110 --> 00:18:32,880 그것은 하나의 인수 또는 큰 따옴표 사이에 가끔 매개 변수를 걸립니다. 304 00:18:32,880 --> 00:18:35,880 여기 인수입니다. 나는 켄에 통과거야. 305 00:18:35,880 --> 00:18:39,020 그는 몇 년 몇 수 전에 서면 블랙 박스입니다 306 00:18:39,020 --> 00:18:41,510 그건 분명에만 화면에 물건을 인쇄하는 방법을 알고 있습니다. 307 00:18:41,510 --> 00:18:43,150 그럼 실행합니다. 308 00:18:49,280 --> 00:18:51,280 그건 나쁘지 않아. 아주 좋아. 309 00:18:51,280 --> 00:18:55,510 이제 켄이 실행 이루어집니다. 그가 나에게 뭔가를 다시 건네해야합니까? 310 00:18:55,510 --> 00:18:57,470 우리는 지금까지 없었습니다. 311 00:18:57,470 --> 00:19:00,460 다시 말하지만, printf 실제로 숫자를 반환 않지만, 이제 그 방법을 무시하는 것 312 00:19:00,460 --> 00:19:03,470 우리가 사용한 적이 때문입니다. 따라서 켄하기에 그입니다. 313 00:19:03,470 --> 00:19:08,580 그리고 이제 주 다시 프로그램의 제어 인수 314 00:19:08,580 --> 00:19:11,060 코드의 라인은, printf, 실행 완료되기 때문입니다. 315 00:19:11,060 --> 00:19:14,050 그리고 우리는 다른 줄이 무엇이든 수행 할 때, 우리의 방법에 대해 이동합니다. 316 00:19:14,050 --> 00:19:17,320 그래서 지금의이 약간 다른 예를 봅시다. 317 00:19:17,320 --> 00:19:24,940 이 시간 여기가 먼저 화면을 깨끗하게,이 시간 우리는 cubing 기능을 할거야 318 00:19:24,940 --> 00:19:27,080 하지만 이번에는, 내가 출력 값을 기대합니다. 319 00:19:27,080 --> 00:19:29,180 >> 그러니 어서 가서 해주세요. 320 00:19:29,180 --> 00:19:35,790 지금은 x는 x의 큐브를 얻을 수 있다고 코드 줄 수 있습니다. 321 00:19:41,370 --> 00:19:46,370 코드의 라인, 리콜은 다음과 같습니다 X = 큐브 (X); 322 00:19:46,370 --> 00:19:50,930 그럼이 성공 할까? 가 가서 다시 당신에게 흰색 화면을 줘 보자. 323 00:19:50,930 --> 00:19:54,070 난 지금 X의 값을 적어 갈거야 324 00:19:54,070 --> 00:20:01,400 이 순간에 할 일이있는가 간단하게하기 위해,의 말 2 보자. 325 00:20:01,400 --> 00:20:06,150 나는 종이 제 값을 x입니다 (2)의 값에 쓰여지 있습니다. 326 00:20:06,150 --> 00:20:10,920 나는 켄에게 넘겨. >> 그리고 난 답을 만드는가? >> 네, 그냥 답을 작성하게. 327 00:20:12,760 --> 00:20:18,940 좋아요. 그리고 지금 그가 나에게 뭔가를 반환 할 수 있습니다. 좋아요. 맘에 멋지네요. 328 00:20:18,940 --> 00:20:23,120 이제 그는이 경우에 8의 가치를 돌려 손이며 어떤 역할을합니까? 329 00:20:23,120 --> 00:20:28,250 실제로 -이 권리를 얻을 보자. 내가 그걸로 뭘해야하지? 330 00:20:28,250 --> 00:20:33,440 지금은이 값을 가지고 실제로 메모리에있는 동일한 비트에 저장하는거야. 331 00:20:33,440 --> 00:20:35,170 하지만 여기에 어려움을 겪고있는 것 같아요납니다. 332 00:20:35,170 --> 00:20:38,210 어디 실제로 X의 값을 쓸 않기 때문에, 조금 혼란스러워 333 00:20:38,210 --> 00:20:43,150 내가 방금 한 것은 물리적으로 손 켄 값 2를 가지고 종이이기 때문에 334 00:20:43,150 --> 00:20:46,590 이는 X이었고, 실제로 그 무슨 일이 일어 났는지 정확하게. 335 00:20:46,590 --> 00:20:50,210 그래서 당신이 함수를 호출하고 때 인수에 전달하는 판명 336 00:20:50,210 --> 00:20:53,290 안녕하세요 같은 세상이 아니면, 2처럼 인수에 전달 337 00:20:53,290 --> 00:20:57,110 일반적으로, 당신은 그 논쟁의 사본을 전달하고 있습니다. 338 00:20:57,110 --> 00:21:00,730 그래서 난 여기 숫자 2를 썼다와 켄에게 넘겨 것처럼 339 00:21:00,730 --> 00:21:04,720 그건 내가 아직도 어딘가에서 값 2의 사본이 있다는 뜻한다 340 00:21:04,720 --> 00:21:08,890 실제로, 지금은 값이 8 다시이라도 한 건 당신이 RAM에 다시 가야하기 때문에 341 00:21:08,890 --> 00:21:12,130 내가 한때 숫자 2를 한 곳에서 실제로 8 적어 둡니다. 342 00:21:12,130 --> 00:21:16,950 따라서 시각적으로, 말 그대로의 값의 복사본을 전달하는이 개념을 기억 해요. 343 00:21:16,950 --> 00:21:20,780 >> 이 경우에 8과 같은 값을 - - 켄은 그의 문제는, 뭔가를 내게 건네 않습니다 344 00:21:20,780 --> 00:21:24,980 내가 주위를 유지하려는 경우 그럼 내가 그 값에 뭔가 의미있는 일을하고 있습니다. 345 00:21:24,980 --> 00:21:29,650 그래서이 모든 긴 전에 모든 너무 익숙 다시 올 것이다. 346 00:21:29,650 --> 00:21:34,920 여기이 데모에 대한 많은 켄 감사합니다. [박수] 347 00:21:34,920 --> 00:21:36,920 아주 잘 했어요. 348 00:21:36,920 --> 00:21:42,690 궁극적으로 우리가했던 짓 전화 기능의 일부에 관한 그 방법을 알아 보자. 349 00:21:42,690 --> 00:21:47,910 내가 가서 여기 cubing 예를 다시 되돌려 보자. 350 00:21:47,910 --> 00:21:53,300 공지 사항 우리가 실제로 더가 나타나기 시작하려는 경우 즉, 351 00:21:53,300 --> 00:21:57,570 우리는 숫자 x가 여기에 전달되는 건 사실주의해야 할거야 352 00:21:57,570 --> 00:22:01,530 실제로 함수에 전달되는 일을 다릅니다. 353 00:22:01,530 --> 00:22:05,880 그러니 다시 복사하여이 패스는 순간에 매우 밀접한 관계가있는이 될 것입니다. 354 00:22:05,880 --> 00:22:09,580 의이 잘못된 아직 작동하지 않는 것을 살펴 보자. 355 00:22:09,580 --> 00:22:13,250 나는 가서 자연에 결함이 삼분의 일 버그 예를 열거야 356 00:22:13,250 --> 00:22:18,550 그리고 그것은 buggy3 전화는 교환 기능을 구현있어. 357 00:22:18,550 --> 00:22:25,110 여기 x와 y는 임의의 각각 1과 2로 초기화 된 주요 기능을 갖추고 있습니다. 358 00:22:25,110 --> 00:22:27,700 우리는 GetInt를 사용할 수 있지만, 우리는 간단한 운동이 필요합니다 359 00:22:27,700 --> 00:22:30,170 그래서 1과 2와 같은 하드 코딩입니다. 360 00:22:30,170 --> 00:22:35,340 라인 21 및 22에서, 우리는 분명히 x와 y, 한 줄에 1을 출력하면된다. 361 00:22:35,340 --> 00:22:39,720 그런 다음 줄 23 일, 나는, 점, 점, 점을 이러한 값을 교환있어 주장한다. 362 00:22:39,720 --> 00:22:44,170 내가 외관상 라인의 기능 2 인수를 24이라고 스왑 전화하십시오. 363 00:22:44,170 --> 00:22:48,300 기능이 인수를 사용하는 것이 완전히 정당한 겁니다. 우리는 printf 이미 그렇게 봤어요. 364 00:22:48,300 --> 00:22:51,830 >> 따라서, 스왑 무리가 x와 y를 차지하며 이름이 있듯이 365 00:22:51,830 --> 00:22:54,670 나는이 두 값을 교환거야 희망합니다. 366 00:22:54,670 --> 00:23:00,090 그래서 저는 25 "교체!"행에 대한 소유권을 주장 그래서 x와 y를 다시 인쇄 367 00:23:00,090 --> 00:23:03,070 그들이 실제로 교체 된 것으로 가정하에. 368 00:23:03,070 --> 00:23:06,080 하지만 실제로이 프로그램을 실행하는 경우 - 나 터미널 창을 열어 보자 369 00:23:06,080 --> 00:23:09,860 저 buggy3을 보자 - 이름에서 알 수 있듯이,이 일은 좋게 끝나지 않을 것이다 370 00:23:09,860 --> 00:23:15,770 내 말은, 입력 x는 1 것을 확인할를 쳤을 때 y는 2이기 때문에 371 00:23:15,770 --> 00:23:19,420 아직 프로그램의 끝에, 그들은 실제로는 여전히 동일합니다. 372 00:23:19,420 --> 00:23:22,960 그럼 지금 켄과 함께, 무슨 실제로 무슨 일 시범에 따라? 373 00:23:22,960 --> 00:23:28,710 이 스왑 함수에 다이빙합시다. 이 짧은 됐네요. 단지 긴 코드 몇 줄입니다. 374 00:23:28,710 --> 00:23:34,520 그러나 켄과 여기에 말한 간단한 이야기​​를 바탕으로 근본적인 문제가 뭐죠? 375 00:23:34,520 --> 00:23:36,670 왜 스왑이 고장이야? 376 00:23:36,670 --> 00:23:39,660 [학생] 당신은 사본이 아닌 변수에 저장하고 있습니다. 377 00:23:39,660 --> 00:23:43,980 그렇지. 우리는 변수, 사본 자체를하지 저장하고 있습니다. 378 00:23:43,980 --> 00:23:47,170 즉, 스왑 분명히 2 인자, 정수를 필요 379 00:23:47,170 --> 00:23:49,370 하고 자의적으로, a와 b라는 380 00:23:49,370 --> 00:23:54,420 그리고 여기까지 나는 각각 1과 2아르 x와 y,에 통과 한 381 00:23:54,420 --> 00:23:58,770 하지만 그대로 X를 전달 하는게 아니라, 말 그대로, y에 전달 없어요 382 00:23:58,770 --> 00:24:01,450 나는 X의 사본와 y의 복사본을 통과거야. 383 00:24:01,450 --> 00:24:04,510 그것은 거의 것처럼 당신은 복사 및 스왑에 붙여 넣을거야 384 00:24:04,510 --> 00:24:07,810 당신이 실제로 조작 할 값입니다. 385 00:24:07,810 --> 00:24:14,480 그 경우, 나는이 프로그램 시작 줄을 실행 35 36 이예요면 386 00:24:14,480 --> 00:24:18,650 나는 그 이야기의이 시점에서, 선 37 때, 어떻게의 가치인가? 387 00:24:21,040 --> 00:24:25,050 이야기의이 시점에서, 선 37,이 시점에서의 값이 무엇입니까? >> [학생] 1. 388 00:24:25,050 --> 00:24:29,280 [Malan] x가 첫 번째 인수로 전달 되었기 때문에, 그냥, 오른쪽, 1이어야합니다, 389 00:24:29,280 --> 00:24:33,080 이 기능은 임의의 첫 번째 인수를 호출합니다. 390 00:24:33,080 --> 00:24:38,200 마찬가지로 두 번째 인수를 Y 있으며, 단지 임의의 두 번째 인자 B를 부르고있어. 391 00:24:38,200 --> 00:24:40,990 >> 이 이분법은 실제로 매우 간단하게 설명되어 있습니다. 잘 생각해보세요. 392 00:24:40,990 --> 00:24:43,320 우리는 모두, printf 쓴 사람을 만난 적이있다 393 00:24:43,320 --> 00:24:50,770 그래서 반드시, 그 또는 그녀는 우리의 변수를 30 년 후에 호출하려고 아무 생각이 없습니다. 394 00:24:50,770 --> 00:24:56,650 그러니 당신 작성할 함수의 변수라고 부릅니다 구분이있을 395 00:24:56,650 --> 00:25:02,080 그리고 당신은 전화 또는 사용하는 함수의 변수라고 부릅니다. 396 00:25:02,080 --> 00:25:05,340 다시 말해, 난 x와 y로 내 변수를 작성했습니다 397 00:25:05,340 --> 00:25:08,890 다른 사람이 스왑 기능을 작성했는데 있다면, 그 또는 그녀는 확실히 모르겠 는데요 398 00:25:08,890 --> 00:25:10,690 내 변수는 호출 할 건데 399 00:25:10,690 --> 00:25:13,830 그래서 이름이 이중성을 가지고 왜인지 알고 있습니다. 400 00:25:13,830 --> 00:25:16,750 기술적으로, 난 우연의 일치하여이 작업을 수행 할 수 401 00:25:16,750 --> 00:25:20,080 하지만 아직도 사본로 전달 될 것입니다. 402 00:25:20,080 --> 00:25:23,650 이건 그냥 순수한 우연의 일치 될 심미적 경우 스왑을 쓴 사람 403 00:25:23,650 --> 00:25:26,150 같은 이름을 사용했다. 404 00:25:26,150 --> 00:25:32,370 따라서 이야기의이 시점에서, 선 37,은 1 번, B는 2, 이제 내가 그들을 교체로 진행합니다. 405 00:25:32,370 --> 00:25:34,900 우선, 제가 실제로 훨씬 더 간단 해주세요. 406 00:25:34,900 --> 00:25:36,690 나는 코드의 이러한 3 라인이 뭘하고 있었는지하지 않습니다. 407 00:25:36,690 --> 00:25:41,210 난 그냥이 일을하게 놔두지 : B = A; = B; 했어. 408 00:25:41,210 --> 00:25:44,690 왜이 논리적으로 깨진입니까? 409 00:25:46,490 --> 00:25:48,900 그것은 바로, 직관적 일 이네요? 410 00:25:48,900 --> 00:25:52,560 ,된다된다 b와 b는 자 411 00:25:52,560 --> 00:25:57,730 하지만 문제는 라인 37 실행 자마자, a와 b의 값 뭐야 뭐야? 412 00:25:57,730 --> 00:26:03,410 당신은 사방에서 공격했기 때문에 1, 동일한, 말하자면, 당신은 동일하고 B를 변경했습니다. 413 00:26:03,410 --> 00:26:08,890 일단 라인 37 실행 된, 정말이야, 이제 숫자 1의 2 장을 가지고 414 00:26:08,890 --> 00:26:13,350 이 기능을 내부에, 당신은 라인 38 말 그래서 때 = B, 415 00:26:13,350 --> 00:26:17,640 방금 1 ~ 1 할당하기 때문에 당신은 가지 끝장이야. 416 00:26:17,640 --> 00:26:20,580 당신은 가지 당신이 신경 썼던 값을 잃었습니다. 417 00:26:20,580 --> 00:26:23,220 그럼이의 원래 버전에, 내가 무슨 짓을했는지 확인합니다. 418 00:26:23,220 --> 00:26:26,850 나는 대신이처럼 보이는 코드의 세 번째 라인을했다. 419 00:26:26,850 --> 00:26:28,580 나는 임시 변수를 선언합니다. 420 00:26:28,580 --> 00:26:32,170 >> TMP는 임시 변수에 대한 매우 일반적인 이름이며, 정수 야 421 00:26:32,170 --> 00:26:34,580 이건 내가의 복사본을 만들고 싶어 일치하기 때문. 422 00:26:34,580 --> 00:26:39,770 라인 37 실행 된 일단 내 말은, tmp 디렉토리의 내부의 사본을 저장 423 00:26:39,770 --> 00:26:45,860 의 값은 - 빠른 정신 검사 - 1, B의 값은 2입니다 424 00:26:45,860 --> 00:26:48,970 및 TMP의 값은 1입니다. 425 00:26:48,970 --> 00:26:52,060 그래서 지금은 라인 38 실행합니다. 426 00:26:52,060 --> 00:27:00,540 라인 38 실행되면, a는 b의 값을 취한다. 그리고 B는 12 살, 그래서 지금은 2 명입니다. 427 00:27:00,540 --> 00:27:05,210 따라서 이야기의이 시점에서, 2가, B는 2, 및 TMP은 1입니다 428 00:27:05,210 --> 00:27:11,060 그래서 지금 논리적으로, 우리는 B에 불과 털썩의 tmp를의 값이 수 있고이 완료됩니다. 429 00:27:11,060 --> 00:27:12,800 그래서 우리는 그 문제를 해결했습니다. 430 00:27:12,800 --> 00:27:17,720 불행하게도, 난이 양식에이 프로그램을 실행할 때, 실제로 어떤 값을 교환하지 않습니다. 431 00:27:17,720 --> 00:27:20,100 하지만, 왜 명확하게 하는가? 432 00:27:23,660 --> 00:27:26,450 내 말은, 그저 잠시 전에서 논리적으로 문제를 해결 433 00:27:26,450 --> 00:27:31,020 내가이 프로그램을 실행하면 다시 한 번,, x와 y는 변경되지 않은 상태로 유지 434 00:27:31,020 --> 00:27:33,310 프로그램의 실행 말에. 435 00:27:33,310 --> 00:27:37,220 [안 들리게 학생 코멘트] >> 우린 아무 것도 반환하지 않은 사실 인 것. 436 00:27:37,220 --> 00:27:39,670 때문에 지금까지 좀 문제가 여기가 있다는 사실을 알아하지만 그건 변 437 00:27:39,670 --> 00:27:44,170 우리가 돌​​아갈 수 있었던 유일한 한 가지이며,이 C.의 제한입니다 438 00:27:44,170 --> 00:27:49,070 난 가지 여기있을 거 니깐 경우있는 만, 정말 하나의 값을 반환 할 수 439 00:27:49,070 --> 00:27:53,310 나는 X의 새 값을 반환 할 수 있 때문에, Y의 새로운 값을 반환 할 수 440 00:27:53,310 --> 00:27:55,190 하지만 모두 돌아 오길 바랍니다. 441 00:27:55,190 --> 00:27:58,650 따라서 간단한 솔루션은 여기되지 않습니다 반환. 442 00:27:58,650 --> 00:28:01,710 그러나 문제는 근본적으로 왜? 우리는 실제로 무엇을 바꿔 치기했을? 443 00:28:01,710 --> 00:28:04,190 [학생] a와 b. >> a와 b. 444 00:28:04,190 --> 00:28:08,230 그러나 a와 b는 우리가이 작품의 모든 짓을 의미합니다 x와 y, 사본이 있습니다 445 00:28:08,230 --> 00:28:11,650 우리는, 스왑 기능과이 변수의 모든 3에 대해 얘기 3 분 소요 446 00:28:11,650 --> 00:28:15,420 그는 고립에서 완벽하게 올바른 멋진 데요, 447 00:28:15,420 --> 00:28:20,740 하지만 a와 b의 범위는 여기에 다음 행에 있습니다. 448 00:28:20,740 --> 00:28:24,790 >> 그러므로, 루프처럼 나는, 루프의 내부에 정수를 선언하는 경우 449 00:28:24,790 --> 00:28:28,760 마찬가지로, 당신이 작성한 함수의 a와 b 내부를 선언하는 경우, 450 00:28:28,760 --> 00:28:33,320 그들은 그 함수의 경우에만 유효 안에, 즉 가능한 한 빨리 스왑이 실행 완료로 의미 451 00:28:33,320 --> 00:28:38,470 우리는 라인 25 라인 24 일부터 이동 x와 y는 전혀 변경되지 않았습니다. 452 00:28:38,470 --> 00:28:42,790 당신은 변수의 사본을 교환 시간을 낭비. 453 00:28:42,790 --> 00:28:47,010 그래서이 문제에 대한 솔루션이 실제로 비 명백한 것을 밝혀졌다. 454 00:28:47,010 --> 00:28:50,670 우리가 단 1 값을 반환 할 수 있습니다 때문에, 값을 반환하는 매우 충분하지입니다 455 00:28:50,670 --> 00:28:53,470 그리고 정말 같은 시간에 x와 y를 모두 교환하고 싶어 456 00:28:53,470 --> 00:28:55,210 그래서 우리는이 곳으로 다시 데려 와야 할 겁니다. 457 00:28:55,210 --> 00:29:01,020 그러나 지금,이 문제는 근본적으로 a와 b 사본 있다는 사실에서 파생는 것을 458 00:29:01,020 --> 00:29:03,630 그리고 그들은 자신의 범위에 있습니다. 459 00:29:03,630 --> 00:29:05,050 의 어떤 방법으로이 문제를 해결하려고 봅시다. 460 00:29:05,050 --> 00:29:11,250 의는이의 제 4 변형, buggy4의 말을 듣지, 제가 실제로 돌아 스크롤하게하고 엽니 다. 461 00:29:11,250 --> 00:29:13,370 이건 어때요? 462 00:29:13,370 --> 00:29:17,810 이것은 우리가 그것을 해결에 찔린를하기 전에 볼 수있는 비슷하지만 간단한 문제입니다. 463 00:29:17,810 --> 00:29:24,190 이 프로그램은 증가라고하고, 분명히 라인 18에 1 X 정수를 초기화합니다. 464 00:29:24,190 --> 00:29:28,150 그때 x는 1 항에, 나는 다음 '증가 ... "을 주장 465 00:29:28,150 --> 00:29:33,730 ,이 사건은 증가를 호출하지만 선 22 23, 내가이 증가 된 주장 466 00:29:33,730 --> 00:29:40,220 2, 아마 - - 내가 여기서 x는 그게 뭐든지간에 지금 주장하지만,이 프로그램은 버그가 있습니다. 467 00:29:40,220 --> 00:29:42,610 문제는 무엇입니까? 468 00:29:43,440 --> 00:29:50,160 그래. >> [안 들리게 학생 응답] >> 맞아. 469 00:29:50,160 --> 00:29:52,490 따라서 x는 라인 18 일, 분명히 선언되었습니다. 470 00:29:52,490 --> 00:29:54,700 그 메인의 중괄호 안에 있습니다. 471 00:29:54,700 --> 00:29:58,440 자, 이제 간단한 대답은 x가 존재하는 동안 것입니다 472 00:29:58,440 --> 00:30:03,930 이 라인 32에 존재하지 않습니다이 프로그램은 실제로도 컴파일되지 않습니다. 473 00:30:03,930 --> 00:30:07,940 내가이 코드를 컴파일 해보십시오 컴파일러는 좀 지르지 것입니다 474 00:30:07,940 --> 00:30:14,100 일부 선언하지 않은 식별자 또는 그 효과 뭔가에 대해. 사실 해보자. 475 00:30:14,100 --> 00:30:18,470 이 buggy4을 것입니다. 저기입니다. 476 00:30:18,470 --> 00:30:22,110 라인 32 선언하지 않은 식별자가 'X'를 사용합니다. 477 00:30:22,110 --> 00:30:25,580 그리고 실제로이 유용 너무의 오늘 여기에 더 명시 해 478 00:30:25,580 --> 00:30:27,580 근무 시간과 집에서. 479 00:30:27,580 --> 00:30:29,300 >> 이 cryptically 작성, 좀납니다. 480 00:30:29,300 --> 00:30:37,270 그러나 꽝가 있다는 사실은 buggy4.c 말을 우리 한테 바가지 나 긁히고 : 32:5, 실제로 유용합니다. 481 00:30:37,270 --> 00:30:42,050 이 오류가 문자 위치 5시에 라인 32에 있다는 것을 의미합니다. 482 00:30:42,050 --> 00:30:46,700 따라서 1, 2, 3, 4, 5. 문제가있는 곳 사실입니다. 483 00:30:46,700 --> 00:30:49,790 또한,도 근무 시간에 집에서 염두에 두어야, 여기 운입니다. 484 00:30:49,790 --> 00:30:52,990 한 실수 있습니다. 이 수정 상대적으로 쉽게거야. 485 00:30:52,990 --> 00:30:55,990 하지만 당신이 압도적 오류 메시지의 전체 화면 전체를한다면, 486 00:30:55,990 --> 00:31:00,330 다시 맨 아래 하나가 바로 맨 위의 하나의 증상 일 수도 있다는 알고 있습니다. 487 00:31:00,330 --> 00:31:03,450 그래서 항상 맨 아래에서 버그를 심판 488 00:31:03,450 --> 00:31:05,820 단지 데이지 체인 효과가 있기 때문에 489 00:31:05,820 --> 00:31:09,240 그 말은 당신이 당신이 실제로보다 훨씬 문제가 제시되어 있습니다. 490 00:31:09,240 --> 00:31:15,150 내 목표는 x를 증가시키는 경우 그럼 우리는이 문제를 해결 수 있을까? >> [학생] X 글로벌하십시오. 491 00:31:15,150 --> 00:31:17,060 좋아, 그럼 우리는 X 세계를 만들 수 있습니다. 492 00:31:17,060 --> 00:31:20,480 ,하자 내가 이전에 경고하는 바로 가기를하지만, 여하튼, 우리는 빠른 수정이 필요합니다 493 00:31:20,480 --> 00:31:25,730 그래서 그냥 여기 INT x를 가정 해 보자. 그 X 전세계를합니다. 494 00:31:25,730 --> 00:31:31,800 이제 메인은에 액세스하고 증가가에 대한 액세스를했다가 495 00:31:31,800 --> 00:31:34,110 그래서 내가 가서 지금이 컴파일한다. 496 00:31:34,110 --> 00:31:37,630 buggy4을 입력하십시오. 이제 컴파일 보인다. 497 00:31:37,630 --> 00:31:41,230 가 buggy4을 실행할 수 있습니다. 그리고 실제로 일 것 같습니다. 498 00:31:41,230 --> 00:31:45,150 이것 만이 내가 할하지 않음으로, 내 말대로 할거야이 일 중 하나입니다 499 00:31:45,150 --> 00:31:47,010 난 여기 한으로 인해 일반적으로, 500 00:31:47,010 --> 00:31:50,440 우리의 프로그램이보다 훨씬 더 재미 있고 더 이상 얻을 수 있으며, 501 00:31:50,440 --> 00:31:56,390 삶의 문제에 대한 솔루션은 단지 파일의 상단에 모든 변수를 넣어하는 경우, 502 00:31:56,390 --> 00:31:59,690 매우 빨리 프로그램을 관리 할 수​​ 엄청 시리 힘들 않습니다. 503 00:31:59,690 --> 00:32:02,190 그것은 새로운 변수 이름을 생각 어려워 져 504 00:32:02,190 --> 00:32:05,240 그게 무슨 무엇을하고 있는지 변수 이해하기 어려워 져 505 00:32:05,240 --> 00:32:08,460 그리고 일반적으로,이 좋은 해결책이 아닙니다. 506 00:32:08,460 --> 00:32:10,030 그러니 이렇게 까. 507 00:32:10,030 --> 00:32:12,160 우리는 여기서 전역 변수를 사용하지 않습니다. 508 00:32:12,160 --> 00:32:16,240 >> 나는 x를 증가시키고 않기 때문에 분명히 수 - 509 00:32:16,240 --> 00:32:18,670 우리가이 작업을 수행하기 때문에 하루의 끝에서,이 바보 이야기의 종류입니다 - 510 00:32:18,670 --> 00:32:24,450 하지만 그 연산자에 대해 알고하지 않았거나 내가 주 자체를 변경 허락되지 않았어요 경우, 511 00:32:24,450 --> 00:32:30,730 어떻게 다른이 시간이없는 큐브를 여기서 켄을 구현 할 수 있지만, 증가? 512 00:32:31,380 --> 00:32:33,190 어떻게 여기에있는 것을 변경하려면 어떻게해야합니까? 그래. 513 00:32:33,190 --> 00:32:38,480 [학생] X에서 패스하고 돌아 [안 들리게] >> 그래, 좋아. 514 00:32:38,480 --> 00:32:41,900 그런데 왜 나는 X에서 통과 후보다 그것을 반환하지 않습니다 515 00:32:41,900 --> 00:32:44,870 왜 난 그냥 X + 1을 반환합니까하지 않습니다. 516 00:32:44,870 --> 00:32:47,710 몇 가지만 더 여기 변경해야합니다. 나는 오른쪽 궤도에입니다. 517 00:32:47,710 --> 00:32:49,770 그럼 내가 또 뭘을 조정해야하나요? 다른 사람. 그래. 518 00:32:49,770 --> 00:32:51,740 [안 들리게 학생 응답] 519 00:32:51,740 --> 00:32:54,730 가 무효화 아니라 때문에 증가의 반환 유형을 변경해야합니다. 520 00:32:54,730 --> 00:32:57,780 무효 의미없는가 돌아 없지만, 확실히 지금은되고 있습니다 521 00:32:57,780 --> 00:32:59,830 그래서이 요구로 변경 - >> [학생] 정수. 522 00:32:59,830 --> 00:33:02,740 나는 실제로 돌아가는거야 무엇이든과 일치하도록 INT. 523 00:33:02,740 --> 00:33:05,180 지금 뭔가 다른이 아직 버그가 있습니다. 그래. 524 00:33:05,180 --> 00:33:08,400 [안 들리게 학생 응답] >> [Malan] 나는 X를 증가 할 필요 건가요? 525 00:33:08,400 --> 00:33:12,080 [안 들리게 학생 응답] >> [Malan] 아, 그래서 나는 x를 통과해야합니다. 526 00:33:12,080 --> 00:33:16,660 그래서 여기에이 작업을 수행해야합니다. >> [안 들리게 학생 코멘트] 527 00:33:16,660 --> 00:33:20,050 [Malan] 지금 프로토 타입, 난 여기를 변경해야합니다. 528 00:33:20,050 --> 00:33:22,930 이 정수가하는 그래서이 될이 - 529 00:33:22,930 --> 00:33:25,620 음, 사실은 여기에 버그를 갖추고 있습니다. 의 이거 먼저 문제를 해결 보자. 530 00:33:25,620 --> 00:33:29,590 이 사실은 무엇을해야합니까? 그것은 정수 뭔가있을 있어요. 531 00:33:29,590 --> 00:33:32,700 귀하의 변수 x의 모든 전화를 시작하면은, 솔직히 X가 될 수도 있지만 532 00:33:32,700 --> 00:33:35,390 그것은 어떤 게 어떤 갈수록 벗어나야합니다거야. 533 00:33:35,390 --> 00:33:39,560 >> 그러니까 그냥 임의로 내 도우미 함수에 대해 다른 명명 규칙을 선택할 수 있습니다, 534 00:33:39,560 --> 00:33:41,940 제가 쓰는 기능. 우리는 전화 할게, 또는 우리에 신고하자 - 535 00:33:41,940 --> 00:33:45,010 하자 더욱 명시 적으로 그 번호를 전화하십시오. 536 00:33:45,010 --> 00:33:47,560 그래서 제가 전화 번호는 플러스 1, 무엇이든간에 반환해야 537 00:33:47,560 --> 00:33:50,740 지금은 여기와 여기에 한 가지 최대 1 다른 문제가 변경해야합니다. 538 00:33:50,740 --> 00:33:54,350 나는 첫 번째 줄 21 변경하려면 어떻게해야합니까? >> [안 들리게 학생 응답] 539 00:33:54,350 --> 00:33:57,610 [Malan] 나는 X에 지정해야합니다. 난 그냥 (X) 증가를 호출 할 수 없습니다. 540 00:33:57,610 --> 00:34:01,960 나는 왼쪽에 x의 값을 변경하여 답을 기억해야합니다. 541 00:34:01,960 --> 00:34:04,680 그리고 x는 지금하더라도 왼쪽과 오른쪽, 그 완전히 괜찮아 542 00:34:04,680 --> 00:34:08,860 오른쪽이 처음 실행됩니다 때문에 다음 왼쪽 가지로 plopped됩니다 - 543 00:34:08,860 --> 00:34:10,600 이 경우 X. 544 00:34:10,600 --> 00:34:12,159 그리고 마지막으로, 이제 쉽게 수정 프로그램입니다. 545 00:34:12,159 --> 00:34:17,230 이것은 단지 정수 번호를 아래에 어떤 아래에있어 일치해야합니다. 546 00:34:17,230 --> 00:34:20,570 그래서 정말 바보 같은 기능에 대한 변경 사항의 전체 무리 547 00:34:20,570 --> 00:34:24,420 하지만 우리가 점점 더하고 싶어한다고 일 대표. 548 00:34:24,420 --> 00:34:27,090 그럼 buggy4을합니다. 어딘가 실수했습니다. 549 00:34:27,090 --> 00:34:30,139 오, 맙소사. 6 라인 프로그램에서 다섯 실수. 550 00:34:30,139 --> 00:34:35,690 따라서 문자가 줄 18 무슨 5의? 551 00:34:35,690 --> 00:34:39,610 그래서이, 정수를 선언해야합니다. 552 00:34:39,610 --> 00:34:41,920 어디 봅시다. 다른 오류의 전체 무리가 있습니다. 553 00:34:41,920 --> 00:34:47,010 오, 이런 - 19, 18, 21 - 다시 만은, 그냥 여기 제어 L을 화면을 깨끗하게 554 00:34:47,010 --> 00:34:49,380 그리고 꽝를 다시 실행합니다. 555 00:34:49,380 --> 00:34:51,340 그래서 다섯 문제는 실제로 그 1입니다. 556 00:34:51,340 --> 00:34:57,520 이제 입력, 어디 buggy4을 실행할 수 있습니다. 휴, X가 제대로 증가되었습니다. 557 00:34:57,520 --> 00:35:02,720 괜찮아요. 숫자를 증가하는 방법에 대한 질문? 그래. 558 00:35:02,720 --> 00:35:09,870 [안 들리게 학생 질문] >> 좋은 질문입니다. 559 00:35:09,870 --> 00:35:14,220 그것은 방금 번호를 x를 변경할 수 있으며 프로그램이 즉시 알 수 있다는 어떻습니까? 560 00:35:14,220 --> 00:35:16,200 >> 다시 말하지만,이 추상화이라고 생각합니다. 561 00:35:16,200 --> 00:35:21,600 나는 주이고 켄은 솔직히, 증가하는 경우 그래서, 켄이 자신의 아이 패드 전화를하든 상관하지 않습니다. 562 00:35:21,600 --> 00:35:26,570 그 사람이이 기능 자신의 구현과 관련있는 건 전화를하든 상관하지 않습니다. 563 00:35:26,570 --> 00:35:33,340 이 말은, 주, 신경이 안 구현 세부 사항입니다. 564 00:35:33,340 --> 00:35:38,250 그리고 단순히 함수의 내부에 지속적으로 그것을 변경 - 번호를 여기와 여기에 번호 - 565 00:35:38,250 --> 00:35:40,960 그것은 내가 다시 컴파일로 너무 오래 걸립니다 전부입니다. 566 00:35:40,960 --> 00:35:44,180 당신이 생각하는 경우는 일종의 운전 면허증이있는 분들은, 우리에 대한 많은 567 00:35:44,180 --> 00:35:46,770 당신은 심지어 차를 운전 한 경우 누가, 또는 구동 한 568 00:35:46,770 --> 00:35:50,950 우리 대부분은 자동차 후드 아래에 어떻게 작동하는지 모르겠어요. 569 00:35:50,950 --> 00:35:54,970 당신이 후드 우리의 대부분을 열면 그대로 - 자신이 포함 - 570 00:35:54,970 --> 00:35:56,940 정말 우리가보고 알고하지 않을 한 것은, 571 00:35:56,940 --> 00:35:59,220 당신은 지금이 같은 물건을 느낄 수 같은 종류의. 572 00:35:59,220 --> 00:36:01,480 하지만 우리는 정말 자동차가 어떻게 작동하는지 신경 필요가 없습니다 573 00:36:01,480 --> 00:36:05,970 우리는 상관 할 필요가 없습니다 어떤 차의 내부의 막대와 피스톤 및 케이블의 모든 574 00:36:05,970 --> 00:36:08,160 실제로 다하고 있습니다. 575 00:36:08,160 --> 00:36:12,770 당신은 피스톤이 경우에 여기에 중요하지 않습니다 부르는 같이 했어요. 같은 생각. 576 00:36:12,770 --> 00:36:25,300 그래. >> [안 들리게 학생 질문] 577 00:36:25,300 --> 00:36:29,180 변수 XA의 순간보다 사용 전에이있는 경우 578 00:36:29,180 --> 00:36:32,150 너, 프로그래머, 어디에나을 변경해야합니다. 579 00:36:32,150 --> 00:36:36,600 또는 문자 그대로 파일, 메뉴를 한 다음 바꾸기, 찾을 수있는 - 그런 일을 - 580 00:36:36,600 --> 00:36:39,170 하지만 이러한 변경을 직접해야 돼 있습니다. 581 00:36:39,170 --> 00:36:47,450 당신은 일치해야합니다. >> [학생] 여러 변수가있는 경우 [안 들리게] 582 00:36:47,450 --> 00:36:53,100 여기 같은 특정 순서,이 있었다면 다른 번호를 INT? >> [학생] 맞아요. 583 00:36:53,100 --> 00:36:56,590 [Malan] 그​​래. 이 함수를 호출 할 때 주문 중요. 584 00:36:56,590 --> 00:37:00,050 >> 나는 무언가를 쉼표 뭔가 함께 증가를 호출 한면 585 00:37:00,050 --> 00:37:01,680 직접 매핑가 있습니다. 586 00:37:01,680 --> 00:37:05,690 제목이 무엇이든 첫 번째 변수는, 여기에 첫 번째 인수의 복사본을 이루어집니다. 587 00:37:05,690 --> 00:37:07,760 미안 해요. 이 괄호 안됩니다. 588 00:37:07,760 --> 00:37:11,490 두 번째와 두 번째 인수 라인 업. 주문 그럼, 그래, 중요합니다. 괜찮아요. 589 00:37:11,490 --> 00:37:17,020 미안 해요. 거기를 얻을 수 먼 길을했습니다. 다른 질문? 괜찮아요. 590 00:37:17,020 --> 00:37:20,610 그래서 우리가 실제로 여기에 무슨 일이 벌어지고 있는지에 대한 그림을 그릴 수없는 경우 보자 591 00:37:20,610 --> 00:37:23,090 후드 아래, 말하자면합니다. 592 00:37:23,090 --> 00:37:26,640 이렇게하면 컴퓨터의 메모리를 나타낼 수 직사각형입니다. 593 00:37:26,640 --> 00:37:30,970 당신은 메모리의 작동 방법이나 RAM의 작동 방식 모를 경우에도하면, 594 00:37:30,970 --> 00:37:33,940 적어도 요즘 그것의 움큼을 가지고 있다고 가정합니다. 595 00:37:33,940 --> 00:37:36,280 당신은 그것을 메가 바이트있어, 당신은 그것의 기가 바이트있어 596 00:37:36,280 --> 00:37:40,870 우리는 바이트 방금 뭐 것을 주 0에서 알지? >> [학생] 8 비트. 597 00:37:40,870 --> 00:37:42,950 8 비트, 맞죠? 따라서 8 0 1. 598 00:37:42,950 --> 00:37:45,880 컴퓨터가 RAM의 공연, RAM 2 기가 이러한 일이면 599 00:37:45,880 --> 00:37:55,030 당신은 메모리 억 또는 2 억 바이트 또는 약 8,000,000,000 또는 16 억 비트가 600 00:37:55,030 --> 00:37:56,890 컴퓨터의 내부. 601 00:37:56,890 --> 00:38:00,590 작은 Wooly 윌리의 예와는 달리, 일반적으로 더 이상 자기 입자 없습니다. 602 00:38:00,590 --> 00:38:04,450 점점 - 노트북에서 적어도 -는 솔리드 스테이트 드라이브, SSDs 이예요 603 00:38:04,450 --> 00:38:08,580 단지 더 움직이는 부분이 없다는 점. 다 전자입니다. 다 전기 기반입니다. 604 00:38:08,580 --> 00:38:14,060 따라서 당신이 가지고 메모리의 1 개 또는 2 기가 바이트 대표로 사각형 생각합니다. 605 00:38:14,060 --> 00:38:16,020 >> 그래서 메모리의 덩어리입니다. 606 00:38:16,020 --> 00:38:19,830 정렬 오프 파티션 컴퓨터 과학 분야의 세계는있다 607 00:38:19,830 --> 00:38:22,950 메모리의 덩어리 다른 일을 할 수 있습니다. 608 00:38:22,950 --> 00:38:27,190 이 컴퓨터의 RAM 인 경우 예를 들어, 같은,이 직사각형으로 제안 609 00:38:27,190 --> 00:38:31,130 그것은, 국제 대회에서 귀하의 RAM 상단의, 말하자면 것이 밝혀 610 00:38:31,130 --> 00:38:33,660 텍스트 세그먼트라는 것을 일반적입니다. 611 00:38:33,660 --> 00:38:36,740 그 시절에는 자네가 컴파일 한 0s와 1 초입니다. 612 00:38:36,740 --> 00:38:39,020 우리는 a.out이 무엇인지에 후드 아래에 검토 한 언제 613 00:38:39,020 --> 00:38:41,980 모든 0s와 1 초, 당신은 프로그램을 실행하면, 614 00:38:41,980 --> 00:38:46,290 그 0s와 1S는 RAM라는 식으로 하드 드라이브에서로드됩니다 615 00:38:46,290 --> 00:38:49,320 그리고 RAM에 그들은 상단에 넣어하고 있습니다. 616 00:38:49,320 --> 00:38:52,770 한편, 당신은 다른 일이 있어서요 : 데이터를 초기화, 데이터를 초기화합니다. 617 00:38:52,770 --> 00:38:57,510 메모리의 지난 2 swaths은 자주 사용하지 않는 전역 변수를 참조 618 00:38:57,510 --> 00:39:00,760 그러나 보신다면 때때로, 그들은뿐만 아니라 거기에 결국. 619 00:39:00,760 --> 00:39:04,260 환경 변수, 우리가 많은 시간을 할애하지 않습니다 : 그럼 다른 물건이 620 00:39:04,260 --> 00:39:06,860 하지만 두 가지 중요한 사항은은 학기 내내 돌아올 것 621 00:39:06,860 --> 00:39:08,550 스택과 힙. 622 00:39:08,550 --> 00:39:12,210 프로그램을 실행 할 때 사용자 컴퓨터의 메모리의 대부분은 예약되어 623 00:39:12,210 --> 00:39:15,370 무언가에 대한 스택을 전화 뭔가가 힙을했다. 624 00:39:15,370 --> 00:39:18,840 오늘 힙에 대해 이야기하지 않을거야,하지만 우리는 스택에 대해 이야기합니다. 625 00:39:18,840 --> 00:39:24,600 스택 메이 하우스에 식당 식사 트레이의 영상을 만들어 보도록하기위한 것입니다 626 00:39:24,600 --> 00:39:28,110 또는 식당의 직원이 매일 청소를 어디에 할 일없이, 627 00:39:28,110 --> 00:39:30,180 그들은 최대에 층에서를 쌓아 628 00:39:30,180 --> 00:39:34,550 와 마찬가지로, 메모리에 스택에 뭔가를 넣어의 생각이 있습니다 629 00:39:34,550 --> 00:39:36,860 스택에 뭔가를 넣어, 스택에 뭔가를 넣어. 630 00:39:36,860 --> 00:39:38,240 그리고 우리는이 무슨 뜻이에요? 631 00:39:38,240 --> 00:39:41,860 >> 이 사진의 바로 아래쪽, 컴퓨터의 RAM에 확대합시다 632 00:39:41,860 --> 00:39:44,330 다음을 제안합니다. 633 00:39:44,330 --> 00:39:48,170 그것은 밝혀 당신이 a.out이나 인사와 같은 프로그램을 실행할 때 - 634 00:39:48,170 --> 00:39:50,100 -이 프로그램은 당신이 쓴 것 뭐든지간에 635 00:39:50,100 --> 00:39:54,020 다시 그는 0s와 1S은 장기 보관이 하드 드라이브에서로드됩니다 636 00:39:54,020 --> 00:39:57,230 당신이 RAM에로드 플러그를 당겨 경우에도이 유지됩니다. 637 00:39:57,230 --> 00:40:00,610 RAM은 하드 드라이브보다 빠릅니다 - 이건 하드 드라이브보다 작은 - 638 00:40:00,610 --> 00:40:03,300 당신이 그들을 실행하는 동안 프로그램이 사는 곳이지만입니다. 639 00:40:03,300 --> 00:40:08,230 그래서 더블 Mac이나 PC에 프로그램을 클릭, 그것은 RAM에 하드 드라이브에서로드있어. 640 00:40:08,230 --> 00:40:11,520 그것은 RAM, 방법 상단의 0s와 1S 가자,에로드 마자 641 00:40:11,520 --> 00:40:16,610 소위 텍스트 세그먼트는하지만 최대한 빨리 당신의 프로그램이 실제로 시작으로 실행, 642 00:40:16,610 --> 00:40:21,360 main () 함수는 호출하고, 주요, 우리가 본대로,들은 지역 변수를 갖추고 있습니다 643 00:40:21,360 --> 00:40:24,870 그리고 ints와 문자열과 문자와 같은 수 있습니다. 644 00:40:24,870 --> 00:40:29,180 그러므로 당신이 작성한 것을 프로그램 또는 더블 클릭 한 프로그램 경우 645 00:40:29,180 --> 00:40:32,970 몇 가지 변수 메인의 내부 사용 646 00:40:32,970 --> 00:40:37,240 그들은 말하자면, 메모리의 스택의 맨 아래에 결국. 647 00:40:37,240 --> 00:40:39,410 더 구체적으로,이 사실은 무엇을 의미합니까? 648 00:40:39,410 --> 00:40:48,450 이것은 단지 의미 우리가 컴퓨터에 번호를 RAM의 바이트를 할 생각 이었다면, 649 00:40:48,450 --> 00:40:55,750 이 바이트 숫자 0이 될 수도 있다는 것을,이 바이트 숫자 1, 2, 3, 4, 5, 6, 될 수 650 00:40:55,750 --> 00:41:01,480 최대 2 억 모든 방법은 거기에 상단에있는 모든 방법 것이다. 651 00:41:01,480 --> 00:41:05,880 다시 말해, 우리는 바이트의 관점에서 RAM 또는 메모리에 대해 이야기 할 때, 652 00:41:05,880 --> 00:41:11,500 그냥 그 사람이 기억의 그 덩어리 각각의 수에 어떤 결정했다 의미합니다. 653 00:41:11,500 --> 00:41:16,650 그래서 당신은 정수 32 비트가 필요하거나 숯불 8 비트를 필요로 할 때, 654 00:41:16,650 --> 00:41:18,840 그들은 메모리에 어디로 결국합니까? 655 00:41:18,840 --> 00:41:22,350 >> 개념적으로, 그들은 단지 스택이라는 것은의 하단에 결국. 656 00:41:22,350 --> 00:41:25,870 주이 기능을 호출하면 그런데 지금은 흥미로운 것은 - 657 00:41:25,870 --> 00:41:28,750 foo는 호출 함수, 그냥 임의의 이름을 가정 - 658 00:41:28,750 --> 00:41:32,330 메모리의 스택의 하단에 어떤 일이 생기 메인입니다; 659 00:41:32,330 --> 00:41:35,680 foo는 이제 메모리에 메인의 상단에 놓입니다. 660 00:41:35,680 --> 00:41:40,990 foo는이 개념적으로 메인에있는 위의 정렬을 종료 한 한 지역 변수는 그럼. 661 00:41:40,990 --> 00:41:47,070 foo는이 바라는 또 다른 함수를 호출하면 그 변수는 여기서 끝. 662 00:41:47,070 --> 00:41:50,120 바는 여기 여기에 다른 뭔가를, 여기 호출합니다. 663 00:41:50,120 --> 00:41:53,830 그래서 프로그램을 실행하는 방법에 대한 흥미로운하면 함수를 호출된다는 것입니다 664 00:41:53,830 --> 00:41:57,750 그리고 그 함수는 함수를 호출하고 해당 함수가 함수를 호출하는 것처럼, 665 00:41:57,750 --> 00:42:01,470 당신은 메모리 기능이 스택을 구축 할 수 있습니다. 666 00:42:01,470 --> 00:42:06,890 만 함수가 반환되면 그 메모리를 다시 나올 않습니다. 667 00:42:06,890 --> 00:42:10,860 따라서 컴퓨터 프로그램에서 메모리가 부족 할 수있는 가장 쉬운 방법 중 하나 668 00:42:10,860 --> 00:42:14,360 돌아 오지 않을 기능을 작성하는 것입니다. 669 00:42:14,360 --> 00:42:18,900 따라서 예를 들어,가 의도적으로 버그가 프로그램을 많이 보여 보자. 670 00:42:18,900 --> 00:42:22,230 내가 가서 # 포함 갑시다 671 00:42:22,230 --> 00:42:25,000 INT 메인 (무효), 672 00:42:25,000 --> 00:42:32,940 그리고, (2> 1), 이는 아마도 본 우리 변경되지 않습니다 동안하는 겁니다 673 00:42:32,940 --> 00:42:37,560 그리고 내가 지금 가서 printf하자. 674 00:42:37,560 --> 00:42:40,700 사실, 그 이하 시각적으로 재미있을거야. 이 작업을 수행하자. 675 00:42:40,700 --> 00:42:50,240 를 들어 int는 전 = 0; i>을 0 -의이 실수를하게 - 내가 + +. 676 00:42:50,240 --> 00:42:52,720 여기의 printf하지 맙시다. 의 내가 설교 한 것을 연습 보자. 677 00:42:52,720 --> 00:43:00,190 , 가자, 여기서 무효의 합창을하는 방법이 있으며, 우리는 INT 내가 말할 거예요 678 00:43:00,190 --> 00:43:06,830 그럼 내가 printf 말할거야 - 아니, 그럼이 더 재미있는합니다. 679 00:43:06,830 --> 00:43:15,790 의는 실제로 전혀 아무런 내용도 출력되지 보자. 합창은 (i) : 이런 짓을하자. 680 00:43:15,790 --> 00:43:20,390 괜찮아요. 때문에 그래서이 버그인가요? 681 00:43:20,390 --> 00:43:23,380 프로그램이 실제로 관심 아무 짓도하지 않기 때문에 내가가는대로이를 만드는 중이에요. 682 00:43:23,380 --> 00:43:25,320 >> 하지만 그게 목표 없습니다. 683 00:43:25,320 --> 00:43:29,630 목표는 누구의 주요 기능 뭐 확실히을 수행하는 프로그램을 작성하는 것입니다? 684 00:43:30,720 --> 00:43:32,860 자체를 호출합니다. 실제로, 우리는 루프를 필요하지 않습니다. 685 00:43:32,860 --> 00:43:37,200 자, 그저 정말 기본적인 버그 시력을 잃지 않도록으로서이 일을 단순화합니다. 686 00:43:37,200 --> 00:43:39,640 주요 통화 합창 일부 합창을 노래하는, 687 00:43:39,640 --> 00:43:41,440 그럼 내가 멍청한 짓을 했어 나는 합창 통화 합창을했다 688 00:43:41,440 --> 00:43:43,760 나는 다른 사람이 아마도을 구현하는 줄 알았는데, 때문에 689 00:43:43,760 --> 00:43:47,210 지금이 아직 컴파일하지 않을 수 있습니다. 나는 무엇을해야합니까? 690 00:43:47,210 --> 00:43:49,970 제가 프로토 타입을 필요 기억 해요. 691 00:43:49,970 --> 00:43:56,110 그래서 (INT I) 여기 무효의 합창을이 필요합니다; 692 00:43:56,110 --> 00:43:59,210 여기 내려 갔는데 이제 - 실제로, 그럼 더 큰 창을 사용할 수 있도록. 693 00:43:59,210 --> 00:44:01,980 가 진행하고 합창을 보자. 694 00:44:01,980 --> 00:44:06,490 가 진행하고 합창을 보자. 695 00:44:06,490 --> 00:44:08,370 선언하지 않은 식별자 제가 사용. 696 00:44:08,370 --> 00:44:12,500 오, 바보 같은 짓이었다. 우리는 인자를 필요하지 않습니다. 그냥 이렇게합시다. 697 00:44:12,500 --> 00:44:16,370 난 우리가 이런 식으로 시작했습니다 기원합니다. 그것은 쓰기 훨씬 쉽게 프로그램이었습니다. 698 00:44:16,370 --> 00:44:25,590 가. 지금의, 내 터미널 창에 갈 꽝을 다시 실행, 그리고 여기에 우리가 가자. 699 00:44:25,590 --> 00:44:28,460 그건 정말 빠른 데요. 700 00:44:28,460 --> 00:44:31,150 무엇 실제로하지만 일이 있었죠? 701 00:44:31,150 --> 00:44:33,730 우리가 볼 수 있도록 음, 지금은 인쇄 행을 추가합니다. 702 00:44:33,730 --> 00:44:43,490 저 ( "난 여기에있어") printf 말 거예요 - 더 변수. 우리는처럼 갈거야. 703 00:44:43,490 --> 00:44:47,480 , 날이 다시 실행 보자. 나 코러스를 다시 실행 보자. 704 00:44:47,480 --> 00:44:57,380 그리고 ... 어서. 계속 해요. 705 00:44:57,380 --> 00:44:59,930 옆으로, 왜 아직 추락하지 않았나? 706 00:44:59,930 --> 00:45:02,080 세분화 잘못 전에 매우 빨리 일어났다. 707 00:45:02,080 --> 00:45:06,570 [안 들리게 학생 응답] >> 맞아. 그래서 바로 인쇄하려면 시간이 걸려요? 708 00:45:06,570 --> 00:45:08,610 그것은 단지 컴퓨터의 부분에 더 많은 노력이 소요됩니다. 709 00:45:08,610 --> 00:45:10,620 그리고는 다음과 같습니다 세분화 잘못이야. 710 00:45:10,620 --> 00:45:12,340 >> 그렇게 빨리 프로그램이 실행 얼마나납니다. 711 00:45:12,340 --> 00:45:14,130 당신은 아무것도, 슈퍼 빠른 인쇄를하지 않은 경우. 712 00:45:14,130 --> 00:45:18,770 어떤 일이 벌어지고 있기 때문에 그러나 우리는 여전히이 분류 오류 있나? 713 00:45:18,770 --> 00:45:21,210 당신은 컴퓨터의 메모리가 배치되는 방식에 대해 생각한다면, 714 00:45:21,210 --> 00:45:28,740 이 주요 할 일이 있지만, 여기은 그냥 코러스를 호출 해,이 합창 전화 할게 있어요. 715 00:45:28,740 --> 00:45:34,550 난 지금 내 미학을한다면 지금이 바로 합창, 합창, 합창을 말할 것입니다 716 00:45:34,550 --> 00:45:40,550 코러스, 합창, 합창, 합창, 광고 에드, 그리고 결국 무슨 일이 일어날 지? 717 00:45:40,550 --> 00:45:45,630 큰 그림은 그대로,이 경우, 어떻게는 개념적 어떻게됩니까? 718 00:45:46,520 --> 00:45:48,630 스택 오버런 힙. 719 00:45:48,630 --> 00:45:51,940 또는 더 나쁜, 당신은 단지 텍스트 세그먼트를 포함 모든, 오버런 720 00:45:51,940 --> 00:45:54,590 프로그램을 나타내는 0s와 1S가있는 것입니다. 721 00:45:54,590 --> 00:45:57,080 즉,이 게임은 정말 슈퍼, 슈퍼 좋지 않습니다. 722 00:45:57,080 --> 00:45:58,830 당신의 프로그램은 통제 불능 몰락했다. 723 00:45:58,830 --> 00:46:01,220 당신이 의도 것보다 더 많은 메모리를 사용하는 724 00:46:01,220 --> 00:46:03,960 모든 때문에이 경우에 바보 같은 실수를 저질렀의, 725 00:46:03,960 --> 00:46:08,040 또는이 경우에는 아주 신중하게 수행 기능 자체를 호출. 726 00:46:08,040 --> 00:46:09,500 자,이 모든 나쁜 아닙니다. 727 00:46:09,500 --> 00:46:13,800 당신이 올바르게을 사용할 때 자신을 호출하는 함수는 실제로 큰 힘을 가지고 있습니다. 728 00:46:13,800 --> 00:46:15,800 나는 제대로 여기를 사용하지 않았습니다. 729 00:46:15,800 --> 00:46:19,780 이게 다 나쁘지는하지만 실제로 절대 멈추지 있다는 사실이 자신을 호출 730 00:46:19,780 --> 00:46:23,520 이 프로그램의 여기 근본적인 약점이다. 731 00:46:23,520 --> 00:46:26,400 어디 우리는이 모든거야? 정말 무슨 일이에요? 732 00:46:26,400 --> 00:46:30,340 우리가 그 예에서 뭘하고 있었지처럼 나는 증가 함수를 호출 할 때, 733 00:46:30,340 --> 00:46:33,420 난 내가 통과 한 같은 값을 734 00:46:33,420 --> 00:46:37,570 나는 숫자 1의 사본에 전달하기 때문에 다음과 같은 문제가 발생합니다. 735 00:46:37,570 --> 00:46:44,240 증가의 예로 이동하자, 여기이 남자. 736 00:46:44,240 --> 00:46:46,870 다음은 실제로 일어나고있는 일이지. 737 00:46:46,870 --> 00:46:53,400 제가 증가를 호출하고 여기 무슨 일이야, pictorially, X로 전달하면이 있습니다. 738 00:46:53,400 --> 00:46:59,520 >> 여기 저장된 1의 값이 내가 실제로 증가를 호출하는 경우는, 739 00:46:59,520 --> 00:47:04,330 어떤 지금은 합창이라고합니다 - 아이 패드가 날 밀어 내고 있습니다. 740 00:47:04,330 --> 00:47:09,760 자,이 증가 연락, 우리는이 다음 함수가 될이 벌어지고있는 건지 모르겠습니다. 741 00:47:09,760 --> 00:47:14,840 그래서 실제로 일어나는 것은 주에 여기 어딘가에 나는 메모리의 덩어리가 742 00:47:14,840 --> 00:47:17,000 그 숫자 1을 저장합니다. 743 00:47:17,000 --> 00:47:19,380 제가 증가를 호출하면, 난 메모리의 또 다른 청크를 사용 744 00:47:19,380 --> 00:47:21,230 하지만 지금은 1의 사본을 갖추고 있습니다. 745 00:47:21,230 --> 00:47:26,660 그 값을 증가하면이 2가됩니다 746 00:47:26,660 --> 00:47:30,560 하지만 어떻게 증가를 반환하자마자 어떻게됩니까? 747 00:47:30,560 --> 00:47:33,630 이 메모리는 그냥 운영 체제로 송환됩니다 748 00:47:33,630 --> 00:47:37,450 이것은 당신이 한 모든 유용한 아무것도 없음을 의미합니다. 749 00:47:37,450 --> 00:47:43,120 원래 주에 포함 된 1 실제로 아직도 있습니다. 750 00:47:43,120 --> 00:47:44,890 어디 우리는이 같이 갈거야? 751 00:47:44,890 --> 00:47:49,770 이 메모리에 당신이 바이트의 다시 - 투 - 다시 순서를 가지고 밝혀 752 00:47:49,770 --> 00:47:53,050 당신은에 물건을 넣을 수 있으며, 우리가 이미 뭔가를 본 사실을 켜지는지 753 00:47:53,050 --> 00:47:55,390 백업 백업 백업 할 일을 다시 넣어 포함이. 754 00:47:55,390 --> 00:47:59,860 주 1 지금 2 주간을 기준으로 문자열은 무엇입니까? 755 00:48:00,020 --> 00:48:01,980 단지 문자의 집합입니다. 756 00:48:01,980 --> 00:48:04,310 그래서, 당신은 메모리에 번호를 넣을 수대로 밝혀 757 00:48:04,310 --> 00:48:06,990 마찬가지로 당신은 메모리에 문자를 넣을 수 있습니다. 758 00:48:06,990 --> 00:48:10,530 그리고 일단 우리는 뒤에 백업 할 백업 다시 메모리에 넣어 문자를 시작 759 00:48:10,530 --> 00:48:13,620 가 밝혀 루프 또는 잠시 루프에 같은 사물의 가장 간단한을 사용하여 해당, 760 00:48:13,620 --> 00:48:17,170 우리는 문자열에있는 문자를 통해 왼쪽에서 오른쪽으로 반복 할 수 있습니다 761 00:48:17,170 --> 00:48:20,600 그리고 모두 다른 문자에 넣어 마사지 시작 - 762 00:48:20,600 --> 00:48:23,370 A와 B가 될 수, B는 C가 될 수 - 763 00:48:23,370 --> 00:48:27,780 궁극적으로, 우리는 실제로 의미가 영어 문장을 취할 수 있도록 764 00:48:27,780 --> 00:48:30,310 한 번에 그 편지 하나를 각각 변환 765 00:48:30,310 --> 00:48:34,400 우리 컴퓨터의 메모리를 통해 도보로 실제로 암호화 왼쪽에서 오른쪽으로. 766 00:48:34,400 --> 00:48:35,810 그럼 여기서 우리 다섯 분 쉬었다합시다, 767 00:48:35,810 --> 00:48:40,730 그리고 우리가 돌​​아 왔을 때, 우리는 정보를 출격이 과정을 시작합니다. 768 00:48:42,020 --> 00:48:43,520 >> 괜찮아요. 769 00:48:43,520 --> 00:48:48,070 , 우리는 몇 가지 암호화에 뛰어 이러한 일들이 배열라고하기 전에 770 00:48:48,070 --> 00:48:51,470 정말 가지 혼란 같은 느낌 때문에 내 모든 질문에 대한 일시 정지하자 771 00:48:51,470 --> 00:48:54,080 해당 주제의 일부. 우리가 할 수있는 경우에 그래서 지금의이 해결 보자. 772 00:48:54,080 --> 00:48:58,700 우리는 단지 반환 값에 대해 얘기, 우리는 인수에 대해 얘기 773 00:48:58,700 --> 00:49:03,250 우리는, 우리가 올 주에 돌아 오면되는이 개념에 대해 얘기 774 00:49:03,250 --> 00:49:08,720 너무 말을,이 스택 트레이의 전체 무리로 메모리를보고, 775 00:49:08,720 --> 00:49:12,660 이러한 올라 아래에서 해당 스택에 넣어됩니다 각 트레이 776 00:49:12,660 --> 00:49:16,530 현재 호출되는거야 기능을 나타냅니다. 777 00:49:17,900 --> 00:49:20,260 질문? 778 00:49:20,260 --> 00:49:22,640 내가 여기서 질문을 물어 보자. 779 00:49:22,640 --> 00:49:27,890 내가 그것을 우리의 이전의 Q & A.의 일부 전에 어떤 건지이 다시 단순화하자 780 00:49:27,890 --> 00:49:35,570 증가가 열려 괄호, int는 숫자를 가지고 있다는 사실은, 괄호을 닫았 - 781 00:49:35,570 --> 00:49:39,110 INT 숫자는 무엇을 나타 냅니까? 782 00:49:39,110 --> 00:49:42,790 [학생] 인수입니다. >> 인수입니다. 좋아요. 그러나 인수가 뭐죠? 783 00:49:42,790 --> 00:49:46,370 [안 들리게 학생 응답] >> 그게 뭐야? 그래서 당신이 통과 >> [학생] 일 784 00:49:46,370 --> 00:49:49,940 좋아요, 그럼 당신은 집에 통과하고, 더 일반적으로 그냥 입력 있다는 것을. 785 00:49:49,940 --> 00:49:52,450 당신은 인생의 기능 및 그 기능의 목적을 글을 쓴다면 786 00:49:52,450 --> 00:49:55,770 뭔가 당신이 그것을 사용 좀 다른 때마다하는 것입니다 787 00:49:55,770 --> 00:50:00,110 그리고 정말 일어날 수있는 유일한 방법은 입력으로 제공하는 보여야 하니까요 788 00:50:00,110 --> 00:50:03,510 그렇게 입력을 할 때마다 다른 뭔가를 할 수 있도록. 789 00:50:03,510 --> 00:50:06,650 >> 그래서 함수가 입력을 소요 할 때 두 가지를 지정해야합니다. 790 00:50:06,650 --> 00:50:09,590 당신은 그 입력에 부여 할 이름을 지정해야합니다 791 00:50:09,590 --> 00:50:12,700 순전히 자신의 편의를 위해 당신은 참조 할 수 있도록 792 00:50:12,700 --> 00:50:16,540 I 줄 32 여기 그랬던 것처럼 자신이, 쓰기하는 기능 인치 793 00:50:16,540 --> 00:50:20,800 하지만 당신은 또한 C는 프로그래밍 언어이기 때문에 유형을 지정해야합니다 794 00:50:20,800 --> 00:50:25,940 그건 정말, 당신은 변수를 원하는 경우, 당신이 무엇 데이터 형식 컴퓨터를 얘기해야합니다 795 00:50:25,940 --> 00:50:30,200 있도록 많은 부분에서 해당 변수에 할당하는 방법을 몇 비트 알고 796 00:50:30,200 --> 00:50:33,020 그 6이 될 수 있기 때문에 - 미안해, 6 수 없습니다. 797 00:50:33,020 --> 00:50:37,080 이 16 수, 그건 8이 될 수는, 심지어 64, 32이 될 수 798 00:50:37,080 --> 00:50:39,130 하지만 컴퓨터는 알아야합니다. 799 00:50:39,130 --> 00:50:43,180 이제 왼쪽에있는 INT는 반대로 무엇을 제시 하는가? 800 00:50:46,350 --> 00:50:48,850 [안 들리게 학생 응답] >> 그게 뭐야? 기능 >> [학생]를 입력합니다. 801 00:50:48,850 --> 00:50:53,610 함수의 종류와, 더 구체적으로는 출력의 종류. 맞아. 802 00:50:53,610 --> 00:50:57,380 따라서 괄호 안의 것은 반면의 입력은 (있는 경우), 대표 803 00:50:57,380 --> 00:50:59,660 왼쪽에있는 것은 그 출력을 나타냅니다. 804 00:50:59,660 --> 00:51:03,530 이 경우에는 증가는 분명히 정수를 반환, 805 00:51:03,530 --> 00:51:07,690 그래서 int는이 함수의 반환 유형입니다. 806 00:51:07,690 --> 00:51:09,340 그게 무슨을 반환한다는 것은 무슨 뜻입니까? 807 00:51:09,340 --> 00:51:15,090 그대로, 당신은 다음 키워드 수익 (ROI)을 사용하고 재 만약 808 00:51:15,090 --> 00:51:18,600 키워드의 오른쪽에있는 정수입니다하면 809 00:51:18,600 --> 00:51:21,660 그리고 우리가 약속 한 것과 실제로 일치합니다. 810 00:51:21,660 --> 00:51:26,410 안녕하세요, 세계 - - 당신은 이런 일을 할 수없는 그 문자열이기 때문이다. 811 00:51:26,410 --> 00:51:28,860 >> 분명히, 정수하지 않습니다. 812 00:51:28,860 --> 00:51:33,140 그래서 짧은에, 부담이 우리를 정말이야 프로그래머가 특정 할 수 813 00:51:33,140 --> 00:51:37,770 우리가 돌​​려 무엇과에 관해서 실제로 돌려 봅시다. 814 00:51:37,770 --> 00:51:43,440 여기 문맥 이제 컴퓨터의 메모리 기가 바이트, 2기가바이트 때문입니다 - 815 00:51:43,440 --> 00:51:45,920 무엇이든 - 그게 더 아마, 아마 그건 좀 덜, 816 00:51:45,920 --> 00:51:49,050 하지만 컴퓨터는 다른 섹션을 갖는으로 보는. 817 00:51:49,050 --> 00:51:51,200 뭔가 거기가는 다른 뭔가가 거기에갑니다 818 00:51:51,200 --> 00:51:54,290 다른 물건은 중간에 간다, 오늘날 우리가 이야기 시작 819 00:51:54,290 --> 00:51:56,340 하지만 우리는이 시간이 지남에 돌아 가면됩니다. 820 00:51:56,340 --> 00:51:59,980 지금은 우리가 정말 신경 메모리의 유일한 조각의 텍스트 세그먼트입니다 821 00:51:59,980 --> 00:52:03,360 단지 0s와 1S 그 꽝을 나타냅니다 때문 출력되었습니다. 822 00:52:03,360 --> 00:52:06,050 당신은 a.out과 같은 키보드에서 명령을 실행 그럼 언제 823 00:52:06,050 --> 00:52:09,110 또는 더블, 맥 OS 또는 Windows에서 아이콘을 클릭 824 00:52:09,110 --> 00:52:11,880 프로그램은 하드 드라이브에서 RAM에로드 825 00:52:11,880 --> 00:52:16,330 그리고 그것은 말하자면, 컴퓨터의 RAM의 상단에 plopped있어. 826 00:52:16,330 --> 00:52:20,450 한편, 프로그램이 시작으로 실행과 주요가 호출됩니다 827 00:52:20,450 --> 00:52:23,640 이 프로그램에, 당신은 작성 또는 프로그램을 Microsoft 또는 애플 썼다 828 00:52:23,640 --> 00:52:27,860 지역 변수의 사용자 컴퓨터의 메모리의 맨 아래에 아래에 결국. 829 00:52:27,860 --> 00:52:33,230 그러나 그 자체가 변수 나 인자를 가지고 주요 통화가 다른 함수 경우, 그들은 그 위에 결국. 830 00:52:33,230 --> 00:52:36,680 그 함수가 뭔가를 호출한다면, 그들은 그 위에, 그 위에, 그 위에 결국. 831 00:52:36,680 --> 00:52:41,460 >> 그리고 한 번만 함수가 실행 완료 트레이 스택, 말하자면 않습니다 832 00:52:41,460 --> 00:52:43,240 낮은 낮은 얻을 시작합니다. 833 00:52:43,240 --> 00:52:48,250 그리고는, 요약, 당신이 큐브를 부르는 이유가 때 설명 무슨 834 00:52:48,250 --> 00:52:51,550 당신은 증가를 호출하거나, 당신은 가치의 사본을 전달하고 있습니다. 835 00:52:51,550 --> 00:52:55,520 그리고 그 pictorially 의미하는 것은 문자 그대로 숫자 1을 작성할 것입니다 836 00:52:55,520 --> 00:53:00,460 메모리의 다른 부분에서 변화 그 증가의 경우 1-2 837 00:53:00,460 --> 00:53:04,820 또는 다음 큐브의 경우 8에 거리에 그 메모리를 던지고 838 00:53:04,820 --> 00:53:09,140 가능한 한 빨리 증가 또는 큐브 함수를 반환 있습니다. 질문. 839 00:53:09,140 --> 00:53:12,900 [학생] 어디 ​​전역 변수를 저장하는거야? 840 00:53:12,900 --> 00:53:18,100 글로벌 변수는 현재 초기화 데이터 또는 초기화되지 않은 데이터라는 것을에 저장됩니다 841 00:53:18,100 --> 00:53:21,920 당신이 전역 변수가 있고 즉시 값을 그 값을 지정하는 경우의 차이는 존재 842 00:53:21,920 --> 00:53:24,640 등호로는, 거기에 맨 위에 종료 843 00:53:24,640 --> 00:53:29,200 방금 INT X를한다고해도, 값이없는, 그것은 RAM에 약간 낮은 생 844 00:53:29,200 --> 00:53:31,710 단순히 대회로. 845 00:53:31,710 --> 00:53:34,940 다른 질문? 괜찮아요. 846 00:53:34,940 --> 00:53:37,340 우리가 더 강력가 거든 그래서이 사진은 다시 올 것이다 847 00:53:37,340 --> 00:53:39,170 우리가 컴퓨터로 무엇을 할 수있는, 848 00:53:39,170 --> 00:53:42,720 하지만 지금은, 우리의 암호에 대한 간단한 소개를하자 849 00:53:42,720 --> 00:53:46,080 세계의 모든 문제가 해결되지 않는 암호화의 특정 유형의 850 00:53:46,080 --> 00:53:47,720 하지만 그 중 일부를 해결할 수 없습니다. 851 00:53:47,720 --> 00:53:51,700 여기이 경우, 우리는 비밀 키 암호화라는 게있어. 852 00:53:51,700 --> 00:53:56,410 비밀 키 암호화는 이름에서 알 수 있듯이, 비밀의 보안을 창출합니다. 853 00:53:56,410 --> 00:54:00,690 >> 당신이 초등학교에 다시으로하면 예를 들어, 당신은 약간의 비밀 연애 편지를 전달했다 854 00:54:00,690 --> 00:54:04,850 당신이 고객을 통해 그 메모를 전달하고자 할 경우 아들, 딸에 당신은에 분쇄했다, 855 00:54:04,850 --> 00:54:08,380 당신은 아마 영어에는 메모를 작성간에 모국어는 않습니다. 856 00:54:08,380 --> 00:54:13,340 오히려, 당신이 암호화 할 수 있거나 요즘 그들에게 문자 메시지를 보내 수 있습니다. 857 00:54:13,340 --> 00:54:15,460 하지만 당신은 실제로 교실을 통해 그들에게 메모를 전달 할 수 있습니다. 858 00:54:15,460 --> 00:54:18,700 와 같은 방법으로 안전하게 작업을 수행 할 수 귀하의 친구와 선생님 859 00:54:18,700 --> 00:54:22,650 당신이 글을하는지 모르겠어, 당신은 매우 간단한 알고리즘을 마련 할 수 860 00:54:22,650 --> 00:54:25,920 당신이있을 젊은 있지만, 단지 단어를 출격시켜야합니다. 861 00:54:25,920 --> 00:54:28,130 그래서 그 대신를 작성하면, B를 작성 할 수 862 00:54:28,130 --> 00:54:30,220 대신 B의 당신은 C를 작성 할 수 863 00:54:30,220 --> 00:54:32,140 대신 C의 당신은 등등 d를 작성하고 있습니다. 864 00:54:32,140 --> 00:54:34,360 또는 당신은 더 정교 번역을 마련 할 수 865 00:54:34,360 --> 00:54:36,720 다른 편지에게 편지를. 866 00:54:36,720 --> 00:54:39,740 그러나 캐치는이 메모를 보내는 누구에 아들, 딸입니다 867 00:54:39,740 --> 00:54:45,020 필요 뭐, 분명히 뭔가를 알고 있나? >> [학생]는 당신이 보내는 어떤. 868 00:54:45,020 --> 00:54:49,720 어떻게 당신의 비밀은의와 b의와 c의와 D' s의 사이에 매핑이 무엇인지와 같은 것입니다. 869 00:54:49,720 --> 00:54:54,650 단지에서 B, B에서 C로 이동 문자 각각에 1을 추가 있습니까? 870 00:54:54,650 --> 00:54:56,670 그것보다 더 복잡한가요? 871 00:54:56,670 --> 00:55:01,540 >> 따라서 당신과 당신의 호감이 비밀 정보가 필요합니다 872 00:55:01,540 --> 00:55:03,190 하지만 여기에 함정 - 22 종류가 있습니다. 873 00:55:03,190 --> 00:55:06,830 이 처음 인 경우는 클래스를 통해이 사랑의 편지를 보낼 874 00:55:06,830 --> 00:55:10,720 어떻게 그 소년이나 소녀는 비밀도 무엇 때문인지 알고가는거야? 875 00:55:10,720 --> 00:55:13,930 따라서 비밀 키 암호는 세계의 모든 문제가 해결되지 않습니다 876 00:55:13,930 --> 00:55:16,320 그리고 관계는 우리가 학기 끝 부분에 다시 올 것을 이곳에 있어요. 877 00:55:16,320 --> 00:55:25,110 마찬가지로 우리 대부분은 Amazon.com에서, 예를 들어, 사용할 수있는 사람을 알고하지 않습니다 878 00:55:25,110 --> 00:55:28,190 아직 우리의 많은 사람들이 아마 Amazon.com에서 물건을 구입 한 879 00:55:28,190 --> 00:55:31,990 그리고 우리는 이러한 전자 상거래의 보안 있다고 가정 배운습니다. 880 00:55:31,990 --> 00:55:36,470 URL 아마​​ HTTPS는 어딘가에 어쩌면 멍청한 자물쇠 아이콘이 있다고 881 00:55:36,470 --> 00:55:39,930 귀하의 신용 카드 정보를 확보 암호화의 일부 종류가 882 00:55:39,930 --> 00:55:42,160 귀하와 Amazon.com 사이에 있습니다. 883 00:55:42,160 --> 00:55:45,430 암호화가 포함해도 아직 몇 비밀을 알고 884 00:55:45,430 --> 00:55:48,620 아직 저는 아마존에서 아는 사람없고, 확실히 비밀 모든 종류의 배열 적이 없다 885 00:55:48,620 --> 00:55:52,710 아마존에서 누군가와 함께, 어떻게이 일을 내 컴퓨터 또는 브라우저는? 886 00:55:52,710 --> 00:55:55,720 암호화 기타 유형의 문제를 해결하는 모두가 있다는 사실을 알아가집니다. 887 00:55:55,720 --> 00:55:57,670 그러나 오늘, 우리는 단순에 초점을합니다 888 00:55:57,670 --> 00:56:00,290 당신은 어떤 비밀을 알고 사전에 준비 할 수있는 889 00:56:00,290 --> 00:56:03,760 +1 또는의와 b의 사이 매핑처럼. 890 00:56:03,760 --> 00:56:05,840 그리고 암호화 과정은 일반적으로이 포함됩니다. 891 00:56:05,840 --> 00:56:08,620 당신은 왼쪽에 여기 묘사 된 일부 일반 텍스트를,이 892 00:56:08,620 --> 00:56:12,930 당신은을 암호화하기위한 알고리즘 또는 프로 시저의 어떤 통해 실행 - 893 00:56:12,930 --> 00:56:15,100 어쩌면 그 단지 A와 B가되고, B는 C가됩니다 - 894 00:56:15,100 --> 00:56:17,490 그리고 당신은 ciphertext이 생깁니다. 895 00:56:17,490 --> 00:56:20,380 한편, 한 번 호감이 비밀 메모를받습니다 896 00:56:20,380 --> 00:56:24,200 그 또는 그녀는 해독은 일반적으로 그 알고리즘을 전환 할 수 있습니다 897 00:56:24,200 --> 00:56:27,190 일반 텍스트를 다시 할 수 있도록. 898 00:56:27,190 --> 00:56:28,960 이 물리적 화신이 있습니다. 899 00:56:28,960 --> 00:56:31,680 >> 예를 들어,이 작은 비밀 디코더 반지 900 00:56:31,680 --> 00:56:35,110 이 두 다이얼이 있다는 의미에서 링입니다. 901 00:56:35,110 --> 00:56:38,490 이 물건의 외부 주변에서 Z까지 문자가가 902 00:56:38,490 --> 00:56:40,340 그들은 무작위 순서로하고, 비록 903 00:56:40,340 --> 00:56:42,880 그리고 내부에 어떤 숫자가 실제로있다 904 00:56:42,880 --> 00:56:46,620 이러한이 반지 어떤 종류의 내부는 외부를 돌려 있지만 수 905 00:56:46,620 --> 00:56:49,140 문자와 숫자를 줄에 순서를 유지해야합니다. 906 00:56:49,140 --> 00:56:53,020 크리스마스 스토리라는 영화에서, 당신은 그 작은 Ralphie를 볼 수 있습니다 907 00:56:53,020 --> 00:56:58,000 리틀 고아 애니의 비밀 메시지가 그에게 어떻게 된 건지 알아 냈어에 그렇게 열성적이었다 908 00:56:58,000 --> 00:57:02,570 그는 시리얼 상자에 숫자 메시지의 형태로, 내 생각, 전달되었습니다 909 00:57:02,570 --> 00:57:07,220 그리고 당신은 시리얼 상자에 온 모든 작은 카드를 축적했다 910 00:57:07,220 --> 00:57:09,770 당신이 그들을에 우편으로 보내했고, 당신은 그 비밀 디코더 링을 다시했습니다 911 00:57:09,770 --> 00:57:13,910 당신은 마지막으로 매핑 문자와 숫자 사이에이 뭔지 알아내는 수 있도록 912 00:57:13,910 --> 00:57:15,550 또는 문자와 문자. 913 00:57:15,550 --> 00:57:19,520 우리는이 같은 일을 실행하거나 대표에 대해 어떻게 컴퓨터에 갈 수 있나요? 914 00:57:19,520 --> 00:57:22,560 우리는 좀 더 유연하게 자신을 표현하는 방법이 필요 915 00:57:22,560 --> 00:57:25,080 우리 변수는 지금까지 허용보다. 916 00:57:25,080 --> 00:57:29,000 우리는 문자를하신 적이 ints 셨으니 까, 우리는 수레와 복식과 몇 가지 다른 했어 917 00:57:29,000 --> 00:57:34,200 하지만 그건 정말 우리가 일을 표현하는 것을 허용하지 않습니다 메모리의 개별 조각 918 00:57:34,200 --> 00:57:36,440 단어와 문장 및 구문처럼. 919 00:57:36,440 --> 00:57:38,630 사실, 우리는 그런 것들을 문자열을 호출했습니다 920 00:57:38,630 --> 00:57:42,660 하지만 우리는이 정말 CS50 라이브러리에서 단지 단순화 것을 약속드립니다 921 00:57:42,660 --> 00:57:45,540 우리는 껍질에 장래 있는지. 922 00:57:45,540 --> 00:57:47,500 그리고 여기에을 수행하는 시작하자. 923 00:57:47,500 --> 00:57:49,840 내가 가서 파일을 열어 보자 - 924 00:57:49,840 --> 00:57:54,100 이러한 파일의 모든 이용하실 수 있으며, 평소 온라인 - 이른바 array.c 925 00:57:54,100 --> 00:57:58,960 문자열 관련이없는 문제를 해결하지만 여기에 사진을 페인트 칠하는 방법 926 00:57:58,960 --> 00:58:01,520 어떻게 우리는 배열이라는 것을 사용할 수 있습니다. 927 00:58:01,520 --> 00:58:04,050 >> 배열은 데이터 형식입니다. 928 00:58:04,050 --> 00:58:10,730 그것은 여러 개의 작은 데이터 형식 그것의 내부가 종류의 변수의 타입 929 00:58:10,730 --> 00:58:12,680 다시 백업 할 백업하기 위해 백업합니다. 930 00:58:12,680 --> 00:58:16,980 우리는 귀하의 퀴즈 평균을 제공하는 작은 프로그램을 작성하는 싶었어, 그래서 예를 들어, 경우 931 00:58:16,980 --> 00:58:19,780 이 퀴즈가 50 같은 코스, 932 00:58:19,780 --> 00:58:23,450 당신은 아주 쉽게도 지난 주 재료의 일부에 따라이 프로그램을 작성할 수 933 00:58:23,450 --> 00:58:28,830 GetInt와 변수 몇를 사용하여 : INT quiz1, 정수 quiz2. 934 00:58:28,830 --> 00:58:30,550 그리고 아주 간단입니다. 935 00:58:30,550 --> 00:58:33,500 이 코드를 최대 20 라인 프로그램을 구현하는, 어쩌면 10 살 인데요 936 00:58:33,500 --> 00:58:38,940 이 퀴즈 점수의 사용자를 부탁하고 자신의 평균을 계산합니다 그 937 00:58:38,940 --> 00:58:42,020 그들을 함께 추가 2로 분할 한 다음 결과를 인쇄하여. 938 00:58:42,020 --> 00:58:46,400 우리는 아마도 분의 일부 번호 다음에 매우 쉽게 지금 그런 짓을 수 있습니다. 939 00:58:46,400 --> 00:58:49,450 그러나 문제는 50 3 퀴즈 또는 4 있다고 가정 그입니다. 940 00:58:49,450 --> 00:58:52,830 당신이 퀴즈 매주했다 클래스에 동일한 프로그램을 사용하고 싶어하고 있다고 가정합시다. 941 00:58:52,830 --> 00:58:55,100 매주 퀴즈 한 클래스에 대해 생각해보십시오. 942 00:58:55,100 --> 00:58:58,840 한 학기에 16 정도 주가 있​​으면 이제 16 변수가 : 943 00:58:58,840 --> 00:59:03,030 INT quiz1, INT quiz2, INT quiz3, 정수 quiz4. 944 00:59:03,030 --> 00:59:06,870 이 중복되어 표시되기 시작 즉시,이 복사 코드 붙여 넣기 945 00:59:06,870 --> 00:59:09,810 당신이 더 좋은 방법이 있었으면되기 시작한다. 946 00:59:09,810 --> 00:59:13,610 그리고 고맙게도 때문에 배열의가 있습니다. 그래서 한번 해보자 구. 947 00:59:13,610 --> 00:59:16,700 첫째, 내가 우리가 지금까지 사용하지 한 매우 단순한 일을 소개하겠습니다 948 00:59:16,700 --> 00:59:18,820 하지만 코드에서 종종 볼 수 있습니다. 949 00:59:18,820 --> 00:59:21,270 >> 이것은 일반적으로 상수라는거야. 950 00:59:21,270 --> 00:59:24,410 따라서이 값이 변경 없다는 의미에서 상수입니다. 951 00:59:24,410 --> 00:59:26,450 상수를 만드는 인간의 규칙 952 00:59:26,450 --> 00:59:30,420 그냥 정말 코드에서 서있는, 모든 대문자를 사용하는 것입니다 953 00:59:30,420 --> 00:59:34,270 및 C에서 사용하는 특별한 키워드는 # 정의되어 있습니다. 954 00:59:34,270 --> 00:59:39,970 그래서 우리는 # 그 다음에, 당신은 상수의 이름을 사용하려는 단어를 공간을 정의 말 955 00:59:39,970 --> 00:59:41,730 다음 상수의 값입니다. 956 00:59:41,730 --> 00:59:44,710 이 변수에 무언가를 지정 다릅니다 확인할 수 있습니다. 957 00:59:44,710 --> 00:59:46,430 로그인 같습니다 없어요, 더 세미콜론이 없습니다. 958 00:59:46,430 --> 00:59:49,140 이것은 일반적으로 선행 처리기 지시어로 알려진 곳입니다 959 00:59:49,140 --> 00:59:50,840 그 다른 시간에하지만, 더. 960 00:59:50,840 --> 00:59:56,350 지금이 퀴즈라는 변함 값을 생성 961 00:59:56,350 --> 00:59:58,290 그의 실제 숫자 값은 2입니다. 962 00:59:58,290 --> 01:00:02,180 그래서 어디서나 당신이 파일을 통해 퀴즈, 퀴즈, 퀴즈 참조 963 01:00:02,180 --> 01:00:04,230 그건 그냥 숫자 2입니다. 964 01:00:04,230 --> 01:00:06,550 지금 주요 보면, 어디 방법이 작품을 보자. 965 01:00:06,550 --> 01:00:09,770 처음 엔 약간 이상한 모양,하지만 주 1 일부터 모든 것들입니다. 966 01:00:09,770 --> 01:00:12,210 등급의 사용자에게 문의하십시오. 우리가 어떻게이 작업을 수행합니까? 967 01:00:12,210 --> 01:00:17,350 라인 22 -이 정말 육즙이 부분입니다 - 내가 수레를 선언 968 01:00:17,350 --> 01:00:23,240 하지만 단지 하나의 부동. 나는 오히려 부동 소수점 값의 배열을 선언거야. 969 01:00:23,240 --> 01:00:27,700 그 변수는 여기에 암시로, 성적이라고 할 것입니다 970 01:00:27,700 --> 01:00:31,420 하지만 새로운 구문의 유일한 조각 그런 다음 대괄호 있습니다. 971 01:00:31,420 --> 01:00:37,280 나는 부동 등급 한 다음 열기를 브라켓 다음 번호를 말 한 사실 - 972 01:00:37,280 --> 01:00:40,980 이이 우리가 이런 짓을 마치 일정한 경우 발견 - 973 01:00:40,980 --> 01:00:46,840 이는, "헤이 컴퓨터가 나에게 두 수레를주고는가 총체적으로 그 성적이라고 불러." 974 01:00:46,840 --> 01:00:51,780 >> 이 같은 훨씬 더 지루한 과정에 대비되어 있습니다 : 부동 grade1, 975 01:00:51,780 --> 01:00:54,580 grade2 떠, 등등. 976 01:00:54,580 --> 01:00:58,310 따라서 배열은 우리가이 아이디어를 구현 할 수 있지만, 훨씬 덜 messily, 977 01:00:58,310 --> 01:01:04,560 우리가 말 대신에 16 주 학기 16 코드 1 줄을 쓸 수 있도록하는 방법 인치 978 01:01:04,560 --> 01:01:09,060 나는에 하드 코드 2를 원치 않았기 때문에 논리적으로 지금 생각해 보면, 979 01:01:09,060 --> 01:01:12,560 3 CS50 변경 대신 퀴즈 내년 가정 980 01:01:12,560 --> 01:01:15,010 내가 여기에 숫자 2를 가지고, 난 여기에 숫자 2를했​​다 981 01:01:15,010 --> 01:01:17,210 여기 2, 여기에 번호를 숫자 2를했​​다. 982 01:01:17,210 --> 01:01:19,890 그것은이 실수하기가 매우 지루하고 아주 쉽게됩니다 983 01:01:19,890 --> 01:01:26,550 실수로 3-1 값을 변경하고 2 다른 가치를 그리워합니다. 984 01:01:26,550 --> 01:01:30,660 그래서,이 거리에 대신 추상적으로 이동이 상수를 사용하는거야 985 01:01:30,660 --> 01:01:32,520 그 이름에서 알 수 있듯이, 절대 변경됩니다. 986 01:01:32,520 --> 01:01:35,870 그리고 지금 우리는 다른 권한이 있는지 여부에 상관없이,이 년 다음에 퀴즈 없습니다 987 01:01:35,870 --> 01:01:39,380 난 그냥 상단에 여기 한 곳에서 그걸 변경해야합니다. 988 01:01:39,380 --> 01:01:41,230 그래서이 전부 상수입니다. 989 01:01:41,230 --> 01:01:47,100 한편, 새로운 개념 기능은 배열의 것입니다. 990 01:01:47,100 --> 01:01:55,030 따라서 대괄호 나 한테 많은 수레를주고 나를 총체적으로 여기 성적 전화 할 수 있습니다. 991 01:01:55,030 --> 01:01:56,720 그래서 지금 내가해야 할 일을 살펴 보자. 992 01:01:56,720 --> 01:01:59,220 여기에 라인 24에서 루프의 시작 부분입니다. 993 01:01:59,220 --> 01:02:03,380 >> 이건 정말 별건입니다. 단지 퀴즈를 사용하는 대신 하드 코딩 된 숫자있어. 994 01:02:03,380 --> 01:02:06,740 그러나 지난 주부터이 지적 다른 건 아무것도 없습니다. 995 01:02:06,740 --> 01:02:11,650 이 ( "% d 개 중 # % d 개 퀴즈 :") 때문에 printf, 그냥 printf입니다 996 01:02:11,650 --> 01:02:16,670 난 그냥 저 2 숫자 1을 퀴즈 후 2 개 중 2 개의 줄에서 인쇄 할 때문입니다. 997 01:02:16,670 --> 01:02:18,480 그래서이 순전히 미적 것입니다. 998 01:02:18,480 --> 01:02:21,000 그러나 흥미로운 부분은 이제 라인 27에 있습니다. 999 01:02:21,000 --> 01:02:27,840 부동 소수점 값으로 두 자리 표시 자 중 하나를 입력하기 위해서는, 1000 01:02:27,840 --> 01:02:29,640 다시 대괄호를 사용합니다. 1001 01:02:29,640 --> 01:02:35,170 루프이 분명, 내가 어떤 가치를 동등 시작 되었기 때문에이 경우는 제가을 사용? 1002 01:02:35,170 --> 01:02:36,670 [학생] 0. >> [Malan] 0. 1003 01:02:36,670 --> 01:02:40,990 따라서이 루프의 첫 번째 반복에서, 내가 코드에서 쓴 것처럼이고, 1004 01:02:40,990 --> 01:02:46,310 내 코드에서 쓴 것처럼하지만 루프의 두 번째 반복에 그입니다. 1005 01:02:46,310 --> 01:02:49,970 이름에서 알 수 있듯이 때문에 나는 변수를 사용한다는 사실은 완벽 1006 01:02:49,970 --> 01:02:52,600 그것은 모든 반복에 그 값을 변화있어 1007 01:02:52,600 --> 01:02:55,900 그래서 한 번에이 배열 한 자리를 작성 한 것 뿐이예요. 1008 01:02:55,900 --> 01:02:57,380 이 배열은 어떻게 생겼는데? 1009 01:02:57,380 --> 01:03:01,570 여기 화면에 슈퍼 간단한 사각형을 그린 이유는 전에 이런 이유로이었다. 1010 01:03:01,570 --> 01:03:05,590 배열은 메모리의 다른 덩어리에 이어 메모리의 덩어리입니다 1011 01:03:05,590 --> 01:03:08,570 메모리의 다른 덩어리에 이어 등등. 1012 01:03:08,570 --> 01:03:13,120 내 배열 여기이 경우 사이즈 2입니다면, 제가이 일을 할 것입니다 1013 01:03:13,120 --> 01:03:20,200 내 퀴즈 점수를 입력하여 여기가 좋아 - 난이 하나에 100 탔고, 나는이 하나를 99 있어요 - 1014 01:03:20,200 --> 01:03:24,970 나는 단지 컴퓨터를 요구했기 때문에 다음이 메모리도 사용할 수 없을 수도 1015 01:03:24,970 --> 01:03:26,840 사이즈 2의 배열하십시오. 1016 01:03:26,840 --> 01:03:28,600 이러한 광장 바로, 아직 거기 있습니까? 1017 01:03:28,600 --> 01:03:32,670 만 2 수레를 요청하는 경우에도 당신은 여전히​​ RAM의 2 기가 바이트 있습니다. 1018 01:03:32,670 --> 01:03:36,840 따라서 배열 뒤에 아이디어는 컴퓨터가 단지 메모리의 덩어리 걸립니다 있다는 것입니다 1019 01:03:36,840 --> 01:03:41,340 그리고 백업 백업 백업 다시 작은 조각을 apportions. 1020 01:03:41,340 --> 01:03:43,310 그리고 그렇게 모든 배열이 있습니다. 1021 01:03:43,310 --> 01:03:47,350 >> 당신이 물건을 넣을 수있는 메모리 내부의 연속 된 덩어리입니다. 1022 01:03:47,350 --> 01:03:50,700 이는 좀 지루 연산을 수행하는 발생합니다. 1023 01:03:50,700 --> 01:03:54,640 여기 아래로 스크롤하면 그때 배열을 통해 반복 곳이 있습니다. 1024 01:03:54,640 --> 01:03:58,020 나는 배열의 값의 모든 합을 마련 1025 01:03:58,020 --> 01:04:02,470 그리고 사실은 퀴즈로 나눈 금액을하려면 여기를 라운드 함수를 사용합니다. 1026 01:04:02,470 --> 01:04:06,320 하지만 지금은 충분한 연산의 일종으로 좀 손을 흔들 보자. 1027 01:04:06,320 --> 01:04:08,370 그러나 나를 위해하고있어 모든 궁극적으로 평균을 계산합니다. 1028 01:04:08,370 --> 01:04:13,580 그래서 일단 퀴즈 플러스 둘째 퀴즈는 2로 나눈 후 정수로 출력. 1029 01:04:13,580 --> 01:04:17,280 string1라는 다른 예제하지만 그건 지금 전환, 1030 01:04:17,280 --> 01:04:20,700 이는 비슷한 사진 만 사용 문자열을 그린다. 1031 01:04:20,700 --> 01:04:23,940 내가 가서 한 순간을 위해이 일을 간단하게 보자. 1032 01:04:23,940 --> 01:04:27,090 지금의 들여 쓰기 미안 해요. 1033 01:04:27,090 --> 01:04:30,870 이 예제의 라인 (19)의 공지 사항, 전 사용자로부터 문자열을. 1034 01:04:30,870 --> 01:04:34,640 하지만 다음 라인에 22 이후 일을하는지 확인합니다. 1035 01:04:34,640 --> 01:04:41,250 나는 실제로 내가에서 최대 반복거야 - 그리고이 새로운 마술이야 - 나 strlen, 문자열의 길이. 1036 01:04:41,250 --> 01:04:44,880 이것은 당신이에게 문자열을 통과하면, C와 함께 제공되는 기능입니다 1037 01:04:44,880 --> 01:04:47,730 그렇게 문자열에 얼마나 많은 문자를 알려줍니다. 그게 전부 야. 1038 01:04:47,730 --> 01:04:51,550 그리고 대신 문자열 길이 나 strlen 있다는 사실은 더 간결 단지 때문입니다. 1039 01:04:51,550 --> 01:04:55,100 30 년 전, 사람들은 같은 간결 가능한 일을 작성하는 좋아 1040 01:04:55,100 --> 01:04:57,630 그래서 우리는 여기 규칙을 지켰습니다. 1041 01:04:57,630 --> 01:05:00,660 난 + + 그냥 각 반복에서 i를 증가 의미합니다. 1042 01:05:00,660 --> 01:05:02,990 그리고 지금은 정말 재미있는이를 확인합니다. 1043 01:05:02,990 --> 01:05:09,180 라인 24에서, 내 말, "컴퓨터, 날 8 비트 문자를 제공하고, C 호출." 1044 01:05:09,180 --> 01:05:12,630 하지만이 오른쪽 말씀에 무엇입니까? 1045 01:05:13,490 --> 01:05:16,530 영어로, 그 무엇을 나타 냅니까? 1046 01:05:16,530 --> 01:05:18,730 [학생] 배열의 첫 번째 문자가 있습니다. 1047 01:05:18,730 --> 01:05:20,790 그렇지. 나에게 배열의 첫 번째 문자를 제공합니다. 1048 01:05:20,790 --> 01:05:24,090 또는, 더 일반적으로, 나에게 배열의 i 번째 문자를 제공합니다. 1049 01:05:24,090 --> 01:05:26,100 그리고 지금은 중요합니다 알고 있습니다 컴퓨터 과학자로, 1050 01:05:26,100 --> 01:05:27,890 우리가 실제로 0에서 계산하고 있습니다. 1051 01:05:27,890 --> 01:05:29,720 >> 당신은이 일을 시작하는 지금 재량이 없습니다. 1052 01:05:29,720 --> 01:05:34,160 이제 컴퓨터의 기대에 따라 행동과 0을 기준으로해야합니다 1053 01:05:34,160 --> 01:05:38,180 [0] 왜냐하면, 문자열의 첫 번째 문자가 될 것입니다 1054 01:05:38,180 --> 01:05:42,150 [1] 두 번째가 될 것입니다, [2]는 세 번째, 등등 될 것입니다. 1055 01:05:42,150 --> 01:05:49,720 따라서이 프로그램은, 내가 컴파일하면 이런 일이 또 string1이므로 string1을, 1056 01:05:49,720 --> 01:05:54,670 지금은 내 터미널 창에서 string1를 실행했습니다. 1057 01:05:54,670 --> 01:05:58,330 , 그것은 입력을 기다리고 있어요, 그래서 제가, 데이비드 입력 입력거야 1058 01:05:58,330 --> 01:06:02,540 사항이 내가하는 일이 있기 때문에 지금은 서로 다른 라인에 데이비드를 인쇄합니다. 1059 01:06:02,540 --> 01:06:05,820 한 번에 한 문자를 인쇄 할거야. 1060 01:06:05,820 --> 01:06:10,100 우리는이에서 오늘 세부로 이동되지 않습니다,하지만 여기이 수표 전 순간을 삭제했습니다. 1061 01:06:10,100 --> 01:06:15,480 그것은 사용자가 올바르게 작동하지 않는 경우 해당 밝혀, 적대하거나 혼동, 1062 01:06:15,480 --> 01:06:20,210 당신은 실제로 어떤 길이의 문자열을 제공하기 위해 실패 할 수 있습니다. 1063 01:06:20,210 --> 01:06:22,860 당신이 키보드의 잘못된 키를 누르면 경우, 당신은 전혀 문자열을주지 수 1064 01:06:22,860 --> 01:06:26,950 당신은 악의적 인 경우 또는, 당신은 에세이 기가 바이트의 가치에 붙여 넣으려고 수 1065 01:06:26,950 --> 01:06:29,290 컴퓨터의 메모리가 부족 실행하는 경우이 문자열을 작성하고, 1066 01:06:29,290 --> 01:06:32,710 우리가 NULL이라는 특별한 값을 돌려 주겠다을 이용할 수 있습니다. 1067 01:06:32,710 --> 01:06:35,580 그럼 지금부터, 단지 NULL 불리는이 특별한 값이있는 걸 알아 1068 01:06:35,580 --> 01:06:39,580 그 우리가 다른 것들 사이에, 메모리가 부족 때 확인 할 수 있습니다. 1069 01:06:39,580 --> 01:06:45,630 하지만 지금 string2를 열고 경우, 여기 차이가 발생하는 경우가 종종 있습니다. 1070 01:06:45,630 --> 01:06:48,210 string2와 여기 차이를 확인할 수 있습니다. 1071 01:06:48,210 --> 01:06:51,340 string2를 통해, 루프이 조금 다릅니다. 1072 01:06:51,340 --> 01:06:55,010 >> 우리가 그 다른 시간에 대해 이야기 할 수 있도록 내게 NULLs을 삭제 보자. 1073 01:06:55,010 --> 01:06:57,800 어떻게 루프의이 시간에 대한 다른거야? 1074 01:06:59,620 --> 01:07:01,670 나는 앞의 예를 다시 사용할 수 있습니다. 1075 01:07:01,670 --> 01:07:08,580 버전 2입니다 그럼,이 버전 1입니다. 1, 2. 1076 01:07:08,580 --> 01:07:11,980 1, 2. 1077 01:07:13,520 --> 01:07:16,660 위치 나 strlen 전화는? 1078 01:07:16,660 --> 01:07:18,860 이 루프의 처음 부분에 있어요. 1079 01:07:18,860 --> 01:07:21,830 내가이 짓을하는 이유에 대한 어떠한 생각? 그래. 1080 01:07:21,830 --> 01:07:24,560 [학생] 그래서 당신은 함수를 매번 호출하지 않습니다. 1081 01:07:24,560 --> 01:07:26,440 [Malan] 우리는 함수를 매번 전화를하지 않는 군. 그렇지. 1082 01:07:26,440 --> 01:07:28,300 사람들이 슈퍼 간단한 걸 루프에의 기억 1083 01:07:28,300 --> 01:07:31,770 일단 정렬의이 초기화, 상태 및 업데이트입니다 것으로 알고 있습니다. 1084 01:07:31,770 --> 01:07:34,750 문제는 조건이 루프의 모든 반복에 발생한다는 것입니다. 1085 01:07:34,750 --> 01:07:40,010 그리고 여기이 예에서, 무슨 일이 내 조건이라는 사실에 대한 안 좋은가요? 1086 01:07:40,010 --> 01:07:41,830 [학생] 당신은 나 strlen 전화를하고 있습니다. 1087 01:07:41,830 --> 01:07:44,340 [Malan] 당신은 또 한번, 또 한번 다시 나 strlen를 호출하고하고 있습니다. 1088 01:07:44,340 --> 01:07:47,410 하지만 내가 다윗을 입력 한 다음, 그 문자열의 길이는 5 1089 01:07:47,410 --> 01:07:49,650 그리고 루프의 모든 반복에 변함이 없을거야 1090 01:07:49,650 --> 01:07:51,670 문자열은 여전히​​ D--V-I-D. 때문에 1091 01:07:51,670 --> 01:07:55,320 그래서이 점점 더 중요한 아이디어가되기 위해 무슨 일이야에서 힌트입니다 1092 01:07:55,320 --> 01:08:00,410 그냥 컴퓨터가 불필요한 작업을 수행하지 않는 디자인 결정으로 알려져 있습니다. 1093 01:08:00,410 --> 01:08:03,920 >> 마찬가지로 일반용에 pset2, pset2의 미리 1094 01:08:03,920 --> 01:08:07,030 실제로 암호의 일부 번호를 구현하기 위해 도전 것입니다, 1095 01:08:07,030 --> 01:08:10,410 당신은 모두 암호화 할 수 있도록 암호화 알고리즘의 일부 번호, 1096 01:08:10,410 --> 01:08:13,840 등 하나 Ralphie 같은 해독 비밀 메시지가 디코딩. 1097 01:08:13,840 --> 01:08:16,810 pset2의 해커 판에서, 우리는 조금 더 갈거야. 1098 01:08:16,810 --> 01:08:19,649 우리는 실제 컴퓨터 시스템에서 당신에게 파일을 넘겨거야 1099 01:08:19,649 --> 01:08:23,479 즉, 사용자 이름 및 실제 암호화 된 암호를 왕창 포함되어 있습니다 1100 01:08:23,479 --> 01:08:26,939 그리고 해커 버전에 대한 도전은 그 암호를 해독 될 것입니다 1101 01:08:26,939 --> 01:08:33,200 실제로 이러한 암호를 생성하는 데 사용했던 암호화 나 무슨 비밀 알아 봅시다. 1102 01:08:33,200 --> 01:08:36,109 그리고 우리가 여기 C의 새로운 기능을 사용하여이 작업을 수행하는 것 1103 01:08:36,109 --> 01:08:40,630 내가 명령 줄 인자로 알려져 단지 데모를 줄 수있게 할 것이다. 1104 01:08:40,630 --> 01:08:44,229 당신의 일부 섹션이나 교과서에서 보셨을 수 있으므로 그것은, 밝혀 1105 01:08:44,229 --> 01:08:48,260 메인은 ​​항상 괄호 안에 무효 필요가 없습니다. 1106 01:08:48,260 --> 01:08:52,430 그것은 두 개의 인수와 함께, 메인도 같이 작성 될 수 있다는 판명 1107 01:08:52,430 --> 01:08:56,870 argc는 단어의 수입니다 argc와 argv가, 1108 01:08:56,870 --> 01:09:00,020 당신은 명령 줄에서 프로그램의 이름 뒤에 입력하는 1109 01:09:00,020 --> 01:09:03,420 그리고 변수는 argv는 실제 단어입니다. 1110 01:09:03,420 --> 01:09:07,540 거기에 대괄호가 제안 때, 변수는 argv는 분명히 배열입니다. 1111 01:09:07,540 --> 01:09:12,210 이 메모리에 문자열 뒤에 문자열 뒤에 문자열이 될거에요. 1112 01:09:12,210 --> 01:09:16,010 >> 그래서이 같은 일이 우리가 pset 2 시작 할 수있을 것입니다. 1113 01:09:16,010 --> 01:09:21,350 나는 우리가 월요일에 다시 와서하고 실행합니다 예입니다 argv1을,하는 경우 1114 01:09:21,350 --> 01:09:23,370 그것은 아직 아무것도하지 않는 것 것을 확인할 수 있습니다. 1115 01:09:23,370 --> 01:09:25,490 단지 자신의 이름을 출력합니다. 1116 01:09:25,490 --> 01:09:31,479 하지만이 프로그램은 분명히 반복하는 작별 인사 클래스가 통지 말한다면, 1117 01:09:31,479 --> 01:09:35,479 프롬프트에 입력 된 단어의 각 이상. 1118 01:09:35,479 --> 01:09:41,630 그리고 사용자가 프롬프트에 입력 한 단어에 대한 액세스 권한을되는 수단 1119 01:09:41,630 --> 01:09:49,160 주 (argc, argv가)을 int로 int는 주 (무효)에서 이번 주말부터 주요 변경하는 것입니다 1120 01:09:49,160 --> 01:09:52,050 그래서 명령 줄 인수를 탄생 될 것입니다. 1121 01:09:52,050 --> 01:09:57,100 일단 당신이에서 정말 세련된 가서 당신은 정말 trippy 프로그램을 작성 할 수 있습니다 1122 01:09:57,100 --> 01:09:59,610 등 위와 넘어 여기이 한 1123 01:09:59,610 --> 01:10:03,940 기능 중 일부는 우리가 지금까지 수행하지만 모든 아주 강력했습니다. 1124 01:10:03,940 --> 01:10:08,950 >> 그래서 우리는 화면에 이것과이 둘 게요, 우리는 월요일에 표시됩니다. 1125 01:10:17,570 --> 01:10:20,000 >> [CS50.TV]