1 00:00:00,000 --> 00:00:00,940 2 00:00:00,940 --> 00:00:05,440 >> [음악 연주] 3 00:00:05,440 --> 00:00:11,577 4 00:00:11,577 --> 00:00:12,660 데이비드 J. 마란 : 좋습니다. 5 00:00:12,660 --> 00:00:15,590 이것은 CS50이며,이 일주일이 시작된다. 6 00:00:15,590 --> 00:00:19,120 그래서 우리가이 문제를 오늘을 시작합시다. 7 00:00:19,120 --> 00:00:20,974 버그 물론, 프로그램에 실수 8 00:00:20,974 --> 00:00:22,890 당신은 매우거야 이 개념에 익숙 9 00:00:22,890 --> 00:00:26,050 당신은 프로그램 된 적이없는 경우 전. pset0 지금 PSET1. 10 00:00:26,050 --> 00:00:29,280 그러나의 뭔가를 생각해 보자 처음에는 조금 간단 해요. 11 00:00:29,280 --> 00:00:32,189 나는 그 여기에이 프로그램 미리 입어 12 00:00:32,189 --> 00:00:37,280 나는이 인쇄되어야 함을 주장 printf의 화면을 사용하여 10 개, 13 00:00:37,280 --> 00:00:41,020 그러나 그것은 분명히 어떤 방법으로 버그가 있습니다. 14 00:00:41,020 --> 00:00:45,370 >> 그 사양을 감안할 때 그 그것은 10 개를 인쇄한다 15 00:00:45,370 --> 00:00:50,230 하지만 분명히하지 않는, 어떤 버그 당신이 주장하는 것입니까? 16 00:00:50,230 --> 00:00:52,004 그래? 17 00:00:52,004 --> 00:00:54,420 그래서 하나의 오류에 의해 오프이야, 당신은 무엇을 의미합니까? 18 00:00:54,420 --> 00:01:00,991 19 00:01:00,991 --> 00:01:01,490 확인을 클릭합니다. 20 00:01:01,490 --> 00:01:09,820 21 00:01:09,820 --> 00:01:10,410 우수. 22 00:01:10,410 --> 00:01:13,930 그래서 우리는 지정한 난에 대해 0의 값을 시작한 23 00:01:13,930 --> 00:01:18,399 우리는 10의 n 값을 지정한 그러나 우리는 작거나 같음 이하를 사용했습니다. 24 00:01:18,399 --> 00:01:21,190 그리고 그 이유는 두 가지이다 문자가 아닌 하나의 기호, 25 00:01:21,190 --> 00:01:22,630 수학 책처럼, 당신이하지 않아도됩니다 26 00:01:22,630 --> 00:01:24,880 을 표현하는 방법 하나의 문자에 해당. 27 00:01:24,880 --> 00:01:28,450 >> 그래서 그 미만을 의미하지만 당신이 제로 카운트 시작하면, 28 00:01:28,450 --> 00:01:31,690 하지만 당신은 모든 방법을 계산 10에 이르기까지 평등, 29 00:01:31,690 --> 00:01:34,170 당신은 과정에가는거야 총 11 일을 계산합니다. 30 00:01:34,170 --> 00:01:35,900 그리고 당신은 11 개를 인쇄 할 것입니다. 31 00:01:35,900 --> 00:01:37,990 그래서 이것에 대한 수정 될 수 있을까요? 32 00:01:37,990 --> 00:01:39,970 그래? 33 00:01:39,970 --> 00:01:43,980 >> 그래서 단지보다 적게 조정 아니면 그냥 미만 같 34 00:01:43,980 --> 00:01:46,250 아마도, 내가 주장, 거기에 너무 다른 해결책. 35 00:01:46,250 --> 00:01:47,210 다른 당신은 무엇을 할 수 있는가? 36 00:01:47,210 --> 00:01:48,590 그래? 37 00:01:48,590 --> 00:01:53,660 >> 그래서 1로 같게 시작하고, 작거나 같음 덜 둡니다. 38 00:01:53,660 --> 00:01:56,187 솔직히 나는 주장 것 즉, 일반적인 인간에 대한, 39 00:01:56,187 --> 00:01:57,770 이것은 아마도 더 간단합니다. 40 00:01:57,770 --> 00:02:00,280 1에서 계산 시작 (10)을 통해 계산합니다. 41 00:02:00,280 --> 00:02:01,690 기본적으로 당신이 무슨 뜻인지 않습니다. 42 00:02:01,690 --> 00:02:04,010 >> 그러나 현실에 프로그래밍, 우리가 보았 듯이, 43 00:02:04,010 --> 00:02:07,598 컴퓨터 과학자와 프로그래머 일반적으로 0에서 계산을 시작 않습니다. 44 00:02:07,598 --> 00:02:09,389 그리고 그 한 번 괜찮아요 당신은 그것에 익숙해. 45 00:02:09,389 --> 00:02:12,640 당신의 상태는 일반적으로 것 이하 같은합니다. 46 00:02:12,640 --> 00:02:14,910 그래서 단순히 논리를 오류는 우리가 지금 할 수 47 00:02:14,910 --> 00:02:17,990 해결하고 궁극적으로 다시 컴파일 이것과는 10를 얻는다. 48 00:02:17,990 --> 00:02:19,610 >> 그럼 어떻게 여기에이 버그에 대한? 49 00:02:19,610 --> 00:02:24,200 여기서 다시, 나는이 주장 10 한거야 인쇄의 목표 50 00:02:24,200 --> 00:02:28,140 선이 시간당 한,하지만하지 않습니다. 51 00:02:28,140 --> 00:02:30,940 우리가 제안하기 전에 무엇을 수정이 무엇이며, 52 00:02:30,940 --> 00:02:34,640 내가 컴파일한다면 시각적으로 인쇄 이 프로그램은 당신이 생각 실행할? 53 00:02:34,640 --> 00:02:35,140 그래? 54 00:02:35,140 --> 00:02:38,360 55 00:02:38,360 --> 00:02:38,860 >> 스타. 56 00:02:38,860 --> 00:02:41,690 에 그래서 모든 별 같은 라인은 내가들은 것입니다, 57 00:02:41,690 --> 00:02:43,391 다음 새 라인 문자. 58 00:02:43,391 --> 00:02:44,140 그래서 그 시도 할 수 있습니다. 59 00:02:44,140 --> 00:02:48,710 그래서 버그-1, 입력 확인 나는 그 소리 명령을 참조하십시오 60 00:02:48,710 --> 00:02:50,090 우리는 지난 시간에 이야기하는 것이. 61 00:02:50,090 --> 00:02:55,180 ./buggy-1, 참으로 나는 모든 10 별을 볼 I 항에도 동일 라인 62 00:02:55,180 --> 00:02:58,690 내 사양 꼭대기 단지 주석에 내가 한 당을하기위한 코드 63 00:02:58,690 --> 00:02:59,230 선. 64 00:02:59,230 --> 00:03:00,580 하지만이 바로 보인다. 65 00:03:00,580 --> 00:03:04,620 >> 난 지금처럼 15 행이 보인다 다음 스타를 인쇄하고, 라인 (16) 66 00:03:04,620 --> 00:03:06,620 나는 인쇄 해요 것 같습니다 새로운 라인 문자, 67 00:03:06,620 --> 00:03:09,560 그들은 모두 너무 들여있어 나는 분명히 루프 내부 해요. 68 00:03:09,560 --> 00:03:13,610 그래서 스타 일을해서는 안된다, 새로운 라인, 스타, 새로운 라인, 스타, 새로운 라인? 69 00:03:13,610 --> 00:03:14,110 네? 70 00:03:14,110 --> 00:03:18,430 71 00:03:18,430 --> 00:03:21,240 >> 그래, 언어와 달리 같은 파이썬, 당신이 익숙하다면, 72 00:03:21,240 --> 00:03:23,540 들여 쓰기는하지 않습니다 컴퓨터에 문제가. 73 00:03:23,540 --> 00:03:25,280 그것은 단지 인간에게 중요한. 74 00:03:25,280 --> 00:03:29,860 여기 반면에 내가 발명 한 라인을 따라서 15 아름다운 외모 16--, 75 00:03:29,860 --> 00:03:31,330 하지만 컴퓨터는 상관하지 않는다. 76 00:03:31,330 --> 00:03:34,640 컴퓨터에 대한 관심 실제로 중괄호를 갖는 77 00:03:34,640 --> 00:03:36,310 코드 줄 주위. 78 00:03:36,310 --> 00:03:39,520 >> 그래서 그것은 단지처럼 clear--이다 Scratch--이 두 줄의 코드가 79 00:03:39,520 --> 00:03:40,450 실행되어야한다. 80 00:03:40,450 --> 00:03:44,390 그 노란색 스크래치 퍼즐의 일처럼 조각을 다시하고 다시하고 다시. 81 00:03:44,390 --> 00:03:50,920 >> 내가하면 이제 다시 실행이 program-- ./buggy-2 ... 흠. 82 00:03:50,920 --> 00:03:51,770 지금은 오류가 있습니다. ' 83 00:03:51,770 --> 00:03:54,212 내가 뭘하는 것을 잊지 않았다? 84 00:03:54,212 --> 00:03:55,420 그래, 그래서 그것을 컴파일하지 않았다. 85 00:03:55,420 --> 00:03:56,740 그래서 버그 -이합니다. 86 00:03:56,740 --> 00:03:59,840 그러한 파일이 없습니다 내가하지 않았기 때문에 실제로 두 번째 버전을 컴파일합니다. 87 00:03:59,840 --> 00:04:04,860 이제 재미 선언되지 않은 2는하지 variable--. 88 00:04:04,860 --> 00:04:05,510 우리는 일을하고 있어요. 89 00:04:05,510 --> 00:04:11,050 이제 버그 - 1-- ./buggy-1-- 및 확인 그들 각각은 동일한 행에있다. 90 00:04:11,050 --> 00:04:13,880 >> 이제 예외가있다 내이되어 제 91 00:04:13,880 --> 00:04:15,520 것을 당신은이 중괄호가 필요합니다. 92 00:04:15,520 --> 00:04:20,160 때 그것은 실제로 OK-- 당신이했습니다 경우 섹션이나 textbooks--에 발견 93 00:04:20,160 --> 00:04:22,130 중괄호를 생략하는 방법? 94 00:04:22,130 --> 00:04:22,630 그래? 95 00:04:22,630 --> 00:04:26,290 96 00:04:26,290 --> 00:04:26,870 >> 정확히. 97 00:04:26,870 --> 00:04:28,940 하나있을 때 라인의 코드가 당신을 98 00:04:28,940 --> 00:04:32,830 와 연관되고 싶지 우리의 첫 번째 예에서와 같이 루프. 99 00:04:32,830 --> 00:04:36,380 그것은 완벽하게 합법적이다 중괄호를 생략합니다 100 00:04:36,380 --> 00:04:40,310 단지 편의 일종의 당신에게 컴파일러에서. 101 00:04:40,310 --> 00:04:40,810 그래? 102 00:04:40,810 --> 00:04:43,347 103 00:04:43,347 --> 00:04:43,930 좋은 질문입니다. 104 00:04:43,930 --> 00:04:45,500 그것은 스타일의 오류로 간주 할 것인가? 105 00:04:45,500 --> 00:04:49,340 우리는 CS50 같이 promote-- 것 스타일 가이드에 대한 URL 106 00:04:49,340 --> 00:04:51,926 그 항상 pset1--에 중괄호를 사용합니다. 107 00:04:51,926 --> 00:04:53,550 물론 당신이 프로그래밍의 새로운면. 108 00:04:53,550 --> 00:04:56,800 현실은 우리가 아니에요입니다 을 금지하는 것 109 00:04:56,800 --> 00:04:58,680 이러한 편의를 수행하십시오. 110 00:04:58,680 --> 00:05:00,846 그러나 당신은 점점하는 경우 사물의 스윙으로, 111 00:05:00,846 --> 00:05:04,020 절대적으로 그냥 항상 곱슬를 사용 당신이 그것의 묘리를 터득 할 때까지 중괄호. 112 00:05:04,020 --> 00:05:04,640 좋은 질문입니다. 113 00:05:04,640 --> 00:05:05,320 >> 좋아. 114 00:05:05,320 --> 00:05:07,660 그래야 다음 버그이었다. 115 00:05:07,660 --> 00:05:09,190 아주 간단한 뭔가 이상. 116 00:05:09,190 --> 00:05:11,260 그리고 아직 당신이 생각하는 것 바로, 매우 초보? 117 00:05:11,260 --> 00:05:13,635 이것은 첫 번째 주의 일종이다 의 언어보고 118 00:05:13,635 --> 00:05:14,890 같은, 당신의 버그를 내부에 참조하십시오. 119 00:05:14,890 --> 00:05:17,250 하지만 현실이 있습니다 실제로 대표 120 00:05:17,250 --> 00:05:20,310 꽤 무서운 문제 즉, 현실 세계에서 일어날 수있다. 121 00:05:20,310 --> 00:05:23,530 >> 그래서 당신의 일부는 기억 있습니다 당신이 기술 뉴스를 따르는 경우에, 122 00:05:23,530 --> 00:05:25,740 또는 어쩌면 적발 월이의 바람 123 00:05:25,740 --> 00:05:29,434 애플이 있다고 지난 해의 모두 아이폰 OS에서 조금 실수를했다 124 00:05:29,434 --> 00:05:31,350 에 운영체제 그들의 전화, 또한 125 00:05:31,350 --> 00:05:34,220 맥 OS, 운영체제 데스크톱과 노트북에. 126 00:05:34,220 --> 00:05:36,480 그리고이 같은 헤드 라인을 보았다. 127 00:05:36,480 --> 00:05:41,120 그리고 그 후, 애플 이 버그를 해결하기 위해 약속, 128 00:05:41,120 --> 00:05:45,950 매우 빠르게, 아이폰 OS에 문제를 해결했다 하지만 궁극적으로 맥 OS에 고정 129 00:05:45,950 --> 00:05:46,810 뿐만 아니라. 130 00:05:46,810 --> 00:05:50,370 >> 지금이 헤드 라인의 아무도 혼자 정말 근본적인 문제가 무엇인지 밝혀, 131 00:05:50,370 --> 00:05:55,640 하지만 버그는 궁극적으로 감소되었다 SSL의 버그, 보안 소켓 계층. 132 00:05:55,640 --> 00:05:57,390 그리고 짧은 긴 이야기를, 이것은 소프트웨어 133 00:05:57,390 --> 00:06:01,030 우리의 브라우저 및 기타 소프트웨어는 무엇을하는 데 사용? 134 00:06:01,030 --> 00:06:04,090 135 00:06:04,090 --> 00:06:06,860 >> 나는 SSL이라고 말했다 경우 참여 때마다 당신을 136 00:06:06,860 --> 00:06:13,920 , HTTPS로 시작하는 URL을 방문 다음 무엇 SSL이 관련 될 수 있는가? 137 00:06:13,920 --> 00:06:14,580 암호화. 138 00:06:14,580 --> 00:06:16,470 그래서 우리는에 대해 이야기 할 것입니다 앞으로 일이. 139 00:06:16,470 --> 00:06:18,750 암호화의 예술 정보를 스크램블링. 140 00:06:18,750 --> 00:06:22,200 >> 그러나 길고도 짧은 이야기, 애플 언젠가는 실수를했다 전 141 00:06:22,200 --> 00:06:25,970 , SSL의 구현에 궁극적으로 구현 소프트웨어 142 00:06:25,970 --> 00:06:30,120 HTTPS 또는 같이 최대의 URL 너무 거기에 연결. 143 00:06:30,120 --> 00:06:32,850 의 결과는 귀하 연결은 잠재적으로 수 144 00:06:32,850 --> 00:06:33,920 가로 챌 수. 145 00:06:33,920 --> 00:06:37,130 그리고 당신의 연결했다 반드시 암호화되지 146 00:06:37,130 --> 00:06:40,350 당신은 사이 나쁜 남자에 있었다면 당신과 대상 웹 사이트 사람 147 00:06:40,350 --> 00:06:42,170 이 기능을 사용하는 방법은 알고 있었다. 148 00:06:42,170 --> 00:06:45,090 >> 이제 애플은 궁극적으로 게시 마지막으로 이것에 대한 수정 149 00:06:45,090 --> 00:06:46,920 그 설명 자신의 수정 사항이 있었다. 150 00:06:46,920 --> 00:06:49,878 안전한 교통 수단의 유효성을 검사하는 데 실패 접속의 신뢰성. 151 00:06:49,878 --> 00:06:52,920 이 문제는에 의해 해결되었다 누락 검증 단계를 복원. 152 00:06:52,920 --> 00:06:57,250 >> 그래서 이것은 매우 손 물결 모양의 설명입니다 단순히 우리가 망쳐 말하는합니다. 153 00:06:57,250 --> 00:07:00,920 말 그대로 하나가 버그했다 코드 라인 154 00:07:00,920 --> 00:07:05,130 자신의 SSL의 구현 및에 당신이 온라인으로 이동하여 검색하는 경우 155 00:07:05,130 --> 00:07:07,210 실제로 찾을 수 있습니다 원본 소스 코드. 156 00:07:07,210 --> 00:07:11,960 예를 들면,이 스크린 샷이다 단지 상당히 큰 파일의 일부 157 00:07:11,960 --> 00:07:15,965 그러나 이것은 분명히라는 기능입니다 SSL은 로그인 서버 키 교환을 확인합니다. 158 00:07:15,965 --> 00:07:17,840 그리고 한 무리의 소요 인수 및 입력. 159 00:07:17,840 --> 00:07:20,298 그리고 우리는 초점을하지 않을거야 이 특징점에 너무 많은, 160 00:07:20,298 --> 00:07:24,390 하지만 당신은 내부의 코드에 초점을 경우 하자 function-- 그 맨 위의 161 00:07:24,390 --> 00:07:25,590 그 확대합니다. 162 00:07:25,590 --> 00:07:28,140 당신은 이미 의심 할 수 어떤 오류가 수도 163 00:07:28,140 --> 00:07:31,230 당신은 아무 생각이없는 경우에도 수 궁극적으로 당신은 무엇을보고 있는지. 164 00:07:31,230 --> 00:07:35,924 기형의 종류가있다 여기있는 무엇입니까? 165 00:07:35,924 --> 00:07:38,940 >> 그래, 난 정말 싫어 이 고토의 모양이 실패합니다. 166 00:07:38,940 --> 00:07:42,060 솔직히, 난 정말 모르는 고토 수단에 실패,하지만 그들 중 두 가지는 167 00:07:42,060 --> 00:07:42,810 다시 다시. 168 00:07:42,810 --> 00:07:45,290 그건 그냥 가지 저를 티 나지 지적으로 잘못된 방향으로, 169 00:07:45,290 --> 00:07:48,910 우리는 확대 참 경우 단지 그 선이 C.이다 170 00:07:48,910 --> 00:07:52,220 >> 그래서 애플 많은 코드 자체가 C로 작성, 171 00:07:52,220 --> 00:07:55,780 이 분명히 정말 equivalent--입니다 172 00:07:55,780 --> 00:07:59,060 하지가 꽤 들여 쓰기 버전,하지만 당신은 인식하는 경우 사실 173 00:07:59,060 --> 00:08:02,560 더 중괄호가 없다는 것을 어떻게 애플은 정말 보이는 코드이었다 썼다 174 00:08:02,560 --> 00:08:03,540 이있다. 175 00:08:03,540 --> 00:08:07,080 그래서 축소하고 그냥했습니다 의미에서 들여 쓰기를 고정 176 00:08:07,080 --> 00:08:10,690 그 어떤 중괄호, 그이 없다면 둘째 고토는 노란색에있어 실패 177 00:08:10,690 --> 00:08:12,500 상관없이 실행하는 것입니다. 178 00:08:12,500 --> 00:08:15,540 그것은과 관련이없는 것 위의 경우 상태. 179 00:08:15,540 --> 00:08:19,590 >> 그래서 심지어 다시, 당신이 경우에 확실히 아는 바로는이 가능성이 수 180 00:08:19,590 --> 00:08:23,230 , 일을 할 알고 이들 각각이 이 라인의 각을 conditions-- 181 00:08:23,230 --> 00:08:26,180 매우 중요한 단계이며 검사 과정에서 182 00:08:26,180 --> 00:08:28,350 데이터가 사실 인 경우 암호화. 183 00:08:28,350 --> 00:08:31,710 따라서 이들 중 하나를 생략 단계가 아닌 좋은 생각. 184 00:08:31,710 --> 00:08:34,840 >> 그러나 우리는이 문제를 가지고 있기 때문에 둘째 고토 노란색 실패 185 00:08:34,840 --> 00:08:36,840 때문에 우리는 한 번 일종의 미학적 186 00:08:36,840 --> 00:08:40,480 위치를 왼쪽으로 이동 논리적으로 순간입니다, 무엇을 187 00:08:40,480 --> 00:08:43,230 이 줄을 의미 하는가 그 두번째 고토 아래의 코드 188 00:08:43,230 --> 00:08:46,480 당신이 생각하지? 189 00:08:46,480 --> 00:08:48,860 항상 제외 될 것입니다. 190 00:08:48,860 --> 00:08:52,100 그래서 GOTOS는 일반적으로 눈살을 찌푸리게합니다 우리가 진정으로 가지 않을 이유, 191 00:08:52,100 --> 00:08:54,940 실제로 CS50에 우리는하지 않는 경향이 이 문장 고토을 가르쳐, 192 00:08:54,940 --> 00:08:58,130 하지만 당신은 고토 생각할 수 의미 이동 점프로 실패 193 00:08:58,130 --> 00:08:59,600 코드의 다른 부분. 194 00:08:59,600 --> 00:09:03,120 >> 즉 이상 뛰어 모두이 마지막 줄, 195 00:09:03,120 --> 00:09:07,420 그래서 바보의 결과 그냥 .. 단순 실수 196 00:09:07,420 --> 00:09:10,330 아마 누군가의 결과 복사 및도 하나 붙여 넣기 197 00:09:10,330 --> 00:09:14,150 여러 번 전체이었다 아이폰 OS와 Mac OS의 보안 198 00:09:14,150 --> 00:09:18,240 가로 채기에 취약 꽤 오랫동안 나쁜 놈들에 의해. 199 00:09:18,240 --> 00:09:19,940 애플까지 마지막으로이 고정. 200 00:09:19,940 --> 00:09:23,100 >> 이제 중 일부는 실제로있는 경우 아이폰 OS 또는 Mac OS의 이전 버전을 실행하는 201 00:09:23,100 --> 00:09:27,250 당신은 gotofail.com에 갈 수있는 누군가가 설정하는 것이 웹 사이트입니다 202 00:09:27,250 --> 00:09:29,190 본질적으로 결정 프로그래밍 203 00:09:29,190 --> 00:09:30,980 컴퓨터가 여전히 취약합니다. 204 00:09:30,980 --> 00:09:33,600 그리고 솔직히,이 경우, 그것은 아마 좋은 생각 205 00:09:33,600 --> 00:09:36,870 귀하의 휴대 전화를 업데이트하거나 이 시점에서 당신의 맥. 206 00:09:36,870 --> 00:09:40,120 그러나이 단지 유언 단지 방법 이러한 낮은 레벨의 강세 207 00:09:40,120 --> 00:09:42,400 자세한 내용 및 공정 간단한 아이디어 수 정말 208 00:09:42,400 --> 00:09:44,590 의사 결정에 번역 문제가 209 00:09:44,590 --> 00:09:47,320 이 case--에 affected-- 수백만의 사람들. 210 00:09:47,320 --> 00:09:49,107 >> 관리에 대한 지금 단어. 211 00:09:49,107 --> 00:09:50,690 섹션이 오는 일요일을 시작합니다. 212 00:09:50,690 --> 00:09:53,360 당신은으로 이메일을 받게됩니다 섹션에 대한 주말, 어떤 점에서 213 00:09:53,360 --> 00:09:55,290 resectioning 과정 만약 여러분의 경우 시작됩니다 214 00:09:55,290 --> 00:09:56,998 당신이 지금 가지고있는 실현 새로운 충돌합니다. 215 00:09:56,998 --> 00:10:00,180 그래서이 매년 발생, 우리 올 일에 수용됩니다. 216 00:10:00,180 --> 00:10:02,430 >> 사무실 hours--은 계속 수행 여기이 일정에 눈. 217 00:10:02,430 --> 00:10:05,100 이번 주에 약간의 변경, 특히, 시작 시간 218 00:10:05,100 --> 00:10:08,180 및 위치, 그래서 상담 않는다 그 근무 시간에 향하기 전에 219 00:10:08,180 --> 00:10:09,520 다음 4 일의. 220 00:10:09,520 --> 00:10:12,680 그리고 지금 평가에 단어, 당신은 문제에 뛰어 특히로 221 00:10:12,680 --> 00:10:14,350 일 이후 설정합니다. 222 00:10:14,350 --> 00:10:17,070 >> 사양에 따라서, 이들은 일반적으로 223 00:10:17,070 --> 00:10:20,360 축이되는 함께 우리는 당신의 사업을 평가한다. 224 00:10:20,360 --> 00:10:23,170 범위를 말합니다 무엇 범위 코드 구현 225 00:10:23,170 --> 00:10:25,690 기능이 필요 우리의 사양에 의해. 226 00:10:25,690 --> 00:10:28,290 즉, 얼마나 많은 종 세트는 물린했다. 227 00:10:28,290 --> 00:10:30,440 당신은 그것의 세 번째 했는가, 그것의 절반, 그것의 100 %. 228 00:10:30,440 --> 00:10:33,000 그것은 정확하지 경우에도, 당신은 얼마나 많은 시도 했습니까? 229 00:10:33,000 --> 00:10:35,290 그 수준을 캡처 그래서 노력의 양 230 00:10:35,290 --> 00:10:38,260 되는 오프 비트 문제 설정의 문제. 231 00:10:38,260 --> 00:10:40,690 >> 이 일 Correctness--에 어느 정도, 코드입니다 232 00:10:40,690 --> 00:10:43,150 와 일치하는 우리의 사양 및 버그 무료. 233 00:10:43,150 --> 00:10:44,770 그래서 제대로 작동합니까? 234 00:10:44,770 --> 00:10:48,700 우리는 몇 가지 입력을주는 경우에, 그것을 않습니다 우리가 기대하는 출력을 제공? 235 00:10:48,700 --> 00:10:52,570 디자인 - 지금이 중 첫 번째입니다 특히 질적 인 것, 236 00:10:52,570 --> 00:10:56,180 인간의 판단을 필요로하는 사람. 237 00:10:56,180 --> 00:10:59,690 우리는 직원이 왜 그리고 실제로이입니다 많은 조교 물론 238 00:10:59,690 --> 00:11:00,350 조수. 239 00:11:00,350 --> 00:11:03,480 무슨 정도는 당신입니다 코드는 잘 쓰여진? 240 00:11:03,480 --> 00:11:05,810 >> 그리고 다시는 매우이다 정 성적 평가 241 00:11:05,810 --> 00:11:09,100 그에 당신과 함께 작동합니다 주에서 양방향으로 올 수 있습니다. 242 00:11:09,100 --> 00:11:12,060 되도록하지 얻을 때 숫자 만 득점 아니라 243 00:11:12,060 --> 00:11:16,682 서면 점수, 또는 입력 피드백 또는 영어 단어에 의견을 작성. 244 00:11:16,682 --> 00:11:19,640 즉, 우리가 당신을 구동하는 데 사용할 무엇 실제로 더 나은 코드를 작성하는 방향으로. 245 00:11:19,640 --> 00:11:23,320 그리고 강의와 섹션에서, 우리는 시도 할 것이다 자주 우리가하고 있는데 ...으로 병원을 나온 가리 246 00:11:23,320 --> 00:11:26,420 어떤 프로그램을 만드는뿐만 아니라 정확하고 기능적으로 좋은 247 00:11:26,420 --> 00:11:28,200 뿐만 아니라 잘 설계. 248 00:11:28,200 --> 00:11:31,850 가장 효율적인 그것은, 또는 수 심지어 가장 아름다운이 될 수 있습니다. 249 00:11:31,850 --> 00:11:33,100 >> 어떤 스타일로 우리를 이끈다. 250 00:11:33,100 --> 00:11:36,876 스타일은 궁극적으로 미적 판단. 251 00:11:36,876 --> 00:11:38,750 당신은 좋은 선택 했 당신의 변수 이름? 252 00:11:38,750 --> 00:11:40,330 제대로 코드를 들여 적이 있습니까? 253 00:11:40,330 --> 00:11:44,010 이 때문에 좋은보고, 않습니다, 또 다른 사람을위한 쉬운 254 00:11:44,010 --> 00:11:46,550 당신의 각을 읽어 그 정확성. 255 00:11:46,550 --> 00:11:50,300 >> 지금은 일반적으로 강의 당, 우리는 득점 다섯 점 만점에 이런 일. 256 00:11:50,300 --> 00:11:53,640 그리고 저 점 집 망치하자 세 것이 참으로 좋은 것입니다. 257 00:11:53,640 --> 00:11:55,550 매우 신속하게 사람을 산술 일을 시작합니다. 258 00:11:55,550 --> 00:11:58,133 그들은의 3 아웃을 얻을 때 일부의 pset에 대한 정확성에 5 259 00:11:58,133 --> 00:12:02,040 그들은 빌어 먹을 생각 나는 60 %에 가고 이는 기본적으로 D 또는 E.이다 260 00:12:02,040 --> 00:12:03,980 >> 즉, 방법이 아니다 우리 이 숫자 생각합니다. 261 00:12:03,980 --> 00:12:06,880 셋은 무엇을 참으로 좋은, 그리고 우리 일반적으로 처음에 예상 262 00:12:06,880 --> 00:12:09,820 용어는 당신이지고 있다면 것입니다 어쩌면 three's--의 무리 부부 263 00:12:09,820 --> 00:12:12,540 박람회, fours-- 몇이나 몇 조로, fours--의 커플 264 00:12:12,540 --> 00:12:13,748 그 시작하기 좋은 장소입니다. 265 00:12:13,748 --> 00:12:16,320 그리고 우리를 너무 오래 보는 바와 같이 시간이 지남에 따라 상승세, 266 00:12:16,320 --> 00:12:18,540 당신은 특히 좋은 장소에있어. 267 00:12:18,540 --> 00:12:20,752 >> 우리가 사용하는 식 체중 일이 본질적으로 268 00:12:20,752 --> 00:12:22,710 강의 당이, 이는 단지 우리 것을 의미한다 269 00:12:22,710 --> 00:12:24,750 정확성에 더 많은 무게를 제공합니다. 270 00:12:24,750 --> 00:12:27,930 그것은 매우 자주 정확성이기 때문에 즉, 대부분의 시간이 소요됩니다. 271 00:12:27,930 --> 00:12:28,760 지금 날 믿어. 272 00:12:28,760 --> 00:12:31,190 당신은 적어도 find--합니다 한 pset--에서 당신을 273 00:12:31,190 --> 00:12:36,790 시간의 90 %를 지출 문제의 10 %에서 작동. 274 00:12:36,790 --> 00:12:39,320 >> 그리고 모든 종류의 작동 하나 또는 두 개의 버그를 제외 275 00:12:39,320 --> 00:12:41,570 그는 버그는 그 늦은 밤에 당신을 유지합니다. 276 00:12:41,570 --> 00:12:43,380 사람들은 그들이다 그 일종의을 탈출. 277 00:12:43,380 --> 00:12:45,560 하지만 자고 후, 또는 근무 시간에 참석 278 00:12:45,560 --> 00:12:48,844 또는, 온라인 질문입니다 요청 당신이 100 % 목표에 도착하면, 279 00:12:48,844 --> 00:12:50,760 그 이유는 우리가 무게입니다 대부분의 정확성. 280 00:12:50,760 --> 00:12:54,102 좀 덜 디자인하고, 보다 좀 덜 스타일을. 281 00:12:54,102 --> 00:12:56,060 그러나 mind-- 스타일로 유지 아마도 가장 쉬운 방법입니다 282 00:12:56,060 --> 00:12:58,890 이들의 오프 물린 스타일 가이드에 따라. 283 00:12:58,890 --> 00:13:01,580 >> 그리고 지금, 더 심각한 학문적 정직성에 있습니다. 284 00:13:01,580 --> 00:13:05,000 CS50는 불행한 구별이 광고 보드의 가장 큰 제작자 인 285 00:13:05,000 --> 00:13:07,330 경우 거의 모든 년 역사적. 286 00:13:07,330 --> 00:13:11,012 학생들이 부정 행위를하기 때문 아니다 CS50 더 이상 그래서 다른 클래스보다 287 00:13:11,012 --> 00:13:13,720 하지만 일 때문에 자연에 의해, 이 전자 있다는 사실, 288 00:13:13,720 --> 00:13:16,636 우리가 그것을보고, 사실 사실 우리는 컴퓨터 과학자들은, 아르 289 00:13:16,636 --> 00:13:20,570 나는 우리가 불행하게도 아르 말할 수있다 그것을 감지에 아주 좋아. 290 00:13:20,570 --> 00:13:22,710 >> 그래서이 실질 무엇을 의미 하는가? 291 00:13:22,710 --> 00:13:24,820 그것은 그래서, 강의 당, 과정의 철학 292 00:13:24,820 --> 00:13:28,090 정말 합리적 졸이다 않습니다. 293 00:13:28,090 --> 00:13:31,684 이 라인 사이가 스스로 자신의 일을 294 00:13:31,684 --> 00:13:34,100 그리고 조금 받고 친구 합리적인 도움, 295 00:13:34,100 --> 00:13:38,020 철처에 대한 그 일을 당신의 친구, 또는 그 사람이나 그 여자 코드를 전송 296 00:13:38,020 --> 00:13:41,080 그 또는 그녀는 단순히 수 있으므로 취하거나 권리를 그것을 빌려. 297 00:13:41,080 --> 00:13:43,580 그리고 그 선을 교차 우리는 수업 시간에 그려진 것이다. 298 00:13:43,580 --> 00:13:45,410 >> , 강의 계획서를 참조 궁극적으로 라인 299 00:13:45,410 --> 00:13:48,209 우리는 합리적으로 그리는 것을 불합리한 행동, 300 00:13:48,209 --> 00:13:50,000 하지만 정말 종기을 수행 본질에 이르기까지 301 00:13:50,000 --> 00:13:53,980 당신의 일에 필요의 결국 자신합니다. 302 00:13:53,980 --> 00:13:56,230 지금 그렇게 말한다면, 휴리스틱이있다. 303 00:13:56,230 --> 00:13:58,980 당신이 imagine-- 수로 인해 근무 시간과 영상에서 304 00:13:58,980 --> 00:14:01,060 그리고 동영상은 우리했습니다 도시 따라서 팔리 CS50 305 00:14:01,060 --> 00:14:04,530 실제로 공동으로하기위한 것입니다 등의 협력 및 사회적 306 00:14:04,530 --> 00:14:06,450 가능한 한. 307 00:14:06,450 --> 00:14:08,570 공동으로이 엄격한 때문이다. 308 00:14:08,570 --> 00:14:11,314 >> 하지만이 말과 함께, 발견, 당신이 강의에서 살펴 보 겠지만, 309 00:14:11,314 --> 00:14:12,980 당신은 어떤 문제가있을 때 점이다. 310 00:14:12,980 --> 00:14:16,470 당신은 당신의 코드에서 몇 가지 버그가 있음을 해결할 수없는, 그것은 당신을 위해 합리적인 311 00:14:16,470 --> 00:14:18,039 다른 사람에게 코드를 표시합니다. 312 00:14:18,039 --> 00:14:21,080 심지어 수업 시간에 친구, 친구 근무 시간에 당신 옆에 앉아, 313 00:14:21,080 --> 00:14:22,680 또는 직원의 일원. 314 00:14:22,680 --> 00:14:25,810 그러나 그들은 당신에게 자신의 코드가 표시되지 않을 수 있습니다. 315 00:14:25,810 --> 00:14:27,710 >> 즉, 당신의 question-- 대답 316 00:14:27,710 --> 00:14:29,940 내가 도와 줘요 오, 여기 내 코드 안된다 필요합니다. 317 00:14:29,940 --> 00:14:32,440 이 번 봐, 그리고 당신이 것 그것에서 추론. 318 00:14:32,440 --> 00:14:34,580 지금, 물론, 거기에 방법은 분명 게임 319 00:14:34,580 --> 00:14:37,760 내가 보여 줄게있다이 시스템 질문을 가진 전에 내 코드. 320 00:14:37,760 --> 00:14:40,150 당신은 나에게 내 코드를 보여 질문을 받기 전에. 321 00:14:40,150 --> 00:14:45,870 그러나 다시 강의를 참조 이 라인이 어디의 미세한 세부 사항. 322 00:14:45,870 --> 00:14:50,606 >> 그냥 지금은 그림을 그릴 및 가능한 한 투명 주 323 00:14:50,606 --> 00:14:53,480 우리가 최근에 어디에, 이 광고 보드의 경우의 수 324 00:14:53,480 --> 00:14:56,260 그 CS50은 이상했다 지난 7 년. 325 00:14:56,260 --> 00:14:58,717 14가지 경우이 최근 가을과 함께. 326 00:14:58,717 --> 00:15:01,300 참여 학생들의 관점에서, 그것은 20 일부 홀수 학생이었다 327 00:15:01,300 --> 00:15:02,490 지난 가을. 328 00:15:02,490 --> 00:15:05,670 33의 피크가 발생했습니다 몇 년 전 학생. 329 00:15:05,670 --> 00:15:08,830 누구의 대부분은 불행하게도 아르 더 이상 없습니다 여기 캠퍼스. 330 00:15:08,830 --> 00:15:13,100 >> 의 비율로 참여 학생 클래스는 역사적으로 0 %에서였던 331 00:15:13,100 --> 00:15:17,300 말을 단지 5.3 %에 이 매년 도전이다. 332 00:15:17,300 --> 00:15:20,390 그리고이를 위해 무엇을 우리는 일을 전달한다 수행 할 333 00:15:20,390 --> 00:15:24,310 우리는 단지 FYI--에 비교 dd-- 것을 학생들에 대한 공정성 사람 334 00:15:24,310 --> 00:15:26,520 이에 따라 라인을 따르고 있습니다. 335 00:15:26,520 --> 00:15:29,620 우리는 현재를 비교 할 과거의 모든 임무에 대한 제출 336 00:15:29,620 --> 00:15:30,840 지난 몇 년에서. 337 00:15:30,840 --> 00:15:33,620 >> 우리는 주변에 구글하는 방법도 알고 코드 저장소를 찾을 수 338 00:15:33,620 --> 00:15:36,360 온라인 토론 포럼 온라인 온라인 취업 사이트. 339 00:15:36,360 --> 00:15:41,580 학생이 그것을 찾아 낼 수있는 경우에, 우리는 반드시 할 수 그만큼 우리는 유감스럽게도처럼 찾을 수 있습니다. 340 00:15:41,580 --> 00:15:45,330 그래서 당신은 강의 계획서에 볼 수 있습니다 하지만이 후회 절입니다. 341 00:15:45,330 --> 00:15:47,500 나는 확실히 할 수 감사합니다, 그리고 우리 모두가 342 00:15:47,500 --> 00:15:50,870 직원은 물론 등을 수행하는 데 시간이 지남에 따라이, 또는이 일 자체, 343 00:15:50,870 --> 00:15:53,997 확실히 때 어떤 건지 알아 인생은 당신이 방해가된다 344 00:15:53,997 --> 00:15:56,080 일부 늦은 밤 deadline-- 뿐만 아니라이 클래스에서, 345 00:15:56,080 --> 00:15:58,660 하지만 당신은 another--있을 때 탐, 스트레스 346 00:15:58,660 --> 00:16:00,659 과도한 번호가 다른 일들을 할 수 있습니다. 347 00:16:00,659 --> 00:16:03,660 당신은 어떤 점에서에 할 것 확실히 나쁜, 아마 늦은 생활 348 00:16:03,660 --> 00:16:04,620 밤 결정. 349 00:16:04,620 --> 00:16:06,520 >> 강의 당 그래서, 이 조항이, 350 00:16:06,520 --> 00:16:10,629 만드는 등 그 경우 내 72시간 형편없는 결정, 당신은 그것까지 소유 351 00:16:10,629 --> 00:16:12,670 나에게 손을 내밀고 물론 하나의 헤드 352 00:16:12,670 --> 00:16:14,300 우리는 대화를해야합니다. 353 00:16:14,300 --> 00:16:16,220 우리는 일을 처리합니다 내부적으로 희망 354 00:16:16,220 --> 00:16:18,770 그것은 더 해지고의 교육 순간이나 삶의 교훈, 355 00:16:18,770 --> 00:16:22,120 함께하지 뭔가 특히 급격한 파급 효과 356 00:16:22,120 --> 00:16:24,570 여기에이 차트에 표시 될 수있다. 357 00:16:24,570 --> 00:16:26,540 >> 그래서 매우 심각한 톤입니다. 358 00:16:26,540 --> 00:16:29,960 우리가 몇 가지에 대한 일시 정지하자 초 장력을 깰. 359 00:16:29,960 --> 00:16:34,442 >> [음악 연주] 360 00:16:34,442 --> 00:17:17,768 361 00:17:17,768 --> 00:17:20,250 >> 데이비드 J. 마란 : 좋아, 그래서 어땠어로 자연스럽게 하시나요? 362 00:17:20,250 --> 00:17:22,059 오늘의 주요 주제에. 363 00:17:22,059 --> 00:17:23,859 그 중 첫 번째는 추상화이다. 364 00:17:23,859 --> 00:17:26,900 그 중 또 다른 될 것입니다 솔직히 데이터의 표현 365 00:17:26,900 --> 00:17:31,640 방법을 말하는 정말 건조 방법은 우리는 할 수있다 문제를 해결하고 생각 대해 이동 366 00:17:31,640 --> 00:17:33,250 문제 해결에 대한? 367 00:17:33,250 --> 00:17:37,285 그래서 당신은 스크래치에서 봤어, 당신은했습니다 C와 PSET1에 아마 이미 본 368 00:17:37,285 --> 00:17:39,930 당신은뿐만 아니라 사용할 수있는 함수의 printf처럼, 369 00:17:39,930 --> 00:17:42,770 다른 사람 년의 과거는 당신을 위해 썼다. 370 00:17:42,770 --> 00:17:45,340 당신은 또한 자신의 기능을 쓸 수 있습니다. 371 00:17:45,340 --> 00:17:48,440 >> 그리고 당신은 필요가 없습니다하더라도 PSET1에 솔직히 C에서 이런 짓을하고, 372 00:17:48,440 --> 00:17:51,866 당신은 정말 작성할 필요가 없습니다 당신의 problem-- 때문에 자신의 기능 373 00:17:51,866 --> 00:17:53,990 에서 아마도 어려운 동안 먼저 볼 수 glance-- 374 00:17:53,990 --> 00:17:57,910 궁극적으로 해결 될 수있다 코드의 모든 많은 선. 375 00:17:57,910 --> 00:18:01,140 하지만 그 관점에서, 상기와 자신의 함수를 작성, 376 00:18:01,140 --> 00:18:03,570 줄 C는 않습니다 실현 당신이 기능을 제공합니다. 377 00:18:03,570 --> 00:18:06,940 >> 나는 오늘날의 소스 코드에 갈거야 이는 이미 온라인으로 볼 수 있습니다 378 00:18:06,940 --> 00:18:10,900 나는 앞서 열린 갈거야 기능 0.C라는 프로그램까지, 379 00:18:10,900 --> 00:18:14,620 과 기능 제로에 우리는 몇 가지를 볼 수 있습니다. 380 00:18:14,620 --> 00:18:19,160 첫번째 라인 (18)을 통해 23 내 주요 기능입니다. 381 00:18:19,160 --> 00:18:22,414 그리고 지금 우리는 읽기 시작하고 있다는 우리가 즉석에서 작성하지 않을 코드 382 00:18:22,414 --> 00:18:25,080 대신 나는 사전에 서면으로 작성했습니다 또는 문제에서 당신은 설정하는 것이 383 00:18:25,080 --> 00:18:27,910 갖는받을 수 있습니다 사전에 작성되었습니다. 384 00:18:27,910 --> 00:18:30,040 좋은 방법은 시작 누군가 다른 사람의 코드를 읽고 385 00:18:30,040 --> 00:18:31,400 주요 기능을 찾을 수 있습니다. 386 00:18:31,400 --> 00:18:34,420 여기서 해당 항목을 그림 점은 프로그램을 실행이고, 387 00:18:34,420 --> 00:18:36,580 다음 거기에서 논리적으로 따르십시오. 388 00:18:36,580 --> 00:18:40,190 >> 따라서이 프로그램은 명백하게 인화 다음에 콜론 이름. 389 00:18:40,190 --> 00:18:42,490 우리는 다음에서 getString을 사용 CS50 라이브러리 390 00:18:42,490 --> 00:18:46,050 문자열 또는 단어 나 구를 얻을 수 사용자가 키보드에서. 391 00:18:46,050 --> 00:18:48,390 그리고이있다 일 이곳에 PrintName. 392 00:18:48,390 --> 00:18:51,420 >> 지금 PrintName는이 아니다 C. 함께 제공 기능 393 00:18:51,420 --> 00:18:52,970 그것은 표준 io.h.에없는 394 00:18:52,970 --> 00:18:55,570 그것은 CS50.h.에없는 395 00:18:55,570 --> 00:18:57,880 또한 동일한 파일에 오히려이다. 396 00:18:57,880 --> 00:19:01,000 나는 아래로 스크롤하면 주목 bit-- 라인 (25)은 27--합니다 397 00:19:01,000 --> 00:19:05,330 그것은 주석의 단지 꽤 방법 별과 슬래시를 사용하여 코드. 398 00:19:05,330 --> 00:19:07,320 이것은 멀티 라인이다 주석이 단지입니다 399 00:19:07,320 --> 00:19:10,570 푸른 내 설명 이 기능을 수행하는. 400 00:19:10,570 --> 00:19:14,530 >> 31 라인에서 28 때문에, 나는 슈퍼 간단한 함수를 작성했습니다 401 00:19:14,530 --> 00:19:16,280 그의 이름은 PrintName이다. 402 00:19:16,280 --> 00:19:19,560 그것은 얼마나 많은 소요 인수는 말할 것이다? 403 00:19:19,560 --> 00:19:25,120 그래서 한 공방 일이 있기 때문에 괄호 안에 나열 인수. 404 00:19:25,120 --> 00:19:27,000 의 유형은 String입니다. 405 00:19:27,000 --> 00:19:30,240 어느 PrintName 말을하는 것입니다 이 블랙 박스처럼 406 00:19:30,240 --> 00:19:32,910 걸리거나 기능 입력 문자열을 같은. 407 00:19:32,910 --> 00:19:35,730 >> 그리고 그 문자열의 이름 편리 이름이됩니다. 408 00:19:35,730 --> 00:19:37,840 아니 S,하지 N,하지만 이름입니다. 409 00:19:37,840 --> 00:19:41,090 그래서 PrintName이 무슨 일을하지? 410 00:19:41,090 --> 00:19:42,210 그것은 좋은 간단합니다. 411 00:19:42,210 --> 00:19:45,390 그냥 코드의 한 라인으로 printf의,하지만 분명히 그것을 412 00:19:45,390 --> 00:19:47,950 인쇄 아웃 "안녕하세요,"아무개. 413 00:19:47,950 --> 00:19:50,070 어디 아무개 인수에서 비롯됩니다. 414 00:19:50,070 --> 00:19:52,300 >> 지금이 여기에 큰 혁신이 아니다. 415 00:19:52,300 --> 00:19:56,710 정말, 내가 할 수있는 프로그램을 촬영했습니다 한 줄의 코드로 작성되었습니다 416 00:19:56,710 --> 00:20:00,190 여기를 넣어, 무언가로 변경 417 00:20:00,190 --> 00:20:04,920 즉, 약 6 ~ 7 정도 포함 여기 아래 줄의 코드는 모든 방법. 418 00:20:04,920 --> 00:20:08,190 >> 그러나의 연습이다 추상화로 알려진 원칙. 419 00:20:08,190 --> 00:20:12,550 새로운 종류의 내부에 봉입 이름이 기능, 그리고 더 나은 420 00:20:12,550 --> 00:20:14,590 아직 그 이름 그대로 그것이 무엇 말한다. 421 00:20:14,590 --> 00:20:16,880 그게 아니다 printf-- 의미 특히 설명. 422 00:20:16,880 --> 00:20:18,932 난을 만들려면 퍼즐 조각, 또는 나는 경우 423 00:20:18,932 --> 00:20:21,140 함수를 만들려면 즉, 다른 사람의 이름을 인쇄 424 00:20:21,140 --> 00:20:23,230 이 일의 아름다움 즉, 내가 실제로 할 수있다 425 00:20:23,230 --> 00:20:27,170 그 함수의 이름을 지정 그게가 수행하는 작업을 설명합니다. 426 00:20:27,170 --> 00:20:29,844 >> 지금은 입력에 소요되는 I 임의로 이름이라고했습니다, 427 00:20:29,844 --> 00:20:32,760 하지만 너무 멋지고 설명입니다 대신에 조금 더되는 428 00:20:32,760 --> 00:20:36,140 S.와 같은 일반 무효, 지금은 그냥 의미 429 00:20:36,140 --> 00:20:38,330 이 기능은하지 않는 것이 아무것도 날 다시 손. 430 00:20:38,330 --> 00:20:41,127 그것은 getString는 달라요 그 말 그대로 문자열을 날 다시 손 431 00:20:41,127 --> 00:20:43,960 처럼 우리는 종이 조각했다 반 친구들 지난 주와 함께, 432 00:20:43,960 --> 00:20:45,990 오히려 단지 부작용을 갖는다. 433 00:20:45,990 --> 00:20:48,080 그것은 화면에 뭔가를 출력합니다. 434 00:20:48,080 --> 00:20:53,880 >> 하루의 끝에서, 만약 그래서 어떻게해야합니까 함수 공, ./function-0, 435 00:20:53,880 --> 00:20:55,450 우리는 내 이름을 묻는 것을 볼 수 있습니다. 436 00:20:55,450 --> 00:20:58,150 내 이름에서 유형을 다윗을 입력하고. 437 00:20:58,150 --> 00:21:01,080 이왕 다시 그것을 할 경우, 그것은 말할 것 "안녕하세요, 롭." 438 00:21:01,080 --> 00:21:04,280 그래서 간단한 아이디어, 그러나 아마 이 정신에서 추정 439 00:21:04,280 --> 00:21:06,750 프로그램이 얻을로 그 , 조금 더 복잡합니다 440 00:21:06,750 --> 00:21:10,290 당신은 덩어리를 쓰고 싶어요 코드 및 전화 code-- 호출 441 00:21:10,290 --> 00:21:13,270 어떤 설명에 의해 그 code-- PrintName 같은 이름을 442 00:21:13,270 --> 00:21:15,600 C는 우리에게이 기능을 끌 수. 443 00:21:15,600 --> 00:21:17,660 >> 여기에 또 다른 간단한 예입니다. 444 00:21:17,660 --> 00:21:22,940 예를 들어, 나는 최대 열 경우 return.c라고 오늘부터 파일, 445 00:21:22,940 --> 00:21:24,270 내가 여기에 무슨 짓을했는지 알 수 있습니다. 446 00:21:24,270 --> 00:21:26,330 이 주요 기능의 대부분의 printf이다. 447 00:21:26,330 --> 00:21:30,360 내가 먼저 임의로 초기화 숫자 2에 x를 호출 변수입니다. 448 00:21:30,360 --> 00:21:34,110 그때 x는 지금 "인쇄 % 내가 "x의 값에 전달합니다. 449 00:21:34,110 --> 00:21:35,500 그래서 난 그냥 무슨 말인지. 450 00:21:35,500 --> 00:21:37,208 >> 지금은 그냥 대담 해요 printf와 함께 주장. 451 00:21:37,208 --> 00:21:42,050 그 x 값을 큐빙입니다, 그리고 난 함수를 호출하여 이렇게 452 00:21:42,050 --> 00:21:45,590 라는 큐브 전달 인수와의 x, 453 00:21:45,590 --> 00:21:49,300 다음 출력을 절약 변수 자체에서 x. 454 00:21:49,300 --> 00:21:51,340 그래서 x의 값을 건드리지 있어요. 455 00:21:51,340 --> 00:21:53,380 나는를 오버라이드 와 X의 값이 무엇이든 456 00:21:53,380 --> 00:21:56,510 호출 한 결과 이 큐브 함수이다. 457 00:21:56,510 --> 00:21:59,530 그리고 전 그냥를 인쇄 솜털 물건은 여기에 내가 무슨 짓을했는지 말. 458 00:21:59,530 --> 00:22:01,600 >> 그럼 큐브는 무엇인가? 459 00:22:01,600 --> 00:22:03,510 근본적으로 무엇에 주목 여기에 다른. 460 00:22:03,510 --> 00:22:05,540 나는 기능을 부여했습니다 이전과 이름을 입력합니다. 461 00:22:05,540 --> 00:22:08,270 나는 인수의 이름을 지정했습니다. 462 00:22:08,270 --> 00:22:11,650 이 N 대신 이름이라고이 시간, 하지만 내가 원하는 무엇이든 그것을 호출 할 수 있습니다. 463 00:22:11,650 --> 00:22:12,650 하지만이 다르다. 464 00:22:12,650 --> 00:22:14,080 왼쪽이 일. 465 00:22:14,080 --> 00:22:16,290 이전에는 어떤 키워드입니까? 466 00:22:16,290 --> 00:22:16,870 소년. 467 00:22:16,870 --> 00:22:18,580 지금은 분명히 INT입니다. 468 00:22:18,580 --> 00:22:20,630 >> 그래서 아마도이 데려 갈거야? 469 00:22:20,630 --> 00:22:24,090 무효을 의미 함 반면 종류의 죽음, 그리고 그 경우였다. 470 00:22:24,090 --> 00:22:25,970 PrintName는 아무것도 반환하지 않습니다. 471 00:22:25,970 --> 00:22:27,942 그것은 무언가를했지만, 이 날 다시 손을하지 않았다 472 00:22:27,942 --> 00:22:30,650 나는에 넣어 줄 수있는 등호의 왼쪽 473 00:22:30,650 --> 00:22:32,460 같은 I 라인 22 여기에 완료했습니다. 474 00:22:32,460 --> 00:22:36,780 >> 그래서 선 30로 말한다면, 무슨 일이 아마 의미한다는거야 475 00:22:36,780 --> 00:22:38,610 어떤 큐브에 대해 나를 위해 무엇입니까? 476 00:22:38,610 --> 00:22:41,110 그래? 477 00:22:41,110 --> 00:22:42,310 그것은 정수를 반환합니다. 478 00:22:42,310 --> 00:22:44,590 그래서 위해, 나를 다시 손 종이의 인스턴스 조각 479 00:22:44,590 --> 00:22:46,580 어떤이 답을 작성했습니다. 480 00:22:46,580 --> 00:22:50,130 이 제곱, 세제곱 또는 3, 또는 4 cubed-- 내가 전달 무엇이든 481 00:22:50,130 --> 00:22:51,540 그리고 이걸 어떻게 구현 했는가? 482 00:22:51,540 --> 00:22:54,810 음, 그냥 n 번 n 번 N 내가 값을 된 큐브하는 방법이다. 483 00:22:54,810 --> 00:22:57,110 그래서 다시, 슈퍼 간단한 생각하지만, 실증 484 00:22:57,110 --> 00:23:00,100 이제 우리는 함수를 작성하는 방법 실제로 우리를 다시했다 485 00:23:00,100 --> 00:23:02,380 관심을 가질 수있는 값. 486 00:23:02,380 --> 00:23:05,740 >> 마지막으로 예제 하나를 더 살펴 보자 여기에 기능을 하나했다. 487 00:23:05,740 --> 00:23:08,530 이 예에서, 시작 더 강력한 얻을 수 있습니다. 488 00:23:08,530 --> 00:23:12,400 그래서 기능을 하나,이 program-- 통지 궁극적으로 489 00:23:12,400 --> 00:23:14,920 GetPositiveInt라는 함수를 호출합니다. 490 00:23:14,920 --> 00:23:17,800 GetPositiveInt는 아니다 CS50 라이브러리의 기능, 491 00:23:17,800 --> 00:23:20,400 그러나 우리는 우리가 결정 이 존재하고 싶습니다. 492 00:23:20,400 --> 00:23:24,550 >> 그래서 우리는 나중에 파일을 아래로 스크롤하면, 내가 구현에 대해 어떻게 됐는지 알 493 00:23:24,550 --> 00:23:26,560 양의 정수를 얻고, I 더 강력한 말할 494 00:23:26,560 --> 00:23:28,992 이 괜찮은 때문에 줄의 코드 번호입니다. 495 00:23:28,992 --> 00:23:30,700 그냥 바보 아니에요 작은 장난감 프로그램입니다. 496 00:23:30,700 --> 00:23:33,870 실제로 일부 오류 검사 있어요 더 유용한 일을하고. 497 00:23:33,870 --> 00:23:38,470 >> 당신이 연습을 본 적이 없다 경우에 따라서 우리가 PSET1에 내장 한 동영상, 498 00:23:38,470 --> 00:23:42,350 이 유형 것을 알고 정신에는 변함이 C 루프, 499 00:23:42,350 --> 00:23:44,270 일 스크래치의 종류 할 수 있습니다. 500 00:23:44,270 --> 00:23:46,320 그리고 어떻게 이렇게 말한다. 501 00:23:46,320 --> 00:23:47,500 이를 인쇄합니다. 502 00:23:47,500 --> 00:23:51,860 그럼 가서 N-- 얻을 int를 얻고 N에 보관 503 00:23:51,860 --> 00:23:55,760 및 유지는 또 다시이 일을 다시 오랫동안 N 미만으로 하나입니다. 504 00:23:55,760 --> 00:23:58,720 >> 그래서 N 미만이 될 것입니다 단지 인간의 협력이 아니라면. 505 00:23:58,720 --> 00:24:01,980 그 또는 그녀가 입력되는 경우 0 또는 -1 또는 -50에서, 506 00:24:01,980 --> 00:24:04,790 이 루프는 유지하는 것입니다 또 다시 실행. 507 00:24:04,790 --> 00:24:07,549 그리고 결국 나는주의 단순히 값을 반환합니다. 508 00:24:07,549 --> 00:24:09,590 그래서 지금 우리는 기능이 그 좋았을 것 509 00:24:09,590 --> 00:24:14,040 CS50은에서 구현하면 당신을 위해 CS50.h 및 CS50.c, 510 00:24:14,040 --> 00:24:16,520 그러나 여기에서 우리가 지금 할 수있는 이 스스로를 구현합니다. 511 00:24:16,520 --> 00:24:19,230 >> 그러나 몇 가지 주요 사항에이 코멘트. 512 00:24:19,230 --> 00:24:24,390 있는 겁니까 왜 정수를 선언 않았다 N, 29 행에, 당신은 생각 하는가 513 00:24:24,390 --> 00:24:27,139 대신 일을 여기이 어느입니다 514 00:24:27,139 --> 00:24:28,930 더 일관 우리는 지난 주에 무슨 짓을? 515 00:24:28,930 --> 00:24:29,430 그래? 516 00:24:29,430 --> 00:24:34,485 517 00:24:34,485 --> 00:24:35,110 좋은 생각. 518 00:24:35,110 --> 00:24:37,080 그래서 만약 우리가 넣어했다 여기, 우리처럼입니다 519 00:24:37,080 --> 00:24:39,110 또 다시 선언 보관하십시오. 520 00:24:39,110 --> 00:24:42,000 그 자체 때문이다 문제 없습니다, 그 자체, 521 00:24:42,000 --> 00:24:43,940 우리는 단지이 필요하기 때문에 한 번 누른 다음 값 522 00:24:43,940 --> 00:24:45,330 어쨌든 우리는 새로운 하나를 얻을 것입니다. 523 00:24:45,330 --> 00:24:45,940 하지만 좋은 생각. 524 00:24:45,940 --> 00:24:46,440 그래? 525 00:24:46,440 --> 00:24:52,770 526 00:24:52,770 --> 00:24:53,330 >> 닫습니다. 527 00:24:53,330 --> 00:24:59,030 나는 N에 선언했기 때문에 그래서 선 루프 (29)의 외부 528 00:24:59,030 --> 00:25:01,390 그것은을 통해 접근 가능 이 전체 기능. 529 00:25:01,390 --> 00:25:05,400 아니 다른 기능 때문에 N이 곱슬 내부에 여전히 530 00:25:05,400 --> 00:25:06,470 여기 중괄호. 531 00:25:06,470 --> 00:25:07,940 확인 바람에 .... 532 00:25:07,940 --> 00:25:12,430 533 00:25:12,430 --> 00:25:12,940 >> 정확히. 534 00:25:12,940 --> 00:25:14,356 그래서이 점에 더 많은입니다. 535 00:25:14,356 --> 00:25:18,600 우리는 대신에 선언 된 경우 n은 바로 여기에 라인 (32)에, 536 00:25:18,600 --> 00:25:22,340 그것은 추측 때문에 문제입니다 다른 어디에서 나는 그것을 접근 할 필요가? 537 00:25:22,340 --> 00:25:25,620 라인 (34), 및 온 엄지 손가락의 간단한 규칙입니다 538 00:25:25,620 --> 00:25:30,060 당신은 단지 변수를 사용할 수있는 가장 최근의 괄호 안에 539 00:25:30,060 --> 00:25:31,420 하는 당신은 그것을 선언했다. 540 00:25:31,420 --> 00:25:35,230 >> 불행하게도, 라인 (34) 한 라인은 너무 늦기 541 00:25:35,230 --> 00:25:38,560 이미 폐쇄했기 때문에 33 행에 중괄호 542 00:25:38,560 --> 00:25:41,220 즉 해당 라인 (30)에 중괄호. 543 00:25:41,220 --> 00:25:44,180 그래서이 말을하는 방법입니다 이 int 변수 범위가 지정되어 있는지, 544 00:25:44,180 --> 00:25:46,970 그렇게 만 안쪽에, 말하자면 그 중괄호. 545 00:25:46,970 --> 00:25:48,910 그것은 단지 그 밖에 존재하지 않습니다. 546 00:25:48,910 --> 00:25:51,580 >> 그래서 사실은, 내가 할 경우이 잘못, 내가 코드를 저장할 수 547 00:25:51,580 --> 00:25:53,530 로 잘못 기록은 ... 548 00:25:53,530 --> 00:25:57,990 내가 가서 어떻게해야합니까하자 함수 하나, 그리고 notice-- 오류입니다. 549 00:25:57,990 --> 00:26:03,502 선언되지 않은 식별자 n의 사용 바로 여기 35 행에. 550 00:26:03,502 --> 00:26:05,210 그리고 우리는 위로 이동하면, 또한, 또 다른 하나. 551 00:26:05,210 --> 00:26:08,750 선언되지 않은 사용 라인 (34)에 식별자 명. 552 00:26:08,750 --> 00:26:11,200 >> 그래서 컴파일러, 연타, 그 것을 알아 차리지되기 바로 553 00:26:11,200 --> 00:26:13,720 비록 존재하지 않습니다 명확하게 시각적으로있다. 554 00:26:13,720 --> 00:26:16,090 그래서 간단한 수정이를 선언합니다. 555 00:26:16,090 --> 00:26:18,790 >> 지금 나에게로 스크롤 할 수 파일의 맨. 556 00:26:18,790 --> 00:26:21,080 무엇으로 당신을 밖으로 점프 조금 다른 존재 557 00:26:21,080 --> 00:26:23,070 물건에서 우리는 지난 주에보고? 558 00:26:23,070 --> 00:26:26,990 뿐만 아니라 이름을 내가해야합니까뿐만 아니라, 할 나는 일부 날카로운 상단까지 포함해야 559 00:26:26,990 --> 00:26:29,340 내가 할 일이있다 프로토 타입을 호출. 560 00:26:29,340 --> 00:26:36,100 지금 생각하면 몹시 유사한 모습 우리는 27 행에 좀 전에 보았다. 561 00:26:36,100 --> 00:26:39,230 >> 그래서 다른 추론 할 수 내가 이런 짓을 한 이유는 오류 메시지를 표시합니다. 562 00:26:39,230 --> 00:26:42,050 내가 가서 보자 거기에이 줄을 삭제합니다. 563 00:26:42,050 --> 00:26:44,240 그래서 우리는 프로토 타입에 대해 아무것도 몰라. 564 00:26:44,240 --> 00:26:45,430 이 파일을 리메이크. 565 00:26:45,430 --> 00:26:46,890 기능을 확인하십시오. 566 00:26:46,890 --> 00:26:48,090 그리고 지금, 빌어 먹을, 네 오류가 발생합니다. 567 00:26:48,090 --> 00:26:50,220 이제 처음으로 스크롤하자. 568 00:26:50,220 --> 00:26:55,070 >> 함수의 암시 적 선언 양의 정수를 얻을하는 C99에서 유효하지 않습니다. 569 00:26:55,070 --> 00:26:57,780 C99은 1,999 의미 언어의 버전 570 00:26:57,780 --> 00:26:59,710 우리가 실제로 사용하는 것입니다 C. 571 00:26:59,710 --> 00:27:01,050 그래서 이것은 무엇을 의미 하는가? 572 00:27:01,050 --> 00:27:05,250 음 C--보다 구체적 C 꽤 바보 같은 프로그램은 compilers--입니다. 573 00:27:05,250 --> 00:27:07,420 그들은 단지 당신이 걸 알지 그들에게, 그리고 그입니다 574 00:27:07,420 --> 00:27:08,960 지난 주에서 실제로 주제. 575 00:27:08,960 --> 00:27:12,910 >> 문제는 내가 가면 것입니다 여기에 이​​름을 구현하는 방법에 대한, 576 00:27:12,910 --> 00:27:17,640 나는라는 함수를 호출 라인 (20)에 여기에 GetPositiveInt, 577 00:27:17,640 --> 00:27:22,520 이 기능은 기술적으로하지 않습니다 컴파일러가 27 행을 볼 때까지 존재한다. 578 00:27:22,520 --> 00:27:25,450 불행하게도, 컴파일러는 위, 아래, 오른쪽, 왼쪽으로 일을하고, 579 00:27:25,450 --> 00:27:29,580 가 보지 않았기 때문에 그렇게 GetPositiveInt의 구현, 580 00:27:29,580 --> 00:27:32,400 그러나 당신이 노력 본다 여기를 사용하는, 581 00:27:32,400 --> 00:27:35,810 그냥 소리 지르지 bail-- 것 오류와 함​​께 당신은 아마도 message-- 582 00:27:35,810 --> 00:27:38,440 애매하고, 실제로 파일을 컴파일합니다. 583 00:27:38,440 --> 00:27:41,940 >> 그래서 소위 프로토 타입까지 여기에 일반적으로 인정 하듯이 중복이다. 584 00:27:41,940 --> 00:27:47,870 말 그대로, 여기 내려 가서 복사 이 붙여, 나는 여기에 넣었습니다. 585 00:27:47,870 --> 00:27:51,020 공허 더 적절한 것, 그래서 우리는거야 문자 그대로 복사하고이 시간을 붙여 넣습니다. 586 00:27:51,020 --> 00:27:52,854 말 그대로 복사하고 붙여 넣기. 587 00:27:52,854 --> 00:27:54,270 정말 그냥 빵 부스러기 등. 588 00:27:54,270 --> 00:27:56,260 >> 컴파일러에 대한 작은 단서. 589 00:27:56,260 --> 00:27:58,860 나는 이것이 무엇을하는지 모른다 아직,하지만 난 당신에게 약속 해요 590 00:27:58,860 --> 00:28:00,260 결국 존재할 것이다. 591 00:28:00,260 --> 00:28:04,010 이에 한테 들었 냐 이유입니다 라인은 16-- 세미콜론으로 끝납니다. 592 00:28:04,010 --> 00:28:05,486 그것은 디자인에 의해 중복이다. 593 00:28:05,486 --> 00:28:05,986 네? 594 00:28:05,986 --> 00:28:11,340 595 00:28:11,340 --> 00:28:14,360 >> 당신은 당신의 라이브러리를 연결하지 않은 경우 오, 좋은 질문을 가까이 대고 있습니다. 596 00:28:14,360 --> 00:28:17,350 샤프는 헤더 파일 흠이 포함되어 있습니다. 597 00:28:17,350 --> 00:28:20,040 해야 거의을 나중에 ... 할 필요 항상 맨 위에 수 598 00:28:20,040 --> 00:28:23,270 대 similar--위한 파일 정확히 같은 이유로, 예. 599 00:28:23,270 --> 00:28:26,430 표준 때문에 io.h를 그대로 줄입니다 600 00:28:26,430 --> 00:28:30,560 이 같은 있지만, 단어의 printf와, 그리고 인수 및 반환 유형. 601 00:28:30,560 --> 00:28:33,310 그리고 날카로운 수행하여 최대 포함 여기, 당신은 말 그대로 무엇이야 602 00:28:33,310 --> 00:28:36,380 내용을 복사하여 붙여 넣기합니다 누군가 다른 상단을 썼다. 603 00:28:36,380 --> 00:28:39,660 이것에 코드를 cluing 이러한 기능이 존재하는 것이 사실. 604 00:28:39,660 --> 00:28:40,160 그래? 605 00:28:40,160 --> 00:28:47,520 606 00:28:47,520 --> 00:28:48,260 >> 물론입니다. 607 00:28:48,260 --> 00:28:51,690 그래서 매우 영리하고 올바른 솔루션이 될 것, 그거 알아? 608 00:28:51,690 --> 00:28:53,760 내가 모르는 프로토 타입은,하지만 난 알고 609 00:28:53,760 --> 00:28:56,390 나는 C 단지 것을 이해하는 경우 바보와는 위에서 아래로 rethinks. 610 00:28:56,390 --> 00:28:57,820 음의이 원하는 무엇을 제공 할 수 있습니다. 611 00:28:57,820 --> 00:29:01,650 그것을 붙여의 그 코드를 잘라 보자 상단, 지금은 아래로 아래 주요 누릅니다. 612 00:29:01,650 --> 00:29:03,470 이것도 문제를 해결하는 것이다. 613 00:29:03,470 --> 00:29:07,409 >> 하지만 당신은 아주 쉽게 가지고 올 수 A가 B를 호출해야하는 시나리오, 614 00:29:07,409 --> 00:29:10,075 어쩌면 B는 A.이 다시 호출 재귀라는 뭔가가있다 615 00:29:10,075 --> 00:29:11,370 그리고 우리는 그에게 올 것이다. 616 00:29:11,370 --> 00:29:13,911 그리고 그것은 나 잘 수도 있고 아닐 수도있다 일,하지만 당신은 확실히 할 수 617 00:29:13,911 --> 00:29:15,110 이 솔루션을 휴식. 618 00:29:15,110 --> 00:29:17,690 >> 그리고 또한, 나는 것 문체 주장 619 00:29:17,690 --> 00:29:20,760 특히 프로그램을 이 길고이 길어질, 620 00:29:20,760 --> 00:29:23,064 그냥 슈퍼 편리 상단에 주요 넣어 621 00:29:23,064 --> 00:29:25,730 이 일이 있기 때문에 대부분의 프로그래머는 걱정 할 것입니다. 622 00:29:25,730 --> 00:29:28,150 그리고 그것은 조금 청소기입니다, 틀림없이, 그에게 방법을 수행하는 623 00:29:28,150 --> 00:29:30,380 나는 원래했다 프로토 타입도 624 00:29:30,380 --> 00:29:33,396 그것은 조금 보이지만 첫눈에 중복. 625 00:29:33,396 --> 00:29:33,895 그래? 626 00:29:33,895 --> 00:29:36,472 627 00:29:36,472 --> 00:29:37,680 죄송합니다, 당신은 더 크게 말을 할 수 있겠습니까? 628 00:29:37,680 --> 00:29:45,650 629 00:29:45,650 --> 00:29:49,580 >> 당신의 위치를​​ 전환하는 경우 구현 및 프로토? 630 00:29:49,580 --> 00:29:51,270 그래서 좋은 질문이다. 631 00:29:51,270 --> 00:29:53,780 이 경우이를 다시 선언 여기의이 어떻게되는지 보자. 632 00:29:53,780 --> 00:29:55,530 나는이 아래로 넣어 그래서 경우 여기, 당신은 말을하는지. 633 00:29:55,530 --> 00:29:57,860 634 00:29:57,860 --> 00:29:58,360 아, 죄송합니다. 635 00:29:58,360 --> 00:29:58,859 큰 소리로? 636 00:29:58,859 --> 00:30:02,000 637 00:30:02,000 --> 00:30:04,011 심지어 큰 소리로. 638 00:30:04,011 --> 00:30:04,760 오, 좋은 질문입니다. 639 00:30:04,760 --> 00:30:05,860 이 기능을 무효화 할 것인가? 640 00:30:05,860 --> 00:30:08,901 알다시피,이 모든 년 후, I 이후 프로토 타입을 넣어 적이 없다. 641 00:30:08,901 --> 00:30:13,810 그럼 함수 일을하자 그 일 후. 642 00:30:13,810 --> 00:30:15,279 >> [중얼] 643 00:30:15,279 --> 00:30:16,320 데이비드 J. 마란 : 아, 잠깐. 644 00:30:16,320 --> 00:30:17,944 우리는 여전히 정상에 모든 것을 넣어해야합니다. 645 00:30:17,944 --> 00:30:21,400 그래서 난 경우의은, 여기를하자 제대로 질문을 이해. 646 00:30:21,400 --> 00:30:24,700 나는 포함한 모든 것을 걸었습니다 주 위의 프로토 타입, 647 00:30:24,700 --> 00:30:28,180 하지만 프로토 타입을 걸었습니다 구현 아래. 648 00:30:28,180 --> 00:30:33,190 >> 내가 일을 할 경우, 내가 받고 있어요 그래서 다시 error--되지 않은 변수 (n). 649 00:30:33,190 --> 00:30:37,280 650 00:30:37,280 --> 00:30:37,860 아, 거기. 651 00:30:37,860 --> 00:30:38,360 감사합니다. 652 00:30:38,360 --> 00:30:39,430 어디 보자, 우리는이 제거. 653 00:30:39,430 --> 00:30:41,304 즉, 다른 버그 그래서 그 무시하자. 654 00:30:41,304 --> 00:30:43,910 의 정말 빨리이 리메이크 보자. 655 00:30:43,910 --> 00:30:48,100 >> 좋아, 그럼 데이터 인수하지 형식 문자열에 사용 656 00:30:48,100 --> 00:30:52,310 오 N--, 그건 왜냐하면 여기이 변경되었습니다. 657 00:30:52,310 --> 00:30:55,885 좋아, 우리가 알고있는 답 아 - 모든 권리 것입니다, 우리가 간다. 658 00:30:55,885 --> 00:31:00,560 아, 긍정적 인 주셔서 감사합니다. 659 00:31:00,560 --> 00:31:03,430 좋아,이 코드를 수정합니다 after--이 특정 버그를 무시 660 00:31:03,430 --> 00:31:08,300 이 작동 었어요 ... 때문에 답변입니다. 661 00:31:08,300 --> 00:31:11,560 >> 그래서 덮어 쓰지 않습니다 당신은 무엇을 그냥 했어요. 662 00:31:11,560 --> 00:31:14,800 나는 컴파일러를 의심 이러한 방식으로 작성된 663 00:31:14,800 --> 00:31:18,420 그것은 당신의 프로토 타입을 무시하는 것이 본체 때문에, 말하자면 664 00:31:18,420 --> 00:31:20,922 함수는 이미이의 높은 최대를 구현되었습니다. 665 00:31:20,922 --> 00:31:23,380 실제로 상담해야 컴파일러의 매뉴얼 666 00:31:23,380 --> 00:31:26,171 다른이 있다면 이해하기 의미하지만, 첫눈에 667 00:31:26,171 --> 00:31:29,290 그냥 시도와 실험에 의해, 영향 없을 것 같다. 668 00:31:29,290 --> 00:31:30,730 좋은 질문입니다. 669 00:31:30,730 --> 00:31:33,660 >> 그럼, 지금 점진 이동하자 거리 부작용으로부터 어느 670 00:31:33,660 --> 00:31:36,660 같은 것을 할 기능은 다음과 같습니다 시각적으로 printf와 함께 화면에, 671 00:31:36,660 --> 00:31:38,090 하지만 값을 반환하지 않습니다. 672 00:31:38,090 --> 00:31:41,550 그리고 그 함수는 반환이 우리와 같은 값은 단지 몇 가지를 보았다. 673 00:31:41,550 --> 00:31:45,350 우리는 이미, 범위의이 개념을 보았다 우리는 또 다시이 표시됩니다. 674 00:31:45,350 --> 00:31:47,210 하지만 지금은 다시, 엄지 손가락의 규칙을 사용 675 00:31:47,210 --> 00:31:51,410 변수는 사용될 수 있다는 가장 최근에 개방 내부 676 00:31:51,410 --> 00:31:54,350 우리와 같은 닫힌 중괄호 특정 예에서 보았다. 677 00:31:54,350 --> 00:31:56,910 >> 그리고 당신은, 지적 ability--가있다 678 00:31:56,910 --> 00:32:00,040 당신은 이러한 문제를 해결할 수 글로벌 변수를 넣어 679 00:32:00,040 --> 00:32:01,290 파일의 맨 위에. 680 00:32:01,290 --> 00:32:03,630 그러나, 거의 모든 경우에서 우리는 그에게 싫은 내색을 것입니다, 681 00:32:03,630 --> 00:32:06,170 실제로도하지 지금은 그 솔루션으로. 682 00:32:06,170 --> 00:32:09,890 그래서 지금, 테이크 아웃이 있다는 것입니다 변수는 범위의이 개념을 가지고있다. 683 00:32:09,890 --> 00:32:13,430 >> 하지만 지금의 다른 살펴 보자 실제로보고의 건조 방법 684 00:32:13,430 --> 00:32:15,810 꽤 흥미있는 약간의 구현 세부 사항. 685 00:32:15,810 --> 00:32:17,810 우리가 어떻게 정보를 나타내는 수 있습니다. 686 00:32:17,810 --> 00:32:20,370 그리고 우리는 이미 보았다 클래스의 첫째 주입니다. 687 00:32:20,370 --> 00:32:23,320 바이너리를 보면, 및 소수점의 자신을 상기. 688 00:32:23,320 --> 00:32:28,310 >> 그러나 C가 가지고있는 지난 주부터 리콜 다른 데이터 타입과 더 큼, 689 00:32:28,310 --> 00:32:30,600 그러나 가장 유용한 것들 지금은이 일 수 있습니다. 690 00:32:30,600 --> 00:32:36,030 어떻게 문자 또는 문자, 한 바이트 또는 8 비트의 총 수 있습니다. 691 00:32:36,030 --> 00:32:40,060 그리고 그 크기 말을하다 문자의 한 바이트이다. 692 00:32:40,060 --> 00:32:45,370 바이트는 8 비트, 그래서이 있음을 의미 우리는 얼마나 많은 문자를 나타낼 수 있습니다. 693 00:32:45,370 --> 00:32:47,320 얼마나 많은 문자 나 키보드의 기호 694 00:32:47,320 --> 00:32:49,210 우리는 한 바이트 또는 8 비트가있는 경우. 695 00:32:49,210 --> 00:32:51,546 다시 주 제로 생각합니다. 696 00:32:51,546 --> 00:32:53,420 당신은 8 비트가있는 경우, 얼마나 많은 총 값 697 00:32:53,420 --> 00:32:55,503 당신은으로 나타낼 수 0과 1의 패턴? 698 00:32:55,503 --> 00:32:58,170 699 00:32:58,170 --> 00:33:00,260 그 이상 보이면. 700 00:33:00,260 --> 00:33:03,490 그래서 256 총 당신이 경우 0부터 세기 시작. 701 00:33:03,490 --> 00:33:07,120 그래서 당신은 팔 bits-- 그래서 우리는 경우가있는 경우 , 다시 여기에 우리의 바이너리 전구를했다 702 00:33:07,120 --> 00:33:12,180 우리는에있는 전구를 켤 수 256 독특한 패턴의에서 끕니다. 703 00:33:12,180 --> 00:33:13,640 >> 지금 이것은 조금 문제가있다. 704 00:33:13,640 --> 00:33:16,857 영어에 대해 너무 많이하지 로맨스 언어, 그러나 확실하게 705 00:33:16,857 --> 00:33:19,190 당신은 소개 할 때,에 대한 예, 아시아 언어, 어떤 706 00:33:19,190 --> 00:33:22,580 같은보다 훨씬 더 기호가 알파벳 26 글자. 707 00:33:22,580 --> 00:33:24,390 우리는 실제로해야 할 수도 있습니다 한 바이트보다. 708 00:33:24,390 --> 00:33:28,240 그리고 고맙게도에서 최근 몇 년 동안 사회가 709 00:33:28,240 --> 00:33:31,040 사용하는 다른 표준 채택 충전 당 바이트 이상. 710 00:33:31,040 --> 00:33:34,210 >> 하지만 지금은 C의 기본에 대한 하나의 바이트 또는 8 비트이다. 711 00:33:34,210 --> 00:33:38,195 정수 한편, 4 개입니다 바이트는 달리 32 비트라고도합니다. 712 00:33:38,195 --> 00:33:41,320 어느 것이 가장 큰 가능한 무슨 의미 수 우리는 정수로 나타낼 수있다 713 00:33:41,320 --> 00:33:41,820 분명히? 714 00:33:41,820 --> 00:33:44,426 715 00:33:44,426 --> 00:33:45,050 억. 716 00:33:45,050 --> 00:33:46,760 그래서 사십억 그쯤이다. 717 00:33:46,760 --> 00:33:49,840 이 32 회 전력, 우리 경우 더 음수을지지 않습니다 718 00:33:49,840 --> 00:33:52,530 그냥 모든 긍정적를 사용 숫자, 그것은 사십억이다 719 00:33:52,530 --> 00:33:53,730 제공하거나 가능성을. 720 00:33:53,730 --> 00:33:57,890 플로트 한편, 다른 유형 그것은 여전히​​ 숫자이다 C. 데이터 타입, 721 00:33:57,890 --> 00:33:58,990 그러나 그것은 실수입니다. 722 00:33:58,990 --> 00:34:00,660 소수점 뭔가. 723 00:34:00,660 --> 00:34:03,000 그리고 그것은 밝혀 C는 4 바이트를 사용 724 00:34:03,000 --> 00:34:05,340 부동 소수점 값을 표현한다. 725 00:34:05,340 --> 00:34:09,420 >> 불행하게도 얼마나 많은 부동 소수점 값은 세계에서 존재? 726 00:34:09,420 --> 00:34:11,582 얼마나 많은 실수가있다? 727 00:34:11,582 --> 00:34:13,540 무한이있다 번호, 그 문제에 대한 728 00:34:13,540 --> 00:34:15,164 정수의 무한 수는있다. 729 00:34:15,164 --> 00:34:18,070 그래서 우리는 가지 이미있어 여기에 스스로 구멍을 파고. 730 00:34:18,070 --> 00:34:21,780 이에 의해 명백하게 computers--에서의 데모 테잎에 C로 작성된 적어도 프로그램 731 00:34:21,780 --> 00:34:24,110 만의 높은 믿을 수있는 사십억은 지려면 732 00:34:24,110 --> 00:34:26,260 및 부동 소수점 값 수 만 분명히 733 00:34:26,260 --> 00:34:28,330 정밀 일부 한정된 금액을 가지고있다. 734 00:34:28,330 --> 00:34:30,810 만 많은 숫자 후 자신의 소수점. 735 00:34:30,810 --> 00:34:32,822 >> 왜냐하면, 물론, 만약 당신은 단지 32 비트를 가지고, 736 00:34:32,822 --> 00:34:36,030 나는 우리가 갈거야 방법을 모른다 아마 진짜 숫자들을 나타내는 737 00:34:36,030 --> 00:34:37,409 패턴의 종류와. 738 00:34:37,409 --> 00:34:40,030 그러나 반드시 유한있다 이러한 패턴의 수, 739 00:34:40,030 --> 00:34:41,830 그래서 여기, 너무, 이것은 문제가있다. 740 00:34:41,830 --> 00:34:43,710 >> 이제 우리는 약간의 문제를 방지 할 수 있습니다. 741 00:34:43,710 --> 00:34:45,710 당신은 플로트를 사용하지 않는 경우, 당신은 두 번을 사용할 수 있습니다 742 00:34:45,710 --> 00:34:50,230 C에있는 당신에게 8 바이트를 제공하는 제로의 방법이 더 가능한 패턴입니다 743 00:34:50,230 --> 00:34:50,730 과 1. 744 00:34:50,730 --> 00:34:55,199 그러나 어느 것입니다, 아직 유한하다 당신이 소프트웨어를 작성하는 경우 문제가 될 수 있습니다 745 00:34:55,199 --> 00:34:57,670 그래픽 또는 공상에 대한 수식입니다. 746 00:34:57,670 --> 00:35:00,410 그래서 당신은 실제로 할 수 있습니다 보다 더 큰 카운트합니다. 747 00:35:00,410 --> 00:35:05,640 긴 long-- 바보 named-- 또한 8 바이트, 64 비트, 748 00:35:05,640 --> 00:35:10,260 이것은, int로 두 배 길이 그것은 긴 정수 값입니다. 749 00:35:10,260 --> 00:35:15,655 >> 재미 fact-- INT는 4 바이트 인 경우 일반적으로 C에서 오랜 기간은 얼마나 되나요? 750 00:35:15,655 --> 00:35:18,290 751 00:35:18,290 --> 00:35:21,560 또한 4 바이트이지만 오래 오래 8 바이트이며, 752 00:35:21,560 --> 00:35:23,050 이것은 역사적인 이유입니다. 753 00:35:23,050 --> 00:35:26,450 >> 하지만 지금은 테이크 아웃 단지 그 데이터를 가지고있다 754 00:35:26,450 --> 00:35:29,625 이다 computer--에 표시 할 전기와 물리적 장치, 755 00:35:29,625 --> 00:35:32,190 그것은 일반적으로 운전하는 것 그 0과 1 ones-- 756 00:35:32,190 --> 00:35:34,320 정밀도의 유한 한 양의. 757 00:35:34,320 --> 00:35:35,620 그래서 문제는 무엇인가? 758 00:35:35,620 --> 00:35:37,480 >> 그런데 문제가 있어요 정수 오버 플로우. 759 00:35:37,480 --> 00:35:39,780 다만 C에서, 그러나에 일반적으로 컴퓨터. 760 00:35:39,780 --> 00:35:42,590 예를 들어,이 경우 바이트 가치가 bit--입니다 761 00:35:42,590 --> 00:35:45,120 그래서 이것은 모든 팔 bit-- 경우 있는 번호 하나입니다. 762 00:35:45,120 --> 00:35:47,300 어떤 수는 이것입니다 우리가 가정하면 대표 763 00:35:47,300 --> 00:35:50,730 그것은 이진의 모든 양의 값을입니까? 764 00:35:50,730 --> 00:35:54,410 >> 255, 그리고 256가 있기 때문에, 아니다 제로는 가장 낮은 숫자입니다. 765 00:35:54,410 --> 00:35:56,760 그러므로 255은 가장 높은 하나이지만 문제 766 00:35:56,760 --> 00:36:00,330 내가하고 싶다고 생각합니다 이 변수를 증분하는 767 00:36:00,330 --> 00:36:04,030 8 비트 총 사용 나는 그것을 증가합니다. 768 00:36:04,030 --> 00:36:07,160 >> 그럼 난 추가 마자 이러한 것들의 모든 일, 769 00:36:07,160 --> 00:36:10,500 당신은 아마 그냥 visually-- 상상할 수 decimals-- 사용하여 하나를 들고 같은 770 00:36:10,500 --> 00:36:12,300 뭔가 왼쪽으로 흐를 것입니다. 771 00:36:12,300 --> 00:36:15,590 그리고 실제로, 나는 번호를 추가하는 경우 이 하나, 무슨 바이너리에서 발생 772 00:36:15,590 --> 00:36:17,670 이 제로로 돌아 넘치는 것입니다. 773 00:36:17,670 --> 00:36:21,730 >> 그래서 당신은 int를하지 use-- 경우, 하지만 단일 바이트 정수를 계산합니다 774 00:36:21,730 --> 00:36:27,170 프로그램 내에서, 가능한 한 빨리 default--에 의해 당신이 250에 도달 251, 252, 253, 254, 775 00:36:27,170 --> 00:36:32,710 255-- 0, 255 이후에 온다 이는 아마 무슨이다 776 00:36:32,710 --> 00:36:34,790 사용자가 기대하는 것입니다. 777 00:36:34,790 --> 00:36:39,620 >> 이제 그 사이에 포인트 세상을 떠에, 당신은 또한 유사한 문제가있다. 778 00:36:39,620 --> 00:36:42,670 가장 큰 번호도 너무별로 비록 그 여전히 문제입니다. 779 00:36:42,670 --> 00:36:45,360 그러나 정밀 금액 당신은 나타낼 수있다. 780 00:36:45,360 --> 00:36:49,490 그래서이 예에서 살펴 보자 여기에 오늘날의 소스 code--에서 781 00:36:49,490 --> 00:36:52,070 플로트 0.C합니다. 782 00:36:52,070 --> 00:36:54,280 >> 그리고 슈퍼 것을보세요 간단한 프로그램이 783 00:36:54,280 --> 00:36:56,580 분명히 어떤 값을 출력해야합니까? 784 00:36:56,580 --> 00:37:00,777 785 00:37:00,777 --> 00:37:04,110 이 인쇄 것입니다 베팅 않는 무엇 새 구문의 비트가 비록 786 00:37:04,110 --> 00:37:05,540 여기? 787 00:37:05,540 --> 00:37:06,700 그래서 잘하면 0.1. 788 00:37:06,700 --> 00:37:10,000 그래서 한 10 분의 1에 해당하는 나는 10로 나눈 1 일을 해요 때문이다. 789 00:37:10,000 --> 00:37:12,430 나는 대답을 저장하고있어 변수에 F했다. 790 00:37:12,430 --> 00:37:15,850 즉, 변수는 float 형,의 인 난 그냥 제안 키워드가 존재합니다. 791 00:37:15,850 --> 00:37:18,910 >> 우리는 전에 본, 그러나 한 이 printf와의 깔끔한 방법 가지입니다 792 00:37:18,910 --> 00:37:22,110 얼마나 많은 숫자를 지정할 수 소수점보고 싶어요. 793 00:37:22,110 --> 00:37:25,020 그래서이 표기법은 의미 그 여기 자리입니다. 794 00:37:25,020 --> 00:37:27,900 이는 부동 소수점 대해 야 값, 그리고 아, 그런데, 795 00:37:27,900 --> 00:37:31,389 소수점을 함께 보여 소수점 후 하나의 번호. 796 00:37:31,389 --> 00:37:33,180 그래서 숫자입니다 유효 숫자의, 797 00:37:33,180 --> 00:37:34,650 그래서 당신이 할 수 있음을 말하고있다. 798 00:37:34,650 --> 00:37:40,450 >> 그래서 내가 가서하자 ./float-0, 플로트는 0, 799 00:37:40,450 --> 00:37:46,660 분명히 하나 10로 나눈 0.0이다. 800 00:37:46,660 --> 00:37:47,760 이제 그 이유가 무엇입니까? 801 00:37:47,760 --> 00:37:51,380 >> 그런데 또, 컴퓨터가 복용 나 문자 그대로, 나는 일 작성했습니다 802 00:37:51,380 --> 00:37:56,680 나는 10를 기록한 추측을 무엇을 그 두 가지에 대한 가정 데이터 유형은 803 00:37:56,680 --> 00:37:58,440 값? 804 00:37:58,440 --> 00:38:00,970 INT, 그것은 기술적으로 야 조금 다른 뭔가. 805 00:38:00,970 --> 00:38:04,150 그것은 일반적 하겠는데 그건 궁극적으로 적분 값. 806 00:38:04,150 --> 00:38:06,030 하지 부동 소수점 값. 807 00:38:06,030 --> 00:38:09,456 >> 어떤 그 경우이 말을하는 것입니다 , int 형이고이 int이며 808 00:38:09,456 --> 00:38:11,830 문제는 컴퓨터 인 것을 능력이없는 809 00:38:11,830 --> 00:38:13,680 심지어 소수점을 저장합니다. 810 00:38:13,680 --> 00:38:16,430 당신이 일을 수행 할 때 그래서 분할 열 사용하여 정수에 의해 811 00:38:16,430 --> 00:38:20,950 분자와 모두 분모는 대답은 0.1이어야한다. 812 00:38:20,950 --> 00:38:24,930 그러나 computer-- 때문에 사람들은 integers-- 아르 813 00:38:24,930 --> 00:38:27,430 0.1과 함께 무엇을 해야할지하지 않습니다. 814 00:38:27,430 --> 00:38:30,010 >> 그래서 어떻게 명확하고 있습니까? 815 00:38:30,010 --> 00:38:33,120 단지, 그것을 멀리 던지고 나는 궁극적으로 무엇을보고 있어요 816 00:38:33,120 --> 00:38:38,830 내가 주장 때문 0.0 printf와 나에게 하나의 소수점을 보여줍니다. 817 00:38:38,830 --> 00:38:41,740 그러나 문제는 것입니다 당신이 경우 정수로 정수를 나누고, 818 00:38:41,740 --> 00:38:44,347 당신은 정의에 의해 ... 가질 것 의 정수를 C--. 819 00:38:44,347 --> 00:38:46,680 그리고 그것은하지 않을 것 좋은 편리하게 뭔가 820 00:38:46,680 --> 00:38:49,040 최대로 다시 라운드 등 하나의 위 또는 아래로 가장 가까운. 821 00:38:49,040 --> 00:38:51,860 그것은 절단 것 소수점 이하 다. 822 00:38:51,860 --> 00:38:54,030 >> 그러니 그냥 직관적으로, 아마 수정 무엇입니까? 823 00:38:54,030 --> 00:38:55,351 여기에 간단한 수정은 무엇입니까? 824 00:38:55,351 --> 00:38:55,850 그래? 825 00:38:55,850 --> 00:39:00,570 826 00:39:00,570 --> 00:39:01,100 정확히. 827 00:39:01,100 --> 00:39:04,200 왜 우리는 이러한 취급하지 않습니다 효과적으로 부동 소수점 값 828 00:39:04,200 --> 00:39:05,860 수레 또는 복식로 선회. 829 00:39:05,860 --> 00:39:10,500 그리고 지금은 수 있도록 할 경우 수레-0, 또는 나는 수레-1을 컴파일하는 경우, 830 00:39:10,500 --> 00:39:12,570 이는 동일합니다 어떤 것은 단지 제안되었다. 831 00:39:12,570 --> 00:39:16,400 그리고 지금은 수레-0, 지금은 내 0.1을 얻는다. 832 00:39:16,400 --> 00:39:17,234 >> 지금이 놀랍습니다. 833 00:39:17,234 --> 00:39:19,441 하지만 지금은 할거야 조금 다른 뭔가. 834 00:39:19,441 --> 00:39:22,280 정말 무엇이 들어 있는지 궁금해서 후드 아래에 일어나고, 835 00:39:22,280 --> 00:39:26,050 나는이 작업을 인쇄 할거야 아웃 28 소수점 자리. 836 00:39:26,050 --> 00:39:29,730 정말보고 싶어 0.1000-- infinite-- 837 00:39:29,730 --> 00:39:32,710 그 0.1 후 [INAUDIBLE] 27 제로. 838 00:39:32,710 --> 00:39:34,740 >> 우물 인 경우에 보자 난 정말 무엇을 얻을. 839 00:39:34,740 --> 00:39:39,430 수레 - 공 같은 파일을 확인합니다. 840 00:39:39,430 --> 00:39:41,150 ./floats-0. 841 00:39:41,150 --> 00:39:44,380 의 극적인 대답을 확대하자. 842 00:39:44,380 --> 00:39:49,980 이 모든 시간, 당신은 생각을 해 봤는데 10으로 나눈 하나는 10 %, 또는 0.1입니다. 843 00:39:49,980 --> 00:39:50,810 그것은 아니다. 844 00:39:50,810 --> 00:39:53,210 적어도 지금까지로 컴퓨터의 우려. 845 00:39:53,210 --> 00:39:57,060 >> 확인하고 똑똑한 자,은 완료한다 10로 나눈 거짓말 하나는 0.1이다. 846 00:39:57,060 --> 00:39:59,710 하지만 그건 아니다하고 똑똑한 테이크 아웃 오늘. 847 00:39:59,710 --> 00:40:04,010 왜 컴퓨터가 생각 하는가 방에있는 우리 모두는 달리, 848 00:40:04,010 --> 00:40:06,870 10로 나눈 1입니다 실제로 미친 가치인가? 849 00:40:06,870 --> 00:40:10,620 분명히 일을 컴퓨터가 무엇입니까? 850 00:40:10,620 --> 00:40:12,490 그게 뭔데? 851 00:40:12,490 --> 00:40:13,785 >> 그것은 그 자체로, 오버 플로우 아니에요. 852 00:40:13,785 --> 00:40:15,910 오버 플로우는 보통 때입니다 당신이 값을 줄 바꿈. 853 00:40:15,910 --> 00:40:18,970 그것은 부정확성이 문제입니다 부동 소수점 값 854 00:40:18,970 --> 00:40:22,220 당신은 단지 32가 어디 또는 어쩌면 64 비트. 855 00:40:22,220 --> 00:40:25,230 그러나 무한이 있다면 실제 숫자들 수 856 00:40:25,230 --> 00:40:27,940 소수점과 숫자 숫자는 확실하게 thereafter-- 857 00:40:27,940 --> 00:40:29,380 만약 그들 모두를 나타낼 수 없다. 858 00:40:29,380 --> 00:40:32,870 그래서 컴퓨터가 주신 우리와 가장 가까운 859 00:40:32,870 --> 00:40:37,090 값으로는 사용하여 나타낼 수 있습니다 내가 실제로 원하는 값으로 비트 수, 860 00:40:37,090 --> 00:40:38,690 이는 0.1입니다. 861 00:40:38,690 --> 00:40:40,685 >> 불행하게도, 당신이 경우 수학 작업을 시작하거나, 862 00:40:40,685 --> 00:40:44,360 부동의 이러한 종류를 포함 시작 중요한 programs--에서 소수점 값 863 00:40:44,360 --> 00:40:46,770 금융 소프트웨어, 군사 software-- 아무것도 864 00:40:46,770 --> 00:40:49,090 위치 인식은 아마 꽤 중요합니다. 865 00:40:49,090 --> 00:40:51,520 그리고 당신은 추가 시작 이 같은 숫자 및 시작 866 00:40:51,520 --> 00:40:54,050 해당 소프트웨어를 실행 정말 큰 입력을 867 00:40:54,050 --> 00:40:56,890 또는 시간, 많이에 대한 년의 일 또는 많이, 868 00:40:56,890 --> 00:41:01,060 이 작은 작은 실수 확실히 시간이 지남에 추가 할 수 있습니다. 869 00:41:01,060 --> 00:41:04,252 >> 이제 옆으로, 당신은했습니다 경우 어느 슈퍼맨 세 또는 사무실 공간 볼 870 00:41:04,252 --> 00:41:05,960 당신은 기억 할 수 어떻게 그 사람이 훔쳐 871 00:41:05,960 --> 00:41:08,668 자신의 컴퓨터에서 많은 돈 부동 소수점 값을 이용하여 872 00:41:08,668 --> 00:41:11,290 그리고 작은까지 추가 나머지 잘하면 그 영화 873 00:41:11,290 --> 00:41:12,390 더욱 의미가 있습니다. 874 00:41:12,390 --> 00:41:14,930 이것은 그들이 무엇인지입니다 그 영화에 암시. 875 00:41:14,930 --> 00:41:16,710 사실 대부분의 그 회사는 보이지 않는 것 876 00:41:16,710 --> 00:41:18,600 특정 숫자 후 소수점 자리, 877 00:41:18,600 --> 00:41:20,009 하지만 사람들은 센트의 분수입니다. 878 00:41:20,009 --> 00:41:22,550 그래서 당신은 그들을 추가 시작 당신은 많은 돈을 만들기 위해 시작 879 00:41:22,550 --> 00:41:23,424 귀하의 은행 계좌에서. 880 00:41:23,424 --> 00:41:25,160 그래서 사무실 공간 설명입니다. 881 00:41:25,160 --> 00:41:28,220 >> 지금 불행하게도 넘어 사무실 공간, 거기에 882 00:41:28,220 --> 00:41:31,794 일부 합법적으로 골치 아픈 상당한 영향 883 00:41:31,794 --> 00:41:33,710 이러한 종류의 기본 디자인 결정, 884 00:41:33,710 --> 00:41:35,990 그 이유 중 하나 실제로 우리는 과정에서 C를 사용 885 00:41:35,990 --> 00:41:39,640 당신은 정말이 땅이되도록 컴퓨터의 작동 방식에 대한 이해까지, 886 00:41:39,640 --> 00:41:42,440 어떻게 소프트웨어가 작동하고,하지 당연한 아무것도 가져 가라. 887 00:41:42,440 --> 00:41:45,820 >> 그리고 참으로 불행하게도, 심지어와 그 근본적인 이해 888 00:41:45,820 --> 00:41:47,370 우리 인간은 실수를합니다. 889 00:41:47,370 --> 00:41:51,310 그리고 내가 내가 공유하고자하는 것입니다 이 팔분 비디오는 여기 촬영 890 00:41:51,310 --> 00:41:56,980 인 현대 놀라운 일 에피소드에서 사물이 작동하는 방법에 대한 교육 쇼 891 00:41:56,980 --> 00:42:00,370 즉이 사진을 페인트 의 경우 부적절한 사용 892 00:42:00,370 --> 00:42:02,540 및 이해 부동 소수점 값을 893 00:42:02,540 --> 00:42:05,610 몇 가지 중요한 주도 불행한 결과. 894 00:42:05,610 --> 00:42:06,363 이제 살펴 보자. 895 00:42:06,363 --> 00:42:07,029 [동영상 재생] 896 00:42:07,029 --> 00:42:11,290 - 우리는 이제 공학 "으로 돌아 현대 경이에 재해 ". 897 00:42:11,290 --> 00:42:12,940 컴퓨터. 898 00:42:12,940 --> 00:42:15,580 우리는 모든을 받아 왔어요 종종 실망하는 문제들 899 00:42:15,580 --> 00:42:20,960 데모 테잎 버그, 바이러스 얻고, 작은 가격에 소프트웨어 glitches-- 900 00:42:20,960 --> 00:42:23,100 편의를 위해 지불합니다. 901 00:42:23,100 --> 00:42:27,770 그러나 첨단 기술 및 고속에서 군사 및 우주 프로그램 응용 프로그램, 902 00:42:27,770 --> 00:42:32,780 작은 문제 수 재난으로 확대 될 수있다. 903 00:42:32,780 --> 00:42:38,880 >> 1996년 6월 4일에서 과학자들은 준비 무인 아리안 5 로켓을 시작합니다. 904 00:42:38,880 --> 00:42:41,190 그것은 과학 운반했다 위성 설계 905 00:42:41,190 --> 00:42:44,570 정확하게 어떻게 수립 지구의 자기장의 상호 작용 906 00:42:44,570 --> 00:42:47,380 태양 바람과 함께. 907 00:42:47,380 --> 00:42:50,580 로켓에 지어진 유럽​​ 우주국, 908 00:42:50,580 --> 00:42:54,400 그 시설에서 들어 올려 프랑스어 령 기아나의 해안. 909 00:42:54,400 --> 00:42:57,520 >> 에 대한 37초 소 - 비행, 그들은 첫째 910 00:42:57,520 --> 00:42:59,070 눈치 뭔가 잘못 가고 있었다. 911 00:42:59,070 --> 00:43:02,240 노즐은 회전식라고 어떤면에서 그들은 정말 안된다. 912 00:43:02,240 --> 00:43:06,550 비행에 40초 주변, 분명 차량은 문제가 있었다 913 00:43:06,550 --> 00:43:08,820 그들이 만든 때 그건 결정은 그것을 파괴한다. 914 00:43:08,820 --> 00:43:12,370 범위 안전 요원과 엄청난 용기는 버튼을 누르면 915 00:43:12,370 --> 00:43:18,030 이 수 이전과 로켓 폭발 공공의 안전에 위해가된다. 916 00:43:18,030 --> 00:43:21,010 >> -이는 처녀였다 아리안 5의 항해, 917 00:43:21,010 --> 00:43:23,920 그 파괴했다 때문에 결함의 배치 918 00:43:23,920 --> 00:43:25,932 로켓의 소프트웨어에 내장. 919 00:43:25,932 --> 00:43:27,640 에 데리고가 문제 아리안이었다 그이 920 00:43:27,640 --> 00:43:30,500 필요한 번호였다 64 비트, 표현 921 00:43:30,500 --> 00:43:33,560 그들은 변환 원 16 비트 수에 그것. 922 00:43:33,560 --> 00:43:36,820 그들은 수 있다고 가정 매우 큰 될 것되지 않았습니다. 923 00:43:36,820 --> 00:43:40,940 즉, 그 자리에서 대부분의 64 비트 개수는 제로였다. 924 00:43:40,940 --> 00:43:42,450 그들은 틀렸다. 925 00:43:42,450 --> 00:43:45,000 >> 한 교사로서 무능력 소프트웨어 프로그램을 적용합니다 926 00:43:45,000 --> 00:43:49,460 생성 수의 종류 또 다른 실패의 루트에 있었다. 927 00:43:49,460 --> 00:43:54,260 소프트웨어 개발이되었다 새로운 기술의 매우 비용이 많이 드는 부분입니다. 928 00:43:54,260 --> 00:43:57,060 아리안 4 로켓했다 매우 성공적이었다. 929 00:43:57,060 --> 00:44:01,600 을 위해 만든 소프트웨어의 너무 많은 또한 리앙 (5)에 사용 하였다. 930 00:44:01,600 --> 00:44:04,790 >> 년 - 기본 문제 였습니다 아리안 5. 931 00:44:04,790 --> 00:44:11,200 faster-- 빠르게 가속하고 소프트웨어는 차지하지 않았다. 932 00:44:11,200 --> 00:44:14,910 >> 로켓 제나 파괴 거대한 금융 재앙이었다. 933 00:44:14,910 --> 00:44:18,630 모든 인해 분 소프트웨어 오류. 934 00:44:18,630 --> 00:44:21,160 그러나 이것은 첫번째 아니었다 시간 데이터 변환 문제 935 00:44:21,160 --> 00:44:24,770 현대적인 로켓 기술을 괴롭혀했다. 936 00:44:24,770 --> 00:44:28,020 >> 시작과 함께 1991 -in 첫번째 걸프 전쟁, 937 00:44:28,020 --> 00:44:30,540 패트리어트 미사일 비슷한 종류의 경험 938 00:44:30,540 --> 00:44:32,465 수 변환 문제. 939 00:44:32,465 --> 00:44:36,760 그리고 그 결과로 28 사람들 .. 28 미국 soldiers--이 사망했다, 940 00:44:36,760 --> 00:44:39,010 약 백 다른 부상. 941 00:44:39,010 --> 00:44:42,830 때 가정 된 애국, 수신 스커드를 방지하기 위해 942 00:44:42,830 --> 00:44:45,780 미사일을 발사하는 데 실패했습니다. 943 00:44:45,780 --> 00:44:51,610 >> 언제 이라크는 쿠웨이트, 미국을 침공 초기 1991 년 사막의 폭풍을 시작, 944 00:44:51,610 --> 00:44:55,720 패트리어트 미사일 배터리가 배치되었다 사우디 아라비아와 이스라엘을 보호하기 945 00:44:55,720 --> 00:44:59,180 이라크 스커드 미사일 공격. 946 00:44:59,180 --> 00:45:03,080 애국은 미국의 중간 범위 지대공 시스템 947 00:45:03,080 --> 00:45:06,530 레이 시온 회사에 의해 제조. 948 00:45:06,530 --> 00:45:09,500 >> 애국 제나 크기 인터셉터 itself--을 949 00:45:09,500 --> 00:45:14,705 그것은 약 약 20 피트이다 그리고 약 2,000 파운드의 무게. 950 00:45:14,705 --> 00:45:19,090 그리고, 정도의 탄두를 운반 나는 대략 1백50파운드 생각합니다. 951 00:45:19,090 --> 00:45:23,880 그리고 탄두 자체입니다 고성능 폭약, 어떤 952 00:45:23,880 --> 00:45:26,700 그의 주위에 조각을 가지고있다. 953 00:45:26,700 --> 00:45:31,630 그래서 탄두의 케이스입니다 사슴 사냥 용 총알 같은 역할을하도록 설계. 954 00:45:31,630 --> 00:45:34,040 >> 년 - 미사일 탑재된다 컨테이너 당 사, 955 00:45:34,040 --> 00:45:37,170 및 세미 트레일러에 의해 운반된다. 956 00:45:37,170 --> 00:45:44,880 >> 년 - 패트리어트 미사일 시스템 지금 적어도 20 년 전으로 거슬러 간다. 957 00:45:44,880 --> 00:45:48,380 그것은 원래 설계되었습니다 방공 미사일로 958 00:45:48,380 --> 00:45:50,810 적군의 비행기를 격추합니다. 959 00:45:50,810 --> 00:45:54,410 첫번째 걸프 전쟁에서 그 전쟁에 왔을 때, 960 00:45:54,410 --> 00:45:59,650 육군은에 그것을 사용하고 싶었 스커드 미사일이 아닌 비행기를 격추. 961 00:45:59,650 --> 00:46:03,580 이라크 공군이었다 문제 라기보다는, 962 00:46:03,580 --> 00:46:06,590 그러나 육군은 스커드 미사일에 대해 걱정했다. 963 00:46:06,590 --> 00:46:10,120 그래서 그들은하려 애국을 업그레이드합니다. 964 00:46:10,120 --> 00:46:12,740 >> 적을 -Intercepting 마하 5로 여행 미사일 965 00:46:12,740 --> 00:46:15,670 충분히 도전 할 거라고. 966 00:46:15,670 --> 00:46:18,440 그러나 때 애국 서비스로 돌진했다, 967 00:46:18,440 --> 00:46:22,580 육군은 인식하지 않았다 이라크 수정이 968 00:46:22,580 --> 00:46:25,880 자신의 스커드 만든 거의 그것을 불가능합니다. 969 00:46:25,880 --> 00:46:30,690 >> 무슨 일이 있었 스커드 미사일을하다 에서 오는 불안정했다. 970 00:46:30,690 --> 00:46:32,000 그들은 휘청했다. 971 00:46:32,000 --> 00:46:37,210 그 이유는 Iraqis--이었다 600km 밖으로 얻기 위하여 972 00:46:37,210 --> 00:46:41,680 300 킬로미터 범위 missile--의 전면 탄두에서 무게를했다 973 00:46:41,680 --> 00:46:43,340 탄두 경량화. 974 00:46:43,340 --> 00:46:48,490 이제 애국의 올하려고 스커드에서, 외엔의 가장 975 00:46:48,490 --> 00:46:52,880 의 압도적 인 다수 외엔 ... 그냥 스커드에 의해 비행 것입니다. 976 00:46:52,880 --> 00:46:57,120 >> 패트리어트 시스템 운영자 - 일단 애국자가 목표를 놓친 실현 977 00:46:57,120 --> 00:47:01,630 그들은 애국의 탄두를 폭발 그것이 가능하면 사고를 방지하기 위해 978 00:47:01,630 --> 00:47:04,440 지면에 낙하시켰다. 979 00:47:04,440 --> 00:47:08,700 >> - 그건 대부분의 사람들이 본 것을이었다 으로 하늘에서 큰 불 덩어리, 980 00:47:08,700 --> 00:47:14,180 와 같은 오해 스커드 탄두의 도청. 981 00:47:14,180 --> 00:47:18,020 >> 밤 하늘, 애국자에서 - 비록 성공적으로 파괴 될 것처럼 보였다 982 00:47:18,020 --> 00:47:23,280 스커드 미사일은 다란에있을 수 성능에 대해 실수하지 않습니다. 983 00:47:23,280 --> 00:47:27,930 이 패트리어트 미사일의 레이더 시스템 수신 스커드의 손실 트랙 984 00:47:27,930 --> 00:47:30,260 인해 시작되지 않습니다 소프트웨어 결함이다. 985 00:47:30,260 --> 00:47:34,060 986 00:47:34,060 --> 00:47:38,880 >> 그것은 먼저 발견 한 이스라엘을했다 더 이상 시스템이 켜져 있는지, 987 00:47:38,880 --> 00:47:41,130 큰 시간 차이가되었다. 988 00:47:41,130 --> 00:47:44,770 때문에 내장 된 시계 시스템에서의 컴퓨터. 989 00:47:44,770 --> 00:47:48,190 >> 정도 요 이주하기 전에 다란의 비극 990 00:47:48,190 --> 00:47:50,720 이스라엘은에보고 국방부 991 00:47:50,720 --> 00:47:52,410 그 시스템은 시간을 상실 하였다. 992 00:47:52,410 --> 00:47:54,410 여덟 시간 후 실행, 그들은 발견 993 00:47:54,410 --> 00:47:57,690 시스템의가되는 것을 눈에 띄게 덜 정확. 994 00:47:57,690 --> 00:48:01,850 국방부에 의해 반응 애국의 건전지를 모두 이야기 995 00:48:01,850 --> 00:48:04,800 시스템을 떠나지합니다 오랜 시간에. 996 00:48:04,800 --> 00:48:06,980 그들은 오랜 시간이 무엇인지 말하지 않았다. 997 00:48:06,980 --> 00:48:09,140 8시간 10 시간, 천 시간. 998 00:48:09,140 --> 00:48:11,300 아무도 알지 못했다. 999 00:48:11,300 --> 00:48:13,320 >> 년 - 애국 배터리 막사에 배치 1000 00:48:13,320 --> 00:48:18,310 다란과 결함이 내부에서 시계는 100 시간 이상에 있었다 1001 00:48:18,310 --> 00:48:21,520 2 월 25 일 밤에. 1002 00:48:21,520 --> 00:48:25,792 >> - 그것은 정확도로 시간을 추적 의 10 분의 1 초에 대해. 1003 00:48:25,792 --> 00:48:27,950 둘째의 지금 십분의 일 흥미있는 수이다 1004 00:48:27,950 --> 00:48:31,850 이 표현 될 수 없기 때문에 이진수로 정확하게하는 1005 00:48:31,850 --> 00:48:36,500 정확히 표현할 수없는 의미 현대의 디지털 컴퓨터에서. 1006 00:48:36,500 --> 00:48:41,070 그것은 믿기 어렵지만, 예를 들어이를 사용합니다. 1007 00:48:41,070 --> 00:48:43,420 >> 의가 수 삼분의 일을 보자. 1008 00:48:43,420 --> 00:48:47,330 한 셋째는 될 수 없다 정확히 진수로 표현했다. 1009 00:48:47,330 --> 00:48:52,060 한 세 번째는 0.333이다 무한대 동안 계속. 1010 00:48:52,060 --> 00:48:56,420 와 그렇게 할 수있는 방법은 없습니다 소수의 절대 정확도를 제공한다. 1011 00:48:56,420 --> 00:48:59,530 즉, 문제의 정확하게 종류의 그 애국에 일어났다. 1012 00:48:59,530 --> 00:49:04,040 이제 시스템이 도망 더 시간 오류가되었다. 1013 00:49:04,040 --> 00:49:08,840 >> 작업의 1백시간 듣던, 시간 오류는 약 3 위 1014 00:49:08,840 --> 00:49:10,440 초. 1015 00:49:10,440 --> 00:49:14,150 그러나 타겟팅 환산 마하 5로 여행 미사일, 1016 00:49:14,150 --> 00:49:18,560 그것은 추적 결과 600여 미터의 오류입니다. 1017 00:49:18,560 --> 00:49:21,870 그것은 치명적인 오류가 될 것이다 다란의 군인. 1018 00:49:21,870 --> 00:49:28,455 >> 스커드 발사했다입니다 무슨 일이 있었 조기 경보 위성에 의해 검출, 1019 00:49:28,455 --> 00:49:32,710 그들은 스커드 오는 것을 알고 있었다 자신의 일반적인 방향으로. 1020 00:49:32,710 --> 00:49:35,150 가 오는 어디 있는지 몰랐습니다. 1021 00:49:35,150 --> 00:49:38,210 이 레이더까지 지금이었다 패트리어트 시스템의 구성 요소 1022 00:49:38,210 --> 00:49:43,150 다란을 방어하는 것은 찾아 유지 들어오는 적의 미사일을 추적. 1023 00:49:43,150 --> 00:49:44,561 >> 년 - 레이더는 매우 영리했다. 1024 00:49:44,561 --> 00:49:46,560 실제로 추적 할 것 스커드의 위치 1025 00:49:46,560 --> 00:49:48,930 다음 위치를 예측 아마 것 1026 00:49:48,930 --> 00:49:51,380 다음번 레이더는 출력 펄스를 보냈다. 1027 00:49:51,380 --> 00:49:53,040 즉 범위 게이트 불렸다. 1028 00:49:53,040 --> 00:49:57,620 >> 애국 번 - 그럼 충분한 시간을 가지고 결정 1029 00:49:57,620 --> 00:50:02,400 돌아가서 다음을 확인 통과 이 검출 된 객체의 위치 1030 00:50:02,400 --> 00:50:03,550 그것은 돌아 간다. 1031 00:50:03,550 --> 00:50:07,820 그래서 잘못된로 돌아 갔을 때 장소는 그 다음 어떤 객체를 볼 수 없습니다. 1032 00:50:07,820 --> 00:50:10,360 그리고 그것은 어떤 개체가 없다고 결정한다. 1033 00:50:10,360 --> 00:50:13,630 오 검출이 있다는 것을 그리고 트랙을 삭제합니다. 1034 00:50:13,630 --> 00:50:16,970 >> 년 - 수신 스커드 사라졌다 레이더 화면에서, 1035 00:50:16,970 --> 00:50:20,200 초 후, 그것을 막사를 강타. 1036 00:50:20,200 --> 00:50:22,570 스커드는 28을 죽였다. 1037 00:50:22,570 --> 00:50:26,110 그것은 한 최근 해고 첫번째 걸프 전쟁 당시. 1038 00:50:26,110 --> 00:50:31,920 비극으로, 업데이트 된 소프트웨어 다음 날 새벽에 도착했다. 1039 00:50:31,920 --> 00:50:34,870 소프트웨어 결함이 있었다 하고 고정 폐쇄 1040 00:50:34,870 --> 00:50:39,150 문제가 하나의 장 패트리어트 미사일의 역사. 1041 00:50:39,150 --> 00:50:40,030 >> [END VIDEO 재생] 1042 00:50:40,030 --> 00:50:41,488 >> 데이비드 J. 마란 : 그 CS50은 여기까지. 1043 00:50:41,488 --> 00:50:42,820 우리는 수요일에 당신을 볼 수 있습니다. 1044 00:50:42,820 --> 00:50:46,420 1045 00:50:46,420 --> 00:50:50,370 >> [음악 연주] 1046 00:50:50,370 --> 00:54:23,446