1 00:00:00,000 --> 00:00:10,550 2 00:00:10,550 --> 00:00:14,050 >> 데이비드 J. 마란 : 이것은 CS50이며, 이 주 네의 시작입니다. 3 00:00:14,050 --> 00:00:18,630 그리고, 소년, 폭스 바겐에 모든 때문에 소프트웨어의 문제. 4 00:00:18,630 --> 00:00:20,264 우리가 살펴 보자. 5 00:00:20,264 --> 00:00:20,930 [비디오 재생] 6 00:00:20,930 --> 00:00:25,560 -Cars, 똑똑한 문자 맹렬한 기세 영화. 7 00:00:25,560 --> 00:00:29,100 이번 주 독일의 자동차 폭스 바겐은 자체 발견 8 00:00:29,100 --> 00:00:32,490 의 스캔들의 중간에 잠재적 범죄 비율. 9 00:00:32,490 --> 00:00:36,060 >> -Volkswagen는 수십억 보강한다 벌금, 형사 책임 10 00:00:36,060 --> 00:00:38,560 그 임원 등 이 회사는 사과 11 00:00:38,560 --> 00:00:41,840 11 만대를 장비에 대한 이 방출 시험을 이길 도움이됩니다. 12 00:00:41,840 --> 00:00:44,950 >> -Certain 디젤 모델이었다 정교한 소프트웨어 설계 13 00:00:44,950 --> 00:00:48,440 그 포함 사용 정보 스티어링 및 차량의 위치 14 00:00:48,440 --> 00:00:51,870 자동차이었다 결정하는 속도 방출 시험을 진행. 15 00:00:51,870 --> 00:00:55,650 그 상황에서, 엔진 독성 배출을 감소시킬 것이다. 16 00:00:55,650 --> 00:00:59,070 그러나 자동차는 바이 패스 리깅했다 그것이가 구동 될 때. 17 00:00:59,070 --> 00:01:03,320 배출량은 40 10 증가 허용 EPA 수준 위의 시간. 18 00:01:03,320 --> 00:01:04,280 >> [END 재생] 19 00:01:04,280 --> 00:01:05,220 >> 데이비드 J. 마란 : 그래서하자 이것 좀보세요 20 00:01:05,220 --> 00:01:07,250 정확히 어떻게 참조 구현 될 수 있습니다 21 00:01:07,250 --> 00:01:09,680 이것은 영향을 줄 수있는 방법 이 같은 많은 자동차. 22 00:01:09,680 --> 00:01:12,840 그래서 내 손에 여기에 언론이다 그는 EPA--에서 발급 한 눌렀다 23 00:01:12,840 --> 00:01:14,620 환경 보호국하는 24 00:01:14,620 --> 00:01:18,032 미국 규제 기관입니다 환경 문제를 처리, 25 00:01:18,032 --> 00:01:19,740 다음 실제 이었다 법적 고지 26 00:01:19,740 --> 00:01:22,420 몇 일 전 폭스 바겐에 보냅니다. 27 00:01:22,420 --> 00:01:26,530 >> 따라서 EPA는 쓰고, 지금이 개시 공개적으로, 정교한 소프트웨어 28 00:01:26,530 --> 00:01:29,390 특정의 알고리즘 폭스 바겐 차량 감지 29 00:01:29,390 --> 00:01:32,630 때 차를 겪고있다 공식 방출 시험 30 00:01:32,630 --> 00:01:36,505 전체 배출량을집니다 단지 시험 중에 제어합니다. 31 00:01:36,505 --> 00:01:38,380 의 효과 이 차량 오염 32 00:01:38,380 --> 00:01:43,260 방출 제어 장치는 크게 인 모든 정상 운전 중에 감소 33 00:01:43,260 --> 00:01:44,320 상황. 34 00:01:44,320 --> 00:01:48,190 이는 자동차를 충족 초래 실험실 또는 테스트에서 표준 35 00:01:48,190 --> 00:01:52,790 스테이션, 그러나 정상 작동 중에 질소 oxides-- 또는 NOx--을 방출 36 00:01:52,790 --> 00:01:54,950 에서 최대 40 배의 표준. 37 00:01:54,950 --> 00:01:58,220 바겐 제작 소프트웨어 견적 맺다, 패배 장치이며, 38 00:01:58,220 --> 00:02:00,650 면도에 의해 정의 된 바와 같은 미국의 대기 오염 방지법. 39 00:02:00,650 --> 00:02:03,410 >> 그들은 말을 계속 EPA와 다른 기관 40 00:02:03,410 --> 00:02:07,020 패배 장치를 발견 독립적 인 분석 후 소프트웨어 41 00:02:07,020 --> 00:02:09,660 웨스트 연구자 버지니아 대학. 42 00:02:09,660 --> 00:02:14,160 질소 산화물 오염에 기여 이산화질소, 접지 레벨 오존, 43 00:02:14,160 --> 00:02:15,700 미세 입자상 물질. 44 00:02:15,700 --> 00:02:18,090 이러한 노출 오염 물질은 연결되어 있습니다 45 00:02:18,090 --> 00:02:20,870 의 광범위한 심각한 건강에 미치는 영향, 46 00:02:20,870 --> 00:02:23,637 증가 천식 포함 공격과 다른 호흡 47 00:02:23,637 --> 00:02:26,470 충분히 심각 할 수있는 질병 병원에 사람을 보낼 수 있습니다. 48 00:02:26,470 --> 00:02:28,660 오존에 노출 입자상 물질도 갖는다 49 00:02:28,660 --> 00:02:31,960 조기과 연관 관련 호흡에 의한 사망 50 00:02:31,960 --> 00:02:35,690 또는 심혈 관계 효과를 관련. 51 00:02:35,690 --> 00:02:38,940 어린이, 노인, 환자 기존의 호흡기 질환 52 00:02:38,940 --> 00:02:42,840 특히 위험하다 이러한 오염 물질의 건강에 미치는 영향. 53 00:02:42,840 --> 00:02:45,056 >> 충분이 상당히 심각, 말을하는 것입니다. 54 00:02:45,056 --> 00:02:46,930 그리고의 읽기에 가자 하나 더 발췌 55 00:02:46,930 --> 00:02:49,370 그리고, 우리는 살펴 보겠습니다 기본 의미 56 00:02:49,370 --> 00:02:50,920 자동차의 맥락에서의이. 57 00:02:50,920 --> 00:02:53,730 특히, 폭스 바겐 제조 및 설치 58 00:02:53,730 --> 00:02:56,210 소위 소프트웨어 전자 제어 59 00:02:56,210 --> 00:02:59,320 module-- 또는 ECM--의 감지 된이 차량 60 00:02:59,320 --> 00:03:03,580 차량에 대한 테스트 할 때 EPA의 배출 기준을 준수. 61 00:03:03,580 --> 00:03:07,510 등 다양한 입력을 기반으로 스티어링 휠의 위치, 차량 62 00:03:07,510 --> 00:03:11,280 속도, 엔진의 기간 운영, 기압, 63 00:03:11,280 --> 00:03:13,720 이러한 입력 정확하게 파라미터를 추적 64 00:03:13,720 --> 00:03:17,600 사용 연방 시험 절차의 EPA 인증에 대한 방출 시험 65 00:03:17,600 --> 00:03:18,400 목적. 66 00:03:18,400 --> 00:03:21,850 >> EPA의 방출 시험 동안, 차량 ECM 소프트웨어 67 00:03:21,850 --> 00:03:25,060 제작 소프트웨어를 실행 준수 배출 결과. 68 00:03:25,060 --> 00:03:28,340 모든 다른 시간에, 차량 ECM 소프트웨어 69 00:03:28,340 --> 00:03:31,090 별도의 도로를 달렸다 감소 교정 70 00:03:31,090 --> 00:03:34,360 의 효과 전체적인 발광 제어 시스템 71 00:03:34,360 --> 00:03:37,864 구체적으로는 선택적 촉매 린 질소 산화물의 감소 trap-- 72 00:03:37,864 --> 00:03:39,280 이는 우리가 순간에 대해 확인할 수 있습니다. 73 00:03:39,280 --> 00:03:43,040 질소 산화물의 결과, 배출 10 내지 40 배의 인자만큼 증가 74 00:03:43,040 --> 00:03:47,450 EPA 준수 수준 위 구동주기의 종류에 따라. 75 00:03:47,450 --> 00:03:50,800 >> 이건 정말 의미하고, 그래서 소프트웨어 실행에 소스 코드 76 00:03:50,800 --> 00:03:53,190 폭스 바겐의에 않았습니다 아직 공개적으로 개시되었다 77 00:03:53,190 --> 00:03:56,460 즉, 효율적이다 동등한 내부 어딘가에있다 78 00:03:56,460 --> 00:03:57,830 폭스 바겐의 코드. 79 00:03:57,830 --> 00:04:02,200 경우에 당신은, 테스트 및되고있는 자동차의 경우 특정 환경 요인을 감지 80 00:04:02,200 --> 00:04:04,330 스티어링 휠 등에 위치 또는 움직임 81 00:04:04,330 --> 00:04:06,710 결여 또는 자동차 또는 이의 다른 요소의 개수 82 00:04:06,710 --> 00:04:09,940 즉, 현재 가정된다 이 공식의 일부가 될, 83 00:04:09,940 --> 00:04:12,370 그들은 단순히 켜 전체 배출량은 제어 할 수 있습니다. 84 00:04:12,370 --> 00:04:15,670 즉, 이들은 시작 오염 물질을 적게 방출. 85 00:04:15,670 --> 00:04:18,769 >> 그 밖의 다른 모든 상황에서 그것은 것으로 감지되지 때 86 00:04:18,769 --> 00:04:20,790 실험실에서, 그들은 단지하지 않습니다. 87 00:04:20,790 --> 00:04:24,320 그래서 당신은 더 많은이 점을 단순화 할 수 있습니다 뭔가 구체적인 의사 88 00:04:24,320 --> 00:04:24,820 이 같은. 89 00:04:24,820 --> 00:04:27,810 바퀴가 회전하지만, 경우 스티어링 휠, 암시 아니다 90 00:04:27,810 --> 00:04:30,060 자동차는 일부에 있는지 회전 실린더 가지 91 00:04:30,060 --> 00:04:32,550 그러나 어떤 종류의 창고는 테스트되고, 92 00:04:32,550 --> 00:04:36,070 다음과 같이 행동 EPA는 당신에게 싶습니다. 93 00:04:36,070 --> 00:04:37,960 그렇지 않으면하지 않습니다. 94 00:04:37,960 --> 00:04:40,420 그럼 살펴 보자 짧은 비디오에서 그 95 00:04:40,420 --> 00:04:45,391 어떤 의미에서 좀 걸립니다 실제로 기계적으로 이것이다. 96 00:04:45,391 --> 00:04:48,620 >> [비디오 재생] 97 00:04:48,620 --> 00:04:52,800 >> 금요일 - 마지막 EPA가 발표 일부 폭스 바겐 아우디 자동차 2009 년 사이 98 00:04:52,800 --> 00:04:55,840 올해는 사용했다 소위 패배 장치 99 00:04:55,840 --> 00:04:59,060 배출 법을 해결하기 위해서 깨끗한 공기를 유지하도록 설계. 100 00:04:59,060 --> 00:05:01,700 하지만 정확히 무엇을 의미 하는가? 101 00:05:01,700 --> 00:05:04,666 >> 글쎄, 현대 자동차는 수십이 그 안에서 컴퓨터. 102 00:05:04,666 --> 00:05:07,040 그리고 그 컴퓨터의 일부 함수 좌표 도움 103 00:05:07,040 --> 00:05:09,590 최적 용 엔진 성능 확인하면서 104 00:05:09,590 --> 00:05:12,340 너무 많은 쓰레기가 아니라고 배기관 나오는. 105 00:05:12,340 --> 00:05:15,170 그들은 실제로 일한지 지금은 몇 년 동안 이런 식으로. 106 00:05:15,170 --> 00:05:17,380 기본적으로, 모든 부분 현대 자동차의 엔진 107 00:05:17,380 --> 00:05:20,080 센서 또는 컨트롤러가 그것은,이 컴퓨터에 108 00:05:20,080 --> 00:05:23,460 데이터의 수천 읽고 두 번째 결정 조정 당 시간 109 00:05:23,460 --> 00:05:26,220 공기에 대한 연료의 비율 등에 즉, 실린더에거야. 110 00:05:26,220 --> 00:05:28,730 >> 이러한 부정 행위 폭스 바겐 아우디 모델은 디젤이다 111 00:05:28,730 --> 00:05:30,890 그리고 디젤은 하나 더있다 정말 중요한 컴퓨터 112 00:05:30,890 --> 00:05:34,030 인 제어 매개 변수, 가는 미 연소 연료의 양 113 00:05:34,030 --> 00:05:35,200 배기로. 114 00:05:35,200 --> 00:05:36,310 이제 나쁜 소리. 115 00:05:36,310 --> 00:05:39,642 당신이 원하는 것 같은 소리하지 않습니다 배기로가는 미 연소 연료. 116 00:05:39,642 --> 00:05:41,600 그러나의 경우 디젤, 당신은 뭔가를 117 00:05:41,600 --> 00:05:46,110 장치는 NOx 트랩이라고 그 흡수 및 질소 산화물에 대한 트랩 118 00:05:46,110 --> 00:05:48,880 오염 물질은 것입니다 그 그렇지 않으면 대기로 이동합니다. 119 00:05:48,880 --> 00:05:53,040 그리고 NOx 트랩의 효과 미 연소 연료로 강화된다. 120 00:05:53,040 --> 00:05:56,650 그래서 패배 장치는 특별한 프로그램이다 이러한 컴퓨터 내부에서 그 그것을 만들 수 있습니다 121 00:05:56,650 --> 00:05:59,527 차 방출을 충족처럼 기준이되지 않는 경우에도. 122 00:05:59,527 --> 00:06:01,110 폭스 바겐은 자사의 손에 문제가 있었다. 123 00:06:01,110 --> 00:06:04,050 그 디젤 엔진이 알려져 좋은 연비를 얻기를위한, 124 00:06:04,050 --> 00:06:07,510 하지만 NOx 트랩은 잘 작동 더 많은 연료가 사용되는 경우. 125 00:06:07,510 --> 00:06:10,460 그래서 차를 감지 할 이 패배 장치를 사용하여, 126 00:06:10,460 --> 00:06:13,870 그것은 배출량을 받고 때 테스트는 그것이 더 많은 연료를 사용하는 것, 127 00:06:13,870 --> 00:06:16,830 잘 NOx 트랩 작업을, 배출량은 잘 될 것입니다. 128 00:06:16,830 --> 00:06:21,130 그러나 당신은 도로에 장치를 얻을 해제, 당신은 더 적은 연료를 굽는 129 00:06:21,130 --> 00:06:24,256 하지만 당신은 많은 40 번 퍼팅 대기 오염 물질에 더 많은. 130 00:06:24,256 --> 00:06:26,130 하지만 도대체 어떻게했는지 자동차는 것을 알고있다 131 00:06:26,130 --> 00:06:27,720 배출 준수 테스트중인? 132 00:06:27,720 --> 00:06:30,590 EPA는 정교한이었다 말한다 물건을 확인 시스템 133 00:06:30,590 --> 00:06:34,090 스티어링 휠 위치 등, 속도, 엔진에 얼마나 오래, 134 00:06:34,090 --> 00:06:35,507 심지어 대기압. 135 00:06:35,507 --> 00:06:37,673 즉, 거기 방법이 실수 없었다 136 00:06:37,673 --> 00:06:40,260 소프트웨어가 되었기 때문에 감지하는 것은 매우 신중하게 설계 137 00:06:40,260 --> 00:06:41,630 공식 방출 시험. 138 00:06:41,630 --> 00:06:43,588 그것은 꽤 심각 기만과 그이다 139 00:06:43,588 --> 00:06:45,420 왜 폭스 바겐에 이러한 심각한 문제. 140 00:06:45,420 --> 00:06:48,600 사실, 그들의 CEO, 마틴 Winterkorn, 그냥 물러났다. 141 00:06:48,600 --> 00:06:49,820 >> 그럼 다음에 어떻게됩니까? 142 00:06:49,820 --> 00:06:53,900 그럼 당신은 절반 만 하나있어, 경우 디젤 Jettas, 비틀즈, 이용 양말, Passats, 143 00:06:53,900 --> 00:06:56,220 또는 아우디 A3s는 영향을 좋은 소식입니다 144 00:06:56,220 --> 00:06:57,886 당신의 차는 여전히 운전하는 것이 안전합니다. 145 00:06:57,886 --> 00:07:00,510 당신은 그것을 멀리 넣을 필요가 없습니다 폭스 바겐은 리콜을 발행 할 때까지. 146 00:07:00,510 --> 00:07:02,509 그러나 어떤 점에서 그들은있어 아마해야 할 것 147 00:07:02,509 --> 00:07:04,230 자동차 내부의 소프트웨어를 업데이트합니다. 148 00:07:04,230 --> 00:07:06,927 그렇게되면 당신은 수도 탱크 당 더 적은 마일을 얻을. 149 00:07:06,927 --> 00:07:09,260 변호사는 이미 준비하고있다 집단 소송에 대한 최대 150 00:07:09,260 --> 00:07:12,500 그래서 소유자는 보상받을 수 있습니다 미래의 어떤 시점에서. 151 00:07:12,500 --> 00:07:15,832 하지만 그에게 않을거야 조만간 일어날. 152 00:07:15,832 --> 00:07:16,711 >> [END 재생] 153 00:07:16,711 --> 00:07:19,960 데이비드 J. 마란 : 그래서이 실제로 제기 흥미로운 더 큰 그림 질문 154 00:07:19,960 --> 00:07:20,660 으로 신뢰합니다. 155 00:07:20,660 --> 00:07:21,160 권리? 156 00:07:21,160 --> 00:07:24,300 우리 모두 아이폰 또는 안드로이드가 나 우리의 주머니에서 뭔가 가능성 157 00:07:24,300 --> 00:07:26,500 요즘, 또는 노트북 우리의 바퀴에 158 00:07:26,500 --> 00:07:28,510 만든 실행되는 소프트웨어 애플과 마이크로 소프트 159 00:07:28,510 --> 00:07:30,710 다른 회사와 송이. 160 00:07:30,710 --> 00:07:34,240 하지만 어떻게 우리가 알고 무엇을 이 소프트웨어 제품은 하 161 00:07:34,240 --> 00:07:37,680 어떤 이들은 실제로 회사는 그들이 무엇을 말? 162 00:07:37,680 --> 00:07:39,610 >> 예를 들어, 누가에의 말할 때마다 당신 163 00:07:39,610 --> 00:07:42,200 아이폰에 전화를 걸 또는 안드로이드 폰 등, 164 00:07:42,200 --> 00:07:45,650 그 전화 번호도 아니라고 일부 회사의 서버에 업로드되는 165 00:07:45,650 --> 00:07:48,399 일부 프로그램의 당신이했기 때문에 그것이 작동 여부, 작성 166 00:07:48,399 --> 00:07:51,070 아이폰 OS 나 안드로이드와 같은 시스템 자체를, 또는 당신이 다운로드 한 때문에 167 00:07:51,070 --> 00:07:53,880 일부 타사 응용 프로그램 어떻게 든 듣고된다 168 00:07:53,880 --> 00:07:57,120 모든 것을 당신이 입력하는 나 모든 것을 당신은 실제로 말을하는지. 169 00:07:57,120 --> 00:07:59,500 당신은 알고 어떻게, 언제 너희들은 연타를 실행 170 00:07:59,500 --> 00:08:02,590 또는 컴파일 할 수 있도록 당신의 CS50, 방법에 자신의 소프트웨어 171 00:08:02,590 --> 00:08:06,080 당신이 CS50 자신의 직원이 수행 CS50 라이브러리로서, 172 00:08:06,080 --> 00:08:08,690 모든 로깅되지 않았습니다 당신이 이제까지 왔 문자열 173 00:08:08,690 --> 00:08:10,276 또는 모든 당신이 이제까지 쪘 인치? 174 00:08:10,276 --> 00:08:12,900 글쎄, 당신은 확실히 볼 수 있었다 무엇인가에 대한 소스 코드를 175 00:08:12,900 --> 00:08:15,233 CS50 라이브러리와 같은, 당신 소스 코드를 볼 수 있었다 176 00:08:15,233 --> 00:08:18,170 Linux 운영 체제 CS50의 IDE에서 실행. 177 00:08:18,170 --> 00:08:23,090 그러나 놀라운 프리젠 테이션 1984 년에 다시 주어졌다 178 00:08:23,090 --> 00:08:26,730 로 튜링 상을받은에서 알려진 매우 유명한 컴퓨터 과학자 179 00:08:26,730 --> 00:08:29,750 이름 켄 톰슨 as-- 사람 튜링 상을받은 180 00:08:29,750 --> 00:08:33,500 컴퓨터 과학의 일종이다 노벨상, 만약에 당신, 181 00:08:33,500 --> 00:08:35,309 그의 작업 운영체제라는 182 00:08:35,309 --> 00:08:39,039 매우 유사 유닉스, 우리가하는 무엇을 사용하는 정신은 리눅스입니다. 183 00:08:39,039 --> 00:08:41,960 그리고 문제는 그가 물었다 그의 본질적으로 수락 연설, 184 00:08:41,960 --> 00:08:44,910 프레임 워크를 내려 놓고 세 논의 년 185 00:08:44,910 --> 00:08:46,970 신뢰와 보안에 대해,이이었다. 186 00:08:46,970 --> 00:08:50,410 어느 정도까지해야 하나 신뢰에 이 조각을 program-- 그 진술 187 00:08:50,410 --> 00:08:53,010 의 software-- 트로이 목마의 무료? 188 00:08:53,010 --> 00:08:56,500 아마도 그것이 신뢰하는 것이 더 중요하다 소프트웨어를 쓴 사람들. 189 00:08:56,500 --> 00:08:58,650 >> 그리고 사실, 우리는 연결 한 이야기에 그가 190 00:08:58,650 --> 00:09:02,400 이 상을 수락 할 때 준 CS50의 웹 사이트에 80 년대 191 00:09:02,400 --> 00:09:04,030 오늘의 강의 페이지에서. 192 00:09:04,030 --> 00:09:06,071 당신이 볼 수 무엇 때문에 그가 실제로 준다이다 193 00:09:06,071 --> 00:09:09,430 방법도 상당히 간단한 예 연타이든 같은 컴파일러 194 00:09:09,430 --> 00:09:13,950 다른 사람들이 과거에 사용한 컴파일러, 컴파일러 우리에 포함 된 경우 어떻게 195 00:09:13,950 --> 00:09:18,190 자신이 경우 조금 사용 본질적으로 말한다 조건, 196 00:09:18,190 --> 00:09:22,360 이 코드를 사용하고 있음을 알 수있는 경우 하여 GetString 함수 또는의 getInt 197 00:09:22,360 --> 00:09:26,600 기능은 가서 삽입 백도어 나 트로이 목마 198 00:09:26,600 --> 00:09:29,340 등이 그 프로그램 지금 일부 0을 가지고 199 00:09:29,340 --> 00:09:30,930 악의적 인 일을 할 것. 200 00:09:30,930 --> 00:09:33,080 모든 로깅하여 그 키 입력 데이터를 업로드, 201 00:09:33,080 --> 00:09:35,100 일부 서버, 또는 정말 아무것도. 202 00:09:35,100 --> 00:09:37,290 >> 그리고 무엇 켄 톰슨 그의 이야기에서 할에 간다 203 00:09:37,290 --> 00:09:40,580 경우에도 그 입증하는 것입니다 당신은 소스에 액세스 할 204 00:09:40,580 --> 00:09:43,794 컴파일러의 코드가 악의적으로이 일을 할 수 있습니다 205 00:09:43,794 --> 00:09:46,210 이 때문에 문제가되지 않는다 이 닭고기와 계란이있다 206 00:09:46,210 --> 00:09:49,500 과거 많은 현실 년함으로써 컴파일러 207 00:09:49,500 --> 00:09:51,960 자신을 컴파일하는 데 사용됩니다. 208 00:09:51,960 --> 00:09:55,440 즉, 돌아 오는 때 사람 최초의 컴파일러를 작성했습니다했다. 209 00:09:55,440 --> 00:09:59,060 그리고 그 후, 언제 그들이 업데이 트했습니다 소스 코드를 변경하여 컴파일러 210 00:09:59,060 --> 00:10:02,020 기능을 추가하고 컴파일 우리 같은 사람들이 사용하기 위해, 잘, 211 00:10:02,020 --> 00:10:04,270 그들은 이전을 사용하는 컴파일러의 버전 212 00:10:04,270 --> 00:10:06,370 새로운 컴파일 컴파일러의 버전. 213 00:10:06,370 --> 00:10:08,370 그리고 당신은 살펴 경우 그가 준 이야기에서, 214 00:10:08,370 --> 00:10:10,970 당신이 있기 때문에 그것을 볼 수 있습니다 그 원형, 215 00:10:10,970 --> 00:10:14,330 당신이 실제로 버그가하거나 트로이 목마는 소프트웨어에 포함 216 00:10:14,330 --> 00:10:14,990 우리가 사용하고 있습니다. 217 00:10:14,990 --> 00:10:18,010 그리고 당신은 볼 경우에도 이러한 프로그램에 대한 소스 코드, 218 00:10:18,010 --> 00:10:21,550 그것도 분명하지 않을 수도 있습니다 속임수 실제로 때문에 219 00:10:21,550 --> 00:10:24,710 일부 이전 버전의 그 이후로왔다 컴파일러 220 00:10:24,710 --> 00:10:27,340 우리의 소프트웨어에 위협을 주입. 221 00:10:27,340 --> 00:10:29,740 >> 어떤 경우에만 우리는 말을 정말 할 수 없습니다와하지 말아야 222 00:10:29,740 --> 00:10:32,939 신뢰 소프트웨어 우리의 노트북에서 실행 전화 또는 장소의 수 또는. 223 00:10:32,939 --> 00:10:36,230 그리고 사실, 나중에 경우 이번 학기에 우리는 웹 프로그래밍에 대해 이야기를 시작 224 00:10:36,230 --> 00:10:38,521 실제로 구축 시작 웹 응용 프로그램 자신을, 225 00:10:38,521 --> 00:10:40,285 우리는이에 대해 얘기하자 위협과 다른 사람. 226 00:10:40,285 --> 00:10:43,410 지금, 당신은 궁금하고 알아 차렸을 수도 작은 작은 다스가 있다는 것을 227 00:10:43,410 --> 00:10:45,842 클립에서 베이더 그 직전이 게재되었다 228 00:10:45,842 --> 00:10:47,550 폭스 바겐에 대한. 만약 당신은 본 적이 없어, 나는 229 00:10:47,550 --> 00:10:49,190 우리는 밝게한다고 생각 기분이 모든 때문에 230 00:10:49,190 --> 00:10:50,780 매우 우울하고 무섭다. 231 00:10:50,780 --> 00:10:52,910 내가 다시 볼거야 슈퍼 볼 2011 232 00:10:52,910 --> 00:10:55,300 시에 의해 상용 Volkswagen--이 233 00:10:55,300 --> 00:10:59,620 거의 again-- 그들에게 호감한다 TV에 처음 방송. 234 00:10:59,620 --> 00:11:04,039 그것은 60초 클립의 난 당신이 즐길 수 있습니다 생각. 235 00:11:04,039 --> 00:11:04,705 [비디오 재생] 236 00:11:04,705 --> 00:11:08,198 [음악 - "스타 워즈"의 주제] 237 00:11:08,198 --> 00:11:35,643 238 00:11:35,643 --> 00:11:38,138 [개 짖는 소리] 239 00:11:38,138 --> 00:11:50,114 240 00:11:50,114 --> 00:11:53,607 [CAR 시작] 241 00:11:53,607 --> 00:12:04,086 242 00:12:04,086 --> 00:12:05,955 [END 재생] 243 00:12:05,955 --> 00:12:06,830 데이비드 J. 마란 : 그래. 244 00:12:06,830 --> 00:12:07,663 난 그냥 확인했다. 245 00:12:07,663 --> 00:12:11,360 그 차 위반의 목록입니다. 246 00:12:11,360 --> 00:12:12,000 괜찮아. 247 00:12:12,000 --> 00:12:14,040 그래서 우리는 몇 가지를 보면 전 순간을 의사. 248 00:12:14,040 --> 00:12:15,380 그리고 여기에 더 큰 의사 코드 스 니핏 249 00:12:15,380 --> 00:12:16,921 것을 우리는 지금까지 몇 번 봤어요. 250 00:12:16,921 --> 00:12:19,970 그리고의는이 기회를 사용하자 이제 새로운 프로그램을 소개합니다 251 00:12:19,970 --> 00:12:23,776 우리가했던 기술 알고리즘 참조 252 00:12:23,776 --> 00:12:25,400 지난 주 우리는 병합 정렬에서 보았을 때. 253 00:12:25,400 --> 00:12:28,270 그러나 현실을 공식화하는 방법 보자 우리는 실제 코드에서 사용할 수 있습니다 254 00:12:28,270 --> 00:12:30,350 그리고, 우리는이를 사용하는거야 길 아래에 기술 대부분의 255 00:12:30,350 --> 00:12:32,000 다른 특정 문제를 해결하는 것. 256 00:12:32,000 --> 00:12:35,790 >> 그래서 첫 번째 프로그램 중 하나 우리 이제까지 의사 코드이기는하지만, 썼다. 257 00:12:35,790 --> 00:12:37,790 그리고 어떻게이 프로그램 우리는 과정을 수행 할 수 258 00:12:37,790 --> 00:12:41,510 전화 번호부에 마이크 스미스를 찾는 것이 었습니다. 259 00:12:41,510 --> 00:12:46,216 특히 라인 여덟 예고 이 이동하려면 문을했다 (11). 260 00:12:46,216 --> 00:12:48,090 사실, 어떤 언어, 그 중 C, 261 00:12:48,090 --> 00:12:50,006 실제로이 있나요 문자 그대로 문 262 00:12:50,006 --> 00:12:52,710 즉 당신을 수 있습니다에 이동 특정 라인으로 이동합니다. 263 00:12:52,710 --> 00:12:55,470 그것은 일반적으로 인해 눈살을 찌푸리게 것 그것은 아주 쉽게 남용 될 수 있습니다 264 00:12:55,470 --> 00:12:58,490 당신은 점프 시작할 수 있습니다 반대로 사방 프로그램 265 00:12:58,490 --> 00:13:00,690 가지를 사용하는 로직 및 제어 흐름 266 00:13:00,690 --> 00:13:04,000 우리는 단지와 함께 지금까지 사용했던 것을 루프와 조건 등을들 수있다. 267 00:13:04,000 --> 00:13:08,660 >> 그러나 우리는이 알고리즘을 단순화 할 수 있습니다 의사 코드로는 다음과 같다. 268 00:13:08,660 --> 00:13:11,250 대신이 반복의 또는 방법을 반복 269 00:13:11,250 --> 00:13:14,160 여기서 우리가 계속하고 다시 다시 세를 라인에, 270 00:13:14,160 --> 00:13:18,300 왜 우리는 종류의 펀트 더하지 않습니다 일반적으로, 줄 일곱 10 말 271 00:13:18,300 --> 00:13:20,570 단지 그 두 교체 와 라인 쌍, 272 00:13:20,570 --> 00:13:22,810 스미스는 이전 다른 경우 이 책에서 우리는거야 273 00:13:22,810 --> 00:13:25,110 에 마이크를 검색 책의 왼쪽 절반. 274 00:13:25,110 --> 00:13:28,560 스미스는 이후에 인 다른 경우 책, 오른쪽에 마이크를 검색 275 00:13:28,560 --> 00:13:29,540 반 책. 276 00:13:29,540 --> 00:13:31,180 그리고 이미 원형을 알 수 있습니다. 277 00:13:31,180 --> 00:13:31,680 권리? 278 00:13:31,680 --> 00:13:34,250 나는에 마이크 찾고 있어요 전화 번호부 다음 279 00:13:34,250 --> 00:13:37,090 나는 결국 아마 히트 라인 7, 어쩌면 라인 (10) 280 00:13:37,090 --> 00:13:41,089 자신에 대한 나의 명령은 검색이다 전화 번호부의 절반에 마이크합니다. 281 00:13:41,089 --> 00:13:42,380 글쎄, 내가 어떻게 마이크를 검색 할 수 있습니까? 282 00:13:42,380 --> 00:13:44,213 나는 중간에있어 마이크, 이유를 검색 283 00:13:44,213 --> 00:13:45,860 당신은 종류의 원에서 저를 보내는? 284 00:13:45,860 --> 00:13:49,590 하지만 그 무엇 때문에 괜찮아요 문제의 크기에 일어나고, 285 00:13:49,590 --> 00:13:52,630 라인 7, 10에 기록 된대로? 286 00:13:52,630 --> 00:13:54,989 우리는 검색을 말을하지 않을 마이크를 들어, 마이크를 검색합니다. 287 00:13:54,989 --> 00:13:56,280 우리는 구체적으로 무슨 말을하는지? 288 00:13:56,280 --> 00:13:58,694 289 00:13:58,694 --> 00:14:01,610 의 왼쪽 절반에 그 검색 효율적이고 우측 절반 290 00:14:01,610 --> 00:14:03,440 문제의 절반 크기. 291 00:14:03,440 --> 00:14:07,170 그래서 우리는 종류의 걸 괜찮아요 이 원형에 참여, 292 00:14:07,170 --> 00:14:09,180 이 원형 인수 적어도 우리가 있기 때문에 293 00:14:09,180 --> 00:14:11,090 문제가 작아 만드는. 294 00:14:11,090 --> 00:14:14,220 그리고 결국 우리는 도달 할거야 그 소위 기본 케이스 경우 295 00:14:14,220 --> 00:14:16,780 우리는 단지 한 페이지를 가지고 있고이 우리의 자원 봉사 지난 주와 같은 296 00:14:16,780 --> 00:14:18,684 뭐 실수 우리는 한 페이지를했다 다음 왼쪽 우리는하지 않습니다 297 00:14:18,684 --> 00:14:21,600 마이크 스미스를 찾고 유지해야 그는 그 페이지를 때문에 298 00:14:21,600 --> 00:14:23,080 또는 그는 아니다. 299 00:14:23,080 --> 00:14:27,480 >> 그래서 우리는이 아이디어,이를 구현하는 방법 실제 코드에 원형의 종류? 300 00:14:27,480 --> 00:14:31,030 음, 우리는 기술을 활용할 수 있습니다 그는 일반적으로 재귀로 알려져있다. 301 00:14:31,030 --> 00:14:33,960 그리고 우리는이를 본 적이 병합 정렬에 대한 의사 지난 주. 302 00:14:33,960 --> 00:14:37,190 이이었다 리콜 병합 정렬에 대한 의사. 303 00:14:37,190 --> 00:14:40,560 그것은 틀림없이보다 간단 거품 또는 선택 또는 삽입 정렬 304 00:14:40,560 --> 00:14:43,310 단지 간략화 환산 있는 당신은 그것을 표현할 수 있습니다. 305 00:14:43,310 --> 00:14:46,750 >> 하지만 그 때문이다 우리는 일종의 원형의 것 306 00:14:46,750 --> 00:14:51,350 뭔가를 검색, 말 다시 검색하여. 307 00:14:51,350 --> 00:14:53,960 그러나 우리는 하나에 검색하는 왼쪽 절반 오른쪽 절반 308 00:14:53,960 --> 00:14:56,070 다음 결국 우리는있어 이 경우, 병합. 309 00:14:56,070 --> 00:14:58,520 그러나 여기, 너무과 이 두 종류의 라인, 310 00:14:58,520 --> 00:15:01,320 우리는 다시이 있었나요 재귀의 생각. 311 00:15:01,320 --> 00:15:05,350 구체적으로이 무엇을 의미하는지, 알고리즘의 맥락에서, 312 00:15:05,350 --> 00:15:10,880 알고리즘은 재귀 점이다 그것은 사용하거나 자신을 호출합니다. 313 00:15:10,880 --> 00:15:14,330 >> 또는 C의 점에서, 함수는 라는 함수를 recursive-- 314 00:15:14,330 --> 00:15:18,510 푸, foo는 경우 재귀 어딘가에 그 소스 코드, 315 00:15:18,510 --> 00:15:21,250 함수 foo 자체를 호출합니다. 316 00:15:21,250 --> 00:15:25,790 그리고 그 모든 foo는 이제까지 않는 경우 나쁜 또 다시 자신을 호출한다. 317 00:15:25,790 --> 00:15:30,600 foo는 결국 중지 된 경우와 마찬가지로 그것은, 괜찮아요 말해서, 정렬 병합 잠깐, 318 00:15:30,600 --> 00:15:32,980 이 문제는 슈퍼이면 작은, 예를 들면, 319 00:15:32,980 --> 00:15:35,840 아니면 난 누구 그를 발견 찾고, 그냥 돌아갑니다. 320 00:15:35,840 --> 00:15:41,000 재귀,하지 마세요 주기적으로 다시 자신을 호출한다. 321 00:15:41,000 --> 00:15:44,200 >> 그리고 이제 살펴 보자 이 실제로 작동하는 방법. 322 00:15:44,200 --> 00:15:48,430 그래서 앞서 열린 갈거야 여기에 두 개의 소스 코드 예제입니다. 323 00:15:48,430 --> 00:15:50,321 중 하나는 시그마 0이라고합니다. 324 00:15:50,321 --> 00:15:52,320 그리고이 전혀 없습니다 재귀,하지만의는하자 325 00:15:52,320 --> 00:15:53,694 이 프로그램이 무엇을하는지 살펴 보자. 326 00:15:53,694 --> 00:15:55,737 나는 밖으로 모두 제거했습니다 그것은 그러나 모든 의견 327 00:15:55,737 --> 00:15:58,070 CS50에서의 소스 코드 웹 사이트가있는 경우 의견을 가지고 328 00:15:58,070 --> 00:15:59,570 나중에 다시 그것을 통해 읽고 싶어. 329 00:15:59,570 --> 00:16:02,010 그리고 이제 몇하자 정신의 여기를 확인합니다. 330 00:16:02,010 --> 00:16:06,640 >> 이 코드의 상단 그래서 우리는 CS50.h.을 포함해야 331 00:16:06,640 --> 00:16:07,650 이 기능은 무엇입니까? 332 00:16:07,650 --> 00:16:08,990 왜 여기에? 333 00:16:08,990 --> 00:16:11,740 합리적인 쉽게 설명하자면. 334 00:16:11,740 --> 00:16:12,424 그것은 무엇을합니까? 335 00:16:12,424 --> 00:16:12,858 그래. 336 00:16:12,858 --> 00:16:14,160 >> 청중 : getInt는 기능이 작동하도록. 337 00:16:14,160 --> 00:16:16,243 >> 데이비드 J. 마란 : 그래서 getInt는 기능이 작동합니다. 338 00:16:16,243 --> 00:16:18,115 이 내부에 있기 때문에 파일, CS50.h, 어떤 339 00:16:18,115 --> 00:16:20,950 우리는 긴에서 전에 볼 수 있습니다 소스 코드의 관점 340 00:16:20,950 --> 00:16:23,270 기능의 무리가 있습니다 declared--의 getInt,하여 GetString, 341 00:16:23,270 --> 00:16:26,950 others--과하지 않는 한 무리 우리는 사실, 즉 라인을 포함해야 342 00:16:26,950 --> 00:16:29,320 컴파일러 연타가 아니다 이 존재 함을 알 것. 343 00:16:29,320 --> 00:16:32,400 그리고 같은 라인에 간다 INT가 정의 두 344 00:16:32,400 --> 00:16:35,101 printf의 함수이고, 우리는 꽤 계속 사용. 345 00:16:35,101 --> 00:16:37,850 이제 선 네 약간 펑키 보인다 그것은 단지 하나의 라이너입니다 때문이다. 346 00:16:37,850 --> 00:16:41,570 그것은 더 곱슬, 세미콜론 없어 있어요 중괄호, 그것의 내부에없는 코드입니다. 347 00:16:41,570 --> 00:16:44,640 그러나 우리가 전화를했다 주 과거에이 일이? 348 00:16:44,640 --> 00:16:45,140 그래. 349 00:16:45,140 --> 00:16:46,060 그래서 프로토 타입. 350 00:16:46,060 --> 00:16:48,390 왜 우리는이 있습니까 보인다 프로토 타입 351 00:16:48,390 --> 00:16:51,050 약간 중복 될 일반적으로 보통 우리 때문에 352 00:16:51,050 --> 00:16:53,474 함수를 다시 참조 나중에 파일에서 마우스 오른쪽? 353 00:16:53,474 --> 00:16:56,390 그런데 왜 우리는 그냥있어 잔 마셔요 않습니다 머리를 긁적하지만 난 그것을 할게요. 354 00:16:56,390 --> 00:16:57,302 그래. 355 00:16:57,302 --> 00:17:00,000 >> 청중 : [들리지] 주 후 기능. 356 00:17:00,000 --> 00:17:01,000 데이비드 J. 마란 : 맞아요. 357 00:17:01,000 --> 00:17:04,089 컴파일러는 당신을 알 수 있도록 결국 정의하거나 구현합니다 358 00:17:04,089 --> 00:17:06,579 아마도 주 후 그 기능. 359 00:17:06,579 --> 00:17:08,462 그래서 연타 가장 컴파일러 종류의 벙어리 360 00:17:08,462 --> 00:17:10,510 그들은 단지 알 수 있습니다 당신은 무엇을 그들에게 말해. 361 00:17:10,510 --> 00:17:12,569 그리고 당신은 사용하고자하는 경우 시그마라는 함수, 362 00:17:12,569 --> 00:17:15,710 당신은 더 나은 컴파일러를 가르쳐 그것이 사전에 존재한다. 363 00:17:15,710 --> 00:17:17,970 >> 이제, 주 자체도 이 라인의 무리가 비록, 364 00:17:17,970 --> 00:17:19,839 지금 쯤 잘하면 꽤 잘 알고있다. 365 00:17:19,839 --> 00:17:21,942 그것은 DO 루프 동안 있어요 인생에서 누구의 목적 366 00:17:21,942 --> 00:17:24,400 여기에 분명히을 얻을 것입니다 사용자의 양의 정수입니다. 367 00:17:24,400 --> 00:17:27,349 그리고 그를 귀찮게 계속 또는 그녀는 협조 할 때까지. 368 00:17:27,349 --> 00:17:30,670 그런 다음 라인 (16)에 내가 가진 흥미로운 전화. 369 00:17:30,670 --> 00:17:31,570 IntAnswer. 370 00:17:31,570 --> 00:17:33,710 왼쪽에 어떤 측면은 나에게 int를 제공합니다 371 00:17:33,710 --> 00:17:36,650 Answer--라는 store-- 수있는 저장하려고하는, 분명히, 372 00:17:36,650 --> 00:17:39,090 시그마의 리턴 값. 373 00:17:39,090 --> 00:17:41,840 그래서 시그마 단지입니다 임의하지만 의미있는 이름 374 00:17:41,840 --> 00:17:44,500 나는 함수에 준 것을 인생에서 누구의 목적 375 00:17:44,500 --> 00:17:47,680 하나 인 공방을하는 것입니다 우리는이 case--에 N을 전화 할게 376 00:17:47,680 --> 00:17:52,280 단지 그 숫자의 합을 촬영 플러스 모든 양수 그건 377 00:17:52,280 --> 00:17:53,200 그것보다 작다. 378 00:17:53,200 --> 00:17:58,140 >> 나는에 숫자 2를 전달한다면 시그마, 내가 추가 할 2 플러스 1 379 00:17:58,140 --> 00:18:00,240 플러스 0-- 그래서 나 3 준다 0--. 380 00:18:00,240 --> 00:18:05,320 내가 시그마 3에 전달하면, 내가 원하는 3 플러스 2 플러스 1을 가지고있는 나에게 (6)을 제공합니다. 381 00:18:05,320 --> 00:18:05,900 기타 등등. 382 00:18:05,900 --> 00:18:09,750 그래서 그냥 추가 모든 숫자 그것 이하. 383 00:18:09,750 --> 00:18:12,040 >> 자, 여기까지 난 그냥 갈거야 대답을 인쇄합니다. 384 00:18:12,040 --> 00:18:17,330 그래서 빠른 전성 검사로하자 시그마 0-- 점 슬래시 시그마을 0-- 385 00:18:17,330 --> 00:18:18,690 나를 2를 입력 할 수 있습니다. 386 00:18:18,690 --> 00:18:19,960 그리고 실제로 3를 얻을. 387 00:18:19,960 --> 00:18:21,240 내가 3을 입력 할 수 있습니다. 388 00:18:21,240 --> 00:18:22,860 나는 참으로 6를 얻을. 389 00:18:22,860 --> 00:18:27,636 그리고 누군가가 신속하게 수학을 할 수 있다면, 내가 얻을 갈 거 야 (50)는한다면? 390 00:18:27,636 --> 00:18:29,839 >> 청중 : [들림]. 391 00:18:29,839 --> 00:18:30,880 데이비드 J. 마란 : 음, 아니. 392 00:18:30,880 --> 00:18:33,340 그러나 1275 아주 가까이이다. 393 00:18:33,340 --> 00:18:38,850 그래서이 50 일의 결과는 플러스 49 플러스 48 플러스 47 플러스 (46) 394 00:18:38,850 --> 00:18:40,349 1 끝까지. 395 00:18:40,349 --> 00:18:41,390 그건 그래서 모든 시그마는 않습니다. 396 00:18:41,390 --> 00:18:43,350 그러나 이제 우리는했습니다 방법을 살펴 보자 지금을 구현했습니다. 397 00:18:43,350 --> 00:18:45,790 그래서 여기 아래 함수 자체입니다. 398 00:18:45,790 --> 00:18:49,000 그리고 이것은이하지 않는 것 아무것도 아직 재귀와 함께 할 수 있습니다. 399 00:18:49,000 --> 00:18:51,070 사실, 우리는을 사용하고 오래된 학교 기술. 400 00:18:51,070 --> 00:18:56,680 나는 변수라는 합계를 초기화하는거야 제로로, 나는 여기 foreloop을 가지고, 401 00:18:56,680 --> 00:19:00,790 나는라는 int를 선언하고있어 나는 1--에 동일 설정 402 00:19:00,790 --> 00:19:04,080 나는에가 동일하게 설정 할 수 있지만 제로, 그러나 나는 또한 일을 해요 이후, 403 00:19:04,080 --> 00:19:05,340 는 0 또는 1의 경우 누가 관심. 404 00:19:05,340 --> 00:19:06,660 그것은 아무런 영향을 미치지 것. 405 00:19:06,660 --> 00:19:10,110 >> 그래서 나는 너무 오래 내가 같이 반복 해요 m보다 작거나, 같 어느 406 00:19:10,110 --> 00:19:11,671 에 전달 된 인수입니다. 407 00:19:11,671 --> 00:19:13,670 그리고 난 그냥 계속 I. 그리고 통찰력을 증가 408 00:19:13,670 --> 00:19:20,010 루프의 모든 내가 합을하고 일을 해요 플러스 I. 같습니다 그리고 그것은 의도적이다. 409 00:19:20,010 --> 00:19:22,326 나는이에, 싶지 않아 경우, 합계 플러스 플러스 등이있다. 410 00:19:22,326 --> 00:19:24,790 실제로 추가 할 I의 전류 값 411 00:19:24,790 --> 00:19:28,190 이는 더 크고 더 크게 유지 및 실행 집계에 더 큰. 412 00:19:28,190 --> 00:19:30,210 >> 그리고 나는 합계를 반환합니다. 413 00:19:30,210 --> 00:19:33,850 그래서 대답은 값의 합을 가져옵니다. 414 00:19:33,850 --> 00:19:35,282 그리고 나는 그것을 밖으로 인쇄 할 수 있습니다. 415 00:19:35,282 --> 00:19:37,740 그래서 기회가 여기에있다, 하지만 종류의 단순화 416 00:19:37,740 --> 00:19:41,260 이 코드 개념 그리고 타격의 종류는 하나입니다 417 00:19:41,260 --> 00:19:43,250 의 관점에서 마음 단순 심지어하지만 418 00:19:43,250 --> 00:19:45,700 정렬 시간이 걸립니다 의 이유를 주셔서 감사합니다 419 00:19:45,700 --> 00:19:47,330 이 작은 예에 강력합니다. 420 00:19:47,330 --> 00:19:50,380 여기 그래서 one-- 시그마입니다 이 코드의 두 번째 버전. 421 00:19:50,380 --> 00:19:55,290 상단까지 모든 그래서 동일 같은 이야기는 이전과 같이 적용됩니다. 422 00:19:55,290 --> 00:19:59,220 하지만 지금의이 살펴 보자 시그마 구현하는 423 00:19:59,220 --> 00:20:05,040 난 그냥이 아래로 깍습니다 lines-- 코드의 네 줄, 정말, 424 00:20:05,040 --> 00:20:06,980 플러스 일부 중괄호 및 공백. 425 00:20:06,980 --> 00:20:07,930 >> 그러나 나는 무엇을하고 있는가? 426 00:20:07,930 --> 00:20:11,050 m이보다 작거나 같으면 제로, 나는 가지 처리해야 427 00:20:11,050 --> 00:20:12,490 그 슈퍼 간단한 경우. 428 00:20:12,490 --> 00:20:15,450 그리고 당신은 나에게 제로 또는 아무것도 손 경우 그냥 이상한이다 음 429 00:20:15,450 --> 00:20:17,909 난 그냥 임의로에 갈거야 하지만 지속적으로 0을 반환. 430 00:20:17,909 --> 00:20:20,200 나는이 일을하지 않으 좀 이상한 무한 들어가 431 00:20:20,200 --> 00:20:21,810 때문에 음의 값의 루프. 432 00:20:21,810 --> 00:20:25,070 당신이 나에게 주면 그래서 난 그냥 말하는거야 제로 이하, 나는 제로를 반환하고 있습니다. 433 00:20:25,070 --> 00:20:28,220 >> 그 때문에 그러나 그것은 좋은 전화 번호부의 한 페이지 434 00:20:28,220 --> 00:20:28,790 그는 남아. 435 00:20:28,790 --> 00:20:32,660 나는 매우 구체적인 문제를 물고있어 재귀 뭔가를 호출하지. 436 00:20:32,660 --> 00:20:36,580 그러나 라인 (31)에서, 무엇을 나는 일을 할 것입니까? 437 00:20:36,580 --> 00:20:39,780 괄호는 유지된다 일, 희망, 조금 명확하게. 438 00:20:39,780 --> 00:20:42,110 하지만 내가 뭘 모든 난입니다 M--를 반환 무엇 439 00:20:42,110 --> 00:20:45,790 당신은 가구 있구만 플러스 손 M-- 죄송의 가치, 440 00:20:45,790 --> 00:20:49,052 플러스 M 마이너스 1의 시그마의 값. 441 00:20:49,052 --> 00:20:50,010 그래서 이것은 무엇을 의미합니까? 442 00:20:50,010 --> 00:20:53,965 당신이 입력으로 나에게 숫자 3을주는 경우에, 대답 나는 궁극적으로 얻고 싶은 443 00:20:53,965 --> 00:20:57,307 3 더하기 2 더하기 1이 나 6을 제공하기 때문에 6입니다. 444 00:20:57,307 --> 00:20:59,390 하지만 난에 대해 어떻게 생각하십니까 이 코드는 어떻게 실행 되는가? 445 00:20:59,390 --> 00:21:03,070 내가 시그마 호출 처음 나는, 값 3 전달 446 00:21:03,070 --> 00:21:07,960 그 조각에 말처럼 종이, 여기에 값 3의 447 00:21:07,960 --> 00:21:09,920 나는 시그마로이를 통과했습니다. 448 00:21:09,920 --> 00:21:13,090 도 3은 그렇게 분명하지 0보다 IF 조건은 적용되지 않습니다. 449 00:21:13,090 --> 00:21:14,020 ELSE는 않습니다. 450 00:21:14,020 --> 00:21:14,990 그래서 나는 무엇을해야합니까? 451 00:21:14,990 --> 00:21:19,902 나는 인 M을 반환하려면 M 마이너스 1의 3, 플러스 시그마. 452 00:21:19,902 --> 00:21:21,110 그래서 내가이 추적 할 수 있습니다. 453 00:21:21,110 --> 00:21:22,710 나는이 넣어 갈거야 종이 아래의 조각. 454 00:21:22,710 --> 00:21:24,668 그리고 어떤 값을, 할 수 분명, 내가 전달하는 것입니다 455 00:21:24,668 --> 00:21:26,540 이야기를이 시점에서 시그마에? 456 00:21:26,540 --> 00:21:28,080 무슨 수? 457 00:21:28,080 --> 00:21:28,610 2, 오른쪽? 458 00:21:28,610 --> 00:21:29,670 3 빼기 1은 2입니다. 459 00:21:29,670 --> 00:21:32,000 그래서 나는 조금 필요 여기에 종이 스크랩. 460 00:21:32,000 --> 00:21:33,931 그래서 지금 시그마는 다시 호출 받고있다. 461 00:21:33,931 --> 00:21:35,930 그리고 의도적으로 넣었습니다 이 아래로이기 때문에 462 00:21:35,930 --> 00:21:38,070 종류의 일시 정지 등 이야기의 버전 463 00:21:38,070 --> 00:21:40,720 지금은 초점이기 때문에 M 마이너스 1의 신호에. 464 00:21:40,720 --> 00:21:42,660 그래서 m은 3, M이었다 빼기 1은 2입니다. 465 00:21:42,660 --> 00:21:45,110 그래서 여기에 내가 통과 한 2입니다. 466 00:21:45,110 --> 00:21:48,510 분명히 2 이상인 0 그래서이 경우는 적용되지 않습니다. 467 00:21:48,510 --> 00:21:53,445 그렇지 난이 인 M을 반환 어떤 값의 일, 플러스 시그마? 468 00:21:53,445 --> 00:21:56,160 469 00:21:56,160 --> 00:21:59,650 그래서 시그마의 1-- m이기 때문에 만약 지금 2 그래서 2 빼기 1은 1입니다. 470 00:21:59,650 --> 00:22:01,950 그래서 지금은 1의 값을 가지고있다. 471 00:22:01,950 --> 00:22:04,810 난 그냥 번호를 전달 해요 함수 sigma-- 1 472 00:22:04,810 --> 00:22:09,120 또는 자신 here-- 그래서 1 분명하지 않다 0 미만, 아직 적용되지 않습니다. 473 00:22:09,120 --> 00:22:12,970 >> 그렇지 않은 경우 1 플러스 무엇 시그마? 474 00:22:12,970 --> 00:22:13,470 0. 475 00:22:13,470 --> 00:22:14,678 그래서 내가 그냥 기억하자. 476 00:22:14,678 --> 00:22:15,920 나중에 다시 그에게 얻을 것이다. 477 00:22:15,920 --> 00:22:18,060 지금은 앞서와 조금도 갈거야 숫자 0 아래 그 때문에 478 00:22:18,060 --> 00:22:19,470 내 인수 또는 매개 변수입니다. 479 00:22:19,470 --> 00:22:22,400 나는 숫자 0을 통과 해요 그리고 마지막으로이 과정 480 00:22:22,400 --> 00:22:25,760 단지 자신에게 광고를 반복 nauseum 무엇 때문에 중단 않습니다 481 00:22:25,760 --> 00:22:28,820 나는이 0을 참조하면 나는 즉시해야합니까? 482 00:22:28,820 --> 00:22:29,790 나는 제로를 돌려줍니다. 483 00:22:29,790 --> 00:22:31,790 그래서 지금 당신이 이야기를 되감기해야합니다. 484 00:22:31,790 --> 00:22:34,430 >> 지금 시간이 거꾸로가는 경우에, 가장 최근의 것은 무엇 이었습니까 485 00:22:34,430 --> 00:22:36,670 말 그대로라면 내가 그랬어 비디오 되감기? 486 00:22:36,670 --> 00:22:41,630 내가 가장 최근에 데리러 갈거야 1 그 날 1을 제공 더하기 0은 1입니다. 487 00:22:41,630 --> 00:22:44,100 나는 되감기 유지하는 경우 이야기, 그 날 줄 것 488 00:22:44,100 --> 00:22:46,880 1 2 더하기이 실행 값입니다. 489 00:22:46,880 --> 00:22:47,789 그래서 3입니다. 490 00:22:47,789 --> 00:22:49,330 그리고 나는 감기를 유지하는거야. 491 00:22:49,330 --> 00:22:54,220 내가 먼저 번호를 넣었을 때 3-- 그래서 3 플러스 3 (6) 나에게 준다. 492 00:22:54,220 --> 00:22:57,272 >> 그리고 지금, 당신은 되감기 한 경우 이 시점까지 비디오까지, 493 00:22:57,272 --> 00:22:58,980 이것은 매우이었다 첫 번째 질문 물었다. 494 00:22:58,980 --> 00:23:01,450 3 전달하면, 3 시그마는 무엇인가? 495 00:23:01,450 --> 00:23:04,204 그것은 참 6의 합이다 종이의 모든 조각. 496 00:23:04,204 --> 00:23:07,120 그 조금 걸리는 경우에 따라서에있는 동안 그 괜찮아요, 당신의 마음을 주위에 래핑합니다. 497 00:23:07,120 --> 00:23:10,700 그러나이 little--이었다 고려 내가 쌓아 매우 신중한했다 498 00:23:10,700 --> 00:23:12,990 서로의 상단에이 숫자. 499 00:23:12,990 --> 00:23:17,440 그것은을 가진 같은 종류의 시간에 기록 memory--, 500 00:23:17,440 --> 00:23:19,940 비디오 스크러버와 같은, 나는 참으로 되감기 수있다. 501 00:23:19,940 --> 00:23:24,350 그리고 우리는 돌아올거야 조금의 그 은유. 502 00:23:24,350 --> 00:23:28,240 >> 그러나 첫째로, 그것은 거기에 밝혀 괴짜와 재미 많은 사람들이, 503 00:23:28,240 --> 00:23:29,614 나는 구글, 생각한다. 504 00:23:29,614 --> 00:23:31,530 겠습니까 아주의 사람 인터넷 검색을 마음에 좋은 505 00:23:31,530 --> 00:23:34,270 단지 잠시 올라오고 및 내가 뭔가를 검색하는 데 도움? 506 00:23:34,270 --> 00:23:35,650 매우, 매우 낮은 키. 507 00:23:35,650 --> 00:23:37,870 결코 사람 아마도 이전에 올. 508 00:23:37,870 --> 00:23:38,370 그래. 509 00:23:38,370 --> 00:23:39,030 그래? 510 00:23:39,030 --> 00:23:39,530 어서. 511 00:23:39,530 --> 00:23:41,410 내려 가자. 512 00:23:41,410 --> 00:23:42,183 당신의 이름은 무엇입니까? 513 00:23:42,183 --> 00:23:42,870 >> SAM : 샘. 514 00:23:42,870 --> 00:23:44,290 >> 데이비드 J. 마란 : 샘, 아래에 온다. 515 00:23:44,290 --> 00:23:45,320 이는 동일합니다. 516 00:23:45,320 --> 00:23:46,280 만나서 반갑습니다. 517 00:23:46,280 --> 00:23:46,780 안녕하세요. 518 00:23:46,780 --> 00:23:47,580 이상 어서. 519 00:23:47,580 --> 00:23:51,290 그래서 모든 나는 당신이 경우에 할 필요가 당신은, 샘, 여기에 구글의 수 있습니다. 520 00:23:51,290 --> 00:23:53,240 당신은 용어 재귀를 검색 할 수 있습니까? 521 00:23:53,240 --> 00:23:55,770 522 00:23:55,770 --> 00:23:56,270 망치하지 마십시오. 523 00:23:56,270 --> 00:23:59,940 524 00:23:59,940 --> 00:24:00,970 >> 그리고 지금 그래 let's--. 525 00:24:00,970 --> 00:24:03,380 확인이를 클릭합니다. 526 00:24:03,380 --> 00:24:04,315 더 나은 것을 클릭합니다. 527 00:24:04,315 --> 00:24:07,020 528 00:24:07,020 --> 00:24:08,020 아, 그것을 얻을. 529 00:24:08,020 --> 00:24:08,520 아니? 530 00:24:08,520 --> 00:24:09,050 그래. 531 00:24:09,050 --> 00:24:10,430 그럼 몇 가지 다른 작업을 수행 할 수 있습니다. 532 00:24:10,430 --> 00:24:12,830 관련 순전히 학문적 여기에,하지만 당신이 533 00:24:12,830 --> 00:24:14,520 이제까지 철자 바꾸기 위해 구글을 검색? 534 00:24:14,520 --> 00:24:15,280 >> SAM : 제 535 00:24:15,280 --> 00:24:15,520 >> 데이비드 J. 마란 : OK. 536 00:24:15,520 --> 00:24:17,186 철자 바꾸기 대신 재귀를 검색합니다. 537 00:24:17,186 --> 00:24:22,540 538 00:24:22,540 --> 00:24:23,790 어떻게 비스듬히 약. 539 00:24:23,790 --> 00:24:25,515 혹시 비스듬히 검색? 540 00:24:25,515 --> 00:24:29,260 541 00:24:29,260 --> 00:24:32,692 자,이 사람은 조금 어렵다 볼 수 있지만 희망을 확인 everything's--. 542 00:24:32,692 --> 00:24:34,150 그것은 단지 당신과 나이 즐기고있다. 543 00:24:34,150 --> 00:24:34,690 그래. 544 00:24:34,690 --> 00:24:38,950 >> 그래서 마지막으로,이 one's-- 그것은 약간 비스듬히이다. 545 00:24:38,950 --> 00:24:40,810 지금 배럴 롤을한다. 546 00:24:40,810 --> 00:24:44,460 547 00:24:44,460 --> 00:24:45,310 멋진. 548 00:24:45,310 --> 00:24:45,910 괜찮아. 549 00:24:45,910 --> 00:24:47,110 빅 샘을 부탁드립니다. 550 00:24:47,110 --> 00:24:49,416 여기 당신은 간다. 551 00:24:49,416 --> 00:24:50,400 감사. 552 00:24:50,400 --> 00:24:52,807 >> 그래서 모두에서 일어나는 이 바보 예? 553 00:24:52,807 --> 00:24:55,640 그래서 정말, 후드 아래 줄의 코드 구글의 수백만 554 00:24:55,640 --> 00:24:58,860 분명히 IF 몇 바보 본질적 조건 555 00:24:58,860 --> 00:25:01,160 사용자가있는 경우 확인 이 구절에 입력, 556 00:25:01,160 --> 00:25:03,760 아마했다 무언가를 시간의 사소 양 557 00:25:03,760 --> 00:25:06,080 단지에 구현 이 방법으로 재미있는합니다. 558 00:25:06,080 --> 00:25:08,430 그러나 그것이 종기 전부 후드 아래로 아래로. 559 00:25:08,430 --> 00:25:11,570 하지만, 물론, 재귀 geekier의 더 560 00:25:11,570 --> 00:25:13,880 그 특별한 트릭 중 예. 561 00:25:13,880 --> 00:25:16,880 그리고 확실히 거기에 다른 사람을 거기의 뿐만 아니라 우리는 아마도이 있는지조차 562 00:25:16,880 --> 00:25:18,230 아직 발견했다. 563 00:25:18,230 --> 00:25:22,830 >> 그래서 좀 봐, 또는 고려 이제 다음 프로그램 564 00:25:22,830 --> 00:25:24,830 확실히 하나를 잡아 길 밖으로 이들. 565 00:25:24,830 --> 00:25:28,820 나는 앞서 갈거야 및 의 프로그램을 엽니 다 566 00:25:28,820 --> 00:25:30,920 두 값을 교환하려고 것. 567 00:25:30,920 --> 00:25:33,210 우리가 거​​기 가기 전에 그러나,이 해 보자. 568 00:25:33,210 --> 00:25:38,500 우리는 하나 더 얻을 수 자원 봉사, 내 생각? 569 00:25:38,500 --> 00:25:40,480 당신은 자원 봉사 하시겠습니까? 570 00:25:40,480 --> 00:25:40,980 아니? 571 00:25:40,980 --> 00:25:41,890 최대 어서. 572 00:25:41,890 --> 00:25:42,390 최대 어서. 573 00:25:42,390 --> 00:25:42,890 괜찮아. 574 00:25:42,890 --> 00:25:44,136 그래서 당신의 이름은 무엇입니까? 575 00:25:44,136 --> 00:25:44,810 >> 로렌 : 로렌. 576 00:25:44,810 --> 00:25:45,768 >> 데이비드 J. 마란 : 로렌. 577 00:25:45,768 --> 00:25:46,890 최대 로렌 어서. 578 00:25:46,890 --> 00:25:50,140 그래서 로렌되고있는 다음과 같이 여기에 도전했다. 579 00:25:50,140 --> 00:25:52,310 만나서 반갑습니다. 580 00:25:52,310 --> 00:25:55,730 그래서 로렌은 여기 앞에있다 그녀의 두 개의 빈 컵. 581 00:25:55,730 --> 00:25:57,570 그리고 우리는 일부 오렌지가 주스와 우유 582 00:25:57,570 --> 00:26:00,301 우리는 갈거야 앞서 다음을 수행. 583 00:26:00,301 --> 00:26:01,550 우리는이를 채울 것입니다. 584 00:26:01,550 --> 00:26:07,840 여기에 우유의 몇 온스 및하자 여기에 약간의 오렌지 주스를 입력합니다. 585 00:26:07,840 --> 00:26:11,475 >> 그리고 모두의 앞에 이러한 관객, 586 00:26:11,475 --> 00:26:13,550 이 컵의 두 값을 교환합니다. 587 00:26:13,550 --> 00:26:16,970 우유 컵에 오렌지 주스를 넣어 와 오렌지 주스 컵에 우유. 588 00:26:16,970 --> 00:26:22,380 589 00:26:22,380 --> 00:26:26,150 당신은에 있다면 당신은이 작업을 수행하는 방법 가정 및 기타 소모품에 대한 액세스를했다? 590 00:26:26,150 --> 00:26:27,400 로렌 : 다른 컵에 넣어. 591 00:26:27,400 --> 00:26:28,191 데이비드 J. 마란 : OK. 592 00:26:28,191 --> 00:26:31,940 그래서 임시로하자 변수, 우리가됩니다. 593 00:26:31,940 --> 00:26:35,871 그리고 지금 가서 구현 이 같은 교환 절차. 594 00:26:35,871 --> 00:26:36,370 그래서, 좋은. 595 00:26:36,370 --> 00:26:41,490 우리는 임시로 OJ를 넣었습니다 변수, OJ 변수에 우유, 596 00:26:41,490 --> 00:26:44,481 지금은 임시 변수 우유 변수로. 597 00:26:44,481 --> 00:26:44,980 그래. 598 00:26:44,980 --> 00:26:48,740 그래서 아주 잘 지금까지. 599 00:26:48,740 --> 00:26:50,990 그래서 그 보유 out--집니다 단지 잠시 동안 생각했다. 600 00:26:50,990 --> 00:26:54,479 여기에, 그냥 조금 그것을 괴짜하고,이 해당 C 코드 것 601 00:26:54,479 --> 00:26:55,520 우리는 단지 구현있다. 602 00:26:55,520 --> 00:26:58,650 우리는 두 개의 입력 A와 B의 양쪽을 가지고 이는 우리는 단지입니다 단순화를 위해 말할 것이다 603 00:26:58,650 --> 00:26:59,260 INT의. 604 00:26:59,260 --> 00:27:02,780 내가 교체 할 경우에, 여기에 주목 두 변수, 및 b의 값, 605 00:27:02,780 --> 00:27:06,890 우리는 참으로 중개인이 필요합니다, 임시 변수, 임시 컵, 606 00:27:06,890 --> 00:27:10,830 되는이 값 중 하나를 부어 그래서 우리는 그것을위한 자리가 있습니다. 607 00:27:10,830 --> 00:27:13,480 그러나 코드는 정확히 로렌 여기에 구현했습니다. 608 00:27:13,480 --> 00:27:15,500 >> 이제 단지를 얻을 수 작은 미쳤는 밝혀 609 00:27:15,500 --> 00:27:20,930 당신은하지 않고이 작업을 수행 할 수있는 임시 변수. 610 00:27:20,930 --> 00:27:24,870 하지만, 우리는거야, 제대로 이렇게하려면 일부 화학와 속임수해야합니다. 611 00:27:24,870 --> 00:27:26,380 우리는 여기에 몇 가지 여분의 컵을 가지고있다. 612 00:27:26,380 --> 00:27:29,600 그래서 가장 가까운 점은 보인다 우유와 물 perhaps-- 같은 613 00:27:29,600 --> 00:27:34,090 또는 우유와 OJ-- 우리는 몇 가지가있다 물은, 그래서 우리는이 하나를 채울 수 있습니다 614 00:27:34,090 --> 00:27:36,486 맑은 물 몇 온스와. 615 00:27:36,486 --> 00:27:38,332 즉 너무 많은 아마. 616 00:27:38,332 --> 00:27:38,832 그래. 617 00:27:38,832 --> 00:27:39,934 즉 너무 많은 확실히있다. 618 00:27:39,934 --> 00:27:40,600 하나 잠시만. 619 00:27:40,600 --> 00:27:43,520 620 00:27:43,520 --> 00:27:48,420 >> 그리고 지금 우리는 내가 기억으로는, 기름을 가지고 중학교 화학 클래스, 621 00:27:48,420 --> 00:27:49,990 희망은 물과 혼합하지 않습니다. 622 00:27:49,990 --> 00:27:53,650 그러나 가지 종류의 우유와 OJ처럼 보인다. 623 00:27:53,650 --> 00:27:55,760 지금, 사용하지 않고 임시 변수 624 00:27:55,760 --> 00:27:59,260 당신은 그 두 값을 바꿀 수 있습니까? 625 00:27:59,260 --> 00:28:03,884 물 컵에 들어가는 오일은 그래서 물은 오일 컵에 간다. 626 00:28:03,884 --> 00:28:04,800 로렌 : 없음 컵? 627 00:28:04,800 --> 00:28:05,940 데이비드 J. 마란 : 없음 컵. 628 00:28:05,940 --> 00:28:07,860 그리고 실제로 적이 없다 이 년 전에이 테스트 629 00:28:07,860 --> 00:28:10,110 이 가만히 있으면 그래서 나도 몰라 실제로 화학적으로 작동합니다. 630 00:28:10,110 --> 00:28:16,130 631 00:28:16,130 --> 00:28:18,650 즉,이 일이 안되었다. 632 00:28:18,650 --> 00:28:19,761 그것은 작동합니까? 633 00:28:19,761 --> 00:28:20,260 괜찮아. 634 00:28:20,260 --> 00:28:20,990 그래서 분리? 635 00:28:20,990 --> 00:28:21,490 좋다. 636 00:28:21,490 --> 00:28:24,714 이제 우리는을 얻을 수있어 다른 컵에 물. 637 00:28:24,714 --> 00:28:27,630 스마트 화학 집중 할 수 아마 나보다 더 나은이 작업을 수행. 638 00:28:27,630 --> 00:28:28,510 >> 로렌 : 물이 바닥에 있습니다. 639 00:28:28,510 --> 00:28:31,910 >> 데이비드 J. 마란 :이었다 water-- 어떻게 우리가 이런 짓을 마지막으로 키입니다. 640 00:28:31,910 --> 00:28:33,950 당신은 올바른 순서로 그것을 할 수 있습니다. 641 00:28:33,950 --> 00:28:34,450 그래. 642 00:28:34,450 --> 00:28:35,270 괜찮아요. 643 00:28:35,270 --> 00:28:37,290 그래서 지금 우리는 기름 두 잔이있다. 644 00:28:37,290 --> 00:28:37,790 그래. 645 00:28:37,790 --> 00:28:38,510 괜찮아요. 646 00:28:38,510 --> 00:28:40,110 하지만이 난 -보다 더 가공 화학적 경우 647 00:28:40,110 --> 00:28:41,200 >> 로렌 : 이것은 물이다. 648 00:28:41,200 --> 00:28:41,930 >> 데이비드 J. 마란 : 그것은 주로 물이다. 649 00:28:41,930 --> 00:28:42,430 괜찮아. 650 00:28:42,430 --> 00:28:44,210 그러나 여전히 이전과 같은 컵입니다. 651 00:28:44,210 --> 00:28:47,570 그래서 그건 ... 저기 그것을 시도 붓는다. 652 00:28:47,570 --> 00:28:49,300 그래. 653 00:28:49,300 --> 00:28:51,010 이 수업 시간에 잘 사용 오늘이다. 654 00:28:51,010 --> 00:28:51,510 그래. 655 00:28:51,510 --> 00:28:53,890 그래서 지금 좋은 우우. 656 00:28:53,890 --> 00:28:55,460 일종의. 657 00:28:55,460 --> 00:28:55,960 괜찮아. 658 00:28:55,960 --> 00:28:56,690 그래서 아주 좋아. 659 00:28:56,690 --> 00:29:00,006 로렌을 부탁드립니다. 660 00:29:00,006 --> 00:29:01,950 아주 잘. 661 00:29:01,950 --> 00:29:04,570 >> 그러니, 당신의 마음을 날려 버릴 이것은 아마도 뭔가 662 00:29:04,570 --> 00:29:08,660 당신이 CS50 ID를 좋아하는 경우에 재생하려면 당신은, 실제로, 두 변수를 교환 할 663 00:29:08,660 --> 00:29:11,470 임시 정수를 사용하지 않고. 664 00:29:11,470 --> 00:29:13,060 이는 대응하는 코드는 C이다. 665 00:29:13,060 --> 00:29:16,110 그리고 당신은 마지막에서 호출하는 경우 수요일, 우리는 경우 간략 소개 666 00:29:16,110 --> 00:29:19,720 C. 그리고 수행에 몇 가지 새로운 사업자 사람이 어떤 작은 당근을 기억 667 00:29:19,720 --> 00:29:23,660 기호는, 그 작은 삼각형 키보드에서 기호를 나타냅니다? 668 00:29:23,660 --> 00:29:26,003 어떤 비트 연산자? 669 00:29:26,003 --> 00:29:26,770 >> 청중 : EXOR. 670 00:29:26,770 --> 00:29:27,645 >> 데이비드 J. 마란 : EXOR. 671 00:29:27,645 --> 00:29:28,560 독점 또는. 672 00:29:28,560 --> 00:29:32,920 당신은 그냥 재미에 들어 싶다면 집, A와 B 두 개의 임의의를 제공하기 위해 673 00:29:32,920 --> 00:29:36,072 어떤 eight--와 나는 같은 값 여덟 비트 값을 선택합니다. 674 00:29:36,072 --> 00:29:38,530 당신이 32 비트를 사용하여이 작업을 수행 할 경우, 당신은 매우 빨리 지루해합니다. 675 00:29:38,530 --> 00:29:42,150 그러나 단지 여덟 비트를 제공 하나 또는 두 개의 무엇이든의 가치, 676 00:29:42,150 --> 00:29:43,790 과 유사한 값 b를 제공합니다. 677 00:29:43,790 --> 00:29:46,810 다음의 정의를 사용하여 지난 수요일에서 XOR의, 678 00:29:46,810 --> 00:29:52,560 비트에 의해 각각의 해당 비트를 적용 및 (b)의 각각에서 그 8 비트, 679 00:29:52,560 --> 00:29:54,980 다음이 코드 당 정확히 해. 680 00:29:54,980 --> 00:29:58,170 그리고 그것은 잘못된하지 무슨 당신은 화면에 여기를 참조하십시오. 681 00:29:58,170 --> 00:30:02,100 그것은 참으로 귀결 세 XOR 연산에 682 00:30:02,100 --> 00:30:05,910 어떻게 든 마술과 B 위치를 교환 해드립니다 683 00:30:05,910 --> 00:30:08,010 정보를 잃지 않고. 684 00:30:08,010 --> 00:30:11,580 >> 그래서 기름과 물 트릭은 가장 가까운 실제 화신 685 00:30:11,580 --> 00:30:12,980 나는 그것을 모방하는 생각 할 수있다. 686 00:30:12,980 --> 00:30:15,950 그러나에 확실히 쉽게 임시 변수를 사용하여, 687 00:30:15,950 --> 00:30:16,920 여기이 경우에서와 같이. 688 00:30:16,920 --> 00:30:21,190 그리고이 너무 기회라고한다 또한, 마이크로 최적화 이런 종류의, 689 00:30:21,190 --> 00:30:23,590 컴퓨터 과학자 등 , 말을하면서 재미 가지 690 00:30:23,590 --> 00:30:27,060 당신이없이 이런 짓을하는 방법에 대해 자랑 여분의 변수로 교환 같은, 691 00:30:27,060 --> 00:30:28,640 그것은 모든 강력한 아니에요. 692 00:30:28,640 --> 00:30:31,619 32 비트, 등을 저장하기 때문에 실제 INT의 경우, 693 00:30:31,619 --> 00:30:33,410 모든 강력한 아니다 시스템 위치에 694 00:30:33,410 --> 00:30:36,722 당신은 메가 바이트의 수만을 사용하고있는 또는 더 많은 메모리 요즘. 695 00:30:36,722 --> 00:30:38,680 그리고 사실, 우리는 때를 얻을 수 나중에 문제 세트 696 00:30:38,680 --> 00:30:41,010 당신은 마법을 구현 검사하고 있습니다 697 00:30:41,010 --> 00:30:43,550 그래서 함께 할 도전 이 같은 작은 RAM과 같은 작은 698 00:30:43,550 --> 00:30:46,820 에 가능한 시간 여전히 당신을 computer-- 699 00:30:46,820 --> 00:30:50,160 구현하기 위해 일주일이 당신은 당신이있을거야 잔 마셔요거야 그건 ... 700 00:30:50,160 --> 00:30:51,799 이러한 자원을 최소화하기 위해 도전했다. 701 00:30:51,799 --> 00:30:53,840 그리고 정말 만의 이번 학기 행사 702 00:30:53,840 --> 00:30:57,940 당신은 면도하도록 권장 볼 수있는 곳 심지어 최적의 성능 떨어져 703 00:30:57,940 --> 00:30:59,340 그렇지 않으면 비용이 든다. 704 00:30:59,340 --> 00:31:02,200 >> 그래서 우리는 어떻게 뭐 ... 이 실제 코드에서 볼? 705 00:31:02,200 --> 00:31:04,530 내가 지금 앞서 가자 그리고 예를 열어 706 00:31:04,530 --> 00:31:07,700 이 고의적이라고 어떤 스왑되지는 않기 때문에 707 00:31:07,700 --> 00:31:10,670 실제로 변수를 교환 당신은 실제로 예상대로. 708 00:31:10,670 --> 00:31:12,260 그럼 살펴 보자. 709 00:31:12,260 --> 00:31:17,050 여기에는 CS50이없는 프로그램입니다 라이브러리는 단지 표준 I / O 일. 710 00:31:17,050 --> 00:31:19,560 이제 우리는 프로토 타입을 가지고 맨 위로 스왑하는 단지 711 00:31:19,560 --> 00:31:21,540 그것이 나중에 정의 할 수있어 의미합니다. 712 00:31:21,540 --> 00:31:22,550 그리고 여기에 주입니다. 713 00:31:22,550 --> 00:31:26,000 >> I는 임의의 x 및 y를 할당 각각의 값에 하나, 둘, 714 00:31:26,000 --> 00:31:28,590 단지 그들이 작은 것 때문에 쉽게 생각합니다. 715 00:31:28,590 --> 00:31:32,280 그리고 난 그냥 printfs의 무리가 나는 정신 체크를해야한다. X는 1 716 00:31:32,280 --> 00:31:35,110 Y는 2가 생각된다이고 그 printfs 말 무슨. 717 00:31:35,110 --> 00:31:36,530 그래서 마법 지금까지. 718 00:31:36,530 --> 00:31:40,100 >> 그럼 함께 항에 갈거야 점 점 점 스와핑, DEF 인쇄 할 수 있습니다. 719 00:31:40,100 --> 00:31:43,730 나는 스왑을 호출하는거야 기능, x와 y에 전달합니다. 720 00:31:43,730 --> 00:31:47,350 그리고 이제 지금을 위해 가정하자 스왑 정확히 구현 721 00:31:47,350 --> 00:31:49,930 그것은 순간 전으로 임시 변수. 722 00:31:49,930 --> 00:31:52,670 그래서 나는 대담하게 주장 교환. 723 00:31:52,670 --> 00:31:55,429 X이와 y는 지금 지금이다. 724 00:31:55,429 --> 00:31:57,220 그러나 파일은 물론, 어떤 스왑라고하지 않습니다. 725 00:31:57,220 --> 00:31:58,678 그럼 실제로 어떻게되는지 보자. 726 00:31:58,678 --> 00:32:04,450 그때에는 스왑 및 컴파일하지 않는 경우 ./noswap을, x는 1이고, Y는 2입니다. 727 00:32:04,450 --> 00:32:05,770 교환 스와핑. 728 00:32:05,770 --> 00:32:07,200 X는 Y는 2, 1입니다. 729 00:32:07,200 --> 00:32:11,980 그래서 실제로에도 결함이있는 것 같다 swap--하지만은들을 당장 아래로 스크롤하자 730 00:32:11,980 --> 00:32:16,542 당 정확하게 구현 코드는 내가 잠시 전에 제안했다. 731 00:32:16,542 --> 00:32:19,000 그래서 우리는 멋진 얻을하지 않을거야 지금은 배타적 물건. 732 00:32:19,000 --> 00:32:21,890 이것도 단지 작동해야 우유와 OJ와 같은, 733 00:32:21,890 --> 00:32:25,820 하지만, 제대로 동작하지 않습니다. 734 00:32:25,820 --> 00:32:27,180 >> 그래서 다시이 작업을 수행 할 수 있습니다. 735 00:32:27,180 --> 00:32:29,310 어쩌면 내가 바로 그것을 실행되지 않았습니다. 736 00:32:29,310 --> 00:32:32,010 그래서 다시 없음 스왑 실행되지 수 있습니다. 737 00:32:32,010 --> 00:32:32,900 어쩌면 난 - NO. 738 00:32:32,900 --> 00:32:34,400 그래서 그냥 작동하지 않습니다. 739 00:32:34,400 --> 00:32:36,060 그래서 조금 정신 검사를 할 수 있습니다. 740 00:32:36,060 --> 00:32:39,690 나 스왑 여기에 앞서 가자 다만, 추가 잠깐, 741 00:32:39,690 --> 00:32:43,856 %의 난입니다 / n 및하자 플러그인의 값입니다. 742 00:32:43,856 --> 00:32:45,730 정말 원하기 때문에 무슨 일이 일어나고 있는지 볼 수 있습니다. 743 00:32:45,730 --> 00:32:47,570 그리고 실제로,이다 디버깅 기술 744 00:32:47,570 --> 00:32:50,028 당신은에서 사용할 수 있음 근무 시간 또는 이미 집에서, 745 00:32:50,028 --> 00:32:53,560 단 상반기에 가깝다 PSET3에 Armendariz의 비디오 746 00:32:53,560 --> 00:32:56,870 우리가 인쇄를 도입, 상기와 같은 고화질 적어도 추천 기법 747 00:32:56,870 --> 00:32:58,080 간단한 경우에. 748 00:32:58,080 --> 00:33:01,720 내가 가서 make를 실행하자 다시 더 스왑하지 ./noswap. 749 00:33:01,720 --> 00:33:04,370 750 00:33:04,370 --> 00:33:05,840 >> 흥미. 751 00:33:05,840 --> 00:33:11,670 그래서 사실로 보이는 알 수 있습니다. 엑스 1이고, Y는 2이지만, B가 1 인 경우에는 2이다. 752 00:33:11,670 --> 00:33:16,790 그래서 그 두 어떻게 든 교체있어 그러나 x와 y는 교환 점점되지 않습니다. 753 00:33:16,790 --> 00:33:21,090 그래서 무슨 일이야, 분명합니다 , 여기까지 나는 x와 y가된다 754 00:33:21,090 --> 00:33:25,380 그는 로컬 변수는 주요의 범위는, 나는 x와 y를 전달 해요 755 00:33:25,380 --> 00:33:26,170 교환합니다. 756 00:33:26,170 --> 00:33:29,080 이제, 교환, 분리 함수로서 인수를 호출 무료 757 00:33:29,080 --> 00:33:30,590 또는 매개 변수 아무것도 그것을 원한다. 758 00:33:30,590 --> 00:33:33,280 푸는 X 또는 Y 또는 A 또는 B 또는 바 또는. 759 00:33:33,280 --> 00:33:36,870 단지 그들이 걸 명확하게하는 X 동일하지와 y 자체, 760 00:33:36,870 --> 00:33:38,020 나는 A와 B를 말한. 761 00:33:38,020 --> 00:33:40,040 그러나 우리는 그들에게 우리가 원하는 무엇이든을 호출 할 수 있습니다. 762 00:33:40,040 --> 00:33:43,960 >> 그리고 그것은처럼 보인다 스왑 전달되는 763 00:33:43,960 --> 00:33:48,980 x-- 일명 할까 .. 그리고 그것은이다 y-- 일명 B에 전달되는. 764 00:33:48,980 --> 00:33:51,900 어떻게 든이 세 줄은 정확하게 이러한 값을 스와핑 765 00:33:51,900 --> 00:33:53,510 로렌은 우유와 OJ했던 것처럼. 766 00:33:53,510 --> 00:33:56,010 그러나 우리는 인쇄 할 때 값, 및 B 767 00:33:56,010 --> 00:34:01,340 교환 참으로하지만 X와 Y는 그들에게 변화가 없습니다. 768 00:34:01,340 --> 00:34:03,150 그 x와 y가 여기에있다 기억합니다. 769 00:34:03,150 --> 00:34:05,320 >> 그래서 우리는이를 통해 볼 수 있습니다 뿐만 아니라 다른 기술. 770 00:34:05,320 --> 00:34:08,110 그리고이 너무 기술이다 문제에 포함 된 세 가지를 설정합니다. 771 00:34:08,110 --> 00:34:10,780 의 앞서 가자와이 작업을 수행 CS50 ID는 이미하지 않은 경우. 772 00:34:10,780 --> 00:34:13,730 우측의 우리에 이 디버거 탭이 있습니다. 773 00:34:13,730 --> 00:34:16,159 그리고 당신은이를 열 경우, 일부 비밀 정보가있다 774 00:34:16,159 --> 00:34:17,530 즉, 처음에 당신을 던져입니다. 775 00:34:17,530 --> 00:34:19,310 하지만 이제 정말 빨리이 떨어져 애타게 할 수 있습니다. 776 00:34:19,310 --> 00:34:21,620 >> 그래서 하나는, 당신은 지역 변수를 참조하십시오. 777 00:34:21,620 --> 00:34:26,230 CS50의 IDE에 구축 밝혀,과 프로그래밍 환경의 더 많은 778 00:34:26,230 --> 00:34:28,060 일반적으로, 디버거이다. 779 00:34:28,060 --> 00:34:31,340 당신이 시각적으로 볼 수있는 도구 무슨 일이 프로그램의 내부에 무슨 일 780 00:34:31,340 --> 00:34:34,380 첨가에 의지하지 않고 printfs 및 컴파일 및 실행 781 00:34:34,380 --> 00:34:37,588 그리고 printf의의를 추가하고 컴파일 근무 시간에, 어떤 이미 실행 782 00:34:37,588 --> 00:34:40,070 또는 집, 아마 꽤 지루한지고. 783 00:34:40,070 --> 00:34:43,090 >> 그래서 여기에, 그냥 순간에, 우리는있어 실시간으로 볼 것 784 00:34:43,090 --> 00:34:44,760 우리 지역 변수의 값. 785 00:34:44,760 --> 00:34:47,880 우리는 또한 설정할 수거야 브레이크 포인트라고 무엇을하는 786 00:34:47,880 --> 00:34:52,570 기회가 일시 중지 내 프로그램에 코드의 특정 라인에서 실행 787 00:34:52,570 --> 00:34:53,710 나는 약 궁금있다. 788 00:34:53,710 --> 00:34:54,210 권리? 789 00:34:54,210 --> 00:34:55,969 이 프로그램은 두 번째 분할에서 실행됩니다. 790 00:34:55,969 --> 00:35:00,450 그것은 우리 느린 인간에 대한 종류의 좋은 데요 일시 정지, 잠시 시간을내어 할 수 있도록 참조 791 00:35:00,450 --> 00:35:02,380 주위에 무슨 일이야 코드의 특정 라인 792 00:35:02,380 --> 00:35:05,050 프로그램 없어야없이 이를 통해 완전히 마무리. 793 00:35:05,050 --> 00:35:08,510 그래서 중단 점에 우리를 허용하는 것 휴식 및 특정 지점에서 일시 정지합니다. 794 00:35:08,510 --> 00:35:12,990 >> 콜 스택의 멋진 방법입니다 기능은 무엇인지 말 795 00:35:12,990 --> 00:35:14,140 순간에 호출되는. 796 00:35:14,140 --> 00:35:15,370 주요 항상 처음이라고합니다. 797 00:35:15,370 --> 00:35:17,230 그러나 주요를 호출하는 경우 스왑 호출 된 함수, 798 00:35:17,230 --> 00:35:20,470 우리는 실제로이를 보게 될 것입니다 왔다 기능의 타워 799 00:35:20,470 --> 00:35:22,400 역순했다. 800 00:35:22,400 --> 00:35:23,310 그럼 것을 볼 수 있습니다. 801 00:35:23,310 --> 00:35:24,327 >> 나는 축소거야. 802 00:35:24,327 --> 00:35:25,660 나는 내 코드로 돌아갈거야. 803 00:35:25,660 --> 00:35:27,540 그냥 내가 원하는 때문에 여기 현학적하기 위해, 804 00:35:27,540 --> 00:35:31,100 내가 가서 클릭거야 다만 라인 다섯의 왼쪽에. 805 00:35:31,100 --> 00:35:32,830 그리고 그 빨간 점을 만듭니다. 806 00:35:32,830 --> 00:35:36,200 그리고 오른쪽에 주목 디버거가 이봐, 알고, 807 00:35:36,200 --> 00:35:41,020 내가 방금 말한 중단 점에서 noswap.c 라인 다섯, 특히 808 00:35:41,020 --> 00:35:42,480 이 코드 줄에서. 809 00:35:42,480 --> 00:35:45,090 그래서 디버거는 내가 알고 다음 번 것을 요청했습니다 810 00:35:45,090 --> 00:35:48,530 내 프로그램 그것을 일시 정지를 실행 이보다는 실행 811 00:35:48,530 --> 00:35:50,390 슈퍼 빠른 전체를 실행. 812 00:35:50,390 --> 00:35:53,889 >> 그래서 지금은 디버그를 클릭거야 IDE의 매우 상단에있는 버튼을 813 00:35:53,889 --> 00:35:55,430 그것은 다음과 같은 작업을 수행 할 것입니다. 814 00:35:55,430 --> 00:36:00,680 그것은 처음에는 다소을 열 것 무서운 찾고 제 2 터미널 .- 창문 815 00:36:00,680 --> 00:36:02,679 에서 원격 디버깅 이러한 호스팅하고 such-- 816 00:36:02,679 --> 00:36:04,970 우리는 다시 올 거 야 모두가 오래 전에 의미합니다. 817 00:36:04,970 --> 00:36:09,020 하지만 지금은 중요한거야 그 빨간 점을 맞았 것입니다, 818 00:36:09,020 --> 00:36:11,735 디버거가 의도적으로이 execution-- 일시 중지 819 00:36:11,735 --> 00:36:15,560 하지 그 자체로 그 라인에 있지만, 처음에 그 함수의 실제 코드의 라인. 820 00:36:15,560 --> 00:36:18,040 라인 일곱 인 이유입니다 지금 노란색으로 강조. 821 00:36:18,040 --> 00:36:20,550 >> 그리고 이제 살펴 보자 우변. 822 00:36:20,550 --> 00:36:27,300 그것은 기본적으로 같다, 잘 충분히, X는 어떤 값을 가지고? 823 00:36:27,300 --> 00:36:27,860 0. 824 00:36:27,860 --> 00:36:29,750 Y는 어떤 값을 가지고? 825 00:36:29,750 --> 00:36:30,410 제로. 826 00:36:30,410 --> 00:36:35,540 그리고 그 점에서 예상 할 수있어 그 x와 노란색 line--가 가지고있는 y-- 827 00:36:35,540 --> 00:36:36,770 아직 실행되지 않습니다. 828 00:36:36,770 --> 00:36:38,510 그래서 X의 값은 1이 안됩니다. 829 00:36:38,510 --> 00:36:41,470 그것은 어떤 다른 값을 가질 수 있습니다, 소위 쓰레기 값입니다. 830 00:36:41,470 --> 00:36:44,320 그리고 우리는 그것의 점에서 운이있어 본질적으로,이 시점에서 제로. 831 00:36:44,320 --> 00:36:46,400 >> 그래서 지금 몇있다 버튼을 우리가 신경 쓸 필요 832 00:36:46,400 --> 00:36:48,100 이 방법으로 디버깅 할 때 약. 833 00:36:48,100 --> 00:36:49,970 여기에 주목, 우리는 재생 버튼이 있습니다. 834 00:36:49,970 --> 00:36:51,877 그리고 우리는 재생하는 경우 또는 충돌 즉 단지, 다시 시작 835 00:36:51,877 --> 00:36:53,710 를 통해 실행하는 것 프로그램의 나머지 836 00:36:53,710 --> 00:36:55,300 또는 또 다른 중단 점을 돌 때까지. 837 00:36:55,300 --> 00:36:56,910 그러나 나는 다른 설정하지했습니다 중단 그래서 그냥 838 00:36:56,910 --> 00:36:58,118 말까지 실행하는 것. 839 00:36:58,118 --> 00:37:00,280 패배의 종류 주위에 파고의 목적. 840 00:37:00,280 --> 00:37:03,290 >> 그래서 그 대신, 내가 걱정 오른쪽에이 아이콘. 841 00:37:03,290 --> 00:37:05,360 그리고 가리키면 그들에게, 당신은 너무해야 842 00:37:05,360 --> 00:37:07,450 당신은 작은 tips-- 도구 설명을 볼 수 있습니다. 843 00:37:07,450 --> 00:37:09,020 이것은 하나 이상의 단계입니다. 844 00:37:09,020 --> 00:37:11,290 이제는 스킵을 의미하지 않는다 다음 코드 줄. 845 00:37:11,290 --> 00:37:14,840 즉, 단지 그것을 실행 의미 다음으로 이동 다음으로 이동 846 00:37:14,840 --> 00:37:15,580 다음으로 이동합니다. 847 00:37:15,580 --> 00:37:17,610 즉, 비아 그 버튼을, 나는 걸을 수 848 00:37:17,610 --> 00:37:20,390 한 번에 내 코드를 한 단계를 통해. 849 00:37:20,390 --> 00:37:21,914 말 그대로 라인으로 라인. 850 00:37:21,914 --> 00:37:23,830 이제, 오른쪽 다른 하나는 거기에 있다고 851 00:37:23,830 --> 00:37:25,163 우리는 단지 한 순간에 볼 수있다. 852 00:37:25,163 --> 00:37:27,820 이것은 소위이다 아이콘 단계 씩 853 00:37:27,820 --> 00:37:30,300 나에게 다이빙을 허용하는 것 또 다른 기능으로. 854 00:37:30,300 --> 00:37:31,800 그러나 그냥 순간에서 볼 수 있습니다. 855 00:37:31,800 --> 00:37:33,280 그래서 스텝 오버를 클릭거야. 856 00:37:33,280 --> 00:37:35,820 내가 클릭으로 그리고 지금, 알 오른쪽 상단의 버튼, 857 00:37:35,820 --> 00:37:41,260 현지에서 대략 당신의 눈을 유지 변수와 X에 무슨 일이 일어 나는지. 858 00:37:41,260 --> 00:37:44,115 X 해주기 때문에 1 노란 선은 현재 실행 된 859 00:37:44,115 --> 00:37:45,840 우리는 라인 8에 이동했습니다. 860 00:37:45,840 --> 00:37:49,840 그리고 잠시의 Y에 희망이 될 것이다. 861 00:37:49,840 --> 00:37:52,330 >> 지금, 아무것도 흥미가 조금 발생합니다. 862 00:37:52,330 --> 00:37:53,390 이 모든이는 printf의입니다. 863 00:37:53,390 --> 00:37:58,010 그리고 내 차 터미널에 주목 창, 나는 인쇄 데프의 출력을 참조하십시오. 864 00:37:58,010 --> 00:38:01,080 그리고 지금은을해야 프로그래머로 결정. 865 00:38:01,080 --> 00:38:04,360 나는이 라인을 통해 단계 수 코드를 실행하지만 866 00:38:04,360 --> 00:38:06,220 내부 기능에 대한 호기심이 점점. 867 00:38:06,220 --> 00:38:11,130 아니면 내가 실제로 한 단계 수 및 스왑 자체의 내부 이동합니다. 868 00:38:11,130 --> 00:38:12,340 그럼 후자를 할 수 있습니다. 869 00:38:12,340 --> 00:38:15,550 >> 내가 가서 클릭하자 하지 스텝 오버하지만 속으로 단계. 870 00:38:15,550 --> 00:38:17,300 공지 사항, 갑자기 윈도우 변경 871 00:38:17,300 --> 00:38:19,330 첫 번째 강조 스왑의 코드 라인. 872 00:38:19,330 --> 00:38:20,710 즉 라인 (21)이다. 873 00:38:20,710 --> 00:38:25,220 그리고 지금, 펑키의 종류는 그 무엇이다, 당신이 여기에 보면, 예상대로 874 00:38:25,220 --> 00:38:29,720 쉼표 (B)는 각각 1, 2이다. 875 00:38:29,720 --> 00:38:33,840 왜 임시 32,767입니까? 876 00:38:33,840 --> 00:38:36,560 많은처럼, 그 온도를 불러 오기 잠시 전에 빈 컵, 877 00:38:36,560 --> 00:38:38,980 라인 (21) 여기에 선언된다. 878 00:38:38,980 --> 00:38:43,390 내 말은 왜 32,000-, 이유는 그것은 단지 몇 가지 이상한 값? 879 00:38:43,390 --> 00:38:43,890 그래? 880 00:38:43,890 --> 00:38:45,190 >> 청중 : 그것은 초기화 아니에요. 881 00:38:45,190 --> 00:38:46,940 >> 데이비드 J. 마란 : 그것은 초기화되지. 882 00:38:46,940 --> 00:38:49,370 그래서 우리의 컴퓨터 항상 실제 메모리가 있습니다. 883 00:38:49,370 --> 00:38:50,544 항상 실제 RAM이 있습니다. 884 00:38:50,544 --> 00:38:52,710 그리고 항상 거기의 영점 하나는, 바로 거기에있어? 885 00:38:52,710 --> 00:38:54,626 우리가 사용하고 있기 때문에 우리의 하루 종일 컴퓨터, 886 00:38:54,626 --> 00:38:57,210 당신은 CS50 IDE를 사용하는 또는 서버 하루 종일. 887 00:38:57,210 --> 00:39:01,159 그 RAM 일부 0을 가지고 하나 그래서 나 어떤 하나의 나 약간의 0과 1. 888 00:39:01,159 --> 00:39:02,950 아무리 여부 당신이 그들을 사용하고 있지. 889 00:39:02,950 --> 00:39:05,270 당신은 빈 가질 수 없습니다 공간은 어디 비트를 할 수 있습니다. 890 00:39:05,270 --> 00:39:06,850 그들은 0과 1 중이야. 891 00:39:06,850 --> 00:39:09,610 >> 그래서 때문에, 그 온도를 밝혀 우리는 아직 초기화되지했습니다 892 00:39:09,610 --> 00:39:14,580 우리는 그 32 비트를 가지고 있지만 그들은 적이 없다 알려진 값으로 초기화. 893 00:39:14,580 --> 00:39:18,110 그래서 그들은했다대로 가장 최근에 그 32 bits-- for-- 사용 894 00:39:18,110 --> 00:39:23,000 우리는 단지 몇 가지의 유물을보고있다 그 특정 (32)의 이전 사용 895 00:39:23,000 --> 00:39:23,500 비트. 896 00:39:23,500 --> 00:39:27,780 즉시 그래도 스텝 오버 클릭으로, 휴, 온도는 1의 값을 얻을 것입니다. 897 00:39:27,780 --> 00:39:31,600 내가 다시 할 경우에,이다 값이 부여 될 것 898 00:39:31,600 --> 00:39:33,830 다음 B가에가는 값 1을 설명한다. 899 00:39:33,830 --> 00:39:36,390 >> 그래서 무슨 일이 지금에 좋다 이야기의이 시점 900 00:39:36,390 --> 00:39:39,750 디버거가 있다는 것이다 슈퍼 천천히, 나를 보여주는 901 00:39:39,750 --> 00:39:42,640 내 자신의 속도로, 어떤 스왑의 상태입니다. 902 00:39:42,640 --> 00:39:47,490 그러나 여기 상단 통지에 주목 실제로 호출 스택 903 00:39:47,490 --> 00:39:49,180 그것은 두 개의 층이 있습니다. 904 00:39:49,180 --> 00:39:53,240 로 강조이야 이제 하나 스왑, 내가 대신 홈페이지를 클릭하면, 905 00:39:53,240 --> 00:39:57,100 지역 변수를 변경하는 방법을 알 수 개발자는 단지 홉 수 있으므로 906 00:39:57,100 --> 00:39:59,740 주위에 어떤 다른 범위로 이동합니다. 907 00:39:59,740 --> 00:40:04,070 우리는이 모든 일을하는지 그래서 비록 일을 제대로 A와 B를 교환, 908 00:40:04,070 --> 00:40:09,080 나는 스왑 사이에서왔다 갔다하는 경우 는 2이고, B는 1 주이고, 909 00:40:09,080 --> 00:40:11,851 주요 전혀 영향을 받았다? 910 00:40:11,851 --> 00:40:12,350 아니. 911 00:40:12,350 --> 00:40:13,930 그래서 테이크 아웃은 여기에 무엇입니까? 912 00:40:13,930 --> 00:40:18,200 음, 언제 밝혀 당신은, 스왑과 같은 함수를 호출 913 00:40:18,200 --> 00:40:21,600 당신은 그것을 인수를 전달하는 것을 당신은 스왑 함수에 전달하고 914 00:40:21,600 --> 00:40:24,730 이 경우는 복사 그 인수. 915 00:40:24,730 --> 00:40:28,620 따라서 X 및 Y는 각각 각 경우 32 비트, 어떤 스왑을 받고있다 916 00:40:28,620 --> 00:40:30,760 두 개의 새로운 지역입니다 변수 또는 인수 917 00:40:30,760 --> 00:40:34,380 라는 및 b--하지만 사람들은 임의적 names--하지만 0의 패턴 918 00:40:34,380 --> 00:40:39,520 내부 및 B의 것들이다 줄은 x와 y와 동일합니다 919 00:40:39,520 --> 00:40:42,610 하지만 그들은하지 있습니다 x와 y와 같은 것. 920 00:40:42,610 --> 00:40:46,880 >> 주요의 그 조각에있다 것처럼 그것은이다 종이 숫자 1과 x와 y 2, 921 00:40:46,880 --> 00:40:49,260 그리고 그 후, 손 때 종이 조각은 스왑, 922 00:40:49,260 --> 00:40:51,970 스왑은 매우 빠르게 도착 자신의 펜, 아래로 쓴다 923 00:40:51,970 --> 00:40:56,240 1 종이 자체의 시트에 2, 손 메인 원래 XY를 백업 924 00:40:56,240 --> 00:40:58,790 다음 자신의 작업을 수행 A와 B를 가진 것. 925 00:40:58,790 --> 00:41:01,940 그리고 이것은 지금 때문에 매우 중요하다 이 사소 의미를 가지고 926 00:41:01,940 --> 00:41:06,260 실제로 올바른 코드를 작성하기위한 이 것 때문에 우리는 바꿀 수 없습니다 927 00:41:06,260 --> 00:41:07,500 두 변수. 928 00:41:07,500 --> 00:41:09,150 >> 나는 올바른 스왑 기능을 작성했습니다. 929 00:41:09,150 --> 00:41:12,770 우리는 같은 로렌 그것을 구현했습니다 현실에서 올바른 스왑 기능, 930 00:41:12,770 --> 00:41:16,700 하지만 그 분명히 없음 문제 경우 실제로 할 수 없습니다 931 00:41:16,700 --> 00:41:19,530 영구적으로 두 값을 교환합니다. 932 00:41:19,530 --> 00:41:21,970 그래서 우리는 다른 방법이 필요합니다 실제로이에서 얻을 수 있습니다, 933 00:41:21,970 --> 00:41:24,472 우리는 할 수 있어야합니다 실제로,이 문제를 해결한다. 934 00:41:24,472 --> 00:41:27,180 그리고 그것은 out--집니다 우리는 올 것이다 다시이 특정 사진에 935 00:41:27,180 --> 00:41:30,500 long-- 전에이 하나의 방법입니다 당신은 당신의 컴퓨터의 메모리를 그릴 수 있습니다. 936 00:41:30,500 --> 00:41:31,460 그냥 사각형입니다. 937 00:41:31,460 --> 00:41:32,960 당신은 어떤을 그릴 수 방법 그러나 그것의 수 938 00:41:32,960 --> 00:41:35,740 로 그릴 편리 다음과 같은 이유로 사각형입니다. 939 00:41:35,740 --> 00:41:40,040 >> 우리는 넘어 오늘을 시작하는거야 소위 스택에 대해 이야기. 940 00:41:40,040 --> 00:41:43,870 그리고 스택은 체크입니다 의 memory--의 덩어리를 RAM-- 941 00:41:43,870 --> 00:41:47,100 기능을 액세스 할 수 그들이 호출 할 때까지. 942 00:41:47,100 --> 00:41:49,800 그리고 그것은 그에서 밝혀 이 스택의 맨 아래 943 00:41:49,800 --> 00:41:53,590 홈페이지의 지역 변수의 모든 어디 조직도 C와 조직도 V 및 모든 물건과 944 00:41:53,590 --> 00:41:56,950 기본적으로 갈 수 있습니다. 그리고 메인 경우 , 스왑 같은 다른 함수를 호출 945 00:41:56,950 --> 00:42:00,330 물론, 스왑은 서로를 얻을 것입니다 위의 메모리 최대의 층. 946 00:42:00,330 --> 00:42:04,490 >> 그래서 당신에게 빠른 피상적를 제공합니다 이의 사진, 내가 가서 경우 ​​here-- 947 00:42:04,490 --> 00:42:09,450 나를에이를 반영 할 수 오버 헤드로 정말 내가 무슨 저기 ..., 948 00:42:09,450 --> 00:42:12,100 우리는 대한 유일한 걱정하는 경우 지금은이 그림의 아래, 949 00:42:12,100 --> 00:42:15,070 입니다 나는 프로그램을 실행할 때 및 주요, 호출되는 950 00:42:15,070 --> 00:42:18,330 주요 덩어리가 주어집니다 내 컴퓨터의 RAM 951 00:42:18,330 --> 00:42:20,060 소위 스택의 하단. 952 00:42:20,060 --> 00:42:22,143 그리고 나는 그것을 그릴거야 의도적으로 제곱. 953 00:42:22,143 --> 00:42:24,540 그래서 32 비트 또는 4 바이트 같다. 954 00:42:24,540 --> 00:42:28,790 그리고이 주요 기능이있는 경우 1의 값을 가지는 변수라는 X 955 00:42:28,790 --> 00:42:32,626 그것은라는 변수가 있습니다 2의 값을 가진 Y는 그건 956 00:42:32,626 --> 00:42:35,750 메모리의 은색을 복용처럼 그 홈페이지가 조작함으로써 주어졌다 957 00:42:35,750 --> 00:42:38,850 시스템 있도록 나누기 최초의 지역 변수가 간다 958 00:42:38,850 --> 00:42:40,930 두 번째는 간다, 그리고 그것 뿐이다. 959 00:42:40,930 --> 00:42:45,590 >> 주요 스왑, 스왑을 호출 할 때 메모리의 자신의 조각을 얻는다 960 00:42:45,590 --> 00:42:48,280 우리는 다음과 같이 그릴거야 운영 체제로부터, 961 00:42:48,280 --> 00:42:50,820 그리고이 것 그 자신의 지역 변수를 기반으로 962 00:42:50,820 --> 00:42:53,825 우리의 구현에 이전 지역 변수와 963 00:42:53,825 --> 00:42:58,010 처음와 b 그 값 1과 2를 얻을. 964 00:42:58,010 --> 00:43:00,450 하지만, 가능한 한 빨리 교환 코드, 실행 965 00:43:00,450 --> 00:43:03,760 로렌 실제로 스왑 OJ와 우유, 무슨 일이야? 966 00:43:03,760 --> 00:43:09,030 음,이 2는 1이되고있다 1에 의해, (2)이되고, 및 967 00:43:09,030 --> 00:43:13,360 되 고 임시 변수가있다 결국에는 그 모든 시간을 사용 968 00:43:13,360 --> 00:43:14,470 멀리 간다. 969 00:43:14,470 --> 00:43:16,720 그러나 그것은 중요하지 않습니다 얼마나 많은 일을 당신이 970 00:43:16,720 --> 00:43:22,160 이 라인이 메모리 공간에 동행입니다에, X 및 Y는 완전히 그대로이다. 971 00:43:22,160 --> 00:43:26,320 >> 그래서 우리는주는 방법이 필요 좋아 스왑 및 기능 972 00:43:26,320 --> 00:43:32,640 비밀 액세스, 만약에 당신에게 함수는 x와 y 같은 메모리에 그때 엔. 973 00:43:32,640 --> 00:43:35,110 그럼 살펴 보자 도움이 예 974 00:43:35,110 --> 00:43:38,220 우리는이되었습니다 정확하게 볼 이 모든 시간에가는. 975 00:43:38,220 --> 00:43:40,284 나는 앞서 갈거야 최대 열 제로를 비교. 976 00:43:40,284 --> 00:43:42,200 그리고 나는 종료거야 우리의 디버거, 내가 갈거야 977 00:43:42,200 --> 00:43:44,360 이 무서운 찾고 메시지를 닫습니다 그냥 잠깐 말한다, 978 00:43:44,360 --> 00:43:45,800 당신은 중간 디버깅에있어. 979 00:43:45,800 --> 00:43:48,383 여기이 탭을 숨기는거야 그냥 단순로 이동합니다. 980 00:43:48,383 --> 00:43:50,160 GDB가 살해 된 경우 그래서 걱정하지 마십시오. 981 00:43:50,160 --> 00:43:53,910 그건 그냥 프로그램이 있음을 의미 의도적으로이 경우, 종료되고, 982 00:43:53,910 --> 00:43:54,820 나에게서부터로. 983 00:43:54,820 --> 00:43:57,700 >> 그리고 지금 제로는이 작업을 수행 비교. 984 00:43:57,700 --> 00:44:00,110 나는 CS50를 사용하고 있습니다 표준 I / O 라이브러리를. 985 00:44:00,110 --> 00:44:04,319 그 첫 번째 주요 기능을 가지고있어 라고, 뭔가 말을하고, 문자열을 가져옵니다. 986 00:44:04,319 --> 00:44:06,110 그런 다음 다시 그것을 말한다 다른 문자열을 가져옵니다. 987 00:44:06,110 --> 00:44:09,910 그리고이 두 개의 문자열을 통지 각각 S와 T라고합니다. 988 00:44:09,910 --> 00:44:12,910 그리고 지금이 프로그램은, 비교 제로, 삶의 목적, 989 00:44:12,910 --> 00:44:15,470 그것은 말해하기로했다, 나는 같은 일을 입력 했습니까? 990 00:44:15,470 --> 00:44:16,910 그래서 나는 일주일에 다시 갈거야. 991 00:44:16,910 --> 00:44:19,950 내 동일한 동일한 연산자를 사용하고 있습니다 이는 품질 연산자이다. 992 00:44:19,950 --> 00:44:22,220 아니 대입 연산자, 항등 연산자. 993 00:44:22,220 --> 00:44:23,890 난 그냥 S와 T를 비교하고있다. 994 00:44:23,890 --> 00:44:27,470 >> 그래서 실제로 가서이 작업을 수행 할 수 있습니다. 995 00:44:27,470 --> 00:44:32,680 그리고 앞서 갈거야 과 제로를 비교합니다. 996 00:44:32,680 --> 00:44:35,110 나는 ./comparezero을 할거야. 997 00:44:35,110 --> 00:44:37,150 그리고 나는 갈거야 앞으로 뭔가 말 998 00:44:37,150 --> 00:44:43,450 등의 소문자에 엄마를하자 어떻게 대문자로 엄마에 대한. 999 00:44:43,450 --> 00:44:45,034 그리고 물론 나는 다른 일을 입력합니다. 1000 00:44:45,034 --> 00:44:45,533 괜찮아. 1001 00:44:45,533 --> 00:44:46,570 즉, 예상 할 수있다. 1002 00:44:46,570 --> 00:44:47,640 >> 이제 다시 실행하자. 1003 00:44:47,640 --> 00:44:49,740 두 번, 소문자를 소문자을한다. 1004 00:44:49,740 --> 00:44:51,490 즉 나에게 슈퍼 동일 보인다. 1005 00:44:51,490 --> 00:44:52,930 입력합니다. 1006 00:44:52,930 --> 00:44:53,430 그래. 1007 00:44:53,430 --> 00:44:55,804 아마 때문에 그냥 이상한 내 문법을 좋아하지 않는 것. 1008 00:44:55,804 --> 00:44:59,930 그럼 자본 MOM을하자, 자본 엄마, 동일. 1009 00:44:59,930 --> 00:45:01,490 다른 것들. 1010 00:45:01,490 --> 00:45:03,907 >> 그래서 이유는 무엇입니까? 1011 00:45:03,907 --> 00:45:06,240 음, 사실 무슨 일이야 여기에 후드 아래에? 1012 00:45:06,240 --> 00:45:08,180 그래서 다시 가서 보자 여기에 단지 순간 1013 00:45:08,180 --> 00:45:10,910 무엇을 고려하여 GetString 실제로하고있다. 1014 00:45:10,910 --> 00:45:13,385 당신이하여 GetString를 호출 할 때, 즉 함수 우리의 1015 00:45:13,385 --> 00:45:16,510 자신이 쓴 어떻게 든를 가져옵니다 사용자의 문자의 순서. 1016 00:45:16,510 --> 00:45:20,280 그리고의 첫 번째 가정하자 시간 나는하여 GetString를 호출, 그 날을 제공합니다 1017 00:45:20,280 --> 00:45:21,930 메모리 청크는 다음과 같습니다. 1018 00:45:21,930 --> 00:45:26,990 그리고 나는 모든 소문자로 입력 한 경우 M-O-M-- 무엇은 후에 간다? 1019 00:45:26,990 --> 00:45:28,840 그냥 빨리 전성 검사. 1020 00:45:28,840 --> 00:45:29,780 >> 백 슬래시 제로. 1021 00:45:29,780 --> 00:45:30,510 우리는 알고있다. 1022 00:45:30,510 --> 00:45:32,784 그리고 우리가 연주 리콜 주위 Zamila의 이름으로 1023 00:45:32,784 --> 00:45:34,950 다른 이름의 무리 때 롭 여기에보고 있었다 1024 00:45:34,950 --> 00:45:36,280 메모리의 내부에서 무슨 일이 일어나고 있는지에. 1025 00:45:36,280 --> 00:45:37,780 그래서 이야기는 정확히 동일합니다. 1026 00:45:37,780 --> 00:45:40,160 이것은 무엇을하다하여 GetString 나에게 반환됩니다. 1027 00:45:40,160 --> 00:45:44,780 지금, 내 코드는 순간 전에 저장 에서 getString 반환 값 1028 00:45:44,780 --> 00:45:47,510 변수들이라고합니다. 1029 00:45:47,510 --> 00:45:51,390 그리고 두 번째는 내가라고, 이는 t라는 변수에 저장. 1030 00:45:51,390 --> 00:45:55,070 >> 내가 여기에 가면 그래서 필요 이 지역 variable--을 그립니다 1031 00:45:55,070 --> 00:45:59,610 나는 일반적으로 갈거야 그냥 ... 우리가 겠지만 문자열을 그립니다 1032 00:45:59,610 --> 00:46:02,360 여기에 작은 광장으로 s-- 호출합니다. 1033 00:46:02,360 --> 00:46:09,760 엄마를 어떻게하는지 그리고 지금, somehow-- 이 변수의 내부 이동? 1034 00:46:09,760 --> 00:46:12,010 음, 우리는 돌아 가야 할 필요가 여기에 첫 번째 원칙. 1035 00:46:12,010 --> 00:46:15,660 하여 GetString는 실제로 무엇을 반환? 1036 00:46:15,660 --> 00:46:19,030 >> 그래서 그 M-O-M을 밝혀 슬래시 제로, 및 임의의 개수 1037 00:46:19,030 --> 00:46:22,364 같은 메모리에 다른 문자열 Zamila 롭거나 앤디 또는 다른 사람, 1038 00:46:22,364 --> 00:46:24,280 에 물론 우리의 컴퓨터의 RAM 또는 메모리. 1039 00:46:24,280 --> 00:46:27,760 그리고 당신의 RAM은 당신이 그때 엔이 RAM의 공연, RAM의 두 기가, 1040 00:46:27,760 --> 00:46:30,860 또는 억 억 바이트, 아니면 더 많은 요즘. 1041 00:46:30,860 --> 00:46:34,070 그래서 오늘의 목적을 위해, 가정하자, 우리가 번호를 어떻게 문제가되지 않습니다 1042 00:46:34,070 --> 00:46:36,640 그들, 그러나 우리는 각각의 번호를 수 그 억 억의 1043 00:46:36,640 --> 00:46:37,880 또는 네 억 바이트. 1044 00:46:37,880 --> 00:46:42,240 >> 그리고 그냥 임의로 그런 말을하자 이것은 첫번째 바이트, 초 바이트이며 1045 00:46:42,240 --> 00:46:43,380 세 번째, 네 번째. 1046 00:46:43,380 --> 00:46:46,570 나는 일부러 대해 0을 사용하고 있지 않다 오늘하지만 우리는 다시 그에게 올 것이다. 1047 00:46:46,570 --> 00:46:49,570 환언하면,이이면 처음으로 나는 프로그램을 사용하고 있습니다 1048 00:46:49,570 --> 00:46:52,715 난 그냥 운이 첫 번째지고있어 물린 후 위치 하나에 두 개의입니다 1049 00:46:52,715 --> 00:46:53,590 다음 세 네보다. 1050 00:46:53,590 --> 00:46:57,430 그리고 그리기 유지하는 경우, 상자 번호 억이 방법을 통해 여기에있을 것입니다. 1051 00:46:57,430 --> 00:47:02,200 >> 그래서 만약 당신이 다음, 어떻게 생각하세요, 하여 GetString 실제로 반환? 1052 00:47:02,200 --> 00:47:06,010 그것은 M-O-M의 백 슬래시를 반환하지 않는 것 제로 자체가 명확하게 그 때문에 1053 00:47:06,010 --> 00:47:08,180 내가 그린 한 상자에 맞지 않습니다. 1054 00:47:08,180 --> 00:47:11,210 그래서 실제로 다른 무엇을 getString에 있습니다 모든 주 복귀 할? 1055 00:47:11,210 --> 00:47:14,410 1056 00:47:14,410 --> 00:47:16,820 대답은에 보드 여기 어딘가에. 1057 00:47:16,820 --> 00:47:20,390 당신은 M-O-M 백 슬래시 제로에 맞지 않을 수 있습니다 그래서 대신에 의미가 있는가? 1058 00:47:20,390 --> 00:47:23,424 당신은 퍼팅, 슈퍼 영리해야한다면 소위 엔지니어링 모자, 1059 00:47:23,424 --> 00:47:24,340 당신은 무엇을 반환 할 수 있을까? 1060 00:47:24,340 --> 00:47:27,340 어떤 정보의 최소한의의 당신은 여전히​​ 것이라고를 반환 할 수 있습니다 1061 00:47:27,340 --> 00:47:30,610 메모리에 M-O-M을 찾을 수 있습니다? 1062 00:47:30,610 --> 00:47:31,270 그래? 1063 00:47:31,270 --> 00:47:31,950 >> 대상 : 하나. 1064 00:47:31,950 --> 00:47:32,200 >> 데이비드 J. 마란 : 하나. 1065 00:47:32,200 --> 00:47:33,021 그리고 왜 하나? 1066 00:47:33,021 --> 00:47:35,520 청중 : 그것은 말할 것 때문에 당신은 어디에 [들림] 이동합니다. 1067 00:47:35,520 --> 00:47:38,391 1068 00:47:38,391 --> 00:47:39,390 데이비드 J. 마란 : 맞아요. 1069 00:47:39,390 --> 00:47:44,300 난 그냥 주소를 반환하기 위하여려고하고있다 내가 입수했습니다 문자열. 1070 00:47:44,300 --> 00:47:46,570 이에 주소 경우는 위치입니다. 1071 00:47:46,570 --> 00:47:51,280 그래서 정말 s--에 저장되는 모든 문자열 변수 때문에 far-- 1072 00:47:51,280 --> 00:47:53,430 다만있다 해당 문자열의 주소입니다. 1073 00:47:53,430 --> 00:47:57,840 >> 한편, 나는 호출하는 경우 두 번째 난을 getString에 1074 00:47:57,840 --> 00:48:03,300 말 그대로 같은 누군지 모르겠지만를 입력 lowercase-- M-O-M과 M-O-M 1075 00:48:03,300 --> 00:48:06,200 또 다른 백 슬래시 제로, 그리고 지금 아마 내 프로그램의 1076 00:48:06,200 --> 00:48:09,820 몇 시간 동안 어쩌면이 실행 된 (10)이고, 이는이 12이고, 위치 11 1077 00:48:09,820 --> 00:48:10,700 이 13입니다. 1078 00:48:10,700 --> 00:48:13,590 다른 컴퓨터를 사용 어떤 이유로 메모리. 1079 00:48:13,590 --> 00:48:18,172 무엇 지금 내 두 번째로 간다 내 프로그램 T의 변수? 1080 00:48:18,172 --> 00:48:19,390 10. 1081 00:48:19,390 --> 00:48:20,050 정확히. 1082 00:48:20,050 --> 00:48:23,910 >> 그래서 우리가 볼 때 이 프로그램의 소스 코드 1083 00:48:23,910 --> 00:48:26,550 여기서 나는 단순히 노력하고있어 두 값을 비교, 1084 00:48:26,550 --> 00:48:32,180 이다 T로 동일 동일이야, 무슨 일이야 분명 인간의 대답? 1085 00:48:32,180 --> 00:48:34,890 (1) (10)과 동일하지 않을 그냥 아무 때문이다. 1086 00:48:34,890 --> 00:48:36,861 그리고 여기에 거짓말 우리에게 기회 정말 1087 00:48:36,861 --> 00:48:39,610 단지 첫 번째, 다시로 이동합니다 원칙과 잘, 생각, 1088 00:48:39,610 --> 00:48:41,110 무슨 일이 후드 아래에 무슨 일? 1089 00:48:41,110 --> 00:48:43,240 우리는 얘기를했습니다 비트와 바이트 메모리, 1090 00:48:43,240 --> 00:48:46,820 그러나 이해하는 것이 실제로 유용 당신이하여 GetString를 호출 할 때 때문에, 1091 00:48:46,820 --> 00:48:50,280 우리가 생각하더라도 그것은이다 M-O-M 또는 문자열 엄마를 반환 1092 00:48:50,280 --> 00:48:53,120 또는 앤디 또는 Zamila 또는 같은 기술적 1093 00:48:53,120 --> 00:48:55,510 그냥 주소를 반환하는 것 메모리의 청크의. 1094 00:48:55,510 --> 00:48:56,910 >> 하지만 괜찮아요. 1095 00:48:56,910 --> 00:49:00,570 내가 방법을 알고 있기 때문에 문자열이 어디 끝? 1096 00:49:00,570 --> 00:49:03,840 나는 시작에 불과을 부여하고있는 경우에는 어떻게해야합니까? 1097 00:49:03,840 --> 00:49:05,380 음, 백 슬래시 제로, 오른쪽? 1098 00:49:05,380 --> 00:49:08,800 그냥 내가 할 수있는 선형 시간 인쇄 데프 M-O-M과 인쇄. 1099 00:49:08,800 --> 00:49:11,820 그리고 최대한 빨리 백 슬래시를 참조로 내가 시작했던 곳 제로, 난 상관 없어 1100 00:49:11,820 --> 00:49:14,950 이미 암묵적으로 알고 어디 종료해야합니다. 1101 00:49:14,950 --> 00:49:18,700 >> 그래서 오늘은 beginning--을 표시하고 내가 우리 때문에 극적으로이 작업을 수행 할 수 1102 00:49:18,700 --> 00:49:21,800 많은 어려움을 겪었 이 여기에 wheels-- 훈련을받을 1103 00:49:21,800 --> 00:49:29,840 그래서 오늘 훈련 바퀴 시작 나서야 우리는에서 공개하는 least-- 1104 00:49:29,840 --> 00:49:31,373 >> [박수] 1105 00:49:31,373 --> 00:49:33,220 1106 00:49:33,220 --> 00:49:36,160 >> 즉, 여행 잘 가치가 있었다 네, 오늘 아침에 대상에? 1107 00:49:36,160 --> 00:49:39,600 그래서들을 당장이,이 변 아웃, 문자열 같은 건. 1108 00:49:39,600 --> 00:49:41,140 문자열이 존재하지 않습니다. 1109 00:49:41,140 --> 00:49:43,760 그것은 우리가 했어 동의어이다 CS50 라이브러리의 내부. 1110 00:49:43,760 --> 00:49:48,660 이제부터 우리는 호출 시작하는거야 S와 T하지 문자열하지만 문자 스타. 1111 00:49:48,660 --> 00:49:51,180 문자 스타 그리고 우리는거야 오래 전에 떨어져 애타게. 1112 00:49:51,180 --> 00:49:53,510 하지만이 말을하는 것입니다, 우리가 계속 경우에도 그 1113 00:49:53,510 --> 00:49:56,180 지금하여 GetString을 사용하여, 기술적으로 내가해야 1114 00:49:56,180 --> 00:49:59,010 문자 스타와 문자 별 말을합니다. 1115 00:49:59,010 --> 00:50:01,720 >> 그리고 그것은 무엇을 그 별을 밝혀 표시하기 위해가는 것은 뭔가 1116 00:50:01,720 --> 00:50:04,340 포인터 또는 주소라고합니다. 1117 00:50:04,340 --> 00:50:06,110 그리고 사실, 맛보기 무엇을 앞두고있다 1118 00:50:06,110 --> 00:50:09,760 에서이 20초 클립 우리의 스탠포드 친구 닉 Parlante 1119 00:50:09,760 --> 00:50:12,927 자, 꽤 많은 시간 전, 지출 시간의 말도 안되는 금액, 1120 00:50:12,927 --> 00:50:15,010 최고로 나는에 말할 수있는 자신의 부엌 또는 그의 지하실, 1121 00:50:15,010 --> 00:50:17,140 클레이 메이션을 세계에 소개 1122 00:50:17,140 --> 00:50:20,010 라는 문자 빙키 누구와 함께 우리는 것 1123 00:50:20,010 --> 00:50:22,010 포인터 옆에 시간이 도입 될 수있다. 1124 00:50:22,010 --> 00:50:24,588 그래서 여기 와서 무엇의 미리보기입니다. 1125 00:50:24,588 --> 00:50:26,370 >> [비디오 재생] 1126 00:50:26,370 --> 00:50:27,510 >> 이봐, 빙키. 1127 00:50:27,510 --> 00:50:28,260 일어나. 1128 00:50:28,260 --> 00:50:30,672 그것은 포인터 재미를위한 시간이다. 1129 00:50:30,672 --> 00:50:31,616 >> 그게 무슨입니까? 1130 00:50:31,616 --> 00:50:33,032 포인터에 대해 알아? 1131 00:50:33,032 --> 00:50:34,450 아, 케이크. 1132 00:50:34,450 --> 00:50:35,431 >> [END 재생] 1133 00:50:35,431 --> 00:50:38,055 데이비드 J. 마란 : 그리고 그 메모, 우리는 수요일에 당신을 볼 수 있습니다. 1134 00:50:38,055 --> 00:50:47,590 1135 00:50:47,590 --> 00:50:48,090 괜찮아. 1136 00:50:48,090 --> 00:50:48,740 춤은 누구? 1137 00:50:48,740 --> 00:50:49,240 어서. 1138 00:50:49,240 --> 00:50:50,330 춤은 누구? 1139 00:50:50,330 --> 00:50:51,820 당신은 내가 그것을 시작하고 싶어? 1140 00:50:51,820 --> 00:50:53,770 나는 그것을 시작할 수 있습니다. 1141 00:50:53,770 --> 00:50:54,270 Woooo! 1142 00:50:54,270 --> 00:51:04,070 1143 00:51:04,070 --> 00:51:07,580 >> 로렌 : 달콤한 공상 모세.