1 00:00:07,420 --> 00:00:08,160 [Powered by Google Translate] 데이빗 J. MALAN : 알았어. 2 00:00:08,160 --> 00:00:11,170 이 CS50 있으며,이 일주일에 두번의 끝입니다. 3 00:00:11,170 --> 00:00:14,650 당신은 내일이 시간 주변에 배가 될 것으로 예상 될 경우 우리가가는 알고 4 00:00:14,650 --> 00:00:18,920 작은 그룹 내일, 목요일, 오후 1시 15분로 소집 할 수 있습니다. 5 00:00:18,920 --> 00:00:21,460 당신은 답장하려면이 URL가 있어요. 6 00:00:21,460 --> 00:00:25,270 공간이 제한되어 있으므로 양식이 시간에 의해 채워 경우 용서하십시오 7 00:00:25,270 --> 00:00:26,680 이 양식을 작성. 8 00:00:26,680 --> 00:00:29,400 재미있을 겁니다하지만 다른 URL이 있습니다. 9 00:00:29,400 --> 00:00:32,409 >> 그러므로 한 달의 시간에 대한에, 과정은 사용할 수 것입니다 10 00:00:32,409 --> 00:00:36,090 모든 더 넓게 edX를 통해, 인터넷에 사람들은 할 것입니다 통해 11 00:00:36,090 --> 00:00:39,580 사실, 매우 적극적으로 수업에 참여, 함께 따라 할 수. 12 00:00:39,580 --> 00:00:43,070 그들은 CS50 어플라이언스와 CS50 토론하고의 대부분을 사용할 것 13 00:00:43,070 --> 00:00:45,840 이미 이번 학기을 사용하고 계신 다양한 소프트웨어 도구를 제공합니다. 14 00:00:45,840 --> 00:00:49,030 그리고 우리가 올해 실험로 수행 할 사업 중 하나 15 00:00:49,030 --> 00:00:53,120 우리가 다른 하나는 음성으로 번역 할 수 있습니다 얼마나 많은 콘텐츠를 확인하려면 16 00:00:53,120 --> 00:00:54,110 문자 언어. 17 00:00:54,110 --> 00:00:58,000 이 프로젝트에 참여에 관심으로서,이있을 수면 18 00:00:58,000 --> 00:01:02,090 우리는 코스의 영어 성적 증명서 및 자막을 제공합니다 19 00:01:02,090 --> 00:01:05,190 강의와 반바지, 세미나 및 섹션과 같은 - 20 00:01:05,190 --> 00:01:08,700 당신은 유창하게 말하거나, 아니면 유창하게 다른 언어를 작성하는 경우, 우리는 겠어 21 00:01:08,700 --> 00:01:12,240 이 프로젝트에 당신을 상대 할 사랑으로서, 당신은 하나 이상의에 걸릴 22 00:01:12,240 --> 00:01:15,340 비디오, 당신은 아주 잘 알고있는 언어로 그들을 번역. 23 00:01:15,340 --> 00:01:19,050 당신에게 인터페이스의 의미를 제공하기 위해이 웹 기반 사용자 인터페이스가 24 00:01:19,050 --> 00:01:22,330 우리는 본질적으로 같은 UI를 만들 것이다 사용한다는 점을 잊지 마십시오. 25 00:01:22,330 --> 00:01:24,520 이건 내 일부 할로윈 전에 가르치는 것이 었습니다. 26 00:01:24,520 --> 00:01:27,710 그리고 이러한 시간 기록 옆에 검은 색에 가장 오른쪽에, 27 00:01:27,710 --> 00:01:31,300 당신은 그 날 내 입에서 나온 여러 가지를 볼 수 있습니다. 28 00:01:31,300 --> 00:01:34,660 그리고 그 아래에, 당신은 다른 언어로 번역 할 수 있습니다. 29 00:01:34,660 --> 00:01:37,840 매핑이 경우 영어로, 사이 정확히 30 00:01:37,840 --> 00:01:38,660 하고, 스페인어를 말한다. 31 00:01:38,660 --> 00:01:40,480 그래서 실제로 매우 사용자 친화적 인 도구입니다. 32 00:01:40,480 --> 00:01:43,690 당신은 키보드 단축키로 매우 쉽게 빨리 감기 되감기 할 수 있습니다. 33 00:01:43,690 --> 00:01:46,710 이 실험에 참가하고자하고 단어를 것입니다면 34 00:01:46,710 --> 00:01:50,730 볼과 거기에 사람들의 잠재적 수천 읽고, 생각 마시기 바랍니다 35 00:01:50,730 --> 00:01:51,960 참가 무료입니다. 36 00:01:51,960 --> 00:01:56,940 >> 이제 우리는 지나치게 월요일부터 새끼 고양이에 대한 한 단어를 보냈습니다 않도록 37 00:01:56,940 --> 00:01:58,120 무서운 메시지가 나타납니다. 38 00:01:58,120 --> 00:02:02,130 섹션 제안으로 근무 시간은 제안과 같은, 그런 건 알고 있지? 39 00:02:02,130 --> 00:02:05,110 물론 디자인은 매우 학생들이 공동이 훨씬 있으며 40 00:02:05,110 --> 00:02:09,250 함께 문제 세트와 문제를 극복해야 할 이야기. 41 00:02:09,250 --> 00:02:13,630 그리고 정말 행은 작업이 궁극적으로 다시 내려 와요 42 00:02:13,630 --> 00:02:16,420 제출해야 자신이어야합니다. 43 00:02:16,420 --> 00:02:19,080 그리고 꽤 정직, 야 - 근무 시간에, 그것은 완전히 정상입니다 - 44 00:02:19,080 --> 00:02:21,560 일부 채팅 할 - 그것은 완전히, 심지어 예상 할 수있는 일이야 45 00:02:21,560 --> 00:02:22,370 당신 옆에 친구. 46 00:02:22,370 --> 00:02:25,240 그 또는 그녀가 어떤 주제를 연구하고 있으며,이 같은 경우, 오, 잘 알려 47 00:02:25,240 --> 00:02:27,750 내가 당신에게 내가 쓴 코드의 일부 라인의 모습을 제공합니다. 48 00:02:27,750 --> 00:02:28,290 괜찮아요. 49 00:02:28,290 --> 00:02:28,700 그 문제가 발생합니다. 50 00:02:28,700 --> 00:02:31,580 그리고 그 학습의 과정, 제 생각 많이 유도. 51 00:02:31,580 --> 00:02:35,270 머리가 약간 이상 기울어 때 선, 다시 넘어지기는 어디 52 00:02:35,270 --> 00:02:38,800 여기에 너무 많이 초 또는 분 동안 정말 단을 가지고있는 53 00:02:38,800 --> 00:02:41,250 당신의 친구에 대한 차단 해제 기회 였죠. 54 00:02:41,250 --> 00:02:43,870 그리고 확실히 물건은 이메일 및 보관과를 통해 교환받을 때 55 00:02:43,870 --> 00:02:45,350 같은, 너무 줄이 있습니다. 56 00:02:45,350 --> 00:02:48,940 이 모든 수단으로, 편안하게 친구들과 채팅하는 것이 좋습니다 생각 57 00:02:48,940 --> 00:02:51,270 그리고 psets 등에 대한 반 친구. 58 00:02:51,270 --> 00:02:54,680 그리고 단지 당신이 궁극적으로 제출하는 것은 정말이되었다는 걸 깨달았 59 00:02:54,680 --> 00:02:57,780 귀하의 생성이 아닌 다른 사람의 제품입니다. 60 00:02:57,780 --> 00:03:01,010 >> 귀여워 생물의 같은 맥락에서, 당신은 수도 61 00:03:01,010 --> 00:03:02,820 이 사람 여기 알아요. 62 00:03:02,820 --> 00:03:06,180 그래서 몇 년 전에서 엄청 시리 싸구려 영화입니다. 63 00:03:06,180 --> 00:03:08,680 여기 아무도 Spaceballs 본 적있어? 64 00:03:08,680 --> 00:03:09,120 괜찮아요. 65 00:03:09,120 --> 00:03:10,220 여기에 좋은 숫자가 그럼. 66 00:03:10,220 --> 00:03:13,840 그래서이 궁극적으로 오늘날 소개 우리의 멋지고 학술 방법입니다 67 00:03:13,840 --> 00:03:15,130 암호화의 개념. 68 00:03:15,130 --> 00:03:19,010 올 것이다 pset 2에 대한 도메인 특정 문제 그리고 어느 69 00:03:19,010 --> 00:03:22,770 내일은 늦게 밤에, 암호의 세계에 뛰어하는 것입니다 70 00:03:22,770 --> 00:03:26,380 정보를 암호화하거나 출격의 예술입니다. 71 00:03:26,380 --> 00:03:30,160 그리고 궁극적으로 보안의 세계에 관한 것이다. 72 00:03:30,160 --> 00:03:34,440 >> 지금 보안 대부분의 우리는 상당히 평범한 메커니즘의 형태로 제공됩니다. 73 00:03:34,440 --> 00:03:36,920 우리 모두가 사용자 이름과 비밀번호가 있습니다. 74 00:03:36,920 --> 00:03:41,350 그리고 우리 모두는 대부분 아주 나쁜 사용자 이름과 비밀번호가 있습니다. 75 00:03:41,350 --> 00:03:45,250 비밀번호가 여러 웹 사이트에 동일한 경우, 아마 우리가 아닙니다 76 00:03:45,250 --> 00:03:47,920 가장 좋은 아이디어는, 우리는 학기 끝 부분에 논의겠습니다. 77 00:03:47,920 --> 00:03:51,680 귀하의에 - 농담 - 비밀번호는 스티커 메모에 기록되어있는 경우 78 00:03:51,680 --> 00:03:55,130 너무 반드시 최고의 디자인이지만 꽤 일반적인 아닙니다 모니터, 79 00:03:55,130 --> 00:03:56,140 현상. 80 00:03:56,140 --> 00:04:00,420 귀하의 비밀번호를 암호화 할 암호를 사용하지 않을 경우, 그들은 아르 81 00:04:00,420 --> 00:04:01,610 특히 취약. 82 00:04:01,610 --> 00:04:04,670 당신이 숨겨진 단어를 갖는하여 영리 슈퍼 인 것 같아요면 83 00:04:04,670 --> 00:04:07,740 하드 비밀번호의이 드라이브는 아니지만 어딘가에 문서화 84 00:04:07,740 --> 00:04:10,550 그 누구도에서 찾아 갈 수 없어하는 폴더에 해당 그것도 아주 없습니다 85 00:04:10,550 --> 00:04:11,540 보안 메커니즘. 86 00:04:11,540 --> 00:04:15,100 그리고 무엇 pset 2 소개하는 것은 암호화의 예술이며, 87 00:04:15,100 --> 00:04:18,300 암호 같은 것을이 있도록 정보를 스크램블링 88 00:04:18,300 --> 00:04:19,500 모든 더 안전. 89 00:04:19,500 --> 00:04:24,500 수 있도록 매우 비 실제 세계와이 매우 실제적인 문제를 동기를 부여하는 방법 90 00:04:24,500 --> 00:04:28,740 시나리오는, 내가이 일에서 여기 우리가 제일 좋아하는 클립 중 하나를 소개 91 00:04:28,740 --> 00:04:29,895 영화 Spaceballs. 92 00:04:29,895 --> 00:04:30,565 >> [동영상 재생] 93 00:04:30,565 --> 00:04:32,995 - 헬멧, 당신 친구 인, 무슨 일이에요? 94 00:04:32,995 --> 00:04:34,730 당신이 내 딸 한테 무슨 짓이야? 95 00:04:34,730 --> 00:04:38,960 제가 재기 넘치는 젊은 플라스틱 외과 의사, 박사 필립을 소개 - 허가 96 00:04:38,960 --> 00:04:43,290 전체에서 Schlotkin, 가장 큰 코 수술 남자 97 00:04:43,290 --> 00:04:45,526 우주와 베벌리 힐스 (Beverly Hills). 98 00:04:45,526 --> 00:04:46,450 - 전하. 99 00:04:46,450 --> 00:04:47,380 - 코 수술? 100 00:04:47,380 --> 00:04:48,035 이해가 안되는 데요. 101 00:04:48,035 --> 00:04:49,480 그녀는 이미 코 수술을 받았어요. 102 00:04:49,480 --> 00:04:51,490 그건 정말 16 선물했다. 103 00:04:51,490 --> 00:04:53,090 - 아니, 당신이 생각하는 게 아니에요. 104 00:04:53,090 --> 00:04:55,150 그것보다 훨씬 더 있습니다. 105 00:04:55,150 --> 00:04:59,860 당신이 공기 방패 나에게 조합을 제공하지 않는 경우, 박사 Schlotkin 겁니다 106 00:04:59,860 --> 00:05:04,135 그녀의 오래된 코를 네 딸을 다시 제공합니다. 107 00:05:04,135 --> 00:05:05,385 - 아냐! 108 00:05:08,202 --> 00:05:10,186 그거 어디서 났니? 109 00:05:10,186 --> 00:05:11,178 - 좋아. 110 00:05:11,178 --> 00:05:11,674 내가 말 할께요. 111 00:05:11,674 --> 00:05:12,666 내가 말 할께요. 112 00:05:12,666 --> 00:05:14,154 - 아니, 아빠, 안돼. 113 00:05:14,154 --> 00:05:15,150 당신은해야합니다. 114 00:05:15,150 --> 00:05:16,460 - 당신 오른쪽, 내 사랑. 115 00:05:16,460 --> 00:05:18,450 당신의 새로운 코를 그리워 할 것이다. 116 00:05:18,450 --> 00:05:21,550 하지만 무슨 일이 있어도 그들에게 조합을 말하지 않을 수 없습니다. 117 00:05:21,550 --> 00:05:23,100 - 아주 좋아요. 118 00:05:23,100 --> 00:05:25,510 박사 Schlotkin는 최악의 해. 119 00:05:25,510 --> 00:05:26,760 - 내 반갑습니다. 120 00:05:30,560 --> 00:05:31,180 - 아냐! 121 00:05:31,180 --> 00:05:33,450 잠깐, 잠깐만. 122 00:05:33,450 --> 00:05:34,770 내가 말 할께요. 123 00:05:34,770 --> 00:05:36,400 내가 말 할께요. 124 00:05:36,400 --> 00:05:38,630 - 난 그게 작동 줄 알았습니다. 125 00:05:38,630 --> 00:05:42,040 좋아, 나 한테 줘. 126 00:05:42,040 --> 00:05:46,890 - 조합은 하나입니다. 127 00:05:46,890 --> 00:05:47,290 - 하나. 128 00:05:47,290 --> 00:05:48,183 - 하나. 129 00:05:48,183 --> 00:05:48,950 - 두. 130 00:05:48,950 --> 00:05:49,370 - 두. 131 00:05:49,370 --> 00:05:50,450 - 두. 132 00:05:50,450 --> 00:05:50,715 - 세 133 00:05:50,715 --> 00:05:51,380 - 셋. 134 00:05:51,380 --> 00:05:52,390 - 셋. 135 00:05:52,390 --> 00:05:53,200 - 넷. 136 00:05:53,200 --> 00:05:53,720 - 넷. 137 00:05:53,720 --> 00:05:55,830 - 넷. 138 00:05:55,830 --> 00:05:56,580 - 다섯 139 00:05:56,580 --> 00:05:57,120 - 다섯. 140 00:05:57,120 --> 00:05:58,560 - 다섯. 141 00:05:58,560 --> 00:06:03,770 - 그래, 조합은 하나, 둘, 셋, 넷, 다섯입니다. 142 00:06:03,770 --> 00:06:06,745 그건 내가 내 인생에서 들어 본 가장 멍청한 조합입니다. 143 00:06:06,745 --> 00:06:09,290 그건 바보가 수하물에 미칠 것 일 이죠. 144 00:06:09,290 --> 00:06:11,540 공주님, 당신을 감사합니다. 145 00:06:11,540 --> 00:06:12,940 - 무슨 짓을 한거야? 146 00:06:12,940 --> 00:06:14,230 - 내가 벽을 돌렸다. 147 00:06:14,230 --> 00:06:14,630 - 아니, 그렇지 않아. 148 00:06:14,630 --> 00:06:15,430 당신은 전체 영화를 해제. 149 00:06:15,430 --> 00:06:16,722 - 내가 잘못 버튼을 누르면이어야합니다. 150 00:06:16,722 --> 00:06:18,078 - 글쎄, 그것을 다시 넣어. 151 00:06:18,078 --> 00:06:18,805 영화를 다시 놔. 152 00:06:18,805 --> 00:06:19,080 - 예, 알겠습니다. 153 00:06:19,080 --> 00:06:19,270 예, 알겠습니다. 154 00:06:19,270 --> 00:06:19,830 가, Erna를 놔줘. 155 00:06:19,830 --> 00:06:20,270 , 그레첸 가자. 156 00:06:20,270 --> 00:06:22,850 물론 당신은 내가 아직도 당신을 청구 할 것 알아요. 157 00:06:27,400 --> 00:06:28,325 - 글쎄, 일 했어? 158 00:06:28,325 --> 00:06:29,550 문은 어디있어? 159 00:06:29,550 --> 00:06:29,910 - 그건 선생님했습니다. 160 00:06:29,910 --> 00:06:30,770 우리는 조합이 있습니다. 161 00:06:30,770 --> 00:06:31,390 - 좋아. 162 00:06:31,390 --> 00:06:35,630 이제 우리는 지구 Druidia에서 신선한 공기의 모든 마지막 숨을 수 있습니다. 163 00:06:35,630 --> 00:06:36,550 조합은 무엇입니까? 164 00:06:36,550 --> 00:06:38,805 - 하나, 둘, 셋, 넷, 다섯. 165 00:06:38,805 --> 00:06:40,610 - 하나, 둘, 셋, 넷, 다섯? 166 00:06:40,610 --> 00:06:41,070 - 그래요. 167 00:06:41,070 --> 00:06:41,760 - 정말 놀라워요. 168 00:06:41,760 --> 00:06:45,200 내 짐에 동일한 조합있어. 169 00:06:45,200 --> 00:06:47,800 즉시 출발을 위해 Spaceball 하나를 준비합니다. 170 00:06:47,800 --> 00:06:48,536 - 예, 알겠습니다. 171 00:06:48,536 --> 00:06:52,350 - 제 수하물의 조합을 변경할 수 있습니다. 172 00:06:52,350 --> 00:06:53,250 - 아우! 173 00:06:53,250 --> 00:06:55,020 [END 비디오 재생] 174 00:06:55,020 --> 00:06:57,470 >> 데이빗 J. MALAN : 지금 모두 볼 수 놀라운 영화. 175 00:07:00,600 --> 00:07:06,540 그래서 여기 컨텍스트가 안전하지 않은 데이터로 할 수있는 기회를 제공하는 것입니다 176 00:07:06,540 --> 00:07:07,790 을 암호화하고 출격시켜야합니다. 177 00:07:07,790 --> 00:07:11,060 그리고이 예를 들어, 암호화 된 메시지의 예입니다. 178 00:07:11,060 --> 00:07:12,980 이와 같은 사실은 실제로 영어로 무언가를 말한다. 179 00:07:12,980 --> 00:07:14,750 그러나 분명히 전적으로 분명 아닙니다. 180 00:07:14,750 --> 00:07:17,360 그리고 우리는 떨어져 감히 지금 눈앞에 올거야 이건 비밀 181 00:07:17,360 --> 00:07:18,380 여기에 메시지가 있습니다. 182 00:07:18,380 --> 00:07:22,370 그러나 컴퓨터의 현실 세계에서 일이 심지어 그들이 그런것 같아 보이지 않는 183 00:07:22,370 --> 00:07:23,440 영어 구문 일. 184 00:07:23,440 --> 00:07:27,500 예를 들어, 여러분이 나 표준 리눅스 또는 Mac에서 찾을 수 있습니다 무엇 185 00:07:27,500 --> 00:07:32,080 옛날 옛적에 있었던 파일에 유닉스 컴퓨터는 암호 파일을했다. 186 00:07:32,080 --> 00:07:34,170 현재, 다른 장소로 이동 된. 187 00:07:34,170 --> 00:07:38,660 당신이 시스템에서 올바른 위치에 본다면, 당신은뿐만 아니라 당신의를 볼 수 있습니다 188 00:07:38,660 --> 00:07:41,430 사용자 이름 또는 시스템에 다른 사람의,하지만 당신은 볼 수 189 00:07:41,430 --> 00:07:43,410 자신의 비밀번호를 암호화 버전입니다. 190 00:07:43,410 --> 00:07:47,800 사실,이 단어 토굴는 다음과 같은 일이 암호화되어하는 것이 좋습니다. 191 00:07:47,800 --> 00:07:52,030 그리고이 임의 문자와 문자와 숫자의 시리즈 192 00:07:52,030 --> 00:07:56,370 등등 만 일반적으로 몇 가지 비밀을 알게하여 해독 할 수 있습니다 - 193 00:07:56,370 --> 00:07:58,600 비밀 단어 비밀 번호입니다. 194 00:07:58,600 --> 00:08:02,760 그리고 실제로, 암호화 궁극적으로 종기를의 예술은 일부의 믿을 수없는 195 00:08:02,760 --> 00:08:05,700 정렬 및 다른 사람이하지 않는 일을 알고. 196 00:08:05,700 --> 00:08:10,010 오늘 좀 더 자세히이 탐구되고 pset에 와서. 197 00:08:10,010 --> 00:08:11,860 >> 그리고 지금 통과 / 실패에 단어. 198 00:08:11,860 --> 00:08:15,250 따라서 특히, 당신의 일부로서 pset 1 어플라이언스에 잠수, 그리고 한 199 00:08:15,250 --> 00:08:18,390 자신에 대한 매우 새로운 세계, 그 좌절감을 실현하고 200 00:08:18,390 --> 00:08:21,340 혼란과 단지 기술적 인 문제가 발생할 수 있습니다. 201 00:08:21,340 --> 00:08:24,410 특히 너무 많은 새로운이 첫 번째 pset가, 그냥받는 것도 202 00:08:24,410 --> 00:08:28,830 혹시 CD와 새로운 환경에서이 모든 비밀의 명령을 잘 알고. 203 00:08:28,830 --> 00:08:32,679 그래서 실제 자료와 자체 프로그래밍에서 별도입니다. 204 00:08:32,679 --> 00:08:35,960 그럼로 존재 근무 시간은 확실히 있다는 것을도 실현 205 00:08:35,960 --> 00:08:36,770 지원 구조. 206 00:08:36,770 --> 00:08:38,620 절에서는이 오는 일요일 시작합니다. 207 00:08:38,620 --> 00:08:41,990 당신은 그냥 기분하는 경우 가장 중요한 것은,이은 없습니다 208 00:08:41,990 --> 00:08:44,420 당신을위한 세상이, 정말 단지 시간이 걸릴 않습니다 알고 있습니다. 209 00:08:44,420 --> 00:08:47,520 그리고 수업을 계획하고 나를 위해 년 전에이 기회가 아니었다 210 00:08:47,520 --> 00:08:50,840 실패 / 통과, 솔직히, 나는 교실에서 발을 설정하지가 못했어요. 211 00:08:50,840 --> 00:08:53,520 그리고 당신은 때까지를 변경할 말 코스의 다섯 번째 월요일 수 있습니다. 212 00:08:53,520 --> 00:08:57,110 지금의 가장자리에면을 알고 그보다는 머리 다른로 213 00:08:57,110 --> 00:09:01,000 물은 모두, 확실히 그냥 통과 / 실패 변경해 않습니다. 214 00:09:01,000 --> 00:09:03,750 다시 일을 계획하고 하버드에있는 여기 정말이 문화가 아닙니다 215 00:09:03,750 --> 00:09:08,080 모든 사람들이 정말 달성하거나 overachieve 싶은부터 실패 / 전달합니다. 216 00:09:08,080 --> 00:09:11,470 솔직히이 밖에 무언가를 시도하는 훌륭한 방법입니다 않을 수도 있습니다 217 00:09:11,470 --> 00:09:13,110 당신에게 익숙합니다. 218 00:09:13,110 --> 00:09:17,090 그리고 당신은 아마도 매우 훌륭한 대부분의 경우에서 뭘하고 그만 둘거야 219 00:09:17,090 --> 00:09:18,040 당신의 놀라운하게 해주죠. 220 00:09:18,040 --> 00:09:20,850 그리고 더 구체적인 용어로, 전 않습니다 일반적으로 실패 / 통과 생각 221 00:09:20,850 --> 00:09:23,350 당신은 넣어했다면, pset 0 경험했을 수도 특히 222 00:09:23,350 --> 00:09:27,200 에 10시간, 15 시간, 25시간 일부 pset에 - 그리고 당신은 나온거야 223 00:09:27,200 --> 00:09:28,180 벽에 머리, 224 00:09:28,180 --> 00:09:29,850 그리고, 늦은 밤 슈퍼 점점 225 00:09:29,850 --> 00:09:31,880 하지만 당신은 방법의 90 %가 pset를 취했습니다 226 00:09:31,880 --> 00:09:33,780 당신이 방금 한 가지를 이해 할수 알아 - 227 00:09:33,780 --> 00:09:36,830 당신은 정렬 할 수있는 정말,이 같은 클래스의 가장자리를 벗고 실패 / 통과 228 00:09:36,830 --> 00:09:39,150 행복한 괜찮 말을, 나는 완벽하지 알아. 229 00:09:39,150 --> 00:09:40,470 하지만이 일에 내 엉덩이를 내려했다. 230 00:09:40,470 --> 00:09:42,410 나는 결국 곳과 매우 행복 해요. 231 00:09:42,410 --> 00:09:44,780 그리고 그 패스가에 대한 기대에 부응 / 실패합니다. 232 00:09:44,780 --> 00:09:46,850 따라서 염두에두고 않습니다. 233 00:09:46,850 --> 00:09:47,140 >> 괜찮아요. 234 00:09:47,140 --> 00:09:50,980 하버드 대학교 (Harvard University) Wi-Fi 접속 설비를 사용하기 위해 노력 한 분들이 알 수 있도록 235 00:09:50,980 --> 00:09:54,780 그 주위에 떠 CS50 SSID가 있다는 Wi-Fi 연결하면 236 00:09:54,780 --> 00:09:56,520 더 좋은 행운이있을 수 있습니다. 237 00:09:56,520 --> 00:09:59,430 당신이 시도하려는 경우 - 그것은이에 대한 암호있는 약간의 아이러니 238 00:09:59,430 --> 00:10:03,080 더 나은 속도에 대해이에 연결하고 더 나은 없다고 알려 - 239 00:10:03,080 --> 00:10:09,240 8이기 때문에 한, 둘, 셋, 넷, 다섯, 완전히 들어가 8 240 00:10:09,240 --> 00:10:10,270 5 명 더 안전. 241 00:10:10,270 --> 00:10:15,520 당신은 Wi-Fi 인터넷 접속 암호를 필요하면, 무선 여기 CS50에 연결합니다. 242 00:10:15,520 --> 00:10:16,950 하나, 둘, 셋, 넷, 다섯, 여섯, 일곱, 여덟. 243 00:10:16,950 --> 00:10:20,440 그래도 간헐적 연결 문제가 있다면 CS50에 게시물이 토론 244 00:10:20,440 --> 00:10:24,880 우리는이 공간에 대해 알 수 힘을 알려드립니다. 245 00:10:24,880 --> 00:10:25,180 >> 괜찮아요. 246 00:10:25,180 --> 00:10:30,350 특히 팬들 또는 소녀 분들을위한 그래서 빠른 맛보기, 247 00:10:30,350 --> 00:10:31,900 모든 것을 애플. 248 00:10:31,900 --> 00:10:37,566 내가 다시 몇 년에서 파는 것은 여기 ilock.c이 파일이었고, 단지에 249 00:10:37,566 --> 00:10:40,930 종류의 더 구체적이고 더 복잡한 수 있도록 더 많은 기본적인 C의 일부 250 00:10:40,930 --> 00:10:42,350 우리가 만들고있어 프로그램. 251 00:10:42,350 --> 00:10:44,360 그래서 ilock.c이 파일을 열었습니다. 252 00:10:44,360 --> 00:10:46,830 오늘의 강의 페이지에서 사용할 수 있습니다. 253 00:10:46,830 --> 00:10:49,470 왼쪽 측면에서, 당신은 기능의 긴 목록을 참조하십시오. 254 00:10:49,470 --> 00:10:51,860 따라서이 책을 쓴 친구, 기능을 많이 썼다 255 00:10:51,860 --> 00:10:53,290 단지 주 이상. 256 00:10:53,290 --> 00:10:55,490 그는 여기 도서관의 전체 무리를 사용했습니다. 257 00:10:55,490 --> 00:11:00,450 그리고 우리가 스크롤을 시작하면 무슨 일이 실제로 것은 매우 258 00:11:00,450 --> 00:11:04,670 우선, 저는 믿습니다, 원래 아이폰에 균열. 259 00:11:04,670 --> 00:11:08,000 당신이 원래 아이폰을 본때를 보여 싶었을 때, 어느 untether을 의미합니다 260 00:11:08,000 --> 00:11:11,800 는 AT & T 실제로에서의 특별한 소프트웨어를 설치하고 일을 261 00:11:11,800 --> 00:11:13,510 애플은 사람들이하고 싶지 않았어 - 262 00:11:13,510 --> 00:11:17,020 글쎄, 누군가가 악용 할 수 있습니다 정확히 파악 할 수있는 시간이 걸렸습니다 263 00:11:17,020 --> 00:11:20,880 애플의 소프트웨어의 소프트웨어 결함, 실수, 버그. 264 00:11:20,880 --> 00:11:22,650 그래서 ilock.c 태어났다. 265 00:11:22,650 --> 00:11:26,670 당신은 컴퓨터에 컴파일하고 아이폰에 설치하는 경우 266 00:11:26,670 --> 00:11:29,810 USB 케이블, 말을 통해 컴퓨터에 연결 된이 당신에게 줄 거라 267 00:11:29,810 --> 00:11:33,360 아이폰과 해에 대한 관리자 또는 루트 권한이 정도는해야 268 00:11:33,360 --> 00:11:34,170 당신이 원하는대로. 269 00:11:34,170 --> 00:11:36,740 >> 그리고이 매력적인 고양이와 마우스 애플 사이의 게임과가있는 것 같은데 270 00:11:36,740 --> 00:11:39,920 그와 같은 특히 세계의 나머지는 많은 기업처럼 잠금을 시도 271 00:11:39,920 --> 00:11:43,220 자신의 물건 만 그들이 의도 뭘 할 수 있도록. 272 00:11:43,220 --> 00:11:46,620 그러나이 같은 사람들 덕분에, 낮은 수준의 이해 273 00:11:46,620 --> 00:11:50,580 자세한 내용과,이 경우, C 프로그래밍과 친숙한 구조의 많은 274 00:11:50,580 --> 00:11:54,630 우리가 게임을 시작 한, 당신은 정말을 활용 할 수 있습니다 275 00:11:54,630 --> 00:11:59,050 당신이 적합 일부 법인 일 필요는 없습니다 표시 방식으로 하드웨어. 276 00:11:59,050 --> 00:12:01,360 따라서 예를 들어, 나는이 무엇을하고 있는지 몰라. 277 00:12:01,360 --> 00:12:03,220 그러나 GetVersion 아주 간단 소리. 278 00:12:03,220 --> 00:12:05,480 그리고이 사람이 쓴 기능입니다 것처럼 보인다. 279 00:12:05,480 --> 00:12:09,240 인수로 정수의 일부 종류를 가지고, 아무 것도 반환하지만,하지 않습니다 280 00:12:09,240 --> 00:12:13,080 조건 경우, 조건 경우, 여기를 루프와 함께 루프에 나타납니다 281 00:12:13,080 --> 00:12:15,620 깨, 그리고 어떻게 든 버전 번호에 관한 것이다. 282 00:12:15,620 --> 00:12:16,700 우리는 아래로 스크롤하면 - 283 00:12:16,700 --> 00:12:19,570 이러한 키워드의 많은 새로운 수있을거야, 그리고이 경우에도 284 00:12:19,570 --> 00:12:22,590 여기에 기능 많은 걸 우리가 지금까지 본 적이 있사으로 표시하지 않을 수 있습니다 285 00:12:22,590 --> 00:12:23,830 학기 코스 - 286 00:12:23,830 --> 00:12:27,150 하루의 끝에서, 우리가했던 것과 동일한 규칙과 논리를 다음과 287 00:12:27,150 --> 00:12:28,760 지금까지와 경기를하면서 말이죠. 288 00:12:28,760 --> 00:12:34,220 그래서 귀하의 아이폰 3S로 나 4S 나 곧 95이 일 해독하기까지 너무 오래되었습니다 289 00:12:34,220 --> 00:12:37,320 하지만 우리가했던 것을이 대단히이 세상에서 파생하고 있다고 290 00:12:37,320 --> 00:12:38,430 에 잠수 해. 291 00:12:38,430 --> 00:12:41,900 >> 그러니 좀 더 간단한 예를 살펴 보자. 292 00:12:41,900 --> 00:12:46,100 이 사람, 그냥 구문 예열 있으며, 다른 데이터하게 할 수 293 00:12:46,100 --> 00:12:49,240 이건 그래서 우리가 얘기했지만 정말 C.에서 볼하지 않은 유형 294 00:12:49,240 --> 00:12:51,680 파일 positive1.c했다. 295 00:12:51,680 --> 00:12:55,120 그리고 상단의 의견에 따라이 단지 사용자가 제공하는 요구 296 00:12:55,120 --> 00:12:55,960 양수. 297 00:12:55,960 --> 00:12:59,530 그래서이 사용자 상호 작용에 대한 좋은 것입니다 DO-동안 루프의 예를 들어 298 00:12:59,530 --> 00:13:01,980 당신이 뭔가를 할 사용자를 말할 필요 프로그램. 299 00:13:01,980 --> 00:13:05,190 그리고 그들이 협조하지 않으면, 당신은 그들을 소리 또는 입력을 거부합니다. 300 00:13:05,190 --> 00:13:11,610 사용자가이 같은 점에서 사건이, 24 오랫동안을 통해 라인에게 19을 갈거야 301 00:13:11,610 --> 00:13:14,310 나에게 긍정적 인 번호를 부여하지. 302 00:13:14,310 --> 00:13:20,400 지금 여기에 세부 행 18, 내가 왜이 모든 위의 n을 선언 않았습니다 303 00:13:20,400 --> 00:13:24,490 루프 구조는 오른쪽 라인 22 다음에 반대하는 곳 304 00:13:24,490 --> 00:13:26,880 실제로 N을 주겠나? 305 00:13:26,880 --> 00:13:27,330 응? 306 00:13:27,330 --> 00:13:27,780 [안 들리게] 307 00:13:27,780 --> 00:13:29,040 >> 데이빗 J. MALAN : 그래, 범위의 문제. 308 00:13:29,040 --> 00:13:30,850 그리고 속인의 임기에 범위에 무엇을 참조합니까? 309 00:13:34,690 --> 00:13:36,610 응? 310 00:13:36,610 --> 00:13:37,860 [안 들리게] 311 00:13:40,040 --> 00:13:41,105 데이빗 J. MALAN : 당신이 더 크게 조금 말할 수 있습니까? 312 00:13:41,105 --> 00:13:43,450 스피커 1 : 특정 변수에 액세스 할 수 있습니다 곳. 313 00:13:43,450 --> 00:13:45,170 데이빗 J. MALAN : 좋아요. 314 00:13:45,170 --> 00:13:47,360 당신이 특정 변수에 액세스 할 수 있습니다 곳. 315 00:13:47,360 --> 00:13:50,400 그리고 일반적으로 엄지의 규칙은 지금까지 왔습니다 그 일부의 범위 316 00:13:50,400 --> 00:13:55,860 변수는 사용자가 본 것을 가장 최근에 중괄호에 의해 정의됩니다. 317 00:13:55,860 --> 00:14:02,010 그리고이 경우에, 전 라인 22 n을 선언하는 실수를 한 경우 318 00:14:02,010 --> 00:14:03,010 그 줄 일 것입니다. 319 00:14:03,010 --> 00:14:10,990 나는 정수를 것, 그리고 라인 22에서 해당 변수 N에 넣어 것입니다. 320 00:14:10,990 --> 00:14:16,900 그러나 어떤 코드의 라인은 지금 무슨 말을하는지 모를까요? 321 00:14:16,900 --> 00:14:22,650 25 그래서,이 경우에는, 그 밖에 떨어지면 때문뿐만 아니라, 24 거였어 322 00:14:22,650 --> 00:14:23,610 중괄호의. 323 00:14:23,610 --> 00:14:27,280 그래서 아주 쉽게 간단하게 선언하여 그냥 좀 성가신의 비트 만 해결 324 00:14:27,280 --> 00:14:30,140 기능 자체의 변수 이외의. 325 00:14:30,140 --> 00:14:32,600 >> 이제 우리는 오늘 오후에 볼 수 있습니다, 당신은 한 걸음 더 나아가 이동할 수 있습니다. 326 00:14:32,600 --> 00:14:34,860 그리고 당신은 조금이라도 게으른 얻을 수 - 327 00:14:34,860 --> 00:14:37,320 이은 일반적으로 권장 할 수 없습니다 - 328 00:14:37,320 --> 00:14:42,260 하지만 당신이 게으른하고 변수를 세계적으로 넣어, 그래서하지 말을 할 수 329 00:14:42,260 --> 00:14:46,670 내부 함수의 아닌 내부 루프의하지만 파일 자체에서 외부 330 00:14:46,670 --> 00:14:49,600 I 줄 15 여기처럼 모든 기능을 당신이 썼어요. 331 00:14:49,600 --> 00:14:51,160 그러나 일반적으로시 찌푸리게하고 있습니다. 332 00:14:51,160 --> 00:14:55,680 우리가 해드립니다됨에 따라, 이에 대해 때때로 다른 문제에 대한 솔루션 실현 333 00:14:55,680 --> 00:14:56,620 결국 참조하십시오. 334 00:14:56,620 --> 00:14:58,130 그럼 지금부터, 우리는이처럼 갈거야. 335 00:14:58,130 --> 00:15:01,030 하지만 우리가이 그냥 우리 자신을 표현 시작 다시 작성할 수 있는지 보자고 336 00:15:01,030 --> 00:15:01,990 조금 다르게. 337 00:15:01,990 --> 00:15:05,330 >> 그래서이 프로그램은 단지 명확하게하기 위해, positive1입니다. 338 00:15:05,330 --> 00:15:11,810 내가 여기서 가서 내 터미널 창에 입력 positive1을 보자. 339 00:15:11,810 --> 00:15:12,740 그래, 컴파일됩니다. 340 00:15:12,740 --> 00:15:14,910 나는 Enter 키를, positive1을 실행하는거야. 341 00:15:14,910 --> 00:15:16,820 난 당신이 나에게 양의 정수를주는 요구합니다. 342 00:15:16,820 --> 00:15:18,260 나는 -1 말합니다. 343 00:15:18,260 --> 00:15:18,910 그건 작동하지 않았다. 344 00:15:18,910 --> 00:15:22,150 0, 99, 그 일 것 같습니다. 345 00:15:22,150 --> 00:15:23,570 아닐지도 가장 엄격한 테스트합니다. 346 00:15:23,570 --> 00:15:26,480 하지만 적어도 우리가 옳은 궤도에 있다는 좋은 정신 검사입니다. 347 00:15:26,480 --> 00:15:29,240 이제 내가 가서이 버전의 두 열 수 있습니다. 348 00:15:29,240 --> 00:15:32,500 이미 다른 무엇입니까? 349 00:15:32,500 --> 00:15:35,140 이 같은 일을 구현합니다. 350 00:15:35,140 --> 00:15:40,660 하지만 분명히 다른이 시간으로 무엇을 어때요? 351 00:15:40,660 --> 00:15:42,560 네, 녹색 있으므로 BOOL. 352 00:15:42,560 --> 00:15:45,980 Gedit은 BOOL로 알려진 녹색이 키워드로 강조하고 있습니다 353 00:15:45,980 --> 00:15:47,000 이는 데이터 형식입니다. 354 00:15:47,000 --> 00:15:51,080 이것은 C.의 모든 버전에 내장 오지 않는 당신은을 포함시킬 필요가 355 00:15:51,080 --> 00:15:52,010 특정 라이브러리입니다. 356 00:15:52,010 --> 00:15:54,770 우리의 경우, 나는 CS50 라이브러리를 포함 있도록 357 00:15:54,770 --> 00:15:56,460 BOOL에 액세스 할 수 있습니다. 358 00:15:56,460 --> 00:15:59,810 그러나 라인 18에, 우리는 감사 불리는 Boolean 값을 갖고있는 것 같다. 359 00:15:59,810 --> 00:16:01,040 그래서 난이 아무것도 전화를 수 있습니다. 360 00:16:01,040 --> 00:16:04,500 하지만 난 그냥 가지 어떤 의미 의미를 전달하는 것이 감사했다. 361 00:16:04,500 --> 00:16:07,930 그래서 처음에 라인 18, 나는 분명히 감사하지 않아서 362 00:16:07,930 --> 00:16:12,150 감사 부울 값은 한 줄에 18에 false로 초기화됩니다. 363 00:16:12,150 --> 00:16:16,890 그리고, 그것은 단지 내가 23을 통해 라인 (21)에 여기까지 해낸 것은 한 것 같습니다 364 00:16:16,890 --> 00:16:18,610 가지 내 논리를 재 작성. 365 00:16:18,610 --> 00:16:21,020 더 기능적으로 다른 그럼. 366 00:16:21,020 --> 00:16:26,940 사용자가 제공 한 INT는보다 클 경우 그러나 라인 (22)에 지금은 확인 367 00:16:26,940 --> 00:16:31,120 0, 그럼 내가 단순히 true로 감사의 값을 변경합니다. 368 00:16:31,120 --> 00:16:32,290 그리고 왜 그런 짓을합니까? 369 00:16:32,290 --> 00:16:35,600 라인 25, 나는 명백하게 상태를 점검거야 때문입니다. 370 00:16:35,600 --> 00:16:39,380 감사가 거짓 인 동안이 루프를 수행합니다. 371 00:16:39,380 --> 00:16:43,610 >> 그것이 최소한이기 때문에 그래서 버전을 하나의 대안으로이 제안 372 00:16:43,610 --> 00:16:45,130 좀 더 직관적, 아마도. 373 00:16:45,130 --> 00:16:46,900 그것은 영어에 근거 조금 더 있습니다. 374 00:16:46,900 --> 00:16:51,710 감사가 거짓 인 동안 감사하지 않거나면서 다음을 수행하십시오. 375 00:16:51,710 --> 00:16:55,890 그리고 이번에는 너무 무리가 사용자가 입력 한 내용 기억 상관 없어요 376 00:16:55,890 --> 00:16:57,730 때문에 통지에 아무런 변수 n은 없습니다. 377 00:16:57,730 --> 00:16:58,650 그래서 사실은, - 378 00:16:58,650 --> 00:17:00,080 거기에 약간의 하얀 거짓말. 379 00:17:00,080 --> 00:17:02,770 우리가의 하단에 가면 기능적으로, 프로그램은 약간 다릅니다 380 00:17:02,770 --> 00:17:04,819 이제 내가 n은 무엇 기억 안 때문입니다. 381 00:17:04,819 --> 00:17:09,579 하지만 여기에 보여주고 싶었도 우리가하고 GetInt을 본 적이하더라도 382 00:17:09,579 --> 00:17:13,920 GetString는 지금까지 그래서 등호의 오른쪽에 사용되는 383 00:17:13,920 --> 00:17:17,160 우리는 엄격하게 필요가 없습니다 값 기술적를 기억 해요. 384 00:17:17,160 --> 00:17:20,950 어떤 이유로 당신이 방금 값을 저장 상관하지 않는 경우, 당신은 원하는 385 00:17:20,950 --> 00:17:25,710 값을 확인하기 위해 단순히 GetInt 개방으로 쓸 수 있다는 것을 386 00:17:25,710 --> 00:17:27,000 괄호 가까이 괄호. 387 00:17:27,000 --> 00:17:30,460 우리가 말한 적으로 그 함수는 값을 반환하는 것이다. 388 00:17:30,460 --> 00:17:32,010 이 정수 당신을 돌려 줄거야. 389 00:17:32,010 --> 00:17:36,450 나는 99에 입력 할 때 그리고 당신은 정신적 GetInt, 이런 일이 있었는지 생각하면 390 00:17:36,450 --> 00:17:38,160 숫자 99를 반환합니다. 391 00:17:38,160 --> 00:17:41,330 그리고 개념적으로, 내 코드가 실제로 있었다 것처럼입니다. 392 00:17:41,330 --> 00:17:45,880 99이 0보다 실제로 더 크다면 다음 감사 사실이된다. 393 00:17:45,880 --> 00:17:50,420 지금 감사이기 때문에 그런 줄 25 우 실현, 우리는 끝났어. 394 00:17:50,420 --> 00:17:54,590 그리고 라인 (26)에서, 우리는 단순히 말, 무슨 일이든, 양의 정수 주셔서 감사합니다 395 00:17:54,590 --> 00:17:55,710 할 일. 396 00:17:55,710 --> 00:17:58,900 >> 지금 말하자면, 여기 약간의 구문 설탕을 해보자 구. 397 00:17:58,900 --> 00:18:02,990 우리가이 세 번째와 마지막 변화와 함께이 줄 25 청소 할 수 있는지 보자 볼 398 00:18:02,990 --> 00:18:04,640 positive3 인치 399 00:18:04,640 --> 00:18:08,250 이제 어떤 코드의 라인 만 차이가? 400 00:18:11,930 --> 00:18:13,260 그래, 25. 401 00:18:13,260 --> 00:18:15,520 그리고 우리는 아직이 트릭을 보지 못했습니다. 402 00:18:15,520 --> 00:18:19,510 하지만 우리가 무엇을 나타냅니다 월요일에 느낌표를 봤어요? 403 00:18:19,510 --> 00:18:20,970 따라서, 또는 부정 없습니다. 404 00:18:20,970 --> 00:18:23,460 그래서 Boolean 값을 가지고 값을 플립. 405 00:18:23,460 --> 00:18:24,390 참은 거짓이된다. 406 00:18:24,390 --> 00:18:25,500 허위 사실이된다. 407 00:18:25,500 --> 00:18:28,910 그래서 내가 제안 것이라고하는 방법을 좀 더 직관적도 있습니다 408 00:18:28,910 --> 00:18:32,200 난 아직 false로 감사 초기화하기 때문에 코드를 작성. 409 00:18:32,200 --> 00:18:33,530 난 여전히 다음을 수행하십시오. 410 00:18:33,530 --> 00:18:35,700 그 때가되면 나는 true로 감사 설정합니다. 411 00:18:35,700 --> 00:18:40,690 하지만 지금은 정말 그냥 구두로 왼쪽에서 오른쪽으로이 코드를 번역 할 수 있습니다 412 00:18:40,690 --> 00:18:42,550 감사하지 동안. 413 00:18:42,550 --> 00:18:46,170 탕, 또는 느낌표, 그래서,하지의 개념을 나타냅니다 때문에 동안 414 00:18:46,170 --> 00:18:47,010 감사 없습니다. 415 00:18:47,010 --> 00:18:49,740 >> 그럼 다시, 우리는 본질적으로 다른 새로운 개념을 도입하지 않았습니다. 416 00:18:49,740 --> 00:18:53,230 우리가 스크래치와 함께 연주 할 때 우리는 다시 논리에 대해 얘기했습니다. 417 00:18:53,230 --> 00:18:55,690 그러나 우리가 우리의 코드를 작성할 수 깨달았 418 00:18:55,690 --> 00:18:56,550 여러 가지. 419 00:18:56,550 --> 00:19:00,010 당신은가는 길을 알아내는 어려움을 겪고 일종의 너무 특히 pset1에있는 경우 420 00:19:00,010 --> 00:19:03,400 일부 프로그램을 작성, 승률은있을거야 당신은 운이 있기 때문에 421 00:19:03,400 --> 00:19:05,780 귀하 께서 일어날 수있는 솔루션의 수입니다. 422 00:19:05,780 --> 00:19:09,850 예를 들어,이 프로그램의도 간단한위한 단지 3입니다. 423 00:19:09,850 --> 00:19:10,180 괜찮아요. 424 00:19:10,180 --> 00:19:13,860 그리고 이제 월요일에 기억, 우리는 반환 값이 메모를 떠났다. 425 00:19:13,860 --> 00:19:18,280 그래서 처음으로, 우리는 그냥 메인이없는 프로그램을 작성 426 00:19:18,280 --> 00:19:22,240 또한 여기 쓴 자신의 사용자 지정 기능이 있습니다. 427 00:19:22,240 --> 00:19:26,640 그래서 34를 통해 라인 31에, 큐브 기능을 구현했습니다. 428 00:19:26,640 --> 00:19:27,800 그것은 복잡한 없습니다. 429 00:19:27,800 --> 00:19:29,830 그것은이 경우, 그냥 배 배입니다. 430 00:19:29,830 --> 00:19:34,920 하지만 그런 일에 대해 중요한 것은 내가의 형태로 입력을 듣는데 것입니다 431 00:19:34,920 --> 00:19:38,910 나는 배 배의 형태로 출력을 돌아가는거야. 432 00:19:38,910 --> 00:19:43,940 >> 그래서 지금은 전화를, 나 printf 혼자에 익숙해 많은처럼 수 있습니다 433 00:19:43,940 --> 00:19:47,120 큐브 함수를 호출하여이 함수. 434 00:19:47,120 --> 00:19:49,470 그리고 큐브 기능은 일부 입력을 걸립니다. 435 00:19:49,470 --> 00:19:52,030 그리고 큐브 기능은 일부 출력을 반환합니다. 436 00:19:52,030 --> 00:19:56,660 그리고 반대로, printf 뭔가를 했어요. 437 00:19:56,660 --> 00:19:59,490 우리가 아끼던 아무 값도 반환하지 않았습니다 -에도로 438 00:19:59,490 --> 00:20:00,820 옆, 그것은 값을 반환하지 않습니다. 439 00:20:00,820 --> 00:20:02,650 당신은 일반적으로 그것을 무시합니다. 440 00:20:02,650 --> 00:20:04,000 Printf 뭔가 했어요. 441 00:20:04,000 --> 00:20:06,220 이 화면에 인쇄의 부작용했다. 442 00:20:06,220 --> 00:20:09,480 여기에 대조적으로, 우리는 큐브 기능이있는 443 00:20:09,480 --> 00:20:11,400 실제로 뭔가를 반환합니다. 444 00:20:11,400 --> 00:20:12,960 >> 그래서 일반적입니다 - 445 00:20:12,960 --> 00:20:15,260 이 익숙한 사람들을 위해, 그것은 매우 간단 좋습니다. 446 00:20:15,260 --> 00:20:18,460 그러나 입력을 전달하고 점점의 생각을 가진 적은 알고에 대한 447 00:20:18,460 --> 00:20:21,700 다시 출력, 그냥 뭔가 슈퍼 간단한 해보자. 448 00:20:21,700 --> 00:20:25,180 편안한 사람이 간략하게 무대에 올 수 있을까요? 449 00:20:25,180 --> 00:20:27,460 당신은뿐만 아니라 당신에게 카메라로 편안하게해야합니다. 450 00:20:27,460 --> 00:20:27,640 그래. 451 00:20:27,640 --> 00:20:28,610 그래, 이름이 뭐야? 452 00:20:28,610 --> 00:20:29,020 켄 : 켄. 453 00:20:29,020 --> 00:20:29,420 데이빗 J. MALAN : 켄. 454 00:20:29,420 --> 00:20:29,810 좋아, 켄. 455 00:20:29,810 --> 00:20:31,060 어서 올라 와요. 456 00:20:31,060 --> 00:20:34,660 그럼 켄 여기 종류의 함수가 될 것입니다. 457 00:20:34,660 --> 00:20:35,760 그리고가 진행이 짓을 보자. 458 00:20:35,760 --> 00:20:38,790 의 조금 고급을 보자. 459 00:20:38,790 --> 00:20:39,770 만나서 반가워요. 460 00:20:39,770 --> 00:20:41,010 중앙 무대에 오신 것을 환영합니다. 461 00:20:41,010 --> 00:20:41,980 괜찮아요. 462 00:20:41,980 --> 00:20:45,590 - 여기서이 버튼을 눌러 보자. 463 00:20:45,590 --> 00:20:46,420 괜찮아요. 464 00:20:46,420 --> 00:20:49,490 그래서 여기 당신은 현대적인 칠판을 갖추고 있습니다. 465 00:20:49,490 --> 00:20:53,050 그리고 내가하는 것은 예를 들어, 주요 기능입니다. 466 00:20:53,050 --> 00:20:55,990 그리고 내 손에 아이 패드가 없습니다. 467 00:20:55,990 --> 00:20:59,000 음, 사실, 그렇게 할 수 없습니다 - 정말하는 방법을 기억하지 않습니다. 468 00:20:59,000 --> 00:21:02,200 정말 좋은 필적이 없습니다. 469 00:21:02,200 --> 00:21:05,260 그리고 따라서, 난 당신이 나에게 화면에 뭔가를 인쇄하고 싶습니다. 470 00:21:05,260 --> 00:21:07,470 >> 그래서 기본 프로그램 거예요. 471 00:21:07,470 --> 00:21:15,060 그리고 내가 당신을 가지고 갈 건데 것은 내 글자에 작성하여이 말을하고 472 00:21:15,060 --> 00:21:16,600 그런 다음 당신에게 의견을 전달. 473 00:21:16,600 --> 00:21:20,000 이 운동은하지만 있도록 바보,이 함수의 개념 및 전화 474 00:21:20,000 --> 00:21:22,260 기능이에 기능 정말 종기를 반환. 475 00:21:22,260 --> 00:21:23,120 나는 주입니다. 476 00:21:23,120 --> 00:21:26,270 난 그냥 화면에 ( "무언가") printf 작성했습니다. 477 00:21:26,270 --> 00:21:27,470 이 프로그램을 실행거야. 478 00:21:27,470 --> 00:21:30,900 , 또는 매개 변수 - 그리고 가능한 한 빨리 printf라는지고, 하나의 인수를 479 00:21:30,900 --> 00:21:31,660 때때로 - 480 00:21:31,660 --> 00:21:32,780 큰 따옴표 사이에 있습니다. 481 00:21:32,780 --> 00:21:33,960 여기 인수입니다. 482 00:21:33,960 --> 00:21:35,740 나는 켄에 통과거야. 483 00:21:35,740 --> 00:21:39,390 이제 그는 그 분명 몇 년 전에 몇 가지 수를 기록 블랙 박스입니다 484 00:21:39,390 --> 00:21:41,070 만 화면에 물건을 인쇄하는 방법을 알고 있습니다. 485 00:21:41,070 --> 00:21:42,320 >> 따라서 실행합니다. 486 00:21:48,842 --> 00:21:49,900 그건 나쁘지 않아. 487 00:21:49,900 --> 00:21:50,890 그럼, 아주 좋아. 488 00:21:50,890 --> 00:21:52,900 이제 켄이 실행 이루어집니다. 489 00:21:52,900 --> 00:21:55,810 그가 나에게 뭔가를 다시 건네해야합니까? 490 00:21:55,810 --> 00:21:57,240 그래서 우리는 지금까지 본 적이 없었 네. 491 00:21:57,240 --> 00:21:59,230 다시 말하지만, printf 실제로 숫자를 반환 않습니다. 492 00:21:59,230 --> 00:22:01,640 하지만 우리는 우리가 그것을 사용한 적이 있기 때문에 지금은 그 방법을 무시하는거야. 493 00:22:01,640 --> 00:22:03,400 따라서 켄하기에 그입니다. 494 00:22:03,400 --> 00:22:06,650 그리고 지금은 메인은 실행하기 위해 돌아 오면 - 495 00:22:06,650 --> 00:22:09,630 메인은, 코드의 라인 때문에 다시 프로그램의 제어 인수 496 00:22:09,630 --> 00:22:11,010 printf, 실행 이루어집니다. 497 00:22:11,010 --> 00:22:13,890 그리고 우리는 다른 줄이 무엇이든 실행의 방법에 대해 이동합니다. 498 00:22:13,890 --> 00:22:14,130 >> 괜찮아요. 499 00:22:14,130 --> 00:22:17,080 그래서 지금의이 약간 다른 예를 봅시다. 500 00:22:17,080 --> 00:22:22,430 그리고 여기에서이 시간은,의 처음에 이곳에 화면을 지우 보자. 501 00:22:22,430 --> 00:22:24,670 그리고 이번에는, 우리는 cubing 기능을 할 수 있습니다. 502 00:22:24,670 --> 00:22:27,350 그러나 이번에는, 내가 출력 값을 기대합니다. 503 00:22:27,350 --> 00:22:28,630 그러니 어서 가서 해주세요. 504 00:22:28,630 --> 00:22:35,680 그래서 저는 말합니다 코드 줄이 X = 큐브 (x)를. 505 00:22:35,680 --> 00:22:36,930 그래서 실제로 자 - 506 00:22:41,450 --> 00:22:43,940 코드, 리콜의 라인은 다음과 같습니다. 507 00:22:43,940 --> 00:22:45,960 X = 큐브 (x)를. 508 00:22:45,960 --> 00:22:48,100 그럼이 성공 할까? 509 00:22:48,100 --> 00:22:50,820 그러니 어서 가서 다시 당신에게 흰색 화면을 주자. 510 00:22:50,820 --> 00:22:55,000 그리고있는이 순간에에, X의 값이 내려 지금은 쓸 수 있지 511 00:22:55,000 --> 00:23:01,080 시간은, 한 마디로 유지, 2, 보자 할 수 발생합니다. 512 00:23:01,080 --> 00:23:04,890 그래서, 종이 (2)의 값에 서면으로 작성했습니다 513 00:23:04,890 --> 00:23:06,100 제 값 x가되는 것입니다. 514 00:23:06,100 --> 00:23:08,250 나는 켄에게 넘겨. 515 00:23:08,250 --> 00:23:09,200 켄 : 그리고 난 답을 만드는가? 516 00:23:09,200 --> 00:23:12,660 데이빗 J. MALAN : 예, 그냥 답을 작성하게. 517 00:23:12,660 --> 00:23:13,030 좋아요. 518 00:23:13,030 --> 00:23:16,280 그리고 지금 그가 나에게 뭔가를 반환 할 수 있습니다. 519 00:23:16,280 --> 00:23:17,560 그래서 - 520 00:23:17,560 --> 00:23:18,170 완벽한. 521 00:23:18,170 --> 00:23:18,840 맘에 멋지네요. 522 00:23:18,840 --> 00:23:21,970 >> 이제 그는이 경우에, 8의 가치를 돌려 내줬습니다. 523 00:23:21,970 --> 00:23:23,220 그리고 어떤 역할을합니까? 524 00:23:23,220 --> 00:23:26,130 음, 사실, 보자. 525 00:23:26,130 --> 00:23:26,640 이 권리를 얻을. 526 00:23:26,640 --> 00:23:27,880 내가 그걸로 뭘해야하지? 527 00:23:27,880 --> 00:23:31,900 지금은이 값을 가지고 실제로 그에 저장거야 528 00:23:31,900 --> 00:23:33,400 메모리에 동일한 비트. 529 00:23:33,400 --> 00:23:35,030 그러나 통지, 여기 어려움을 겪고있는 것 같아요. 530 00:23:35,030 --> 00:23:38,280 어디 실제로 X의 값을 작성하려면 어떻게해야합니까 때문에 조금 혼란스러워? 531 00:23:38,280 --> 00:23:41,840 내가 방금 한 것은 종이 켄 물리적으로 손이기 때문에 532 00:23:41,840 --> 00:23:44,400 그 X 된 값 2를했다. 533 00:23:44,400 --> 00:23:46,300 그리고 실제로, 그 무슨 일이 있었지. 534 00:23:46,300 --> 00:23:50,100 그래서 당신이 함수를 호출 할 때, 그리고 인수에 전달하는 판명 535 00:23:50,100 --> 00:23:54,130 '여러분, 안녕하세요 "를 좋아하거나 당신이 일반적으로, 2처럼 인수에 전달 536 00:23:54,130 --> 00:23:56,720 그 논쟁의 사본을 전달. 537 00:23:56,720 --> 00:24:01,020 그리고 여기 숫자 2를 썼다와 켄에 전달 것처럼, 그해야 538 00:24:01,020 --> 00:24:04,760 아직도 어딘가에서 값이 사본을 가지고 것을 의미합니다. 539 00:24:04,760 --> 00:24:08,140 실제로, 지금은 값이 8 다시이라도 한, 나는 다시 가야하기 때문에 540 00:24:08,140 --> 00:24:12,010 내가 한때 숫자 2를 한 곳에서 RAM 실제로는 8을 적어 둡니다. 541 00:24:12,010 --> 00:24:15,720 >> 따라서 시각적으로 그대로 전달이 개념을 기억 542 00:24:15,720 --> 00:24:16,730 가치의 사본. 543 00:24:16,730 --> 00:24:19,570 켄은 그의 일을 뭔가를 내게 건네 -이 경우, 544 00:24:19,570 --> 00:24:20,820 8과 같은 값입니다. 545 00:24:20,820 --> 00:24:22,660 그리고 나서 그 값에 뭔가 의미있는 일을하고있을 경우 546 00:24:22,660 --> 00:24:24,880 그 주변을 유지하고 싶습니다. 547 00:24:24,880 --> 00:24:29,470 그래서이 모든 긴 전에 모든 너무 익숙한 될 것입니다. 548 00:24:29,470 --> 00:24:33,082 여기이 데모에 대한 많은 켄 감사합니다. 549 00:24:33,082 --> 00:24:34,820 괜찮아요. 550 00:24:34,820 --> 00:24:36,720 아주 잘 했어요. 551 00:24:36,720 --> 00:24:40,610 따라서 궁극적으로 기능의 일부에 관한 그 방법을 알아 보자 552 00:24:40,610 --> 00:24:42,270 우리가했던 짓 전화. 553 00:24:42,270 --> 00:24:47,610 그럼 내가 가서 여기 cubing 예를 다시 되돌려 보자. 554 00:24:47,610 --> 00:24:53,080 그리고 우리가 실제로 더가 나타나기 시작하려는 경우 우리가가는 것을 알 555 00:24:53,080 --> 00:24:57,050 숫자 x가에 전달되는 건 사실 염두에두고 있어야합니다 556 00:24:57,050 --> 00:25:01,390 여기에 실제로 함수에 전달되는 일을 다릅니다. 557 00:25:01,390 --> 00:25:03,940 그러니 다시 복사에 의해 전달이 꽤 될 것입니다 558 00:25:03,940 --> 00:25:05,620 단지 순간에 밀접한 관계가있는. 559 00:25:05,620 --> 00:25:09,320 >> 그럼이 잘못된 아직 작동하지 않는 것을 살펴 보자. 560 00:25:09,320 --> 00:25:11,790 나는 가서 세 번째 버그의 예를 개방하고있는 561 00:25:11,790 --> 00:25:13,560 자연 결함이 있습니다. 562 00:25:13,560 --> 00:25:18,070 그리고는 buggy3라고하며 교환 기능을 구현있어. 563 00:25:18,070 --> 00:25:23,500 그래서 여기에 우리가 x와 y는 임의의로 초기화 된 주요 기능이 564 00:25:23,500 --> 00:25:24,720 각각 1, 2,. 565 00:25:24,720 --> 00:25:27,590 우리는 GetInt를 사용할 수 있지만, 우리는 간단한 운동이 필요합니다. 566 00:25:27,590 --> 00:25:29,680 그럼 1과 2와 같은 하드 코딩입니다. 567 00:25:29,680 --> 00:25:35,330 라인 21 및 22에서, 우리는 분명히 x와 y를 한 줄에 하나씩을 인쇄 할 수 있습니다. 568 00:25:35,330 --> 00:25:39,620 그런 다음, 선 23 일, 나는, 점, 점, 점을 이러한 값을 교환있어 주장한다. 569 00:25:39,620 --> 00:25:43,030 내가 외관상 스왑이라는 라인 24에서 함수를 호출 570 00:25:43,030 --> 00:25:44,000 그 두 개의 인수를 걸립니다. 571 00:25:44,000 --> 00:25:46,430 기능이 두 개의 인수를 취할 것은 완전히 합법적입니다. 572 00:25:46,430 --> 00:25:48,220 우리는 printf 이미 그렇게 봤어요. 573 00:25:48,220 --> 00:25:50,370 따라서 스왑 무리가 x와 y 소요됩니다. 574 00:25:50,370 --> 00:25:53,010 그 이름에서 알 수 있듯이, 내가 그걸가 무슨 바랍니다 것입니다 575 00:25:53,010 --> 00:25:54,320 이 두 값을 교환. 576 00:25:54,320 --> 00:25:57,560 그래서 내가 줄 25 일 주장 교체. 577 00:25:57,560 --> 00:26:01,570 그리고 가정에서 X와 Y를 다시 인쇄이 578 00:26:01,570 --> 00:26:02,830 그들은 실제로 스왑 있었어요. 579 00:26:02,830 --> 00:26:04,370 하지만 실제로이 프로그램을 실행하는 경우 - 580 00:26:04,370 --> 00:26:06,060 나 터미널 창을 열 수 있습니다. 581 00:26:06,060 --> 00:26:07,750 저 buggy3을 보자. 582 00:26:07,750 --> 00:26:09,970 이름에서 알 수 있듯이,이 일은 좋게 끝나지 않을 수 있습니다. 583 00:26:09,970 --> 00:26:14,690 나는 여기서 x는 1 것을 확인할 입력에 빠질 때 때문입니다. 584 00:26:14,690 --> 00:26:15,720 y는 2 명입니다. 585 00:26:15,720 --> 00:26:19,160 그리고 아직 프로그램의 끝에, 그들은 사실 지금도 똑같아. 586 00:26:19,160 --> 00:26:22,760 >> 그럼 지금 켄과 함께, 무슨 실제로 무슨 일 시범에 따라? 587 00:26:22,760 --> 00:26:24,660 음,이 스왑 기능에 뛰어 보자. 588 00:26:24,660 --> 00:26:25,800 이 짧은 됐네요. 589 00:26:25,800 --> 00:26:28,020 단지 긴 코드 몇 줄입니다. 590 00:26:28,020 --> 00:26:32,810 그러나 간단한 이야기​​를 바탕으로 근본적인 문제가 무엇 말했 591 00:26:32,810 --> 00:26:34,270 여기까지 켄과? 592 00:26:34,270 --> 00:26:36,115 왜 스왑이 고장이야? 593 00:26:36,115 --> 00:26:37,365 [안 들리게] 594 00:26:39,840 --> 00:26:40,460 그렇지. 595 00:26:40,460 --> 00:26:43,610 그래서 우리는 변수, 사본 자체를하지 저장하고 있습니다. 596 00:26:43,610 --> 00:26:46,810 즉, 스왑 분명히 두 개의 인수, 정수 걸립니다. 597 00:26:46,810 --> 00:26:49,370 그리고 자의적으로 a와 b라는. 598 00:26:49,370 --> 00:26:54,430 그리고 여기까지, 나는 각각 1과 2아르 x와 y에 전달했습니다. 599 00:26:54,430 --> 00:26:56,580 하지만 말 그대로 X에 전달 아니야. 600 00:26:56,580 --> 00:26:58,410 나는 그대로 Y에 전달 없어요. 601 00:26:58,410 --> 00:27:01,230 나는 X의 사본와 y의 복사본을 통과거야. 602 00:27:01,230 --> 00:27:05,180 당신이 복사하고 해당 값을 교환 붙여 넣기 것처럼 거의 같은 603 00:27:05,180 --> 00:27:07,440 당신은 실제로 조작하고 싶습니다. 604 00:27:07,440 --> 00:27:11,970 그 I, 프로그램이 실행을 시작하는 경우,이지면 605 00:27:11,970 --> 00:27:14,140 라인, 35, 36 - 606 00:27:14,140 --> 00:27:17,740 나는 그 이야기의이 시점에서, 선 37 때, 어떻게의 가치인가? 607 00:27:20,740 --> 00:27:24,850 이야기의이 시점에서, 선 37,이 시점에서의 값이 무엇입니까? 608 00:27:24,850 --> 00:27:25,980 그게 불과 1이어야합니다. 609 00:27:25,980 --> 00:27:26,170 그래? 610 00:27:26,170 --> 00:27:29,100 x는 첫 번째 인수로 전달했기 때문. 611 00:27:29,100 --> 00:27:33,150 그리고이 기능은 임의의, 최초의 인수를 호출합니다. 612 00:27:33,150 --> 00:27:35,130 마찬가지로 Y, 두 번째 인수입니다. 613 00:27:35,130 --> 00:27:37,930 그리고는 그냥 임의로 두 번째 인자 B를 부르고있어. 614 00:27:37,930 --> 00:27:40,510 >> 이제이 이분법은 실제로 매우 간단하게 설명되어 있습니다. 615 00:27:40,510 --> 00:27:40,880 잘 생각해보세요. 616 00:27:40,880 --> 00:27:42,980 우리는 모두 printf 쓴 사람을 만난 적이 있습니다. 617 00:27:42,980 --> 00:27:49,880 따라서 반드시, 그 또는 그녀는 우리의 변수를 30 년 후에가는 아무 생각이 없습니다 618 00:27:49,880 --> 00:27:50,710 호출 할 수 있습니다. 619 00:27:50,710 --> 00:27:55,110 따라서 변수 부르는 구별이있을 620 00:27:55,110 --> 00:27:59,960 당신이 글을하는 기능과 당신이 당신이 함수의 변수를 호출 621 00:27:59,960 --> 00:28:01,770 전화 또는 이용할 수 있습니다. 622 00:28:01,770 --> 00:28:05,120 다시 말해, 나는 x와 y로 내 변수를 작성했습니다. 623 00:28:05,120 --> 00:28:08,060 그러나 다른 사람이 스왑 기능을 작성했을 경우, 그 또는 그녀는 확실히 624 00:28:08,060 --> 00:28:10,480 내 변수를 호출하려고하는지 모르겠 것입니다. 625 00:28:10,480 --> 00:28:13,850 그래서 이름이 이중성을 가지고 왜인지 알고 있습니다. 626 00:28:13,850 --> 00:28:16,800 기술적으로, 나는 우연의 일치하여이 작업을 수행 할 수 있습니다. 627 00:28:16,800 --> 00:28:19,750 그러나 아직도 사본로 전달 될 것입니다. 628 00:28:19,750 --> 00:28:22,940 이건 그냥 쓴 심미적 그 사람 경우 순수한 우연의 일치 일 것 629 00:28:22,940 --> 00:28:25,590 스왑은 동일한 이름을 사용했다. 630 00:28:25,590 --> 00:28:25,930 >> 괜찮아요. 631 00:28:25,930 --> 00:28:29,010 따라서 이야기의이 시점에서, 선 37,은 1입니다. 632 00:28:29,010 --> 00:28:30,410 B는 2 명입니다. 633 00:28:30,410 --> 00:28:32,040 그리고 지금은 놈들을 교환 진행합니다. 634 00:28:32,040 --> 00:28:34,730 그럼 우선, 제가 실제로 훨씬 더 간단 해주세요. 635 00:28:34,730 --> 00:28:36,500 나는 코드의 세 라인이 뭘하고 있었는지하지 않습니다. 636 00:28:36,500 --> 00:28:37,370 난 그냥 이렇게 보자. 637 00:28:37,370 --> 00:28:38,850 B는를 얻을 수 있습니다. 638 00:28:38,850 --> 00:28:40,170 a는 b를 얻을 수 있습니다. 639 00:28:40,170 --> 00:28:41,450 완료. 640 00:28:41,450 --> 00:28:43,540 왜이 논리적으로 깨진입니까? 641 00:28:46,980 --> 00:28:48,590 그것은 바로, 직관적 일 이네요? 642 00:28:48,590 --> 00:28:50,640 따라서 B는된다. 643 00:28:50,640 --> 00:28:52,450 그리고 B가됩니다. 644 00:28:52,450 --> 00:28:55,410 그러나 문제는 라인 37 실행 자마자, 뭐가 것입니다 645 00:28:55,410 --> 00:28:58,170 a와 b의 값을? 646 00:28:58,170 --> 00:28:59,070 1, 같은. 647 00:28:59,070 --> 00:29:03,460 당신이 말을, 사방에서 공격했기 때문에, 당신은 동일 할 수 b를 변경했습니다. 648 00:29:03,460 --> 00:29:06,000 일단 라인 37가 실행되고, 잘 됐네요. 649 00:29:06,000 --> 00:29:09,940 이제이 함수의 숫자 1 내부의 두 사본이 있습니다. 650 00:29:09,940 --> 00:29:14,720 그럼 당신은 줄에 38이라고 할 때, A와 B를 얻을, 잘, 당신은 가지 끝장 났어. 651 00:29:14,720 --> 00:29:17,370 당신은 1 ~ 1 할당 거거든요. 652 00:29:17,370 --> 00:29:20,400 당신은 가지 당신이 신경 썼던 값을 잃었습니다. 653 00:29:20,400 --> 00:29:22,910 >> 그럼이의 원래 버전에, 내가 무슨 짓을했는지 확인합니다. 654 00:29:22,910 --> 00:29:26,620 나는 대신이처럼 보이는 코드의 세 번째 라인을했다. 655 00:29:26,620 --> 00:29:29,910 나는 임시 변수를 선언 - TMP은 매우 일반적인 이름입니다 656 00:29:29,910 --> 00:29:31,240 임시 변수. 657 00:29:31,240 --> 00:29:34,280 그것은 내가의 복사본을 만들고 싶어 일치하는 때문에 정수입니다. 658 00:29:34,280 --> 00:29:39,720 나는 TMP의 내부의 사본을 저장합니다. 일단 라인 37 실행했다 659 00:29:39,720 --> 00:29:41,390 의 값입니다 - 660 00:29:41,390 --> 00:29:42,970 빠른 정신은 체크인 - 661 00:29:42,970 --> 00:29:43,460 1. 662 00:29:43,460 --> 00:29:45,780 B의 값은 2입니다. 663 00:29:45,780 --> 00:29:48,470 및 TMP의 값은 1입니다. 664 00:29:48,470 --> 00:29:51,470 그래서 지금은 라인 38 실행합니다. 665 00:29:51,470 --> 00:29:57,180 라인 38 실행되면 따라서 a는 b의 값을 취한다. 666 00:29:57,180 --> 00:29:58,510 그리고 B는 2이었다. 667 00:29:58,510 --> 00:30:00,500 그래서 지금은 2 명입니다. 668 00:30:00,500 --> 00:30:03,110 따라서 이야기의이 시점에서, 2가, B는 2 669 00:30:03,110 --> 00:30:05,130 및 TMP은 1입니다. 670 00:30:05,130 --> 00:30:09,330 이제 논리적으로, 우리는 B에 불과 털썩의 tmp를의 값이 수 있습니다. 671 00:30:09,330 --> 00:30:10,690 그리고 우리는 끝났어. 672 00:30:10,690 --> 00:30:12,170 >> 그래서 우리는 그 문제를 해결했습니다. 673 00:30:12,170 --> 00:30:16,040 불행하게도, 난이 양식에이 프로그램을 실행할 때, 사실은 교체되지 않습니다 674 00:30:16,040 --> 00:30:17,700 어떤 값입니다. 675 00:30:17,700 --> 00:30:18,950 하지만, 왜 명확하게 하는가? 676 00:30:23,420 --> 00:30:26,310 난 그냥 순간 전에서 논리적으로 문제가 해결되었습니다. 677 00:30:26,310 --> 00:30:31,150 내가이 프로그램을 실행하면 다시 한 번,, x와 y는 년 말까지 변경되지 않은 상태로 유지 678 00:30:31,150 --> 00:30:33,834 프로그램의 실행. 679 00:30:33,834 --> 00:30:34,760 [안 들리게] 680 00:30:34,760 --> 00:30:36,030 데이빗 J. MALAN : 그래서 우리는 아무 것도 반환하지 않았습니다. 681 00:30:36,030 --> 00:30:36,960 그래서 사실입니다. 682 00:30:36,960 --> 00:30:39,880 때문에 지금까지 좀 문제가 여기가 있다는 사실을 알아하지만집니다, 683 00:30:39,880 --> 00:30:42,460 우리가 돌​​아갈 수 있었던 유일한 방법은 한 가지입니다. 684 00:30:42,460 --> 00:30:46,540 그런데, 여러분은 정말 하나의 값을 반환 할 수 있습니다 C.의 제한입니다 685 00:30:46,540 --> 00:30:48,970 이 경우, 난 여기 갇혀있는 것 같아요 686 00:30:48,970 --> 00:30:51,805 나는 X의 새 값을 반환하거나 수 있기 때문에 나는를 반환 할 수 687 00:30:51,805 --> 00:30:53,160 Y의 새 값입니다. 688 00:30:53,160 --> 00:30:54,330 하지만 모두 돌아 오길 바랍니다. 689 00:30:54,330 --> 00:30:58,010 따라서 간단한 솔루션은 여기되지 않습니다 반환. 690 00:30:58,010 --> 00:30:59,770 그러나 문제는 근본적으로 왜? 691 00:30:59,770 --> 00:31:03,270 우리는 실제로 무엇을 바꿔 치기했을? 692 00:31:03,270 --> 00:31:04,010 a와 b. 693 00:31:04,010 --> 00:31:07,670 그러나 a와 b는 우리가이 모든 걸 의미합니다 x와 y의 사본이 있습니다 694 00:31:07,670 --> 00:31:10,080 일 - 우리가 스왑에 대해 얘기 삼분처럼 소비 695 00:31:10,080 --> 00:31:11,680 기능과 이러한 변수의 세. 696 00:31:11,680 --> 00:31:15,090 그리고 그 고립에 완벽하게 올바른, 잘 됐네. 697 00:31:15,090 --> 00:31:20,230 그러나 a와 b의 범위는 여기에 다음 행에 있습니다. 698 00:31:20,230 --> 00:31:24,130 그러므로, 루프처럼 당신은 내가 대한 내부 정수를 선언하는 경우 699 00:31:24,130 --> 00:31:27,400 루프 - 마찬가지로, 함수의이 선언하는 경우 a와 b 안에 700 00:31:27,400 --> 00:31:30,550 작성한, 그들은 그 함수의 경우에만 유효 안에. 701 00:31:30,550 --> 00:31:35,020 어떤 즉시 스왑이 실행 완료 될 때 의미하며 우리는 한 줄에 24 일부터 이동 702 00:31:35,020 --> 00:31:38,380 라인 25 x와 y는 전혀 변경되지 않았습니다. 703 00:31:38,380 --> 00:31:42,580 당신은 변수의 사본을 교환 시간을 낭비. 704 00:31:42,580 --> 00:31:46,490 >> 그래서이 문제에 대한 솔루션이 실제로 비 명백한 것을 밝혀졌다. 705 00:31:46,490 --> 00:31:49,210 이 값을 반환하는 매우 충분하지입니다 우리가 할 수 있기 때문에 706 00:31:49,210 --> 00:31:50,320 하나의 값을 반환합니다. 707 00:31:50,320 --> 00:31:53,370 그리고 정말 같은 시간에 x와 y를 모두 교환하고 싶어. 708 00:31:53,370 --> 00:31:55,020 그래서 우리는 이렇게 돌아 왔 잖아요. 709 00:31:55,020 --> 00:31:58,770 그러나 지금,이 문제는 근본적으로 사실에서 유래 걸 깨닫게 710 00:31:58,770 --> 00:32:00,660 a와 b는 사본을 것을. 711 00:32:00,660 --> 00:32:03,450 그리고 자신의 범위에 있습니다. 712 00:32:03,450 --> 00:32:04,980 음, 어떤 방법으로이 문제를 해결하려고 까. 713 00:32:04,980 --> 00:32:09,200 내가 실제로 돌아 스크롤하게하고 열 네 번째 변형, 보자 714 00:32:09,200 --> 00:32:11,170 이, buggy4. 715 00:32:11,170 --> 00:32:13,230 그리고 이건 어때? 716 00:32:13,230 --> 00:32:16,690 이것은 우리가에 찔린를하기 전에 볼 수있는 비슷하지만 간단 문제 717 00:32:16,690 --> 00:32:17,530 그것을 해결. 718 00:32:17,530 --> 00:32:19,440 이 프로그램은 증가라고합니다. 719 00:32:19,440 --> 00:32:24,320 그리고 분명 라인 18에 1 X 정수를 초기화합니다. 720 00:32:24,320 --> 00:32:25,950 나는 그 x는 1 주장한다. 721 00:32:25,950 --> 00:32:28,020 나는 그 때, 점, 점, 점을 증가 주장한다. 722 00:32:28,020 --> 00:32:29,460 나는 그 증가를 호출합니다. 723 00:32:29,460 --> 00:32:33,480 하지만 라인에서 22 번과 23, 난이 증가 된 주장한다. 724 00:32:33,480 --> 00:32:37,780 나는 여기서 x는 아마, 그게 뭐든지간에 지금 2 주장한다. 725 00:32:37,780 --> 00:32:39,770 >> 그러나이 프로그램은 버그가 있습니다. 726 00:32:39,770 --> 00:32:41,020 문제는 무엇입니까? 727 00:32:43,450 --> 00:32:44,418 응? 728 00:32:44,418 --> 00:32:45,668 [안 들리게] 729 00:32:49,260 --> 00:32:49,850 데이빗 J. MALAN : 그렇지. 730 00:32:49,850 --> 00:32:52,430 따라서 x는 라인 18 일 분명히 선언되었습니다. 731 00:32:52,430 --> 00:32:54,410 그 메인의 중괄호 안에 있습니다. 732 00:32:54,410 --> 00:32:58,470 자, 이제 간단한 대답은 잘 x는 여기에 존재한다는 것입니다. 733 00:32:58,470 --> 00:33:01,510 이 라인 32에 존재하지 않습니다. 734 00:33:01,510 --> 00:33:03,710 그래서이 프로그램은 실제로도 컴파일되지 않습니다. 735 00:33:03,710 --> 00:33:07,910 컴파일러는, 내가이 코드를 컴파일하려고 할 때, 나 한테 소리 지르고 것입니다 736 00:33:07,910 --> 00:33:13,190 일부 선언하지 않은 식별자 또는 그 효과 뭔가에 대해. 737 00:33:13,190 --> 00:33:13,870 사실 해보자. 738 00:33:13,870 --> 00:33:15,235 이 buggy4을 것입니다. 739 00:33:17,780 --> 00:33:18,190 저기입니다. 740 00:33:18,190 --> 00:33:22,030 라인 32 선언하지 않은 식별자 X의 사용합니다. 741 00:33:22,030 --> 00:33:25,700 그리고 실제로, 어디이 유용합니다 수 있도록 오늘 더 명시 해 742 00:33:25,700 --> 00:33:27,140 근무 시간과 집에서. 743 00:33:27,140 --> 00:33:29,000 이 cryptically 작성, 좀납니다. 744 00:33:29,000 --> 00:33:31,560 그러나 꽝가 있다는 사실 말은, 우리 외쳤다 745 00:33:31,560 --> 00:33:36,970 buggy4.c : 32:5, 사실은 유용합니다. 746 00:33:36,970 --> 00:33:41,970 이 오류가 문자 위치 5 번 라인 32에 있다는 것을 의미합니다. 747 00:33:41,970 --> 00:33:44,670 하나, 둘, 셋, 넷, 다섯 그럼. 748 00:33:44,670 --> 00:33:46,640 문제가있는 곳 사실입니다. 749 00:33:46,640 --> 00:33:49,710 또한 근무 시간에 집에서 염두에두고, 여기 운입니다. 750 00:33:49,710 --> 00:33:50,740 한 실수 있습니다. 751 00:33:50,740 --> 00:33:52,660 이 수정 상대적으로 쉽게거야. 752 00:33:52,660 --> 00:33:56,220 하지만 당신이 다시 압도적 오류 메시지의 전체 화면 전체를한다면, 753 00:33:56,220 --> 00:33:59,240 맨 아래 하나가 단지의 증상 일 수도 있다는 인식 754 00:33:59,240 --> 00:34:00,320 맨 위의 사람들. 755 00:34:00,320 --> 00:34:03,560 그래서 항상 맨 아래에서 버그를 심판. 756 00:34:03,560 --> 00:34:06,720 당신을 제안하는 데이지 체인 효과가 있기 때문에 757 00:34:06,720 --> 00:34:09,030 당신은 실제로 것보다 더 많은 문제가 있습니다. 758 00:34:09,030 --> 00:34:14,989 >> 내 목표는 x를 증가시키는 경우 그럼 우리는이 문제를 해결 수 있을까? 759 00:34:14,989 --> 00:34:15,370 그게 뭐야? 760 00:34:15,370 --> 00:34:15,620 좋아요. 761 00:34:15,620 --> 00:34:16,679 그래서 우리는 x가 글로벌 할 수 있습니다. 762 00:34:16,679 --> 00:34:18,860 의는 내가 이전에 경고하는 바로 가기를 보자. 763 00:34:18,860 --> 00:34:20,550 그러나 도대체 우리는 단지 빠른 수정이 필요합니다. 764 00:34:20,550 --> 00:34:23,949 그냥 여기까지 정수 x를 가정 해 보자. 765 00:34:23,949 --> 00:34:25,600 그 X 전세계를합니다. 766 00:34:25,600 --> 00:34:28,460 이제 메인은에 액세스 할 수 있습니다. 767 00:34:28,460 --> 00:34:31,780 그리고 증가는에 액세스 할 수 있습니다. 768 00:34:31,780 --> 00:34:33,860 그리고 내가 가서 지금이 컴파일한다. 769 00:34:33,860 --> 00:34:36,330 buggy4을 입력하십시오. 770 00:34:36,330 --> 00:34:37,440 이제 컴파일 보인다. 771 00:34:37,440 --> 00:34:40,949 하자 buggy4를 실행하고, 실제로 일 것 같습니다. 772 00:34:40,949 --> 00:34:42,780 이제이이 일 중 하나입니다 - 773 00:34:42,780 --> 00:34:45,870 내 말대로 난 여기 한 것처럼, 난 그렇게 생각하지 않음으로, 그렇게. 774 00:34:45,870 --> 00:34:49,239 일반적으로하기 때문에, 우리의 프로그램은 훨씬 더 흥미로운 얻을 수되고 775 00:34:49,239 --> 00:34:50,440 이것보다 훨씬 더. 776 00:34:50,440 --> 00:34:53,199 그리고 인생의 문제에 대한 해결책이 바로 아 경우, 모든 넣어 777 00:34:53,199 --> 00:34:57,550 파일의 맨 위에있는 변수는 매우 신속하게 프로그램이 뭔지 778 00:34:57,550 --> 00:34:59,700 관리 엄청 시리 어렵다. 779 00:34:59,700 --> 00:35:02,050 이 새 변수 이름을 생각 어려워 져. 780 00:35:02,050 --> 00:35:05,240 이 변수가 무엇을 무엇을하고 있는지 이해하기 어려워 져. 781 00:35:05,240 --> 00:35:08,250 >> 그리고 일반적으로,이 좋은 해결책이 아닙니다. 782 00:35:08,250 --> 00:35:09,780 그러니 이렇게 까. 783 00:35:09,780 --> 00:35:11,920 우리는 여기서 전역 변수를 사용하지 않습니다. 784 00:35:11,920 --> 00:35:14,050 나는 x를 증가시키고 않습니다. 785 00:35:14,050 --> 00:35:16,050 그래서 분명히 수 - 786 00:35:16,050 --> 00:35:18,450 우리가이 작업을 수행하기 때문에 하루의 끝에서, 그것은 바보 같은 이야기 이죠. 787 00:35:18,450 --> 00:35:22,050 그 연산자에 대해 알고, 또는하지 않은 경우하지만 난이 허락되지 않았어요 788 00:35:22,050 --> 00:35:27,700 자체 메인에서 변경하는 방법 다른이, 여기에 켄을 구현 할 수 789 00:35:27,700 --> 00:35:31,450 시간이 아닌 정육면체이 아니라 증가? 790 00:35:31,450 --> 00:35:32,700 어떻게 여기에있는 것을 변경하려면 어떻게해야합니까? 791 00:35:32,700 --> 00:35:33,025 그래. 792 00:35:33,025 --> 00:35:34,275 [안 들리게] 793 00:35:37,430 --> 00:35:38,000 데이빗 J. MALAN : 그래, 좋아. 794 00:35:38,000 --> 00:35:40,490 제가 왜 X에서 전달하지 않습니다? 795 00:35:40,490 --> 00:35:44,390 그리고보다는 돌려, 왜 그냥 돌아 X + 1을 안해? 796 00:35:44,390 --> 00:35:46,370 이제 몇 가지만 더 여기 변경해야합니다. 797 00:35:46,370 --> 00:35:47,530 나는 오른쪽 궤도에입니다. 798 00:35:47,530 --> 00:35:48,910 그럼 내가 또 뭘을 조정해야하나요? 799 00:35:48,910 --> 00:35:49,470 다른 사람. 800 00:35:49,470 --> 00:35:49,882 응? 801 00:35:49,882 --> 00:35:51,530 [안 들리게] 802 00:35:51,530 --> 00:35:53,520 데이빗 J. MALAN : 저는 증가의 반환 유형을 변경해야 803 00:35:53,520 --> 00:35:54,590 이 무효화 아니니까. 804 00:35:54,590 --> 00:35:56,650 플레이는 아무 것도 반환되지되지는 뜻 이죠. 805 00:35:56,650 --> 00:35:57,600 하지만 분명히, 지금입니다. 806 00:35:57,600 --> 00:36:01,280 그래서이 요구 무엇이든과 일치하도록 int로 변경 807 00:36:01,280 --> 00:36:02,580 사실은 돌아가는거야. 808 00:36:02,580 --> 00:36:04,580 >> 지금 뭔가 다른이 아직 버그가 있습니다. 809 00:36:04,580 --> 00:36:04,982 응? 810 00:36:04,982 --> 00:36:06,590 [안 들리게] 811 00:36:06,590 --> 00:36:07,630 데이빗 J. MALAN : 나는 x를 증가 할 필요 건가요? 812 00:36:07,630 --> 00:36:10,336 [안 들리게] 813 00:36:10,336 --> 00:36:11,880 데이빗 J. MALAN : 아, 그래서 나는 x를 통과해야합니다. 814 00:36:11,880 --> 00:36:13,300 그래서 여기에이 작업을 수행해야합니다. 815 00:36:17,590 --> 00:36:19,690 프로토 타입 그래서, 여기를 변경해야합니다. 816 00:36:19,690 --> 00:36:21,290 그래서이 정수가 될 수 있습니다. 817 00:36:21,290 --> 00:36:22,820 이 될이 - 818 00:36:22,820 --> 00:36:23,670 음. 819 00:36:23,670 --> 00:36:24,710 사실 난 여기에 버그를 갖추고 있습니다. 820 00:36:24,710 --> 00:36:25,780 의 이거 먼저 문제를 해결 보자. 821 00:36:25,780 --> 00:36:27,990 이 사실은 무엇을해야합니까? 822 00:36:27,990 --> 00:36:29,330 그래서는 정수 뭔가있을 있어요. 823 00:36:29,330 --> 00:36:30,340 그것은 X가 될 수 있습니다. 824 00:36:30,340 --> 00:36:33,120 귀하의 변수 x의 모든 전화를 시작하면 솔직히, 그것은 얻을 수있어 825 00:36:33,120 --> 00:36:35,250 갈수록 명확되는 어떤 것입니다. 826 00:36:35,250 --> 00:36:38,210 그냥 임의로 제에 대해 다른 명명 규칙을 선택 두자 827 00:36:38,210 --> 00:36:40,220 도우미 기능, 작곡 기능. 828 00:36:40,220 --> 00:36:41,100 우리는 전화 할께. 829 00:36:41,100 --> 00:36:44,500 아니면 우리가 전화를 할 수 - 가자의는보다 명시 적으로 even_number 전화하십시오. 830 00:36:44,500 --> 00:36:47,610 그래서 제가 전화 번호는 플러스 1대로 반환해야합니다. 831 00:36:47,610 --> 00:36:49,720 그리고 지금 난 여기 한 한 가지를 변경해야 832 00:36:49,720 --> 00:36:50,700 여기에 다른 것까지. 833 00:36:50,700 --> 00:36:54,150 나는 첫 번째 줄 21 변경하려면 어떻게해야합니까? 834 00:36:54,150 --> 00:36:55,390 I는 x에 할당 할 수 있습니다. 835 00:36:55,390 --> 00:36:57,480 그래서 난 증가 x를 호출 할 수 없습니다. 836 00:36:57,480 --> 00:37:01,000 나는에 X의 값을 변경하여 답을 기억해야 837 00:37:01,000 --> 00:37:02,020 왼쪽. 838 00:37:02,020 --> 00:37:04,930 그리고 x는 지금하더라도 왼쪽과 오른쪽, 그거 정말 괜찮 때문에 839 00:37:04,930 --> 00:37:08,370 오른쪽이 처음 실행됩니다 다음 왼쪽에 plopped됩니다 840 00:37:08,370 --> 00:37:10,240 손 건,이 경우 X. 841 00:37:10,240 --> 00:37:11,900 그리고 마지막으로, 이제 쉽게 수정 프로그램입니다. 842 00:37:11,900 --> 00:37:15,080 이것은 단지 어떤 아래로 일치해야합니다. 843 00:37:15,080 --> 00:37:17,120 INT 번호입니다. 844 00:37:17,120 --> 00:37:17,320 >> 괜찮아요. 845 00:37:17,320 --> 00:37:20,290 정말 바보 같은 기능에 대한 변경 사항의 전체 무리 그럼. 846 00:37:20,290 --> 00:37:24,250 하지만 우리가 점점 더하고 싶어한다고 일 대표. 847 00:37:24,250 --> 00:37:25,490 그럼 buggy4을합니다. 848 00:37:25,490 --> 00:37:26,485 어딘가 실수했습니다. 849 00:37:26,485 --> 00:37:27,520 오, 맙소사. 850 00:37:27,520 --> 00:37:29,660 다섯 실수 같은 여섯 줄 프로그램입니다. 851 00:37:29,660 --> 00:37:36,500 따라서 문자가 줄 18 무슨 5의? 852 00:37:36,500 --> 00:37:36,970 괜찮아요. 853 00:37:36,970 --> 00:37:39,330 그래서이 정수를 선언해야합니다. 854 00:37:39,330 --> 00:37:39,630 괜찮아요. 855 00:37:39,630 --> 00:37:41,790 그러니 다른 오류를 왕창 보자. 856 00:37:41,790 --> 00:37:42,230 오 이런 세상에. 857 00:37:42,230 --> 00:37:43,880 19, 18, 21. 858 00:37:43,880 --> 00:37:46,020 그러나 다시, 그냥 화면을 깨끗하게 - 859 00:37:46,020 --> 00:37:48,660 컨트롤 여기에 L - 재 실행 꽝. 860 00:37:48,660 --> 00:37:51,340 다섯 문제는 실제로 그 하나입니다. 861 00:37:51,340 --> 00:37:53,500 이제 입력, 어디 buggy4을 실행할 수 있습니다. 862 00:37:53,500 --> 00:37:54,150 휴. 863 00:37:54,150 --> 00:37:57,434 X가 제대로 증가되었습니다. 864 00:37:57,434 --> 00:37:58,420 >> 괜찮아요. 865 00:37:58,420 --> 00:38:01,700 숫자를 증가하는 방법에 대한 질문? 866 00:38:01,700 --> 00:38:02,896 응? 867 00:38:02,896 --> 00:38:06,864 스피커 2 : 왜 당신이 지금 변수에 숫자 x를 변경할 수 있다는 것입니다 868 00:38:06,864 --> 00:38:08,860 이름과 당신이 무슨 뜻인지 알 겠지? 869 00:38:08,860 --> 00:38:09,600 데이빗 J. MALAN : 좋은 질문입니다. 870 00:38:09,600 --> 00:38:13,130 그것은 방금 번호를 x를 변경할 수 있으며 프로그램이 알 수있는 방법입니다 871 00:38:13,130 --> 00:38:13,990 바로? 872 00:38:13,990 --> 00:38:16,120 그럼 다시,이 추상화이라고 생각합니다. 873 00:38:16,120 --> 00:38:20,110 나는 주이고 켄이 증가하는 경우 따라서, 솔직히, 난 상관 없어 874 00:38:20,110 --> 00:38:21,540 켄은 그의 아이 패드 부르는. 875 00:38:21,540 --> 00:38:25,350 그 사람이 자신의 구현과 관련있는 건 전화를하든 상관 없어 876 00:38:25,350 --> 00:38:26,550 이 기능의. 877 00:38:26,550 --> 00:38:32,130 그래서이 I, 메인은하지 않는 구현 세부 사항입니다 878 00:38:32,130 --> 00:38:33,010 신경해야합니다. 879 00:38:33,010 --> 00:38:37,440 그리고 단순히 전화 번호가 여기, 지속적으로 내부의 기능을 변경 880 00:38:37,440 --> 00:38:41,340 여기 번호, 그건 내가 다시 컴파일로 너무 오래 걸립니다 전부입니다. 881 00:38:41,340 --> 00:38:43,820 우리의 많은 분들을 운전과 함께 - 당신이 생각하는 경우 말하자면 것 같아요 882 00:38:43,820 --> 00:38:46,590 왔다, 또는 심지어 차를 운전 한 경우 라이센스 - 883 00:38:46,590 --> 00:38:50,710 우리 대부분은 자동차 후드 아래에 어떻게 작동하는지 모르겠어요. 884 00:38:50,710 --> 00:38:54,710 당신이 후드 우리의 대부분을 열면 그대로 - 자신이 포함 - 885 00:38:54,710 --> 00:38:56,580 정말 우리가보고 알고하지 않을 수 있습니다. 886 00:38:56,580 --> 00:38:58,850 당신은 지금이 같은 물건을 느낄 수 있습니다듯한 느낌. 887 00:38:58,850 --> 00:39:01,380 그러나 우리는 정말 자동차가 어떻게 작동하는지 신경 필요가 없습니다. 888 00:39:01,380 --> 00:39:05,000 우리는 상관 할 필요가 없습니다 어떤 내부의 막대와 피스톤 및 케이블의 모든 889 00:39:05,000 --> 00:39:07,700 차를 실제로 수행 할 수있다. 890 00:39:07,700 --> 00:39:11,360 >> 당신은 피스톤 부르는 같은 상관 없습니다 그래서 891 00:39:11,360 --> 00:39:11,920 여기에 이​​번 케이스는 아니군요. 892 00:39:11,920 --> 00:39:12,490 같은 생각. 893 00:39:12,490 --> 00:39:12,670 응? 894 00:39:12,670 --> 00:39:13,920 [안 들리게] 895 00:39:25,250 --> 00:39:29,530 데이빗 J. MALAN : 변수 XA의 순간 더 많은 용도는 전에가있을 경우, 896 00:39:29,530 --> 00:39:32,220 너, 프로그래머, 어디에나을 변경해야합니다. 897 00:39:32,220 --> 00:39:35,230 아니면 말 그대로, 파일, 메뉴를 누른 다음 찾기 / 바꾸기 수 898 00:39:35,230 --> 00:39:36,270 그런 일. 899 00:39:36,270 --> 00:39:40,110 하지만 당신은 이러한 변경을 직접해야 돼 있습니다. 900 00:39:40,110 --> 00:39:41,200 당신은 일치해야합니다. 901 00:39:41,200 --> 00:39:42,450 [안 들리게] 902 00:39:47,200 --> 00:39:48,960 데이빗 J. MALAN : 여기 같은 특정 순서? 903 00:39:48,960 --> 00:39:52,660 이 였다면 다른 번호를 INT? 904 00:39:52,660 --> 00:39:52,940 그래. 905 00:39:52,940 --> 00:39:56,430 이 함수를 호출 할 때 그럼 순서는 중요. 906 00:39:56,430 --> 00:40:00,350 나는 무언가를 쉼표 뭔가 함께 증가를 호출 한면 907 00:40:00,350 --> 00:40:01,400 직접 매핑가 있습니다. 908 00:40:01,400 --> 00:40:04,490 제목이 무엇이든 첫 번째 변수는, 첫 번째의 사본을 만들어 909 00:40:04,490 --> 00:40:05,480 여기에 인수입니다. 910 00:40:05,480 --> 00:40:07,280 죄송합니다,이 괄호 안됩니다. 911 00:40:07,280 --> 00:40:09,300 두 번째와 두 번째 인수 라인 업. 912 00:40:09,300 --> 00:40:11,220 >> 주문 그럼, 그래, 중요합니다. 913 00:40:11,220 --> 00:40:11,490 괜찮아요. 914 00:40:11,490 --> 00:40:13,360 죄송하지만 지금은 거기 도착하는 먼 길을했습니다. 915 00:40:13,360 --> 00:40:14,610 다른 질문? 916 00:40:16,460 --> 00:40:16,850 괜찮아요. 917 00:40:16,850 --> 00:40:20,300 그래서 우리가 실제로 무슨 일이 벌어지고 있는지에 대한 그림을 그릴 수없는 경우 보자 918 00:40:20,300 --> 00:40:22,160 여기에 후드 아래, 말하자면합니다. 919 00:40:22,160 --> 00:40:26,310 그래서이 컴퓨터의 메모리를 나타낼 수 직사각형입니다. 920 00:40:26,310 --> 00:40:31,240 최소한 메모리가 작동하는 방법이나 RAM의 작동 방식 모를 않더라도 921 00:40:31,240 --> 00:40:33,590 당신이 한 움큼 요즘이 있다고 가정합니다. 922 00:40:33,590 --> 00:40:34,740 당신이 그 메가 바이트있어. 923 00:40:34,740 --> 00:40:35,760 당신은 기가 바이트있어. 924 00:40:35,760 --> 00:40:40,690 그리고 우리는 바이트 방금 뭐 것을 주 제로에서 알지? 925 00:40:40,690 --> 00:40:41,280 8 비트. 926 00:40:41,280 --> 00:40:42,730 좋아요, 그럼 8 0과 했죠. 927 00:40:42,730 --> 00:40:46,300 컴퓨터가 요즘의 RAM 공연, RAM의 두 기가되어있는 경우, 당신은이 928 00:40:46,300 --> 00:40:54,450 메모리 억 ~ 2 억 바이트, 또는 약 8,000,000,000 또는 16000000000 929 00:40:54,450 --> 00:40:56,560 내 컴퓨터의 비트. 930 00:40:56,560 --> 00:40:59,710 지금 작은 털 윌리의 예와는 달리, 그것은 자기 입자가 아니야 931 00:40:59,710 --> 00:41:00,560 일반적으로 더 이상은. 932 00:41:00,560 --> 00:41:04,470 점점 더, 노트북에서 적어도, 그것은 고체 상태 드라이브, SSDs, 그건 933 00:41:04,470 --> 00:41:05,560 단지 어떤 부품을 이동 없습니다. 934 00:41:05,560 --> 00:41:06,710 다 전자입니다. 935 00:41:06,710 --> 00:41:08,070 그것은 사용하는 모든 전기입니다. 936 00:41:08,070 --> 00:41:12,360 그러니 그냥 하나 또는 두 개의 대표로 직사각형의,하지만 생각 937 00:41:12,360 --> 00:41:13,930 당신이 가지고 메모리 기가 바이트. 938 00:41:13,930 --> 00:41:15,500 >> 그래서 메모리의 덩어리입니다. 939 00:41:15,500 --> 00:41:20,460 지금 컴퓨터 과학의 세계의 오프 분할 덩어리가 있죠 940 00:41:20,460 --> 00:41:22,570 메모리는 다른 일을합니다. 941 00:41:22,570 --> 00:41:25,930 이 컴퓨터의 RAM 인 경우 그럼 예를 들어, -로의 제안 942 00:41:25,930 --> 00:41:30,400 이 사각형은 - 그래서, RAM의 상단에, 국제 대회에서 그 방법을 찾아 변 943 00:41:30,400 --> 00:41:33,170 말하자면, 텍스트 세그먼트라는 것을 일반적입니다. 944 00:41:33,170 --> 00:41:35,910 그 시절에는 자네가 컴파일 한 0과 사랑하는 사람들이 있습니다. 945 00:41:35,910 --> 00:41:39,040 그래서 우리는 a.out가 무엇인지에 후드 아래 보았다했을 때, 모든 946 00:41:39,040 --> 00:41:40,360 0과 사랑하는 사람들 - 947 00:41:40,360 --> 00:41:44,000 당신이 프로그램을 실행하면, 이러한 0과 사랑하는 사람들은 하드에서로드되는 948 00:41:44,000 --> 00:41:46,290 RAM라는 걸에 거리에 있습니다. 949 00:41:46,290 --> 00:41:48,950 그리고 RAM에, 그것들은 상단에 넣어하고 있습니다. 950 00:41:48,950 --> 00:41:50,330 지금 한편, 다른 일이 있습니다. 951 00:41:50,330 --> 00:41:53,060 초기화 데이터, 초기화되지 않은 데이터입니다. 952 00:41:53,060 --> 00:41:56,440 메모리의 저 두 swaths은 전역 변수를 참조하는 953 00:41:56,440 --> 00:41:57,530 당신은 자주 사용하지 않습니다. 954 00:41:57,530 --> 00:42:00,630 당신이 있다면 때때로, 그들은뿐만 아니라 거기에 결국. 955 00:42:00,630 --> 00:42:01,620 그런 다음 다른 물건이 있어요. 956 00:42:01,620 --> 00:42:04,130 우리가 많은 시간을 할애하지 않습니다 환경 변수. 957 00:42:04,130 --> 00:42:06,120 하지만 두 가지 중요한 일들은이를 통해 다시 올 것이다 958 00:42:06,120 --> 00:42:08,130 학기 스택과 힙. 959 00:42:08,130 --> 00:42:12,280 >> 위한 프로그램을 실행 할 때 사용자 컴퓨터의 메모리의 대부분은 예약되어 960 00:42:12,280 --> 00:42:14,880 뭔가가 스택을 전화 뭔가가 힙을했다. 961 00:42:14,880 --> 00:42:16,940 그리고 우리는 오늘날 힙에 대해 이야기하지 않을거야,하지만 우리는 것 962 00:42:16,940 --> 00:42:18,180 스택에 대해 이야기. 963 00:42:18,180 --> 00:42:22,910 그리고 스택은 식당처럼의 영상을 만들어 보도록하기위한 것입니다 964 00:42:22,910 --> 00:42:26,120 어디 식사 메이 하우스에서 쟁반, 또는 원하는 당신은, 할 일 965 00:42:26,120 --> 00:42:27,810 식당 홀 직원은 매일 청소. 966 00:42:27,810 --> 00:42:30,180 그들은 최대의 층에서 올려 쌓아. 967 00:42:30,180 --> 00:42:33,800 그리고 마찬가지로 메모리에,에 뭔가를 넣어의 생각이 968 00:42:33,800 --> 00:42:36,740 스택에 뭔가를 넣어, 스택에 뭔가를 넣어, 스택. 969 00:42:36,740 --> 00:42:38,000 그리고 우리는이 무슨 뜻이에요? 970 00:42:38,000 --> 00:42:41,430 음,,이 사진의 바로 아래쪽에 들어 컴퓨터의를 확대하자 971 00:42:41,430 --> 00:42:43,990 RAM, 다음을 제안합니다. 972 00:42:43,990 --> 00:42:48,300 그것은 당신이 a.out과 같은 프로그램을 실행하거나 인사 할 때 무엇이​​든 밝혀 973 00:42:48,300 --> 00:42:49,920 이 프로그램은, 당신이 작성한 것입니다 974 00:42:49,920 --> 00:42:53,030 다시 그 0과 사랑하는 사람들은 하드 드라이브에서로드됩니다 - 어떤 975 00:42:53,030 --> 00:42:56,190 장기 저장, 당신은 플러그를 뽑아 경우에도이 유지 - 976 00:42:56,190 --> 00:42:57,220 RAM에로드. 977 00:42:57,220 --> 00:42:59,020 RAM은 하드 드라이브보다 빠릅니다. 978 00:42:59,020 --> 00:43:00,700 그것은 하드 드라이브보다 작은 크기입니다. 979 00:43:00,700 --> 00:43:03,490 당신이 그들을 실행하는 동안 프로그램이 사는 곳 있잖아. 980 00:43:03,490 --> 00:43:06,380 >> 그래서 더블 Mac이나 PC에 프로그램을 클릭합니다 - 그것은에서로드있어 981 00:43:06,380 --> 00:43:07,750 RAM에 하드 드라이브. 982 00:43:07,750 --> 00:43:11,760 이 RAM에로드 마자 0과 사랑하는 사람들은,가는 길 상단에 이동 983 00:43:11,760 --> 00:43:13,130 텍스트 세그먼트 소위. 984 00:43:13,130 --> 00:43:17,040 하지만 최대한 빨리 당신의 프로그램이 실제로 시작으로 주요 실행 985 00:43:17,040 --> 00:43:18,140 함수가 호출됩니다. 986 00:43:18,140 --> 00:43:21,070 그리고 주, 우리가 본대로,들은 지역 변수가 있습니다. 987 00:43:21,070 --> 00:43:24,560 그리고 ints와 문자열과 문자와 같은 수 있습니다. 988 00:43:24,560 --> 00:43:28,300 그러므로 당신이 작성한 것을 프로그램 또는 가지고있는 프로그램 경우 989 00:43:28,300 --> 00:43:33,680 더블은 주 안에서 몇 가지 변수를 사용하여 클릭, 그들은에 도착 990 00:43:33,680 --> 00:43:37,020 메모리의 스택의 바닥은 너무 말을합니다. 991 00:43:37,020 --> 00:43:39,160 이제 더 구체적으로,이 사실은 무엇을 의미합니까? 992 00:43:39,160 --> 00:43:44,080 이것은 단지 의미 우리는 일을 수 일이 생길까 - 993 00:43:44,080 --> 00:43:49,380 귀하의 컴퓨터에 번호를 RAM의 바이트를하게되면 알이 994 00:43:49,380 --> 00:43:51,650 이 바이트 숫자 0이 될 수 있습니다. 995 00:43:51,650 --> 00:43:56,130 이 바이트 숫자 하나, 둘, 셋, 넷, 다섯, 여섯, 모든 일 수도 996 00:43:56,130 --> 00:43:57,290 좋아하도록하는 방법 - 997 00:43:57,290 --> 00:44:01,520 2000000000 거기에 상단에있는 모든 방법 것이다. 998 00:44:01,520 --> 00:44:05,960 다시 말해, 우리는 바이트의 관점에서 RAM 또는 메모리에 대해 이야기, 그 999 00:44:05,960 --> 00:44:09,680 그 사람이 각각의를 수에 어떤 결정했음을 의미 1000 00:44:09,680 --> 00:44:11,110 메모리의 그 덩어리. 1001 00:44:11,110 --> 00:44:16,950 >> 그래서 당신은 정수 32 비트가 필요하거나 당신은 숯불 8 비트, 어디서이 필요합니다 1002 00:44:16,950 --> 00:44:18,320 그들은 메모리에 결국합니까? 1003 00:44:18,320 --> 00:44:20,650 그럼 개념적으로, 그들은 그냥이의 하단에 도착 1004 00:44:20,650 --> 00:44:21,780 점은 스택을했다. 1005 00:44:21,780 --> 00:44:25,670 주이 기능을 호출하면 그런데 지금은 흥미로운 것은 있습니다. 1006 00:44:25,670 --> 00:44:28,830 foo는, 그냥 임의의 이름이라는 기능을 가정 해 보겠습니다. 1007 00:44:28,830 --> 00:44:32,480 메모리의 스택의 하단에 어떤 일이 벌어 질까 주입니다. 1008 00:44:32,480 --> 00:44:35,630 푸 지금은 메모리에 메인의 상단에 놓입니다. 1009 00:44:35,630 --> 00:44:40,020 foo는 개념적 위의 종류 결국 않은 지역 변수 있도록 1010 00:44:40,020 --> 00:44:40,770 메인에있는 그. 1011 00:44:40,770 --> 00:44:46,920 foo는이 바라는 또 다른 함수를 호출하면 그 변수는 여기서 끝. 1012 00:44:46,920 --> 00:44:49,790 바는 여기 여기에 다른 뭔가를, 여기 호출합니다. 1013 00:44:49,790 --> 00:44:53,900 그래서 프로그램을 실행하는 방법에 대한 흥미로운 것은, 당신이 함수를 호출된다는 것입니다 1014 00:44:53,900 --> 00:44:57,720 그리고 그 함수는 함수를 호출하고, 그 함수는 함수를 호출하는 것처럼, 1015 00:44:57,720 --> 00:45:00,980 당신은 메모리 기능이 스택을 구축 할 수 있습니다. 1016 00:45:00,980 --> 00:45:06,740 만 함수가 반환되면 그 메모리를 다시 나올 않습니다. 1017 00:45:06,740 --> 00:45:11,190 따라서 컴퓨터 프로그램에서 메모리가 부족 할 수있는 가장 쉬운 방법 중 하나가하는 것입니다 1018 00:45:11,190 --> 00:45:14,170 돌아 오지 않을 기능을 작성합니다. 1019 00:45:14,170 --> 00:45:16,650 >> 따라서 예를 들어, 어디를 많이 보여 보자 1020 00:45:16,650 --> 00:45:18,460 의도적으로 버그 프로그램입니다. 1021 00:45:18,460 --> 00:45:24,690 내가 가서 # , int는 주를 (무효)를 포함 하죠. 1022 00:45:24,690 --> 00:45:31,270 그리고 그렇게 할거야하면서 아마도 절대 그런 일 없을 (2> 1) 1023 00:45:31,270 --> 00:45:33,370 우리 변경할 수 있습니다. 1024 00:45:33,370 --> 00:45:37,720 그리고 내가 지금 가서 printf하자. 1025 00:45:37,720 --> 00:45:39,950 사실, 그 이하 시각적으로 재미있을거야. 1026 00:45:39,950 --> 00:45:40,460 이 작업을 수행하자. 1027 00:45:40,460 --> 00:45:44,840 INT를위한은 (i = 0; 전> 0). 1028 00:45:44,840 --> 00:45:49,740 이 실수를하자, 내가 + +. 1029 00:45:49,740 --> 00:45:51,150 여기의 printf하지 맙시다. 1030 00:45:51,150 --> 00:45:52,550 의 내가 설교 한 것을 연습 보자. 1031 00:45:52,550 --> 00:45:54,090 의 여기 방법을 보자. 1032 00:45:54,090 --> 00:46:00,860 무효 합창, 우리는 INT 내가 말할 수 있습니다. 1033 00:46:00,860 --> 00:46:02,295 그리고 나서 printf, 말할거야 - 1034 00:46:04,871 --> 00:46:06,790 오, 그럼이 더 재미있게 만들어 보자. 1035 00:46:06,790 --> 00:46:08,350 의는 실제로 전혀 아무런 내용도 출력되지 보자. 1036 00:46:08,350 --> 00:46:10,530 그냥 이렇게합시다. 1037 00:46:10,530 --> 00:46:11,780 합창은 (i). 1038 00:46:16,630 --> 00:46:17,000 >> 괜찮아요. 1039 00:46:17,000 --> 00:46:20,040 때문에 그래서이 버그인가요? 1040 00:46:20,040 --> 00:46:22,850 내가가는대로 프로그램이 실제로 아무 짓도하지 않기 때문에이를 만들고 있어요 1041 00:46:22,850 --> 00:46:23,420 관심. 1042 00:46:23,420 --> 00:46:24,670 하지만 그게 목표 없습니다. 1043 00:46:24,670 --> 00:46:30,440 목표는 누구의 주요 기능 뭐 확실히을 수행하는 프로그램을 작성하는 것입니다? 1044 00:46:30,440 --> 00:46:31,370 자체를 호출합니다. 1045 00:46:31,370 --> 00:46:32,600 실제로, 우리는 루프를 필요하지 않습니다. 1046 00:46:32,600 --> 00:46:36,070 가자는 정말의 시력을 잃지 않도록으로 너무이 단순화 1047 00:46:36,070 --> 00:46:37,310 기본 버그. 1048 00:46:37,310 --> 00:46:39,200 주요 통화 합창 일부 합창을 노래합니다. 1049 00:46:39,200 --> 00:46:41,760 그럼 내가 멍청한 짓을 했어, 그리고 내가 생각 때문에 합창 통화 합창을했다 1050 00:46:41,760 --> 00:46:43,550 다른 사람이 어쩌면를 구현하려고했습니다. 1051 00:46:43,550 --> 00:46:45,960 그리고 이제이 아직 컴파일하지 않을 수 있습니다. 1052 00:46:45,960 --> 00:46:48,340 나는 무엇을해야합니까? 1053 00:46:48,340 --> 00:46:49,700 제가 프로토 타입을 필요 기억 해요. 1054 00:46:49,700 --> 00:46:55,520 그래서 여기 공극 합창 (INT i를)를이 필요합니다,. 1055 00:46:55,520 --> 00:46:57,470 >> 그래서 지금, 여기 내려 갔는데 - 1056 00:46:57,470 --> 00:46:59,030 실제로, 그럼 더 큰 창을 사용할 수 있도록. 1057 00:46:59,030 --> 00:47:01,670 가 진행하고 합창을 보자. 1058 00:47:01,670 --> 00:47:06,000 가 진행하고 합창을 보자. 1059 00:47:06,000 --> 00:47:08,302 미확인 declarer 전을 사용하십시오. 1060 00:47:08,302 --> 00:47:09,860 오, 바보 같은 짓이었다. 1061 00:47:09,860 --> 00:47:11,020 우리는 인자를 필요하지 않습니다. 1062 00:47:11,020 --> 00:47:13,680 그냥 이렇게합시다. 1063 00:47:13,680 --> 00:47:14,550 우리는이 방법을 시작했습니다 기원합니다. 1064 00:47:14,550 --> 00:47:16,160 그것은 쓰기 훨씬 쉽게 프로그램이었습니다. 1065 00:47:16,160 --> 00:47:20,100 그래서. 1066 00:47:20,100 --> 00:47:23,870 지금의 내 터미널 창, 재 운영 꽝로 가자. 1067 00:47:23,870 --> 00:47:26,900 여기 우리는 간다. 1068 00:47:26,900 --> 00:47:28,020 그건 정말 빠른 데요. 1069 00:47:28,020 --> 00:47:30,690 무엇 실제로하지만 일이 있었죠? 1070 00:47:30,690 --> 00:47:33,430 음, 지금은 인쇄 행을 추가합니다, 그래서 우리는 볼 수 있습니다. 1071 00:47:33,430 --> 00:47:41,330 그럼 내가 printf한다고 가정 해 보겠습니다, 그럼, 난 여기에있어. 1072 00:47:41,330 --> 00:47:43,470 자, 어떤 변수는, 우리는 그처럼 떠나 없습니다. 1073 00:47:43,470 --> 00:47:44,860 나를 다시 실행합니다 봅시다. 1074 00:47:44,860 --> 00:47:47,940 나를 다시 실행 합창 보자. 1075 00:47:47,940 --> 00:47:51,235 그리고 어서. 1076 00:47:53,880 --> 00:47:55,130 계속 해요. 1077 00:47:57,630 --> 00:47:59,750 옆으로, 왜 아직 추락하지 않았나? 1078 00:47:59,750 --> 00:48:02,050 세분화 잘못 전에 매우 빨리 일어났다. 1079 00:48:02,050 --> 00:48:04,250 [안 들리게] 1080 00:48:04,250 --> 00:48:04,830 데이빗 J. MALAN : 그렇지. 1081 00:48:04,830 --> 00:48:06,350 그래서 인쇄 할 시간이 걸립니다. 1082 00:48:06,350 --> 00:48:08,370 그것은 단지 컴퓨터의 부분에 더 많은 노력이 소요됩니다. 1083 00:48:08,370 --> 00:48:09,550 그리고이 있습니다. 1084 00:48:09,550 --> 00:48:10,620 세분화 잘못이야. 1085 00:48:10,620 --> 00:48:12,140 >> 그렇게 빨리 프로그램이 실행 얼마나납니다. 1086 00:48:12,140 --> 00:48:14,110 당신은 아무것도, 슈퍼 빠른 인쇄를하지 않은 경우. 1087 00:48:14,110 --> 00:48:18,100 어떤 일이 벌어지고 있기 때문에 그러나 우리는 여전히이 분류 오류 있나? 1088 00:48:18,100 --> 00:48:21,310 글쎄, 당신은 컴퓨터의 메모리가 배치되는 방법이 생각해 보면 1089 00:48:21,310 --> 00:48:22,890 메인으로 발생합니다. 1090 00:48:22,890 --> 00:48:23,800 하지만 여기 - 1091 00:48:23,800 --> 00:48:28,670 우선은이 코러스를 호출하고이 합창 전화 할게 있어요. 1092 00:48:28,670 --> 00:48:33,420 난 지금 내 미학을한다면 지금이 그냥 합창 말 것입니다 1093 00:48:33,420 --> 00:48:38,060 코러스, 합창, 합창, 합창, 합창, 합창, 광고 에드. 1094 00:48:38,060 --> 00:48:39,920 그리고 결국, 무​​슨 일이있는 거에요? 1095 00:48:39,920 --> 00:48:46,690 큰 그림 그대로이 경우, 어떻게는 개념적 어떻게됩니까? 1096 00:48:46,690 --> 00:48:48,320 스택 오버런 힙. 1097 00:48:48,320 --> 00:48:52,400 또는 더 나쁜, 당신 만의 텍스트 세그먼트를 포함 모든, 오버런 1098 00:48:52,400 --> 00:48:54,530 프로그램을 대표하는 0과 사랑하는 사람들. 1099 00:48:54,530 --> 00:48:56,690 즉,이 게임은 정말 슈퍼, 슈퍼 좋지 않습니다. 1100 00:48:56,690 --> 00:48:56,860 그래? 1101 00:48:56,860 --> 00:48:58,620 당신의 프로그램은 통제 불능 몰락했다. 1102 00:48:58,620 --> 00:49:02,840 당신은 당신 때문에 바보의 모든 의도 것보다 더 많은 메모리를 사용하는 1103 00:49:02,840 --> 00:49:03,920 이 경우 실수. 1104 00:49:03,920 --> 00:49:08,160 또는이 경우 아주 신중하게 수행 기능 자체를 호출. 1105 00:49:08,160 --> 00:49:09,210 이제이 모든 나쁜 아닙니다. 1106 00:49:09,210 --> 00:49:12,540 자신을 호출하는 함수는 실제로 큰 힘을 가지고 1107 00:49:12,540 --> 00:49:13,700 당신은 올바르게 사용하면. 1108 00:49:13,700 --> 00:49:15,650 나는 제대로 여기를 사용하지 않았습니다. 1109 00:49:15,650 --> 00:49:16,940 >> 그래서이 모든 나쁜 아닙니다. 1110 00:49:16,940 --> 00:49:20,620 하지만 실제로는 자신을 호출하는 절대 멈추지 있다는 사실이 매우 중요한 요소입니다 1111 00:49:20,620 --> 00:49:23,050 여기에이 프로그램의 약점. 1112 00:49:23,050 --> 00:49:25,090 어디 우리는이 모든거야? 1113 00:49:25,090 --> 00:49:26,230 음, 정말 무슨 일 이죠? 1114 00:49:26,230 --> 00:49:30,010 제가 증가 함수를 호출 할 때, 우리가 그 예에서 뭐하고 것처럼 1115 00:49:30,010 --> 00:49:33,290 난 내가 통과 한 같은 값을 1116 00:49:33,290 --> 00:49:35,820 제가 전화 번호 하나의 복사본을 전달합니다. 1117 00:49:35,820 --> 00:49:37,080 따라서 다음과 같은 문제가 발생합니다. 1118 00:49:37,080 --> 00:49:40,390 그러니 증가의 예에 가자. 1119 00:49:40,390 --> 00:49:44,230 그리고 여기이 남자. 1120 00:49:44,230 --> 00:49:46,800 그래서 여기 실제로 일어나고있는 일이지. 1121 00:49:46,800 --> 00:49:50,770 I는 증가했는데, 나는 어떤 pictorially, X에서 통과 할 때 1122 00:49:50,770 --> 00:49:53,660 이곳에서하면이 있습니다 - 1123 00:49:53,660 --> 00:50:00,240 여기 저장된 1의 값이, 나는 실제로 증가를 호출하는 경우, 그 1124 00:50:00,240 --> 00:50:02,680 지금 코러스라고합니다 - 1125 00:50:02,680 --> 00:50:04,010 그래, 그게 날 여기 밀어 내고있어. 1126 00:50:04,010 --> 00:50:06,750 그럼이 증가이라고 불러. 1127 00:50:06,750 --> 00:50:09,420 그리고 우리는이 다음 함수가 될거야 건지 모르겠어요. 1128 00:50:09,420 --> 00:50:14,270 그래서 실제로 일어나는 것이 주요 어딘가에 여기있어, 내가 덩어리가 1129 00:50:14,270 --> 00:50:16,670 숫자 1을 저장되는 메모리. 1130 00:50:16,670 --> 00:50:19,730 제가 증가를 호출하면, 제가 메모리의 또 다른 덩어리를 사용하여, 지금이야 1131 00:50:19,730 --> 00:50:20,840 1의 사본을 갖추고 있습니다. 1132 00:50:20,840 --> 00:50:25,480 그 가치를 증가 할 때,이 2가됩니다 - 끔찍에 기록 1133 00:50:25,480 --> 00:50:26,420 여기에 화면. 1134 00:50:26,420 --> 00:50:30,550 그런데, 어떻게 증가를 반환하자마자 어떻게됩니까? 1135 00:50:30,550 --> 00:50:34,610 이 메모리가 단지 운영 체제로 전달됩니다, 그 의미 모든 1136 00:50:34,610 --> 00:50:37,470 당신은 아무 도움이되지 않습니다 했어요. 1137 00:50:37,470 --> 00:50:43,460 원래 주에 포함 된 사람은 실제로 아직도 있습니다. 1138 00:50:43,460 --> 00:50:44,650 >> 어디 우리는이 같이 갈거야? 1139 00:50:44,650 --> 00:50:49,400 글쎄요, 메모리에이 백업이의 순서를 백업해야한다는 판명 1140 00:50:49,400 --> 00:50:50,940 당신이 물건을 집어 넣는 수있는 바이트 1141 00:50:50,940 --> 00:50:53,760 그리고 우리가 이미 퍼팅이 포함됩니다 무언가를 본 것이 밝혀 1142 00:50:53,760 --> 00:50:55,100 일들이 다시 백업 백업 백업합니다. 1143 00:50:55,100 --> 00:51:00,170 지금 주 하나 일주일에 두번을 기반으로하는 문자열은 무엇입니까? 1144 00:51:00,170 --> 00:51:01,840 그래서 그냥 문자의 집합입니다. 1145 00:51:01,840 --> 00:51:05,290 그럼 당신이 메모리에 번호를 넣을 수처럼 밝혀, 유사 할 수 있습니다 1146 00:51:05,290 --> 00:51:06,900 메모리에 문자를 넣어. 1147 00:51:06,900 --> 00:51:09,810 그리고 일단 우리로 돌아가려면 뒤로를 다시 메모리에 넣어 문자를 시작 1148 00:51:09,810 --> 00:51:12,800 다시, 그것은 루프에 같은 사물의 단순한를 사용하거나 것이 밝혀 1149 00:51:12,800 --> 00:51:14,510 잠시 루프, 우리는 반복 할 수 있습니다 - 1150 00:51:14,510 --> 00:51:17,130 - 문자열에있는 문자를 통해 왼쪽에서 오른쪽으로 1151 00:51:17,130 --> 00:51:20,720 그리고 모두 다른 문자에 넣어 마사지 시작합니다. 1152 00:51:20,720 --> 00:51:25,550 궁극적으로, 우리는을 할 수 있도록 B. B는 C가 될 수 될 수도 1153 00:51:25,550 --> 00:51:28,830 말이되는 영어 문장은 그 각각의 변환 1154 00:51:28,830 --> 00:51:32,440 편지는 우리 컴퓨터의 메모리를 도보 한 번에 하나 왼쪽으로 1155 00:51:32,440 --> 00:51:34,300 실제로 암호화 권리. 1156 00:51:34,300 --> 00:51:36,590 >> 그럼 여기서 우리 다섯 분 휴식을 취하게하고, 우리가 돌​​아 왔을 때, 우리끼리 1157 00:51:36,590 --> 00:51:39,060 정보를 출격이 과정을 시작합니다. 1158 00:51:41,640 --> 00:51:43,180 >> 괜찮아요. 1159 00:51:43,180 --> 00:51:48,440 우리가 어떤 암호에 뛰어 이러한 일들이 배열이라는 전에, 저에게 알려 1160 00:51:48,440 --> 00:51:51,610 모든 질문에 대한 일시 정말 가지 혼란 같은 느낌 때문에 일부 1161 00:51:51,610 --> 00:51:52,230 해당 주제. 1162 00:51:52,230 --> 00:51:53,940 우리가 할 수있는 경우에 그래서 지금의이 해결 보자. 1163 00:51:53,940 --> 00:51:56,480 그래서 우리는 반환 값에 대해 얘기. 1164 00:51:56,480 --> 00:51:58,630 우리는 인수에 대해 얘기. 1165 00:51:58,630 --> 00:52:02,330 그리고 우리는 우리가 주에 돌아 오면되는이 개념에 대해 얘기 1166 00:52:02,330 --> 00:52:07,140 이 스택의 전체 무리로 메모리를 보는, 이리와 1167 00:52:07,140 --> 00:52:08,540 쟁반은, 말하자면합니다. 1168 00:52:08,540 --> 00:52:13,460 올라 아래에서 스택에 넣어됩니다 각 트레이는 나타냄 1169 00:52:13,460 --> 00:52:15,160 함수는 그 현재라는 받고 있어요. 1170 00:52:17,970 --> 00:52:20,300 질문? 1171 00:52:20,300 --> 00:52:22,890 그래서 말인데 - 제가 질문을 해 봅시다. 1172 00:52:22,890 --> 00:52:25,520 난 망치고 유지하지만 지금은 괘 - 있던 모든 소년의 얼굴을 보았다. 1173 00:52:25,520 --> 00:52:27,020 그래서 우리는 그에게 다시 돌아 올꺼예요. 1174 00:52:27,020 --> 00:52:29,700 >> 그럼 내가 여기서 물어 보자. 1175 00:52:29,700 --> 00:52:34,810 내가 그것을 우리의 이전의 Q & A.의 일부 전에 어떤 건지이 다시 단순화하자 1176 00:52:34,810 --> 00:52:41,730 그리고 증가가 열려 괄호가 있다는 사실, INT 수치는 폐쇄 1177 00:52:41,730 --> 00:52:42,260 괄호. 1178 00:52:42,260 --> 00:52:46,370 INT 숫자는 무엇을 나타 냅니까? 1179 00:52:46,370 --> 00:52:47,250 [안 들리게] 1180 00:52:47,250 --> 00:52:47,870 데이빗 J. MALAN : 인수입니다. 1181 00:52:47,870 --> 00:52:50,732 좋아요,하지만 인수가 뭐죠? 1182 00:52:50,732 --> 00:52:51,620 [안 들리게] 1183 00:52:51,620 --> 00:52:52,500 데이빗 J. MALAN : 미안 해요, 뭐죠? 1184 00:52:52,500 --> 00:52:53,150 스피커 3 : 그래서 당신이 통과 일 1185 00:52:53,150 --> 00:52:53,570 데이빗 J. MALAN : 좋습니다. 1186 00:52:53,570 --> 00:52:54,780 그래서 당신이 통과되도록 일 1187 00:52:54,780 --> 00:52:56,560 그리고 더 일반적으로, 그냥 입력입니다. 1188 00:52:56,560 --> 00:52:59,860 당신은 인생의 기능 및 그 기능의 목적을 작성하는 경우 수행하는 것입니다 1189 00:52:59,860 --> 00:53:03,290 그리고 만약 당신이 그것을 사용 좀 다른 모든 시간을위한 단 하나의 방법 1190 00:53:03,290 --> 00:53:07,710 정말 무슨 일이 것은 입력으로 제공하는 것으로 보일 수있을 것입니다 그 사람들 때문에 1191 00:53:07,710 --> 00:53:10,180 그 입력을 할 때마다 다른 것을 수행 할 수 있습니다. 1192 00:53:10,180 --> 00:53:13,590 >> 그래서 함수가 입력을 소요 할 때 두 가지를 지정해야합니다. 1193 00:53:13,590 --> 00:53:17,240 당신은 순수하게 그 입력에 부여 할 이름에 대한을 지정해야합니다 1194 00:53:17,240 --> 00:53:20,790 자신의 편의성 있도록이 기능에 참조 할 수 당신 1195 00:53:20,790 --> 00:53:23,610 I 줄 32 여기했던 것처럼 자신이 작성됩니다. 1196 00:53:23,610 --> 00:53:27,840 하지만 당신은 또한 C는 프로그래밍 언어이기 때문에 유형을 지정해야합니다 1197 00:53:27,840 --> 00:53:28,840 단지 필요로하는 1198 00:53:28,840 --> 00:53:31,810 당신이 변수를 원하는 경우, 당신은 컴퓨터를 얘기해야한다는 것을 1199 00:53:31,810 --> 00:53:32,790 데이터는,이게 입력 1200 00:53:32,790 --> 00:53:35,540 있도록 많은 부분에서는에 얼마나 많은 비트를 알고 1201 00:53:35,540 --> 00:53:37,230 그 변수에 할당합니다. 1202 00:53:37,230 --> 00:53:38,600 벌써 6 될 수 있기 때문에 - 1203 00:53:38,600 --> 00:53:39,990 미안, 여섯되지 않습니다. 1204 00:53:39,990 --> 00:53:41,050 이 16이 될 수 있습니다. 1205 00:53:41,050 --> 00:53:41,630 이 8이 될 수 있습니다. 1206 00:53:41,630 --> 00:53:44,410 심지어 64, 32이 될 수 있습니다. 1207 00:53:44,410 --> 00:53:45,820 그러나 컴퓨터는 알아야합니다. 1208 00:53:45,820 --> 00:53:49,110 이제 왼쪽에있는 INT는 반대로 무엇을 제시 하는가? 1209 00:53:52,825 --> 00:53:53,780 [안 들리게] 1210 00:53:53,780 --> 00:53:54,570 데이빗 J. MALAN : 그게 뭔데? 1211 00:53:54,570 --> 00:53:55,390 [안 들리게] 1212 00:53:55,390 --> 00:53:57,920 더 구체적으로 함수의 종류와, : 데이비드 J. MALAN 1213 00:53:57,920 --> 00:53:59,755 의 출력 유형. 1214 00:53:59,755 --> 00:54:00,220 맞아. 1215 00:54:00,220 --> 00:54:04,220 따라서 괄호 안의 것은 반면의 입력은 어떤 경우 나타냅니다 1216 00:54:04,220 --> 00:54:06,640 왼쪽의 물건은 출력을 나타냅니다. 1217 00:54:06,640 --> 00:54:10,560 이 경우에는 증가는 분명히 정수를 반환합니다. 1218 00:54:10,560 --> 00:54:14,590 그리고 정수는이 함수의 반환 유형입니다. 1219 00:54:14,590 --> 00:54:16,090 >> 그게 무슨을 반환한다는 것은 무슨 뜻입니까? 1220 00:54:16,090 --> 00:54:19,810 그대로, 당신은 키워드 반환을 사용합니다. 1221 00:54:19,810 --> 00:54:24,640 그리고 만약 당신이 키워드의 오른쪽에 재하는 것은 경우 1222 00:54:24,640 --> 00:54:28,340 정수, 그리고 우리가 약속 한 것과 실제로 일치합니다. 1223 00:54:28,340 --> 00:54:31,110 당신은 이런 일을 할 수 없습니다 - 1224 00:54:31,110 --> 00:54:32,280 안녕하세요, 세계 - 1225 00:54:32,280 --> 00:54:33,500 그 문자열이기 때문이다. 1226 00:54:33,500 --> 00:54:35,440 분명히이 정수가 아닙니다. 1227 00:54:35,440 --> 00:54:40,450 그래서 짧은에, 부담이 우리를 정말이야 프로그래머는, 같은 특정 할 수 1228 00:54:40,450 --> 00:54:44,730 우리가 뭘 돌려하고 실제로 그것을 반환에 대한 이동합니다. 1229 00:54:44,730 --> 00:54:49,030 그리고 상황이 있어서요가 더 분명하게 이해할 수 있도록 - 1230 00:54:49,030 --> 00:54:50,080 거기에 그는 다시입니다. 1231 00:54:50,080 --> 00:54:51,060 컨텍스트 - 1232 00:54:51,060 --> 00:54:52,830 놀랍게도는 순간에오고 있습니다. 1233 00:54:52,830 --> 00:54:57,720 여기 문맥 지금, 다시 컴퓨터의 메모리는 것입니다 1234 00:54:57,720 --> 00:54:59,070 기가바이트, 이기가바이트, 뭐든간에. 1235 00:54:59,070 --> 00:54:59,630 어쩌면 더. 1236 00:54:59,630 --> 00:55:00,540 아마 덜. 1237 00:55:00,540 --> 00:55:03,750 그러나 컴퓨터가 다른 섹션을 갖는으로 보는. 1238 00:55:03,750 --> 00:55:04,860 무언가가 거기 간다. 1239 00:55:04,860 --> 00:55:06,020 다른 무언가가 거기 간다. 1240 00:55:06,020 --> 00:55:07,540 다른 물건은 중간에갑니다. 1241 00:55:07,540 --> 00:55:09,300 그리고 오늘, 우리가이 얘길 시작합니다. 1242 00:55:09,300 --> 00:55:11,130 >> 그러나 우리는이 시간이 지남에 돌아 가면됩니다. 1243 00:55:11,130 --> 00:55:15,000 지금은 우리가 정말 신경 메모리의 유일한 조각의 텍스트 세그먼트입니다 1244 00:55:15,000 --> 00:55:17,160 단지 0과 사랑하는 사람들을 나타냅니다 때문 1245 00:55:17,160 --> 00:55:18,460 그 꽝이 출력되었습니다. 1246 00:55:18,460 --> 00:55:21,570 그래서 당신은 a.out과 같은 키보드에서 명령을 실행하거나 할 때 더블 1247 00:55:21,570 --> 00:55:25,350 맥 OS 또는 Windows에있는 아이콘을 클릭하면 프로그램이 하드에서로드있어 1248 00:55:25,350 --> 00:55:26,930 RAM에 운전. 1249 00:55:26,930 --> 00:55:30,850 그리고 그것은 말하자면, 컴퓨터의 RAM의 상단에 plopped있어. 1250 00:55:30,850 --> 00:55:35,470 프로그램이 시작대로 한편, 실행하고 메인이 관여 하죠 1251 00:55:35,470 --> 00:55:39,240 프로그램이 작성 또는 프로그램을 Microsoft 또는 애플 썼다는의 1252 00:55:39,240 --> 00:55:42,930 지역 변수는 컴퓨터의 메모리의 하단에 아래에 결국. 1253 00:55:42,930 --> 00:55:46,490 메인이 다른 함수를 호출한다면 그 자체가 변수 나이 있다는 1254 00:55:46,490 --> 00:55:48,340 인수는, 사람들은 위 끝. 1255 00:55:48,340 --> 00:55:50,670 그 함수가 뭔가를 호출한다면, 그들은 그 위에 결국 1256 00:55:50,670 --> 00:55:51,840 그 위에, 그 위에. 1257 00:55:51,840 --> 00:55:56,100 그리고 한 번만 함수는 이렇게 트레이 스택을 수행 실행 완료 1258 00:55:56,100 --> 00:55:58,320 말하자면, 낮은 낮은 얻을 시작합니다. 1259 00:55:58,320 --> 00:56:03,370 그리고 여러분이 큐브 호출 할 때 왜 다음, 요약, 설명 뭐야 - 1260 00:56:03,370 --> 00:56:04,660 또는 당신은 증가를 호출 - 1261 00:56:04,660 --> 00:56:06,490 당신은 가치의 사본을 전달하고 있습니다. 1262 00:56:06,490 --> 00:56:09,840 그리고 그 pictorially 의미하는 것은 그대로를 작성하는 것입니다 1263 00:56:09,840 --> 00:56:14,540 메모리의 다른 부분에 1 번, 변화 그 경우 1로 2, 1264 00:56:14,540 --> 00:56:15,360 증가 - 1265 00:56:15,360 --> 00:56:17,450 또는 8, 큐브의 경우 - 1266 00:56:17,450 --> 00:56:21,450 다음 증가 나 큐브처럼 곧 그 메모리를 열어 1267 00:56:21,450 --> 00:56:23,410 기능으로 돌아갑니다. 1268 00:56:23,410 --> 00:56:24,267 >> 질문. 1269 00:56:24,267 --> 00:56:25,517 [안 들리게] 1270 00:56:28,090 --> 00:56:29,970 데이빗 J. MALAN : - 전역 변수가 어떤에 저장됩니다 1271 00:56:29,970 --> 00:56:32,960 현재 초기화 데이터 또는 초기화되지 않은 데이터를했다. 1272 00:56:32,960 --> 00:56:35,900 당신이 전역 변수가있을 경우 차이가 존재, 당신은 그것을 지정 1273 00:56:35,900 --> 00:56:39,530 즉시 서명 동일있는 값은, 거기 맨 위에 끝납니다. 1274 00:56:39,530 --> 00:56:43,390 방금 값이없는 INT X 세미콜론을 말한다면, 그것은 약간 마무리 1275 00:56:43,390 --> 00:56:46,670 단순히 대회의 RAM에서 낮은. 1276 00:56:46,670 --> 00:56:49,308 다른 질문입니다. 1277 00:56:49,308 --> 00:56:49,750 괜찮아요. 1278 00:56:49,750 --> 00:56:53,040 >> 우리가 할 수있는 일이있는 더 강력한 생길 그래서이 사진은 다시 올 것이다 1279 00:56:53,040 --> 00:56:53,830 컴퓨터. 1280 00:56:53,830 --> 00:56:58,790 하지만 지금은 암호화의 특정 유형에 대한 간략한 소개를 두자 1281 00:56:58,790 --> 00:57:01,910 세계의 모든 문제가 해결되지 않지만 해결합니까 암호화 1282 00:57:01,910 --> 00:57:02,480 그들 중 일부. 1283 00:57:02,480 --> 00:57:06,090 여기이 경우, 우리는 비밀 키 암호화라는 게있어. 1284 00:57:06,090 --> 00:57:10,430 그리고 비밀 키 암호화는 이름에서 알 수 있듯이, 보안을 유래 1285 00:57:10,430 --> 00:57:11,330 비밀의. 1286 00:57:11,330 --> 00:57:14,720 당신이 초등학교로 돌아가고, 경우에 따라서 예를 들어, 당신은 합격하는 1287 00:57:14,720 --> 00:57:18,040 당신이에 깔아 뭉 갠다 소년이나 소녀에게 비밀 연애 편지 - 만약 1288 00:57:18,040 --> 00:57:20,820 청중을 통해 그를 전달하고 싶어, 당신은 아마 쓸 것 1289 00:57:20,820 --> 00:57:24,120 이러한 영어 노트간에 모국어는, 오히려, 당신 1290 00:57:24,120 --> 00:57:25,800 를 암호화 할 수 있습니다. 1291 00:57:25,800 --> 00:57:27,820 아니면 요즘 그들에게 문자 메시지를 보내 수 있습니다. 1292 00:57:27,820 --> 00:57:30,310 하지만 당신은 실제로 교실을 통해 그들에게 메모를 전달 할 수 있습니다. 1293 00:57:30,310 --> 00:57:33,820 그리고 이러한 방식으로, 안전하게이 작업을 수행하는 귀하의 친구와 선생님 1294 00:57:33,820 --> 00:57:36,820 당신이 글을하는지 모르겠어, 당신은 상당히 간단 마련 할 수 1295 00:57:36,820 --> 00:57:37,800 알고리즘 - 1296 00:57:37,800 --> 00:57:39,290 당신이 될 수 있지만 젊은 - 1297 00:57:39,290 --> 00:57:40,780 그냥 단어를 출격시켜야합니다. 1298 00:57:40,780 --> 00:57:44,390 대신를 작성하는 그래서 대신에 B의 B.를 작성 할 수, 당신은 쓸 수 있습니다 1299 00:57:44,390 --> 00:57:46,670 C. 대신 C, 당신은 D를 작성, 등등 수 있습니다. 1300 00:57:46,670 --> 00:57:50,020 또는 문자보다 정교한 번역을 마련 할 수 1301 00:57:50,020 --> 00:57:51,300 다른 글자합니다. 1302 00:57:51,300 --> 00:57:55,440 그러나 캐치가이 메모를 보내는 누구에 아들, 딸 것은에 필요 1303 00:57:55,440 --> 00:57:56,850 뭔가를 알고. 1304 00:57:56,850 --> 00:57:59,620 어떤 무엇, 분명히? 1305 00:57:59,620 --> 00:58:01,400 당신의 비밀이 무엇인지,처럼. 1306 00:58:01,400 --> 00:58:04,620 마찬가지로으로하고 학사 C를과 DS 간의 매핑는 무엇인가? 1307 00:58:04,620 --> 00:58:08,780 그냥 때까지 계속 문자 각각에, 말하자면, 하나를 추가하는 1308 00:58:08,780 --> 00:58:09,730 B를, B는 C에? 1309 00:58:09,730 --> 00:58:11,350 그것보다 더 복잡한가요? 1310 00:58:11,350 --> 00:58:16,450 따라서 당신과 당신의 호감이 비밀 정보를 가지고해야합니다. 1311 00:58:16,450 --> 00:58:18,170 하지만 여기 캐치-22의 종류가 있습니다. 1312 00:58:18,170 --> 00:58:20,760 이 처음 인 경우는 통해 사랑의 편지를 보낼 1313 00:58:20,760 --> 00:58:25,590 클래스, 어떻게 그 친구 또는 여자가 비밀도 무엇 때문인지 알고가는거야? 1314 00:58:25,590 --> 00:58:28,450 따라서 비밀 키 암호는 모든 세계의 문제를 해결하지 않습니다. 1315 00:58:28,450 --> 00:58:30,490 그리고 우리가 향해에 돌아 오면 한 관계는 실제로이 1316 00:58:30,490 --> 00:58:31,370 학기의 끝. 1317 00:58:31,370 --> 00:58:35,970 >> 마찬가지로, 우리 중 어떤 아마도 적 전송되지가 - 1318 00:58:35,970 --> 00:58:39,453 마찬가지로, 우리의 대부분에서, 예를 들어, 사용할 수있는 사람을 알고하지 않습니다 1319 00:58:39,453 --> 00:58:40,300 Amazon.com. 1320 00:58:40,300 --> 00:58:43,130 아직, 우리 중 많은 사람들은 아마 Amazon.com에서 물건을 구입했습니다. 1321 00:58:43,130 --> 00:58:45,670 그리고 우리는 가정을 가르쳐 왔던이 전자 상거래 1322 00:58:45,670 --> 00:58:47,060 거래는 안전합니다. 1323 00:58:47,060 --> 00:58:47,210 그래? 1324 00:58:47,210 --> 00:58:49,310 URL은 아마도 https를 말합니다. 1325 00:58:49,310 --> 00:58:51,590 멍청한 자물쇠 아이콘이 어딘가에 어쩌면있다. 1326 00:58:51,590 --> 00:58:54,680 귀하의 신용 카드 정보를 확보 암호화 어떤 종류의가 1327 00:58:54,680 --> 00:58:56,980 귀하와 Amazon.com 사이에 있습니다. 1328 00:58:56,980 --> 00:59:00,410 암호화 아직 몇 비밀을 파악하고, 관련 있다면 아직 난 아냐 1329 00:59:00,410 --> 00:59:03,330 아마존에서 아는 사람, 내가 확실히 어떤 종류의를 준비 못 했어 1330 00:59:03,330 --> 00:59:07,350 아마존에서 사람과 비밀은, 어떻게 내 컴퓨터 또는 내 브라우저에서 이런 짓을하는 거지? 1331 00:59:07,350 --> 00:59:10,100 해결하는 모두 암호화 기타 유형의가 있다는 사실을 알아 음, 변 1332 00:59:10,100 --> 00:59:10,740 그 문제가 발생했습니다. 1333 00:59:10,740 --> 00:59:13,610 그러나 오늘, 우리는 당신이 준비 할 수있는 간단한 하나의에 초점을합니다 1334 00:59:13,610 --> 00:59:18,480 플러스 1로와 B들 사이 매핑과 같은 몇 가지 비밀을 알고 전진. 1335 00:59:18,480 --> 00:59:20,710 >> 그리고 암호화 과정은 일반적으로이 포함됩니다. 1336 00:59:20,710 --> 00:59:23,550 당신은 왼쪽에 여기 묘사 된 일부 일반 텍스트를 수 있습니다. 1337 00:59:23,550 --> 00:59:26,260 당신은 알고리즘 또는 프로 시저의 어떤 통해 실행 1338 00:59:26,260 --> 00:59:27,670 그 암호화를위한. 1339 00:59:27,670 --> 00:59:31,390 어쩌면 그건 그저 A는 B이 마치, B는 C.됩니다 그리고 당신은이 생깁니다 1340 00:59:31,390 --> 00:59:32,260 텍스트를 암호화. 1341 00:59:32,260 --> 00:59:36,450 한편, 한 번 초대를 수락하거나 거절은 그 비밀 노트를 받고, 그 또는 그녀가에 다음이 1342 00:59:36,450 --> 00:59:39,950 일반적으로 얻을 수 있도록 그 알고리즘을 전환하여 해독 1343 00:59:39,950 --> 00:59:41,640 일반 텍스트를 백업합니다. 1344 00:59:41,640 --> 00:59:43,860 이제이 물리적 화신이 있습니다. 1345 00:59:43,860 --> 00:59:46,720 예를 들어,이 작은 비밀 디코더 링입니다. 1346 00:59:46,720 --> 00:59:50,060 그리고이 두 개의 다이얼이 있다는 의미에서 링입니다. 1347 00:59:50,060 --> 00:59:53,630 이 물건의 외부 주변에서 Z까지 문자가가 1348 00:59:53,630 --> 00:59:55,110 그들은 무작위 순서가 있지만. 1349 00:59:55,110 --> 00:59:58,410 그리고 안쪽에,이있는 등 그 어떤 숫자가 실제로있다 1350 00:59:58,410 --> 01:00:02,940 링, 당신은 가지 줄 수 있도록 외부가 아닌 내부를 중지 할 수 있습니다 1351 01:00:02,940 --> 01:00:04,110 문자와 숫자. 1352 01:00:04,110 --> 01:00:08,290 그리고 당신은 볼 것 클립 - 당신 24 / 7 본 몇 가지 중 1353 01:00:08,290 --> 01:00:11,120 크리스마스 스토리라는 영화에서 크리스마스 시즌에 걸쳐 다양하게 준비되어 있습니다. 1354 01:00:11,120 --> 01:00:16,050 당신은 그 작은 Ralphie 무엇 작은 고아를 알아낼 수 있도록 자했습니다 볼 수 있습니다 1355 01:00:16,050 --> 01:00:19,810 애니의 비밀 메시지가에서, 내 생각, 전달 된 그에게했다 1356 01:00:19,810 --> 01:00:22,810 시리얼 박스에 숫자 메시지를 형성하고 있습니다. 1357 01:00:22,810 --> 01:00:26,760 그리고 당신은 방문한 모든 작은 카드를 축적했다 1358 01:00:26,760 --> 01:00:27,480 시리얼 상자 인치 1359 01:00:27,480 --> 01:00:28,320 당신이 그들을 들여 보내했습니다 1360 01:00:28,320 --> 01:00:31,060 당신은 당신이 마침내 파악 할 수 있도록 비밀 디코더 링을 다시했습니다 1361 01:00:31,060 --> 01:00:34,190 매핑이 문자와 숫자 사이에 무엇인지, 1362 01:00:34,190 --> 01:00:35,420 또는 문자와 문자. 1363 01:00:35,420 --> 01:00:39,790 그래서 pset 2 동기를 부여하기 위해 당신에게 크리스마스 스토리에서 짧은 클립을 제공하고 1364 01:00:39,790 --> 01:00:42,340 배열의 순간에서의 토론,. 1365 01:00:42,340 --> 01:00:43,773 그래서 여기에 우리가 Ralphie 있습니다. 1366 01:00:43,773 --> 01:00:44,126 >> [동영상 재생] 1367 01:00:44,126 --> 01:00:47,470 - 예정은 랄프 파커가 본인 임명하는 모든과 잡다한에게 알려진 1368 01:00:47,470 --> 01:00:50,690 리틀 고아 애니 비밀 서클의 회원하며 모든 권리가 1369 01:00:50,690 --> 01:00:53,500 명예와 혜택은 이에 발생. 1370 01:00:53,500 --> 01:00:56,040 , 리틀 고아 애니 - 체결. 1371 01:00:56,040 --> 01:00:58,730 피에르 앙드레, Countersigned! 1372 01:00:58,730 --> 01:01:00,150 잉크에! 1373 01:01:00,150 --> 01:01:02,910 이미 9 살에서 영예 및 혜택. 1374 01:01:09,970 --> 01:01:10,730 이리와, 좀 까. 1375 01:01:10,730 --> 01:01:15,000 나는 밀수업자와 해적에 대한 모든 재즈 필요하지 않습니다. 1376 01:01:15,000 --> 01:01:17,624 블랙의 결론 모험을 위해, 내일 밤에 들어 1377 01:01:17,624 --> 01:01:19,710 해적 선박. 1378 01:01:19,710 --> 01:01:23,380 지금 당신 회원 애니의 비밀 메시지에 대한 시간 1379 01:01:23,380 --> 01:01:25,670 비밀 서클의. 1380 01:01:25,670 --> 01:01:30,260 기억 얘들 아, 애니의 비밀 서클 회원 만 해독 할 수 있습니다 1381 01:01:30,260 --> 01:01:31,660 애니의 비밀 메시지가 나타납니다. 1382 01:01:31,660 --> 01:01:36,230 단, 애니는에 따라 있습니다. 1383 01:01:36,230 --> 01:01:38,720 B2에 핀을 설정합니다. 1384 01:01:38,720 --> 01:01:41,040 다음은 메시지입니다. 1385 01:01:41,040 --> 01:01:42,470 12, 11 - 1386 01:01:42,470 --> 01:01:46,000 - 내가 처음으로 비밀 회의입니다. 1387 01:01:46,000 --> 01:01:49,440 -14, 11, 18, 16 - 1388 01:01:49,440 --> 01:01:51,700 - 피에르 좋은 음성 오늘 밤에했다. 1389 01:01:51,700 --> 01:01:54,890 오늘 밤의 메시지가 정말 중요하다고 말할 수 있습니다. 1390 01:01:54,890 --> 01:01:56,750 -3, 25. 1391 01:01:56,750 --> 01:01:58,590 그 애니 자신의 메시지예요. 1392 01:01:58,590 --> 01:01:59,840 단, 누구에게도 말하지 마세요. 1393 01:02:04,570 --> 01:02:08,750 -90 초 후에, 나는 집에있는 유일한 방에있어 위치 별거 소년 1394 01:02:08,750 --> 01:02:12,980 개인 정보 보호 및 해독에 앉아 수 있습니다. 1395 01:02:12,980 --> 01:02:17,130 아하, B. 난 다음에 갔었 어. 1396 01:02:17,130 --> 01:02:20,330 E.는 첫 번째 단어는있을 수 있습니다. 1397 01:02:20,330 --> 01:02:22,670 S. 지금은 쉽게오고 있었다. 1398 01:02:22,670 --> 01:02:24,590 U. 1399 01:02:24,590 --> 01:02:26,510 - 오, Ralphie을에 있습니다. 1400 01:02:26,510 --> 01:02:28,430 나는 가야 해. 1401 01:02:28,430 --> 01:02:30,350 - 내가, 바로 mA합니다. 1402 01:02:30,350 --> 01:02:33,720 윙 소리 나다 - 이런. 1403 01:02:33,720 --> 01:02:38,270 -T, O.는해야합니다. 1404 01:02:38,270 --> 01:02:40,000 어떻게해야? 1405 01:02:40,000 --> 01:02:42,105 말하고자하는 리틀 고아 애니 무엇입니까? 1406 01:02:42,105 --> 01:02:43,095 어떻게해야? 1407 01:02:43,095 --> 01:02:43,590 - Ralphie! 1408 01:02:43,590 --> 01:02:44,580 랜디 가야 해있다. 1409 01:02:44,580 --> 01:02:45,570 당신은 나와 줄래? 1410 01:02:45,570 --> 01:02:46,560 - 알았어, 엄마. 1411 01:02:46,560 --> 01:02:48,540 바로 나올거야. 1412 01:02:48,540 --> 01:02:50,580 - 지금은 점점 가까워지고되었습니다. 1413 01:02:50,580 --> 01:02:52,550 긴장은 끔찍했습니다. 1414 01:02:52,550 --> 01:02:53,355 그게 뭐죠? 1415 01:02:53,355 --> 01:02:56,315 행성의 운명은 경각에 응답하지 않을 수 있습니다. 1416 01:02:56,315 --> 01:02:56,790 - Ralphie! 1417 01:02:56,790 --> 01:02:59,165 랜디는 가야 돼있어. 1418 01:02:59,165 --> 01:03:02,310 - 내가 환호 네. 1419 01:03:02,310 --> 01:03:04,000 - 이런, 거의 다. 1420 01:03:04,000 --> 01:03:05,180 내 손가락이 날아 갔다. 1421 01:03:05,180 --> 01:03:07,150 내 마음은 강철 덫이었다. 1422 01:03:07,150 --> 01:03:08,790 모든 기공은 진동. 1423 01:03:08,790 --> 01:03:10,040 거의 분명했다. 1424 01:03:10,040 --> 01:03:13,400 아, 그래, 그래, 그래. 1425 01:03:13,400 --> 01:03:18,960 당신의 Ovaltine을 마실해야 -합니다. 1426 01:03:18,960 --> 01:03:20,210 Ovaltine? 1427 01:03:24,010 --> 01:03:25,260 싸구려 상업? 1428 01:03:28,200 --> 01:03:29,640 개자식. 1429 01:03:29,640 --> 01:03:33,340 [END 비디오 재생] 1430 01:03:33,340 --> 01:03:36,040 >> 데이빗 J. MALAN : 그래서 우리가 암호화되어 있습니다. 1431 01:03:36,040 --> 01:03:39,670 그래서 우리는 방법을 컴퓨터에 구현에 대한 이동하거나 수 1432 01:03:39,670 --> 01:03:40,950 이런 상황을 나타내는? 1433 01:03:40,950 --> 01:03:44,430 음, 우리는 좀 더 유연하게보다 자신을 표현하는 방법이 필요 1434 01:03:44,430 --> 01:03:46,420 우리 변수는 지금까지 수 있습니다. 1435 01:03:46,420 --> 01:03:47,370 우리는 ints를 했어. 1436 01:03:47,370 --> 01:03:48,380 우리는 문자를 했어. 1437 01:03:48,380 --> 01:03:50,790 우리는 수레와 복식과 몇 가지 다른 했어. 1438 01:03:50,790 --> 01:03:55,050 하지만 그 정말 우리를 허용하지 않습니다 메모리의 개별 조각 1439 01:03:55,050 --> 01:03:58,010 단어와 문장 및 구문 등을 표현한다. 1440 01:03:58,010 --> 01:04:00,200 사실, 그런 것을 문자열을 호출했습니다. 1441 01:04:00,200 --> 01:04:03,650 하지만이 정말 CS50에 불과 단순화 약속 1442 01:04:03,650 --> 01:04:07,020 우리가 돌​​아 껍질에 장래한다는 라이브러리입니다. 1443 01:04:07,020 --> 01:04:08,970 >> 그리고 여기에을 수행하는 시작하자. 1444 01:04:08,970 --> 01:04:11,130 내가 가서 파일을 열어 보자 - 1445 01:04:11,130 --> 01:04:13,770 이러한 파일의 평소 온라인으로 사용할 수 있습니다 - 1446 01:04:13,770 --> 01:04:19,120 문자열 관련이없는 문제를 해결할 array.c라고하지만, 그 바탕으로 그림을 1447 01:04:19,120 --> 01:04:23,040 우리가 뭔가를 사용하는 방법에 대한 여기 그림은 배열을했다. 1448 01:04:23,040 --> 01:04:25,530 배열은 데이터 형식입니다. 1449 01:04:25,530 --> 01:04:31,320 그것은 종류의 변수의 종류, 야, 거기 여러 개의 작은 데이터 형식을가 1450 01:04:31,320 --> 01:04:34,150 그 안에 돌아 백업 백업 백업합니다. 1451 01:04:34,150 --> 01:04:37,700 따라서 예를 들어, 우리는 당신에게 제공하는 작은 프로그램을 작성하려는 경우 1452 01:04:37,700 --> 01:04:42,110 퀴즈, 당신은 어쩌면 아주 쉽게 두가 50 같은 코스 평균 퀴즈 1453 01:04:42,110 --> 01:04:45,170 이 프로그램을 작성 - 심지어 지난 주 재료의 일부를 기반으로 - 1454 01:04:45,170 --> 01:04:47,770 GetInt와 변수 몇를 사용하여. 1455 01:04:47,770 --> 01:04:51,920 INT quiz1, INT quiz2, 그것은 매우 간단입니다. 1456 01:04:51,920 --> 01:04:55,930 그것은을 요구하는 프로그램을 구현하는, 어쩌면 코드, 최대 20 줄의 10 살 인데요 1457 01:04:55,930 --> 01:05:01,170 후 두 퀴즈 점수 및 사용자를 추가하여 평균을 계산 1458 01:05:01,170 --> 01:05:03,850 함께, 두에 의해 분할 한 다음 결과를 인쇄합니다. 1459 01:05:03,850 --> 01:05:06,380 우리는 아마도 이후에 아주 쉽게 지금 그렇게 할 수 1460 01:05:06,380 --> 01:05:07,510 분의 일부 번호입니다. 1461 01:05:07,510 --> 01:05:11,005 >> 그러나 문제는 50 퀴즈 또는 네 세 있다고 가정 그입니다. 1462 01:05:11,005 --> 01:05:13,510 니가 가진 클래스에 동일한 프로그램을 사용하고 싶다고 가정 해 봅시다 1463 01:05:13,510 --> 01:05:14,850 매주 퀴즈. 1464 01:05:14,850 --> 01:05:16,610 매주 퀴즈 한 클래스에 대해 생각해보십시오. 1465 01:05:16,610 --> 01:05:20,610 한 학기에 16 정도 주 정도가 있으면 이제 16 변수를 가지고 - 1466 01:05:20,610 --> 01:05:24,270 INT quiz1, INT quiz2, INT quiz3, 정수 quiz4. 1467 01:05:24,270 --> 01:05:27,560 이 중복을보십시오 즉시이 복사 및 붙여 넣기 1468 01:05:27,560 --> 01:05:31,390 코드, 당신이 더 좋은 방법이 있었으면되기 시작한다. 1469 01:05:31,390 --> 01:05:33,930 그리고 고맙게도 때문에 배열의이 있습니다. 1470 01:05:33,930 --> 01:05:34,980 그래서 한번 해보자 구. 1471 01:05:34,980 --> 01:05:38,430 첫째, 내가 우리가 지금까지 사용하지 한 매우 단순한 일을 소개하겠습니다 1472 01:05:38,430 --> 01:05:40,140 하지만 코드에서 종종 볼 수 있습니다. 1473 01:05:40,140 --> 01:05:42,360 이것은 일반적으로 상수라는거야. 1474 01:05:42,360 --> 01:05:45,790 따라서이 값이 변경 없다는 의미에서 상수입니다. 1475 01:05:45,790 --> 01:05:49,210 상수를 만드는 인간의 대회는 모든 자본을 사용하는 것입니다 1476 01:05:49,210 --> 01:05:51,940 정말 코드에서 서 너무하는 편지. 1477 01:05:51,940 --> 01:05:55,960 그리고 당신은 C에서 사용하는 특별한 키워드는 # 정의되어 있습니다. 1478 01:05:55,960 --> 01:06:00,250 당신이 그렇게 말하면 # 그 다음에, 당신이 사용하고자하는 단어를 공간을 정의 1479 01:06:00,250 --> 01:06:03,260 다음 상수의 이름, 상수의 값입니다. 1480 01:06:03,260 --> 01:06:06,180 통지 그래서이 변수에 무언가를 할당 다릅니다. 1481 01:06:06,180 --> 01:06:07,020 등호가 없습니다. 1482 01:06:07,020 --> 01:06:08,240 더 세미콜론가 없습니다. 1483 01:06:08,240 --> 01:06:11,410 이것은 일반적으로 선행 처리기 지시어로 알려진 곳입니다,하지만에 대한 자세한 1484 01:06:11,410 --> 01:06:12,210 그 또 다른 시간. 1485 01:06:12,210 --> 01:06:18,540 >> 지금이라는 변함 값이 누구의 실제를 퀴즈 생성 1486 01:06:18,540 --> 01:06:19,940 숫자 값은 2입니다. 1487 01:06:19,940 --> 01:06:24,020 그럼 어디에서나이 파일을 통해 퀴즈, 퀴즈, 퀴즈 참조 그건 1488 01:06:24,020 --> 01:06:25,410 단지 숫자 2. 1489 01:06:25,410 --> 01:06:28,100 지금 주요 보면 지금, 우리의 방법이 작품을 보자. 1490 01:06:28,100 --> 01:06:29,500 처음에는 조금 이상한 보입니다. 1491 01:06:29,500 --> 01:06:31,340 그러나 일주일에에서 모든 것들입니다. 1492 01:06:31,340 --> 01:06:32,710 등급의 사용자에게 문의하십시오. 1493 01:06:32,710 --> 01:06:33,630 우리가 어떻게이 작업을 수행합니까? 1494 01:06:33,630 --> 01:06:35,470 음, 라인 22 - 1495 01:06:35,470 --> 01:06:37,210 이게 정말 육즙이 부분입니다 - 1496 01:06:37,210 --> 01:06:40,960 나는 부동하지만, 단 하나의 수레를 선언합니다. 1497 01:06:40,960 --> 01:06:44,620 나는 오히려 부동 소수점 값의 배열을 선언거야. 1498 01:06:44,620 --> 01:06:49,100 그 변수는 여기에 암시로, 성적이라고 할 예정이다. 1499 01:06:49,100 --> 01:06:53,080 그러나 새 구문의 유일한 조각은 다음 사실이 대괄호 아르 1500 01:06:53,080 --> 01:06:59,350 나는 부동 등급 다음엔 오픈 브라켓과 번호를 말 한. 1501 01:06:59,350 --> 01:07:02,460 이 상수 인 경우 우리가 이런 짓을 같은 통지서,이 단지이다. 1502 01:07:02,460 --> 01:07:06,890 이 어이 컴퓨터가, 나 두 수레를 제공하고, 전화를 총체적으로 보자 의미 1503 01:07:06,890 --> 01:07:08,220 그 성적. 1504 01:07:08,220 --> 01:07:11,920 이 같은 훨씬 더 지루한 과정에 대비하고 있습니다. 1505 01:07:11,920 --> 01:07:15,850 , grade1 띄워 grade2 떠, 등등. 1506 01:07:15,850 --> 01:07:20,010 따라서 배열은 우리가이 아이디어를 구현 할 수 있지만, 훨씬 덜 messily에 1507 01:07:20,010 --> 01:07:24,630 우리가 말 대신 16 16 코드 한 줄을 쓸 수 있도록하는 방법 1508 01:07:24,630 --> 01:07:25,740 주 학기. 1509 01:07:25,740 --> 01:07:29,950 지금 이것에 대해 생각하면 그래서에 하드 코딩이 싶지 않았어요 1510 01:07:29,950 --> 01:07:34,160 논리적 - 3 CS50 변경 대신 퀴즈 내년 같아요. 1511 01:07:34,160 --> 01:07:35,510 그리고 여기에 숫자 2를했​​다. 1512 01:07:35,510 --> 01:07:36,600 여기서 숫자 2를했​​다. 1513 01:07:36,600 --> 01:07:37,580 여기서 숫자 2를했​​다. 1514 01:07:37,580 --> 01:07:38,560 여기서 숫자 2를했​​다. 1515 01:07:38,560 --> 01:07:43,180 그것은이 실수 할 수 있고 실수로 변경하는 것은 매우 지루하고 아주 쉽게됩니다 1516 01:07:43,180 --> 01:07:47,690 한 3 값과 (2)의 다른 가치를보고 싶어요. 1517 01:07:47,690 --> 01:07:52,460 그래서이 거리에 대신 추상적으로 이동이 상수를 사용거야, 그와 같은 1518 01:07:52,460 --> 01:07:54,120 이름은 결코 변경 사항을 제안합니다. 1519 01:07:54,120 --> 01:07:57,710 그리고 지금, 우리는 다른 권한이 있는지 여부에 상관없이이 올해 또는 다음, I 퀴즈 없습니다 1520 01:07:57,710 --> 01:08:01,210 그냥 상단에있는 여기, 한 곳에서 변경해야합니다. 1521 01:08:01,210 --> 01:08:02,720 >> 그래서 그런 상수는 모든 작업이 완료되었습니다. 1522 01:08:02,720 --> 01:08:08,680 한편, 새로운 개념 기능은 배열의 것입니다. 1523 01:08:08,680 --> 01:08:14,660 따라서 대괄호 나 한테 많은 수레를 포기하고 총체적으로 저를 할 수 있습니다 1524 01:08:14,660 --> 01:08:16,630 여기 성적 전화하십시오. 1525 01:08:16,630 --> 01:08:17,990 그래서 지금 내가해야 할 일을 살펴 보자. 1526 01:08:17,990 --> 01:08:20,359 여기에 라인 24에서 루프의 시작 부분입니다. 1527 01:08:20,359 --> 01:08:22,260 이건 정말 별건입니다. 1528 01:08:22,260 --> 01:08:25,060 단지 퀴즈를 사용하는 대신 하드 코딩 된 숫자있어. 1529 01:08:25,060 --> 01:08:27,790 그러나 지난 주부터이 지적 다른 건 아무것도 없습니다. 1530 01:08:27,790 --> 01:08:29,040 이건 그냥 printf 있습니다. 1531 01:08:29,040 --> 01:08:35,490 따라서 printf ( "% d 개 중 퀴즈 번호 % d 개") 난 그저 내가 퀴즈 제공을 인쇄 할 때문에 1532 01:08:35,490 --> 01:08:38,050 두 번째 중 하나를 다음 두 둘. 1533 01:08:38,050 --> 01:08:39,850 그래서이 순전히 미적 것입니다. 1534 01:08:39,850 --> 01:08:42,500 그러나 흥미로운 부분은 이제 라인 27에 있습니다. 1535 01:08:42,500 --> 01:08:48,310 부동 소수점과 두 자리 표시 자 중 하나를 입력하기 위하여 1536 01:08:48,310 --> 01:08:51,029 값을 다시 대괄호를 사용합니다. 1537 01:08:51,029 --> 01:08:55,620 루프이 내가 동등 시작 되었기 때문에이 경우는 제가을 사용 1538 01:08:55,620 --> 01:08:57,560 분명 어떤 가치? 1539 01:08:57,560 --> 01:08:58,279 0. 1540 01:08:58,279 --> 01:09:01,350 >> 따라서이 루프의 첫 번째 반복에서, 저는 것처럼입니다 1541 01:09:01,350 --> 01:09:02,689 코드에서이 썼다. 1542 01:09:02,689 --> 01:09:05,580 그러나이 루프의 두 번째 반복에, 그것은 것처럼 것입니다 I 1543 01:09:05,580 --> 01:09:07,750 내 코드에서이 썼다. 1544 01:09:07,750 --> 01:09:10,750 하지만 변수를 사용했다는 사실이 완벽 이름 때문에 1545 01:09:10,750 --> 01:09:14,300 제안, 그것은 모든 반복에 그 값을 변화있어. 1546 01:09:14,300 --> 01:09:17,370 그래서 한 번에이 배열 한 자리를 작성 한 것 뿐이예요. 1547 01:09:17,370 --> 01:09:18,910 이 배열은 어떻게 생겼는데? 1548 01:09:18,910 --> 01:09:21,430 글쎄, 이유는 여기 화면에있는이 슈퍼 간단한 사각형을 그린 1549 01:09:21,430 --> 01:09:23,350 전에 이런 이유로이었다. 1550 01:09:23,350 --> 01:09:27,279 배열, 그냥 메모리의 또 다른 청크 다음 메모리의 덩어리입니다 1551 01:09:27,279 --> 01:09:30,109 메모리의 또 다른 청크 다음, 등등. 1552 01:09:30,109 --> 01:09:35,260 내 배열의 크기는 (2)의 경우 그럼, 여기이 경우, 모든 나는이 일을 할 것입니다 1553 01:09:35,260 --> 01:09:37,590 내 퀴즈 점수에 입력, 여기가 좋아. 1554 01:09:37,590 --> 01:09:39,430 이 하나 100있어. 1555 01:09:39,430 --> 01:09:42,020 그리고 제가 하나에 99도. 1556 01:09:42,020 --> 01:09:46,040 I는 요청 하였기 때문에 다음이 메모리도 사용할 수 없을 수도 1557 01:09:46,040 --> 01:09:48,689 사이즈 2의 배열에 대한 컴퓨터. 1558 01:09:48,689 --> 01:09:50,180 이러한 사각형이 남아 있습니다. 1559 01:09:50,180 --> 01:09:50,340 그래? 1560 01:09:50,340 --> 01:09:52,500 만이라해도 당신은 여전히​​, RAM의 두 기가 바이트가 1561 01:09:52,500 --> 01:09:53,979 이 수레를 요청. 1562 01:09:53,979 --> 01:09:58,710 따라서 배열 뒤에 아이디어는 컴퓨터가 단지 메모리의 덩어리 걸립니다 있다는 것입니다 1563 01:09:58,710 --> 01:10:03,230 그리고 백업 백업 백업 다시 작은 조각을 apportions. 1564 01:10:03,230 --> 01:10:04,740 그리고 그렇게 모든 배열이 있습니다. 1565 01:10:04,740 --> 01:10:09,080 당신이 일을 넣을 수 있습니다 내부에있는이 메모리의 연속 된 덩어리입니다. 1566 01:10:09,080 --> 01:10:12,400 >> 이제이는 좀 지루 연산을 수행하는 발생합니다. 1567 01:10:12,400 --> 01:10:16,170 여기 아래로 스크롤하면 그때 배열을 통해 반복 곳이 있습니다. 1568 01:10:16,170 --> 01:10:19,410 나는 배열에있는 모든 값의 합계를 내줄. 1569 01:10:19,410 --> 01:10:22,390 그리고 사실을하려면 여기를 둥근 기능을 사용 1570 01:10:22,390 --> 01:10:23,940 퀴즈로 나누어 합계. 1571 01:10:23,940 --> 01:10:27,450 하지만 지금은 충분한 연산의 일종으로 좀 손을 흔들 보자. 1572 01:10:27,450 --> 01:10:30,010 그러나 나를 위해하고있어 모든 궁극적으로 평균을 계산합니다. 1573 01:10:30,010 --> 01:10:33,640 그리고 그래서 일단 퀴즈 플러스 초 퀴즈, 2로 나누어, 인쇄 1574 01:10:33,640 --> 01:10:34,700 정수로 당장 나가. 1575 01:10:34,700 --> 01:10:39,030 >> string1라는 다른 예제하지만 그건 지금 전환, 1576 01:10:39,030 --> 01:10:42,370 이는 비슷한 사진 만 사용 문자열을 그린다. 1577 01:10:42,370 --> 01:10:45,550 내가 가서 한 순간을 위해이 일을 간단하게 보자. 1578 01:10:45,550 --> 01:10:48,340 그리고 지금의 들여 쓰기를 용서 하소서. 1579 01:10:48,340 --> 01:10:52,280 이 예제의 라인 (19)의 공지 사항, 전 사용자로부터 문자열을. 1580 01:10:52,280 --> 01:10:55,780 하지만 다음 라인에 22 이후 일을하는지 확인합니다. 1581 01:10:55,780 --> 01:11:00,260 나는 실제로 내가에서 최대 반복거야 - 그리고이 새로운 마술입니다 - 1582 01:11:00,260 --> 01:11:02,730 나 strlen, 문자열의 길이. 1583 01:11:02,730 --> 01:11:07,010 이렇게하면 그것을 문자열을 전달하는 경우가 있단 C와 함께 제공되는 기능입니다 1584 01:11:07,010 --> 01:11:08,950 그 문자열에 얼마나 많은 문자입니다. 1585 01:11:08,950 --> 01:11:09,440 그게 전부 야. 1586 01:11:09,440 --> 01:11:12,520 그건 그냥 있기 때문에 대신 문자열 길이 나 strlen 있다는 사실은 1587 01:11:12,520 --> 01:11:13,040 더 간결. 1588 01:11:13,040 --> 01:11:17,100 30 년 전, 사람들은 간결 가능한 한 물건을 쓰기 좋아합니다. 1589 01:11:17,100 --> 01:11:19,080 그래서 우리는 여기 규칙을 지켰습니다. 1590 01:11:19,080 --> 01:11:21,730 난 + + 그냥 각 반복에서 i를 증가 의미합니다. 1591 01:11:21,730 --> 01:11:24,310 그리고 지금은 정말 재미있는이를 확인합니다. 1592 01:11:24,310 --> 01:11:28,730 따라서 라인 24에, 나는 컴퓨터를 말 나에게 여덟 문자를 제공 1593 01:11:28,730 --> 01:11:30,770 비트, 그리고 C 전화하십시오. 1594 01:11:30,770 --> 01:11:35,370 하지만이 오른쪽 말씀에 무엇입니까? 1595 01:11:35,370 --> 01:11:38,150 영어로, 그 무엇을 나타 냅니까? 1596 01:11:38,150 --> 01:11:40,070 [안 들리게] 1597 01:11:40,070 --> 01:11:40,490 데이빗 J. MALAN : 그렇지. 1598 01:11:40,490 --> 01:11:42,390 나에게 배열의 첫 번째 문자를 제공합니다. 1599 01:11:42,390 --> 01:11:45,400 이상 일반적으로 저에게 배열의 i 번째 문자를 제공합니다. 1600 01:11:45,400 --> 01:11:48,230 그리고 컴퓨터 과학자로, 우리가 실제로 있다고 지금은 중요 실현 1601 01:11:48,230 --> 01:11:49,330 0에서 계산. 1602 01:11:49,330 --> 01:11:51,290 당신은이 일을 시작하는 지금 재량이 없습니다. 1603 01:11:51,290 --> 01:11:54,580 이제 컴퓨터의 기대에 따라 행동해야하고 1604 01:11:54,580 --> 01:11:58,010 [0]가 처음이 될 것입니다 때문에 제로에서 계산 1605 01:11:58,010 --> 01:11:59,670 문자열에 문자가 있습니다. 1606 01:11:59,670 --> 01:12:01,320 [1]는 두 번째가 될 것입니다. 1607 01:12:01,320 --> 01:12:03,610 [2] 세 번째, 등등 될 것입니다. 1608 01:12:03,610 --> 01:12:08,840 이 프로그램 그래서, 나는 그것을 컴파일하는 경우 -이, 다시, string1입니다. 1609 01:12:08,840 --> 01:12:11,040 >> 그럼 string1을합니다. 1610 01:12:11,040 --> 01:12:16,730 그리고 지금은 내 터미널 창에서 string1을 실행합니다. 1611 01:12:16,730 --> 01:12:19,180 이 입력을 기다리고 있어요, 그래서, 데이비드 말에 입력 겠어. 1612 01:12:19,180 --> 01:12:20,080 입력합니다. 1613 01:12:20,080 --> 01:12:23,350 그리고 지금은 모든 다른 라인에 데이비드 인쇄 때문에 1614 01:12:23,350 --> 01:12:24,430 내가하는 일이납니다. 1615 01:12:24,430 --> 01:12:27,510 한 번에 한 문자를 인쇄 할거야. 1616 01:12:27,510 --> 01:12:29,100 이제 우리는이 일에 지금 세부로 이동하지 않습니다. 1617 01:12:29,100 --> 01:12:31,610 하지만 여기이 수표 전 순간을 삭제했습니다. 1618 01:12:31,610 --> 01:12:36,310 그것은 사용자가 올바르게 작동 적대하거나 경우 해당 밝혀 1619 01:12:36,310 --> 01:12:41,780 혼란에, 당신은 실제로 어떤 길이의 문자열을 제공하기 위해 실패 할 수 있습니다. 1620 01:12:41,780 --> 01:12:43,640 당신이 키보드의 잘못된 키를 누르면 경우, 줄 수 있습니다 1621 01:12:43,640 --> 01:12:44,390 전혀 문자열 없습니다. 1622 01:12:44,390 --> 01:12:47,790 당신은 악의적 인 경우 또는의 기가 바이트의 가치에 붙여 넣으려고 수 1623 01:12:47,790 --> 01:12:49,380 이 문자열을 작성하는 에세이. 1624 01:12:49,380 --> 01:12:52,060 컴퓨터의 메모리가 부족 실행한다면, 그건 우리가 가고있는 것이 밝혀 1625 01:12:52,060 --> 01:12:54,310 널 (null)이라는 특수한 값을 돌려 받기 위해. 1626 01:12:54,310 --> 01:12:57,550 그럼 지금부터, 단지 널 (null)이라는 특별한 가치가 있다는 알 1627 01:12:57,550 --> 01:13:01,000 우리가 다른 것들 사이에, 메모리가 부족 때 확인 할 수 있습니다. 1628 01:13:01,000 --> 01:13:07,330 >> 하지만 지금 string2를 열고 경우, 여기 차이가 발생하는 경우가 종종 있습니다. 1629 01:13:07,330 --> 01:13:09,760 string2와 여기 차이를 확인할 수 있습니다. 1630 01:13:09,760 --> 01:13:13,260 string2를 통해, 루프이 조금 다릅니다. 1631 01:13:13,260 --> 01:13:16,350 우리가 그 다른 시간에 대해 이야기 할 수 있도록 내게 nulls를 삭제 보자. 1632 01:13:16,350 --> 01:13:18,460 그런데 루프의이 시간에 대한 다른거야? 1633 01:13:21,580 --> 01:13:23,160 그리고 앞의 예를 다시 사용할 수 있습니다. 1634 01:13:23,160 --> 01:13:24,800 그래서 버전 두. 1635 01:13:24,800 --> 01:13:27,020 이 버전입니다. 1636 01:13:27,020 --> 01:13:31,935 하나, 둘, 하나 둘. 1637 01:13:35,030 --> 01:13:38,240 그래서 나 strlen 전화는 어디? 1638 01:13:38,240 --> 01:13:40,420 이 루프의 처음 부분에 있어요. 1639 01:13:40,420 --> 01:13:43,060 내가이 짓을하는 이유에 대한 어떠한 생각? 1640 01:13:43,060 --> 01:13:43,690 그래. 1641 01:13:43,690 --> 01:13:46,010 [안 들리게] 1642 01:13:46,010 --> 01:13:47,630 데이빗 J. MALAN : 우리가 함수를 매번 전화를하지 않는 군. 1643 01:13:47,630 --> 01:13:48,040 그렇지. 1644 01:13:48,040 --> 01:13:50,350 사람들이 슈퍼 간단한 걸 루프에 대한 기억에서 당신이 어떤 종류의 번 1645 01:13:50,350 --> 01:13:52,180 이 초기화 것을 이해 1646 01:13:52,180 --> 01:13:53,330 상태 및 업데이트. 1647 01:13:53,330 --> 01:13:55,430 문제는 조건이 모든 일에 일어날 일이 바로 그 것입니다 1648 01:13:55,430 --> 01:13:56,600 루프의 반복. 1649 01:13:56,600 --> 01:13:59,930 그리고 여기이 예에서, 어떻게 사실에 대한 나쁜 것입니다 1650 01:13:59,930 --> 01:14:03,500 이쪽은 내 상태입니다? 1651 01:14:03,500 --> 01:14:05,920 다시 나 strlen를 호출하고 다시하고 다시하고 있습니다. 1652 01:14:05,920 --> 01:14:08,990 하지만 내가 다윗을 입력 한 다음, 그 문자열의 길이는 다섯입니다. 1653 01:14:08,990 --> 01:14:11,560 그리고 때문에 루프의 모든 반복에 변함이 없을거야 1654 01:14:11,560 --> 01:14:15,560 문자열은 여전히​​ D-A-V-I-D. 그래서이 될 무슨 일이에서 힌트입니다 1655 01:14:15,560 --> 01:14:19,650 하지 만 - 디자인 결정으로 알려진 점점 더 중요하게 생각이야, 1656 01:14:19,650 --> 01:14:21,640 컴퓨터가 불필요한 작업을 수행합니다. 1657 01:14:21,640 --> 01:14:25,630 >> 지금은 표준 버전의 pset 2, pset 2 미리보기는대로 1658 01:14:25,630 --> 01:14:28,850 실제로 암호의 일부 번호 일부를 구현하기 위해 도전하는 것 1659 01:14:28,850 --> 01:14:32,650 암호화 알고리즘의 수, 당신은 할 수 있도록 암호화 및 암호 해독을 모두 1660 01:14:32,650 --> 01:14:35,530 많은 한 Ralphie 같은 비밀 메시지, 거기 디코딩. 1661 01:14:35,530 --> 01:14:38,720 pset 2의 해커 판에서, 우리는 조금 더 갈거야. 1662 01:14:38,720 --> 01:14:42,010 우리는 포함 된 실제 컴퓨터 시스템에서 당신에게 파일을 넘겨거야 1663 01:14:42,010 --> 01:14:45,690 전체 사용자 이름 및 실제 암호화 된 암호의 무리, 그리고 도전 1664 01:14:45,690 --> 01:14:49,110 해커 판 해당 비밀번호와 그림 자극이 될 것입니다에 1665 01:14:49,110 --> 01:14:53,060 어떤 암호화 또는 무슨 비밀하는 것은에 실제로 사용 된 아웃 1666 01:14:53,060 --> 01:14:55,080 그 암호를 생성합니다. 1667 01:14:55,080 --> 01:14:58,360 그리고 우리가 여기 C의 전주지하는 새로운 기능을 사용하여이 작업을 수행하는 것 1668 01:14:58,360 --> 01:15:02,200 당신이 명령 줄 인수로 알려진 중 데모. 1669 01:15:02,200 --> 01:15:05,930 >> 당신의 일부 섹션이나 교과서에서 보셨을 수도 있으므로 따라서는 밝혀 1670 01:15:05,930 --> 01:15:09,850 메인은 ​​항상 괄호 안에 무효 필요가 없습니다. 1671 01:15:09,850 --> 01:15:14,060 그것은 두 개의 인수와 함께, 메인도 같이 작성 될 수 있다는 판명 1672 01:15:14,060 --> 01:15:19,690 argc는 이후에 입력하는 단어의 숫자입니다 argc와 argv가, 1673 01:15:19,690 --> 01:15:21,940 명령 줄에있는 프로그램의 이름입니다. 1674 01:15:21,940 --> 01:15:24,550 그리고 변수는 argv는 실제 단어입니다. 1675 01:15:24,550 --> 01:15:29,470 거기에 대괄호가 제안 때, 변수는 argv는 분명히 배열입니다. 1676 01:15:29,470 --> 01:15:33,720 이 메모리에 문자열 뒤에 문자열 뒤에 문자열이 될거에요. 1677 01:15:33,720 --> 01:15:36,170 그래서 우리는 pset 2 시작 할 수있을 것입니다 1678 01:15:36,170 --> 01:15:37,310 같이. 1679 01:15:37,310 --> 01:15:42,450 나는 argv1을하면 그건 우리가 월요일에 다시로 돌아와 및 실행됩니다 예입니다 1680 01:15:42,450 --> 01:15:45,180 그, 그건 아직 아무것도하지 않는 것 것을 확인할 수 있습니다. 1681 01:15:45,180 --> 01:15:47,050 단지 자신의 이름을 출력합니다. 1682 01:15:47,050 --> 01:15:53,220 하지만이 프로그램은 분명히 반복하는 작별 인사 클래스가 통지 말한다면, 1683 01:15:53,220 --> 01:15:57,030 프롬프트에 입력 된 단어의 각 이상. 1684 01:15:57,030 --> 01:16:02,050 그리고 사용자가이 단어에 대한 액세스 권한을되는 수단 1685 01:16:02,050 --> 01:16:06,780 프롬프트에 입력은 정수에서 이번 주말부터 주요 변경하는 것입니다 1686 01:16:06,780 --> 01:16:10,710 메인은 ​​(무효) 주 (argc, argv가)를 INT합니다. 1687 01:16:10,710 --> 01:16:13,700 그래서 명령 줄 인수를 탄생 될 것입니다. 1688 01:16:13,700 --> 01:16:17,210 일단 당신이에서 정말 세련된 얻을, 당신은 작성하실 수 있습니다 1689 01:16:17,210 --> 01:16:21,370 위와 넘어 등 여기이 아니라 정말 trippy 프로그램, 1690 01:16:21,370 --> 01:16:25,520 기능 중 일부는 우리가 지금까지 수행하지만 모든 아주 강력했습니다. 1691 01:16:25,520 --> 01:16:27,330 >> 그래서 우리는 화면에이 함께이 일을 맡길 수 있습니다. 1692 01:16:27,330 --> 01:16:29,160 우리는 월요일에 표시됩니다.