1 00:00:00,000 --> 00:00:00,000 2 00:00:00,000 --> 00:00:00,000 [음악 재생] 3 00:00:00,000 --> 00:00:13,950 4 00:00:13,950 --> 00:00:16,240 >> 데이비드 J. 마란 : 좋아,이 CS50입니다. 5 00:00:16,240 --> 00:00:18,010 그리고 이것은 주입니다. 6 00:00:18,010 --> 00:00:22,050 그래서 주 제로에서 마지막 시간을 기억, 우리는 전산 사고에 초점을 맞추었다. 7 00:00:22,050 --> 00:00:25,440 그리고 우리는 그것과로 전환 스크래치, 그래픽 프로그래밍 8 00:00:25,440 --> 00:00:27,360 우리의 친구의 언어 MIT의 미디어 랩에서. 9 00:00:27,360 --> 00:00:31,730 >> 그리고 스크래치와 함께, 우리는 탐험 않았다 기능과 같은 아이디어 및 조건, 10 00:00:31,730 --> 00:00:35,210 및 루프, 변수, 심지어 이벤트, 스레드, 그리고 더. 11 00:00:35,210 --> 00:00:37,880 그리고 오늘, 우리는 거 야 그 아이디어를 계속, 12 00:00:37,880 --> 00:00:40,630 정말 그들을 복용 부여 있지만 번역 13 00:00:40,630 --> 00:00:44,220 C. 지금으로 알려진 또 다른 언어, C는 전통적인 언어입니다. 14 00:00:44,220 --> 00:00:46,020 그것은 낮은 수준이다 언어가됩니다. 15 00:00:46,020 --> 00:00:47,300 >> 그것은 순수하게 텍스트입니다. 16 00:00:47,300 --> 00:00:49,910 그래서 언뜻보기에, 그것은이다 모든 다소 애매한 볼 것 17 00:00:49,910 --> 00:00:51,430 이전에 프로그램 된 적이있는 경우. 18 00:00:51,430 --> 00:00:53,530 우리는 할 겁니다 세미콜론, 괄호, 19 00:00:53,530 --> 00:00:55,150 중괄호, 그리고 더 많은합니다. 20 00:00:55,150 --> 00:00:57,240 하지만 그조차 실현 구문은하지만 21 00:00:57,240 --> 00:01:00,600 익숙하지 않은 약간의 모양에 대한 당신의 가장으로, 그 과거를 참조하십시오. 22 00:01:00,600 --> 00:01:03,220 그리고 아이디어를 확인하려고 이 있으며, 실제로 잘 알고, 23 00:01:03,220 --> 00:01:06,750 여기에 주에 한 무엇 때문에 우리는 비교하는 것입니다 시작합니다 24 00:01:06,750 --> 00:01:08,980 처음에, C. 대 스크래치 25 00:01:08,980 --> 00:01:12,350 >> 그래서, 예를 들어, 호출 할 때 우리를 그 우리의 프로그램의 첫 번째 구현 26 00:01:12,350 --> 00:01:16,220 마지막으로, 우리는 보았다 블록을했다 이 항아리 때와 같은 작은 선물 27 00:01:16,220 --> 00:01:19,990 녹색 깃발을 클릭 한 다음 우리는 있었다 그 아래에 하나 이상의 퍼즐 조각, 28 00:01:19,990 --> 00:01:22,150 이 경우, 안녕하세요 세계 말한다. 29 00:01:22,150 --> 00:01:24,870 그래서, 참으로, 스크래치에, 그 녹색 깃발을 클릭하면 30 00:01:24,870 --> 00:01:27,390 그래서, 내 프로그램을 실행하려면 다음은, 말하자면 31 00:01:27,390 --> 00:01:29,520 실행 된 얻을 블록, 또는 실행. 32 00:01:29,520 --> 00:01:32,230 그리고, 구체적으로는, 스크래치 안녕하세요, 세계 말했다. 33 00:01:32,230 --> 00:01:35,377 >> 지금, 나는 지정한 수 여기에 다른 단어. 34 00:01:35,377 --> 00:01:37,960 그러나 우리는 실제로 그 많은 보자 실제로 이러한 blocks-- 그리고, 35 00:01:37,960 --> 00:01:41,880 C에서 많은 functions--이 될 수 있습니다 매개 변수화 또는 사용자 정의 36 00:01:41,880 --> 00:01:43,150 다른 일을한다. 37 00:01:43,150 --> 00:01:45,520 사실, C에서 우리 경우 지금, 변환 할, 38 00:01:45,520 --> 00:01:47,567 이 스크래치 프로그램 이 다른 언어, 39 00:01:47,567 --> 00:01:49,650 우리는 쓰기거야 이 같은 작은 선물. 40 00:01:49,650 --> 00:01:52,540 >> 부여, 일부 익숙하지가 이 구문 가능성, INT, 41 00:01:52,540 --> 00:01:54,380 괄호 및 무효. 42 00:01:54,380 --> 00:01:57,740 당신이하고자하지만 그러나 심지어 printf-- 그냥 인쇄 될 것 같아요. 43 00:01:57,740 --> 00:02:00,120 하지만 인쇄는 인쇄를 의미한다 우리는 곧 알게 되겠지만, 형식. 44 00:02:00,120 --> 00:02:02,140 이것은 문자 그대로 인쇄됩니다 화면에 어떤 45 00:02:02,140 --> 00:02:05,990 그 괄호 안에있는 물론이 경우에, 안녕하세요 세계입니다. 46 00:02:05,990 --> 00:02:09,290 >> 하지만 당신은 다른를 알 수 있습니다 구문, 일부 따옴표, 47 00:02:09,290 --> 00:02:11,890 그 끝에 괄호, 세미콜론 등을들 수있다. 48 00:02:11,890 --> 00:02:15,027 그래서 오버 헤드가 약간있다, 말하자면, 둘 다인지하는 49 00:02:15,027 --> 00:02:17,860 및 구문, 우리는 거라고 오래 전에 기억해야합니다. 50 00:02:17,860 --> 00:02:20,720 그러나, 연습과 그 실현 이것은 당신에 뛰어 시작합니다. 51 00:02:20,720 --> 00:02:24,920 >> 사실, 이제 그 일에 집중하자 함수는,이 경우 specifically-- 52 00:02:24,920 --> 00:02:26,290 안녕하세요 세계를 말한다. 53 00:02:26,290 --> 00:02:27,560 그래서 기능을 말한다. 54 00:02:27,560 --> 00:02:31,320 안녕하세요 세계는 매개 변수가, 또는 인수의 정의. 55 00:02:31,320 --> 00:02:34,320 >> 그리고 C의 등가은 그냥 여기에이 한 줄이 될 것, 56 00:02:34,320 --> 00:02:38,710 printf의이 동등이고, 말 이중 인용 된 문자열, 안녕하세요 57 00:02:38,710 --> 00:02:41,470 세상은 물론 상당 거기에 흰색 상자에 무엇이합니다. 58 00:02:41,470 --> 00:02:45,680 그리고 백 슬래시 n은 조금하지만 이상하고 처음부터 결석, 59 00:02:45,680 --> 00:02:49,380 단순히 우리가 거​​하는 효과를해야 할 것입니다 컴퓨터에서 볼, 내 맥 또는 PC 등 60 00:02:49,380 --> 00:02:51,660 단지 이동 다음 행으로 커서. 61 00:02:51,660 --> 00:02:53,970 그것은 타격처럼 키보드에 입력합니다. 62 00:02:53,970 --> 00:02:55,580 >> 그래서 우리는 머지 않아 다시는 볼 수 있습니다. 63 00:02:55,580 --> 00:02:58,640 그러나 처음의이 살펴 보자 루프의 경우에 다른 예. 64 00:02:58,640 --> 00:03:02,830 우리는 지난 시간이 영원히 루프를했습니다 퍼즐 조각 일련이었다 65 00:03:02,830 --> 00:03:05,490 그 말 그대로 뭔가를했다 이 경우 forever--, 66 00:03:05,490 --> 00:03:08,360 말, 안녕하세요, 안녕하세요 세계, 안녕하세요 세계, 안녕하세요. 67 00:03:08,360 --> 00:03:10,350 그래서 디자인하여 무한 루프입니다. 68 00:03:10,350 --> 00:03:14,580 >> C에서, 우리는이를 구현하려면 같은 생각, 우리는 간단하게이 작업을 수행 할 수 있습니다. 69 00:03:14,580 --> 00:03:19,570 진정한 동안, 안녕하세요 printf의 지금을 전 세계 반면, 단지 의미, 종류의 70 00:03:19,570 --> 00:03:23,090 일의 아이디어를 연상 어떤 또 다시, 다시, 71 00:03:23,090 --> 00:03:23,980 과에 대한 얼마나? 72 00:03:23,980 --> 00:03:27,990 음, true-- 리콜 그 사실은 나 하나입니다. 73 00:03:27,990 --> 00:03:30,660 >> 그리고 사실은 항상, 물론 사실이다. 74 00:03:30,660 --> 00:03:33,060 그래서는 의미의 종류의 문은 진정한 대답. 75 00:03:33,060 --> 00:03:36,890 그러나 실제로, 이것은 의도적 인 사실 그냥 항상 해당하는 경우 때문에, 76 00:03:36,890 --> 00:03:40,850 사실 그냥 의미하면서보다, 간접적으로 작은 경우, 77 00:03:40,850 --> 00:03:44,070 다음 코드 줄이 그 중괄호 사이에 78 00:03:44,070 --> 00:03:48,320 그냥 다시하고 다시 실행해야, 다시, 실제로 절대 멈추지 않아. 79 00:03:48,320 --> 00:03:50,230 >> 그러나 당신이 원하는 않는 경우 루프는 우리로, 중지 80 00:03:50,230 --> 00:03:54,500 같은 지난 시간을했다 이것은 다음 50 회 반복 81 00:03:54,500 --> 00:03:57,700 C에서 우리는 무엇과 같은 작업을 수행 할 수 있습니다 키워드 loop-- 대한 착신 82 00:03:57,700 --> 00:03:59,330 동안,하지만 대한 없다는. 83 00:03:59,330 --> 00:04:03,290 그리고 우리는 여기에 몇 가지 새로운 구문이 INT와 내가, 내가 50 미만 0과 동일 84 00:04:03,290 --> 00:04:03,880 나는 ++. 85 00:04:03,880 --> 00:04:05,430 그리고 우리는 다시 그에게 올 것이다. 86 00:04:05,430 --> 00:04:09,660 그러나 이것은 단순히 우리가 어떻게 것 스크래치 블록들의 세트를 변환 87 00:04:09,660 --> 00:04:13,079 코드 C 선을 설정한다. 88 00:04:13,079 --> 00:04:14,450 >> 한편, 변수를 고려한다. 89 00:04:14,450 --> 00:04:16,540 그리고 사실, 단지 잠시 전에 하나를 보았다. 90 00:04:16,540 --> 00:04:21,220 스크래치의 경우에서는, 만약 난라는 변수를 선언하고 싶었다 91 00:04:21,220 --> 00:04:24,590 내가 정수를 들면, 단지 수, 우리는 어떤 값으로 설정하려면, 92 00:04:24,590 --> 00:04:28,410 우리는이 오렌지를 사용합니다 차단 here-- 내가 0으로 설정합니다. 93 00:04:28,410 --> 00:04:30,800 >> 그리고 오늘날 우리가 볼 수 및 이후, 지난 주와 같은, 94 00:04:30,800 --> 00:04:33,850 프로그래머는 거의 항상 정말, 0부터 세기 시작 95 00:04:33,850 --> 00:04:34,950 관례. 96 00:04:34,950 --> 00:04:37,250 또한 리콜에서 때문에 이진의 논의, 97 00:04:37,250 --> 00:04:39,990 가장 적은 수의 당신이 할 수있는 비트의 개수로 나타낼 98 00:04:39,990 --> 00:04:41,640 그냥 0 자체를 될 것입니다. 99 00:04:41,640 --> 00:04:45,190 그래서 우리는 일반적으로 시작합니다 0 심지어 우리 변수를 초기화. 100 00:04:45,190 --> 00:04:47,710 >> 그리고 C에서, 동일한 작업을 수행합니다 우리는 INT 말할거야 101 00:04:47,710 --> 00:04:50,110 정수, 난 그냥 관례. 102 00:04:50,110 --> 00:04:53,390 나는이 변수라는 수 있었다 아무것도 난 그냥 스크래치처럼, 할 수 있습니다. 103 00:04:53,390 --> 00:04:57,770 그리고 0 다만 양수인과 동일 오른쪽의 값 0 104 00:04:57,770 --> 00:05:01,319 가변 넣는 것, 또는 좌측이 수납 용기. 105 00:05:01,319 --> 00:05:04,360 그리고 세미콜론으로 우리가 see--거야, 그리고 우리는이 already-- 몇 봤어요 106 00:05:04,360 --> 00:05:06,530 단지 생각의 끝을 의미한다. 107 00:05:06,530 --> 00:05:09,430 다른 뭔가를 진행 다음 라인에. 108 00:05:09,430 --> 00:05:11,330 >> 자, 부울 표현식에 대한? 109 00:05:11,330 --> 00:05:14,320 스크래치에 그 기억, 이러한 표현했다 110 00:05:14,320 --> 00:05:16,740 중 하나에 해당하는 그 또는 false-- 질문 111 00:05:16,740 --> 00:05:18,910 정말, 참 또는 거짓입니다 그. 112 00:05:18,910 --> 00:05:21,960 따라서 상처의 경우는 수도 다음과 같은 간단한 질문을, 113 00:05:21,960 --> 00:05:24,586 나는 50 미만? 114 00:05:24,586 --> 00:05:25,710 그래서, 다시 정수이다. 115 00:05:25,710 --> 00:05:27,210 어쩌면 우리는 그것을 사용하는 스크래치 프로그램 116 00:05:27,210 --> 00:05:29,310 점수를 추적하는 또는 그런 일. 117 00:05:29,310 --> 00:05:33,810 스크래치 여기 그래서이 구문 단지 내가 50보다 작은 의미? 118 00:05:33,810 --> 00:05:37,330 음, 다행히도, 뭔가있다 C.에서 그리고 번역하는 간단하고, 119 00:05:37,330 --> 00:05:41,780 이 우리는 단순히 덜 내가 말할 것 50보다 친숙한 키로 120 00:05:41,780 --> 00:05:42,850 키보드. 121 00:05:42,850 --> 00:05:45,141 >> 한편, 경우에 원 뭔가 더 일반적인 말, 122 00:05:45,141 --> 00:05:49,890 같은, 잘, Y 위치를 각보다 X 작 x와 y의 자체 변수? 123 00:05:49,890 --> 00:05:52,280 우리는 같은 일을 할 수 C에서, 너무 오래 우리는했습니다으로 124 00:05:52,280 --> 00:05:53,942 이미 이러한 변수를 만들었습니다. 125 00:05:53,942 --> 00:05:55,650 그리고 우리는 방법을 볼 수 있습니다 머지 않아 그렇게. 126 00:05:55,650 --> 00:05:58,590 우리는 단순히 Y보다 X 덜 말할 것입니다. 127 00:05:58,590 --> 00:06:00,530 >> 그래서 당신은에 시작하고 일부 유사성을 참조하십시오. 128 00:06:00,530 --> 00:06:03,490 만든 그 사람 스크래치 확실히했다 129 00:06:03,490 --> 00:06:05,250 이러한 기본 개념 중 일부에 의해 영감을 된. 130 00:06:05,250 --> 00:06:10,350 그리고 당신은 이런 종류의를 볼 수 있습니다 많은 languages​​--에서 구문 131 00:06:10,350 --> 00:06:12,160 뿐만 아니라,하지 스크래치 단지 C,하지만 파이썬, 132 00:06:12,160 --> 00:06:14,790 와 자바 스크립트, 여전히 다른 언어. 133 00:06:14,790 --> 00:06:18,270 >> 의 다른 구조를 살펴 보자 C에서, 조건의 개념, 134 00:06:18,270 --> 00:06:20,370 조건부로 뭔가를하고. 135 00:06:20,370 --> 00:06:22,720 뭔가가 true의 경우,이 작업을 수행. 136 00:06:22,720 --> 00:06:24,457 뭔가가 true의 경우, 그렇게. 137 00:06:24,457 --> 00:06:27,040 그것은 프로그램의 일종 도로에 포크의 상당. 138 00:06:27,040 --> 00:06:29,730 어쩌면 양방향 포크 년대 삼원 포크 이상이다. 139 00:06:29,730 --> 00:06:32,800 그리고 스크래치, 우리는있을 수 있습니다 이 같은 것을 본. 140 00:06:32,800 --> 00:06:34,010 >> 그래서이 사람은 큰 일입니다. 141 00:06:34,010 --> 00:06:36,750 그러나 상대를 고려 논리의 단순성. 142 00:06:36,750 --> 00:06:44,010 X가 Y보다 작은 경우, X는 이하라고 Y보다 X가 Y보다 큰 다른 경우 143 00:06:44,010 --> 00:06:46,230 다음 x가 Y보다 큰 말한다. 144 00:06:46,230 --> 00:06:48,300 그리고, 논리적으로, 경우 당신은 스크래치로 다시 생각한다 145 00:06:48,300 --> 00:06:52,610 또는 그냥 자신의 인간의 직관, 또한, X가 Y보다 큰 경우이며, x 146 00:06:52,610 --> 00:06:57,000 물론 다음, Y 이상입니다 X는 Y와 동일 할 것입니다. 147 00:06:57,000 --> 00:06:59,690 이 경우, 중첩에 의해 그래서 이러한 스크래치 블록 148 00:06:59,690 --> 00:07:02,580 우리는 세 가지를 얻을 수 있습니다 도로에서 길 포크? 149 00:07:02,580 --> 00:07:04,980 >> 한편, 우리는 원하는 경우 그것은 틀림없이, C에서 그렇게 150 00:07:04,980 --> 00:07:08,420 적어도 조금 simpler-- 보인다 당신은 문법에 익숙해 번. 151 00:07:08,420 --> 00:07:12,050 X는 Y보다 작 으면 의 printf X는 Y보다 작다. 152 00:07:12,050 --> 00:07:16,140 X가 Y보다 큰 경우에 그렇지, 의 printf X는 Y보다 크다. 153 00:07:16,140 --> 00:07:21,210 다른 사람의 printf X는 y--과 같음 다시와 그 백 슬래시는 종료 154 00:07:21,210 --> 00:07:24,160 그 새로운 라인이 그렇다면 당신 실제로 프로그램의이 종류를 실행 155 00:07:24,160 --> 00:07:25,940 그냥 움직일 것입니다 커서 궁극적으로 156 00:07:25,940 --> 00:07:28,100 화면의 다음 행. 157 00:07:28,100 --> 00:07:31,270 >> 지금, 그 사이에 스크래치가 다른했다 더 정교한 기능 만 158 00:07:31,270 --> 00:07:34,320 일부는 우리가 갈거야 처음 C.의 세계에 걸쳐 이동 159 00:07:34,320 --> 00:07:37,010 그 중 하나였다 스크래치의 목록을했다. 160 00:07:37,010 --> 00:07:39,100 그리고이 특별한이었다 변수의 유형이 161 00:07:39,100 --> 00:07:42,840 여러 가지를 저장할 수 다시는에서, 백업, 백업, 백업합니다. 162 00:07:42,840 --> 00:07:45,540 >> C에서는없는 목록, 자체,하지만 뭔가 163 00:07:45,540 --> 00:07:48,090 더 일반적으로 그 , 배열 있지만 우리는거야라고 164 00:07:48,090 --> 00:07:50,590 이번 학기에 다시 올 뭔가 찾고에 165 00:07:50,590 --> 00:07:52,780 목록, 또는 정말 링크 된 목록을했다. 166 00:07:52,780 --> 00:07:55,510 그러나, 가장 가까운 지금 우리를 위해 C에 해당하는 167 00:07:55,510 --> 00:07:57,345 뭔가 될 것입니다 배열했다. 168 00:07:57,345 --> 00:07:59,740 및 배열은 간단하다 변수의 특별한 유형 169 00:07:59,740 --> 00:08:03,160 그 데이터를 저장할 수 있습니다 뒤로, 뒤로, 백업, 백업합니다. 170 00:08:03,160 --> 00:08:05,840 >> 그리고, 참으로, 스크래치에, 우리는 접근하기를 원한다면 171 00:08:05,840 --> 00:08:09,030 어레이의 첫 번째 요소 또는 list--와 나는 그것을 호출하는거야 172 00:08:09,030 --> 00:08:13,600 규칙, 변수는 argv, 인수에 의해 벡터,하지만 더 그 긴 전에. 173 00:08:13,600 --> 00:08:17,090 나는 첫 번째 요소에서 얻고 싶은 경우에 의 스크래치의 세계에서, argv를 174 00:08:17,090 --> 00:08:20,930 실제로 일반적으로 수행 1부터 계산 시작합니다. 175 00:08:20,930 --> 00:08:22,850 >> 그래서 나는 변수는 argv의 항목 1을 얻을 수 있습니다. 176 00:08:22,850 --> 00:08:26,310 즉, MIT 구현 단지 방법 목록의 개념. 177 00:08:26,310 --> 00:08:29,860 그러나 C에서, 내가 갈거야 더 간단하게 그냥 말, 변수는 argv, 178 00:08:29,860 --> 00:08:32,758 이는 다시의 이름입니다 내 list-- 또는 명확하게하기 위해, 배열. 179 00:08:32,758 --> 00:08:34,549 그리고 첫 번째를 원하는 경우 요소는, 내가 갈거야 180 00:08:34,549 --> 00:08:37,890 대괄호를 사용하는 당신을 종종 키보드에서 사용하지 않을 수 있습니다. 181 00:08:37,890 --> 00:08:40,150 >> 그러나 0 그냥 의미, 나에게 처음으로 구매하십시오. 182 00:08:40,150 --> 00:08:42,160 그래서 기회에 등 시간은 우리가 가고있어, 통과 183 00:08:42,160 --> 00:08:44,570 이러한 이분법을보고 시작 스크래치와 C 사이, 184 00:08:44,570 --> 00:08:46,070 이에 스크래치 하나를 사용합니다. 185 00:08:46,070 --> 00:08:47,670 C에서 우리는 여기서 0을 사용합니다. 186 00:08:47,670 --> 00:08:49,420 하지만 당신은 신속하게 볼 수 있습니다 당신이 이해 한 번 187 00:08:49,420 --> 00:08:52,920 각 언어의 기초, 그 이러한 일들은 모두가 더 많은 것을 알고 싶으 시다면 시작 188 00:08:52,920 --> 00:08:56,860 연습과 연습을 통해 익숙해. 189 00:08:56,860 --> 00:08:59,700 >> 그래서 실제로 프로그램에서 지금 살펴 보자. 190 00:08:59,700 --> 00:09:04,031 여기에 우리의 C의 첫 번째한다 전체 프로그램의 소스 코드입니다. 191 00:09:04,031 --> 00:09:06,280 그리고 프로그램은 우리거야 고려 제공합니다 192 00:09:06,280 --> 00:09:09,340 등가의 하나입니다 그 이전의 스크래치 부분에. 193 00:09:09,340 --> 00:09:13,210 >> 여기에 그래서, 우리는 무슨 일이있어 가지고 틀림없이 간단한 C 프로그램 194 00:09:13,210 --> 00:09:15,410 당신은 쓸 수 있습니다 실제로 무언가를. 195 00:09:15,410 --> 00:09:18,250 이제, 우리는 과거를 볼 것이다, 지금 포함하고있다, 196 00:09:18,250 --> 00:09:21,190 표준 io.h,이 각도 브래킷 및 INT 및 무효, 197 00:09:21,190 --> 00:09:22,840 그리고 중괄호 등을들 수있다. 198 00:09:22,840 --> 00:09:25,390 >> 그리고 그냥 집중하자 적어도 직관적으로 무엇을, 199 00:09:25,390 --> 00:09:26,860 이미 밖으로 뛰어 수 있습니다. 200 00:09:26,860 --> 00:09:30,300 사실, 메인, 난 몰라 반드시이 무엇인지, 201 00:09:30,300 --> 00:09:34,580 하지만 스크래치 등 많은했다 때 녹색 깃발은 퍼즐 조각을 클릭 202 00:09:34,580 --> 00:09:39,070 그래서 프로그래밍 언어로 C 않습니다 코드의 주요 부분이 그 203 00:09:39,070 --> 00:09:43,380 기본적으로 실행됩니다. 그리고, 참으로, 말 그대로 메인 호출 할 것입니다. 204 00:09:43,380 --> 00:09:44,720 >> 그래서 주요 기능입니다. 205 00:09:44,720 --> 00:09:48,720 그리고 그것은 존재하는 특수 기능입니다 C에서이 프로그램을 실행할 때, 206 00:09:48,720 --> 00:09:52,720 그것은에 의해 운영되는 그 주입니다 태만. 스크래치의 세계에서, 207 00:09:52,720 --> 00:09:56,970 이 때 녹색 깃발 일반적이었다 클릭 기본적으로 실행있어 그. 208 00:09:56,970 --> 00:10:01,130 >> 한편, 우리는 전에 본 적이, printf의 또는 인쇄 형식, 그건 209 00:10:01,130 --> 00:10:05,620 함께 제공되는 기능이 될 것 C, 다른 사람의 전체 무리와 함께, 210 00:10:05,620 --> 00:10:10,140 시간과 시간에서 그 의지 다시 순서대로 정확히 수행하는 211 00:10:10,140 --> 00:10:12,450 그 이름에서 알 수 있듯이, 뭔가를 인쇄 할 수 있습니다. 212 00:10:12,450 --> 00:10:13,500 우리는 무엇을 인쇄 할 수 있습니까? 213 00:10:13,500 --> 00:10:15,770 글쎄, 우리는 그것을 볼 수 있습니다 둘러싸는 문자로 214 00:10:15,770 --> 00:10:18,680 these-- 안녕하세요 세계처럼, 큰 따옴표로 백 슬래시 N, 215 00:10:18,680 --> 00:10:23,040 우리는 정확히의 printf를 알 수 있습니다 화면에 무엇을 인쇄합니다. 216 00:10:23,040 --> 00:10:26,430 >> 그러나 순서대로하면해야 할 일 즉, 우리는 불행하게도 217 00:10:26,430 --> 00:10:30,010 무언가를 취할 필요 우리 인간에게 이미 비밀, 218 00:10:30,010 --> 00:10:34,510 하지만 적어도 그것은 다소 readable--이다 날카로운 포함, 표준 io.h, INT, 219 00:10:34,510 --> 00:10:39,340 메인, 무효, printf와, 마법의 모든 주술 우리는 단지 화면에 보았다. 220 00:10:39,340 --> 00:10:42,470 그러나 우리는 사실에있다 아직도 비밀의 이동합니다. 221 00:10:42,470 --> 00:10:47,140 우리는 먼저 코드를 번역해야 우리는 기계 코드로 작성하는 것이. 222 00:10:47,140 --> 00:10:51,370 그리고 지난 주부터 리콜 기계가, 적어도 사람은 우리가 여기 알고, 223 00:10:51,370 --> 00:10:54,450 하루의 끝에 만 0과 1을 이해합니다. 224 00:10:54,450 --> 00:10:58,100 >> 우리가 있던 경우에 나의 하나님,이를 작성 실제로 프로그램에 0과 1, 225 00:10:58,100 --> 00:11:01,260 그것은 매우, 매우 빠르게 것 아무것도에서 재미를 가지고. 226 00:11:01,260 --> 00:11:05,150 하지만, 지난 주 당 밝혀 즉 0과 1의 이러한 패턴 227 00:11:05,150 --> 00:11:06,400 그냥 특별한 의미를 가지고있다. 228 00:11:06,400 --> 00:11:08,500 특정 상황에서, 그들은 숫자를 의미 할 수 있습니다. 229 00:11:08,500 --> 00:11:11,840 >> 어떤 상황에서, 그들은 의미 할 수 문자 또는 색상 또는 숫자 230 00:11:11,840 --> 00:11:14,710 거기에 따라 다른 추상화. 231 00:11:14,710 --> 00:11:18,450 그러나 컴퓨터가 것처럼 는 CPU, 중앙 처리 장치, 232 00:11:18,450 --> 00:11:20,390 또는 컴퓨터 내부의 두뇌. 233 00:11:20,390 --> 00:11:22,240 그것은 일반적으로 인텔의 내부, 그 때문에 234 00:11:22,240 --> 00:11:24,900 가장 큰 회사 중 하나 즉, 컴퓨터의 CPU를 만든다. 235 00:11:24,900 --> 00:11:28,910 >> 음, 인텔 CPU와 다른 사람 단순히 사전에 결정 236 00:11:28,910 --> 00:11:33,970 그 제로의 특정 패턴 사람들은 특정 일을 의미한다. 237 00:11:33,970 --> 00:11:37,040 0과 1의 특정 패턴 말은, 화면이 인쇄됩니다, 238 00:11:37,040 --> 00:11:39,710 또는이 두 숫자를 추가하거나, 이 두 숫자를 빼기 239 00:11:39,710 --> 00:11:43,310 또는 데이터의이 조각을 이동 내 컴퓨터의 메모리 여기에, 240 00:11:43,310 --> 00:11:47,870 다른 매우 낮은 수준의 번호, 하지만 궁극적으로 유용한 작업. 241 00:11:47,870 --> 00:11:53,022 그러나, 다행히도, 우리 인간은 갈 수 없습니다 세부 사항의 수준을 알 필요가있다. 242 00:11:53,022 --> 00:11:56,230 사실, 어디서, 지난 번처럼 우리 또 다시, 다시 추출, 243 00:11:56,230 --> 00:11:58,930 매우 낮은 수준에서 건물 0과 같은 프리미티브 244 00:11:58,930 --> 00:12:01,160 상위 레벨 개념 숫자, 문자 등, 245 00:12:01,160 --> 00:12:04,330 색상 등, 그래서 우리를 프로그래머로 수 246 00:12:04,330 --> 00:12:07,080 의 어깨에 서 우리 앞에 와서 다른 사람 247 00:12:07,080 --> 00:12:11,260 및 기타 해당 소프트웨어를 사용 사람들은 us-- 전에 작성했습니다 248 00:12:11,260 --> 00:12:14,340 즉, 프로그램은 컴파일러를했다. 249 00:12:14,340 --> 00:12:17,770 >> C는 언어입니다 일반적으로 컴파일, 250 00:12:17,770 --> 00:12:22,130 하는 변환 수단 머신 코드, 소스 코드를 포함 할 수있다. 251 00:12:22,130 --> 00:12:25,230 특히, 어떤이 의미 것을 당신은 당신의 소스를 가지고하는 경우 252 00:12:25,230 --> 00:12:29,530 당신 자신이 곧 우리와 같이 쓰기 코드 화면에 그냥 잠시 것이다, 253 00:12:29,530 --> 00:12:33,140 당신은 그것을 변환 할 궁극적으로 기계에 code-- 254 00:12:33,140 --> 00:12:37,100 그 0과 1이 단지 당신의 맥 또는 PC 255 00:12:37,100 --> 00:12:41,230 understands-- 당신은 첫째있어 로 그 소스 코드를 공급 256 00:12:41,230 --> 00:12:46,340 특별한 입력 프로그램은 컴파일러라고, 257 00:12:46,340 --> 00:12:48,974 출력되는 우리의 볼 것이다 기계 코드입니다. 258 00:12:48,974 --> 00:12:51,890 그리고, 참으로, 마지막으로 우리는 이야기 대한, 정말, 하루의 끝에, 259 00:12:51,890 --> 00:12:52,610 문제 해결. 260 00:12:52,610 --> 00:12:53,360 당신은 입력을 가지고있다. 261 00:12:53,360 --> 00:12:54,318 그리고 당신은 출력을 가지고있다. 262 00:12:54,318 --> 00:12:56,560 그리고 당신은 어떤 종류의있어 중간에 알고리즘. 263 00:12:56,560 --> 00:12:59,830 >> 알고리즘은 확실하게 할 수있다 소프트웨어로 구현 264 00:12:59,830 --> 00:13:02,900 우리는 의사 지난 주에 본대로 우리는 실제 코드를 볼 수 있습니다로 265 00:13:02,900 --> 00:13:03,490 이번 주. 266 00:13:03,490 --> 00:13:06,430 그리고 컴파일러 정말 내부 알고리즘의 세트를 갖는다 267 00:13:06,430 --> 00:13:10,060 그것을 알고있는 방법 특별한 키워드 변환 268 00:13:10,060 --> 00:13:12,180 주 및 printf와 같은, 다른 사람들이 우리 단지 269 00:13:12,180 --> 00:13:17,620 0의 패턴으로보고 사람이 인텔 내부와 다른 CPU 270 00:13:17,620 --> 00:13:20,020 실제로 이해하고 있습니다. 271 00:13:20,020 --> 00:13:22,460 그렇다면 우리는이 작업을 수행합니까? 272 00:13:22,460 --> 00:13:24,470 우리는 어디 컴파일러를받을 수 있나요? 273 00:13:24,470 --> 00:13:26,400 >> 우리들 대부분은 여기에 맥 또는 PC가 있습니다. 274 00:13:26,400 --> 00:13:29,152 그리고 당신은 맥 OS를 실행하거나하는 윈도우, 또는 Linux 또는 Solaris, 275 00:13:29,152 --> 00:13:30,860 또는 기타 임의의 개수 운영체제. 276 00:13:30,860 --> 00:13:32,568 그리고, 참으로, 우리는 할 수 웹에 외출 277 00:13:32,568 --> 00:13:35,710 그리고 컴파일러를 다운로드 Mac 또는 PC를위한 278 00:13:35,710 --> 00:13:37,360 특정 운영 체제에 대한. 279 00:13:37,360 --> 00:13:39,617 그러나 우리는 모두의 것 다른 페이지, 말하자면. 280 00:13:39,617 --> 00:13:41,450 우리는 약간 거라고 다른 구성. 281 00:13:41,450 --> 00:13:43,210 그리고 물건은 모두 동일하게 작동하지 않을 것입니다. 282 00:13:43,210 --> 00:13:45,280 그리고, 참, 요즘 사용하지 않는 우리의 많은 283 00:13:45,280 --> 00:13:47,516 우리의 노트북에서 실행되는 소프트웨어입니다. 284 00:13:47,516 --> 00:13:49,390 대신, 우리는 뭔가를 사용 브라우저처럼 그 285 00:13:49,390 --> 00:13:52,930 우리가 액세스 할 수 있도록 웹 기반 클라우드 응용 프로그램. 286 00:13:52,930 --> 00:13:55,630 그리고 이번 학기, 우리는 정확하게 할 것입니다. 287 00:13:55,630 --> 00:13:59,660 우리는 응용 프로그램을 작성하는 것 또는 소프트웨어, C code--을하지 사용 288 00:13:59,660 --> 00:14:02,860 하지만 파이썬 같은 다른 언어와 클라우드에서 실행 JavaScript--. 289 00:14:02,860 --> 00:14:05,860 >> 그리고 우리에게 자신을 그렇게합니다 학기 중 290 00:14:05,860 --> 00:14:11,890 실제로 클라우드 기반을 사용합니다 CS50 IDE로 알려진 환경을 제공합니다. 291 00:14:11,890 --> 00:14:16,030 이 웹 기반의 프로그램이다 환경, 또는 통합 개발 292 00:14:16,030 --> 00:14:20,610 환경, IDE는, 그 일부 꼭대기에 지어진 것 클라우드 9라는 오픈 소스 소프트웨어. 293 00:14:20,610 --> 00:14:22,966 그리고 우리는 몇 가지 교수법을했습니다 그것을 단순화 294 00:14:22,966 --> 00:14:25,840 특정 기능을 숨길 수 있도록 우리가 필요로하지 않는 첫 번째 주, 295 00:14:25,840 --> 00:14:27,770 그 후에 당신은 할 수 를 공개하고 할 가장 296 00:14:27,770 --> 00:14:29,400 아무것도 당신은 환경을 원한다. 297 00:14:29,400 --> 00:14:32,470 >> 그리고 그것은에, 너무, 우리를 수 특정 소프트웨어를 미리 설치합니다. 298 00:14:32,470 --> 00:14:35,330 소위 CS50 같은 것들 우리가 곧 볼 도서관, 299 00:14:35,330 --> 00:14:39,210 일부 C에서 우리를 제공합니다 추가 기능을 제공합니다. 300 00:14:39,210 --> 00:14:44,392 그래서 당신이가는 경우에, 궁극적으로 CS50.io, 당신은, 로그인하라는 메시지가 표시됩니다 301 00:14:44,392 --> 00:14:46,350 당신은 어떻게 만들되면 무료 계정, 302 00:14:46,350 --> 00:14:52,150 당신은에 액세스 할 수 있습니다 아주 다음과 같습니다 환경을 제공합니다. 303 00:14:52,150 --> 00:14:53,760 >> 이제, 이것은 디폴트 모드이다. 304 00:14:53,760 --> 00:14:55,650 모든 좋은이며, 화면에 밝은. 305 00:14:55,650 --> 00:14:57,941 우리 중 많은 사람들은 습관이 의 CS50 조각 작업 306 00:14:57,941 --> 00:14:59,150 아주 늦은 밤에. 307 00:14:59,150 --> 00:15:02,400 그리고 당신의 일부를 선호 할 수도 말하자면, 야간 모드 변환합니다. 308 00:15:02,400 --> 00:15:05,550 >> 그러나, 궁극적으로, 당신은 무엇이야 CS50 IDE 내에서 보게 될 것 309 00:15:05,550 --> 00:15:08,340 세 가지 areas--입니다 왼쪽 위치에 대한 지역 310 00:15:08,340 --> 00:15:12,604 파일이있을거야 구름, 오른쪽 상단의 영역 311 00:15:12,604 --> 00:15:14,270 여기서 코드는 편집 될 것입니다. 312 00:15:14,270 --> 00:15:16,650 당신은 열 수 있습니다 모든 프로그램에 대한 개별 탭 313 00:15:16,650 --> 00:15:19,670 당신은 내부 이번 학기를 작성하는 것이 그 오른쪽 상단의. 314 00:15:19,670 --> 00:15:23,070 그리고 가장 arcanely, 아직 강력하게, 315 00:15:23,070 --> 00:15:26,610 상기 본 일이 될 것입니다 터미널 창으로 알려진 바닥. 316 00:15:26,610 --> 00:15:29,450 >> 이것은 오래된 학교입니다 명령 줄 인터페이스, 317 00:15:29,450 --> 00:15:32,240 또는 CLI, 즉 수 있습니다 당신은 명령을 실행합니다 318 00:15:32,240 --> 00:15:35,260 이 경우 computer--에, cloud--에서 컴퓨터 319 00:15:35,260 --> 00:15:39,090 코드를 컴파일 등의 작업을 수행합니다 소스 코드에서 머신 코드, 320 00:15:39,090 --> 00:15:43,600 프로그램을 실행하거나 시작합니다 웹 서버, 데이터베이스에 액세스하려면, 321 00:15:43,600 --> 00:15:47,454 다른 기술들의 개수 우리는 오래 전에 사용하기 시작거야. 322 00:15:47,454 --> 00:15:49,370 그러나 거기에 도착하기 위해, 우리는있어 실제로해야 할 것 323 00:15:49,370 --> 00:15:51,240 온라인 및 재생을 시작합니다. 324 00:15:51,240 --> 00:15:54,399 그리고 그렇게 먼저하자 주요 땜질 시작, 325 00:15:54,399 --> 00:15:55,940 및 프로그램의 주요부 물품. 326 00:15:55,940 --> 00:15:59,170 그리고 이제 그 기능을 사용하자 우리가 이전에 사용 printf와, 327 00:15:59,170 --> 00:16:01,050 단순히 무언가를 말할 수 있습니다. 328 00:16:01,050 --> 00:16:04,910 >> 그래서 나는 여기 CS50의 IDE의 내부에 이미입니다. 329 00:16:04,910 --> 00:16:05,930 나는 사전에 기록했습니다. 330 00:16:05,930 --> 00:16:07,360 그리고 전체 창을 상영. 331 00:16:07,360 --> 00:16:09,670 그리고, 궁극적으로, 당신 너무 오는 문제에 332 00:16:09,670 --> 00:16:12,960 비슷한 단계를 수행 것이다 온라인 설명서를 제공합니다. 333 00:16:12,960 --> 00:16:16,360 그래서 당신에 대해 걱정할 필요가 없습니다 모든 작은 기술 단계를 흡수 334 00:16:16,360 --> 00:16:17,730 오늘은 여기에서있다. 335 00:16:17,730 --> 00:16:19,222 >> 그러나이 같은 화면을 얻을 수 있습니다. 336 00:16:19,222 --> 00:16:20,430 나는 밤 모드로 발생합니다. 337 00:16:20,430 --> 00:16:22,944 그리고 당신은 모든 것을 밝게 할 수 있습니다 야간 모드를 해제하여입니다. 338 00:16:22,944 --> 00:16:24,860 그리고 끝에 하루, 당신은 보게 될 것 339 00:16:24,860 --> 00:16:30,090 파일 areas--이 세 가지 주요 왼쪽 브라우저 상단까지 코드 탭, 340 00:16:30,090 --> 00:16:32,430 그리고 하단에있는 터미널 창. 341 00:16:32,430 --> 00:16:34,890 >> 내가 가서 보자 처음 프로그램을 작성. 342 00:16:34,890 --> 00:16:42,300 나는, 선제 파일로 갈거야 저장하고에서는 hello.c로 내 파일을 저장합니다. 343 00:16:42,300 --> 00:16:46,850 사실, 규칙에 의해, 모든 프로그램 우리 즉 C 언어로 작성 쓰기 344 00:16:46,850 --> 00:16:49,739 뭔가를 지정해야 관례 점 다. 345 00:16:49,739 --> 00:16:53,030 그래서 나는 때문에, 그것을에서는 hello.c의 이름을거야 난 그냥 세계에 인사하고 싶다. 346 00:16:53,030 --> 00:16:54,820 지금은 확대거야 출력 및 저장을 클릭합니다. 347 00:16:54,820 --> 00:16:58,180 그리고 나는 지금 여기에있는 모든 탭입니다 있는 나는 코드를 작성을 시작할 수 있습니다. 348 00:16:58,180 --> 00:16:59,490 >> 이것은 컴파일하지 않을. 349 00:16:59,490 --> 00:17:00,300 이것은 아무 의미가 없습니다. 350 00:17:00,300 --> 00:17:02,750 그리고 변환 이렇게해도 0과 1이, 351 00:17:02,750 --> 00:17:05,390 CPU는 더해야 할 것입니다 아이디어는 주변에 무슨 일이 일어나고 있는지. 352 00:17:05,390 --> 00:17:14,170 내가 라인을 작성하는 경우 그러나이 일치합니까 C의 conventions-- C의 존재 최대, 353 00:17:14,170 --> 00:17:20,150 다시,이 같은 구문을 language-- 나는했습니다이, 인사의 printf을 전 세계 354 00:17:20,150 --> 00:17:22,210 편안 받고 시간이 지남에 따라이 작업을 수행. 355 00:17:22,210 --> 00:17:24,510 그래서 나는 내가 만든 생각하지 않습니다 모든 인쇄상의 오류. 356 00:17:24,510 --> 00:17:27,910 >> 하지만, 변함없이, 최초 시간이 작업을 수행, 당신은 것입니다. 357 00:17:27,910 --> 00:17:31,090 내가 할에 대한 누구인지 매우 수도 잘 당신을 위해 처음 작동하지. 358 00:17:31,090 --> 00:17:33,610 그리고 그것은 완벽하게 괜찮아요 지금 당신 때문에 359 00:17:33,610 --> 00:17:37,662 단지 새로움의 전체를 많이 볼 수 있습니다, 하지만 시간이 지남에 당신은 잘 알고 일단 360 00:17:37,662 --> 00:17:39,870 이 환경 및 이 언어 등, 361 00:17:39,870 --> 00:17:42,370 당신은 일을보고 시작합니다 그 올바른 또는 잘못된 중 하나입니다. 362 00:17:42,370 --> 00:17:44,369 >> 그리고 이것은 무엇이다 교육 동료와 과정 363 00:17:44,369 --> 00:17:48,780 조수, 이상 한 번에 너무 좋아한다 얻을 코드에서 실수 나 버그를 스포팅. 364 00:17:48,780 --> 00:17:52,110 하지만 주장이 이 코드에는 버그가 없습니다. 365 00:17:52,110 --> 00:17:53,990 그래서 나는 지금이 프로그램을 실행합니다. 366 00:17:53,990 --> 00:17:57,440 >> 지금 내 자신의 Mac 또는 PC에, 나는에있어 더블 클릭 아이콘의 습관 367 00:17:57,440 --> 00:17:59,350 나는 어떤 프로그램을 실행하고자 할 때. 368 00:17:59,350 --> 00:18:01,080 하지만 여기에 모델이 아니다. 369 00:18:01,080 --> 00:18:04,570 CS50 IDE이다이 환경에서는. 370 00:18:04,570 --> 00:18:07,192 우리는 운영을 사용하는 리눅스라는 시스템. 371 00:18:07,192 --> 00:18:09,900 리눅스는 다른 연상 운영 체제는 일반적으로 공지 372 00:18:09,900 --> 00:18:10,850 유닉스있다. 373 00:18:10,850 --> 00:18:16,340 그리고 리눅스는 특히 유명하다 명령 줄 환경, CLI 데. 374 00:18:16,340 --> 00:18:20,070 이제, 우리는 특정를 사용하는 리눅스의 맛은 우분투를했다. 375 00:18:20,070 --> 00:18:22,770 그리고 우분투는 단순히이다 리눅스의 특정 버전입니다. 376 00:18:22,770 --> 00:18:27,900 >> 그러나 이러한 리눅스의 이러한 일이 실제로 수행 그래픽 사용자 인터페이스를 갖추고 있습니다. 377 00:18:27,900 --> 00:18:30,360 그리고 우리가 어떻게 하나 여기에 사용하는 것은 웹 기반이다. 378 00:18:30,360 --> 00:18:32,735 그래서 심지어 보일 수 있습니다 뭔가에서 조금 다른 379 00:18:32,735 --> 00:18:35,310 당신은 자신이있을 수 있습니다 보이거나 과거에 실행. 380 00:18:35,310 --> 00:18:37,910 >> 그래서 앞서 갈거야 이제 다음을 수행합니다. 381 00:18:37,910 --> 00:18:40,950 나는에서는 hello.c로이 파일을 저장 한. 382 00:18:40,950 --> 00:18:47,350 내가 가서거야 및 형 clanghello.c 연타 그래서 383 00:18:47,350 --> 00:18:49,850 C 언어를위한 컴파일러입니다. 384 00:18:49,850 --> 00:18:51,952 그것은 미리 설치의 CS50 IDE에서. 385 00:18:51,952 --> 00:18:54,910 그리고 당신은 절대적으로 다운로드 할 수 있으며, 자신의 Mac 또는 PC에이를 설치합니다. 386 00:18:54,910 --> 00:18:57,910 >> 그러나, 다시, 당신은 모든이없는 것 사전 구성은 당신을 위해 수행. 387 00:18:57,910 --> 00:19:00,940 지금은 그래서, 난 그냥 해요 clanghello.c를 실행하는 것. 388 00:19:00,940 --> 00:19:03,240 그리고 지금이 구문을 알 여기에 결국 것이다 389 00:19:03,240 --> 00:19:06,930 단지 나는에있어 것을 의미 실현 폴더 또는 디렉토리는 작업을했다. 390 00:19:06,930 --> 00:19:11,030 이 달러 기호는 규칙이다 의미를, 여기에 명령을 입력합니다. 391 00:19:11,030 --> 00:19:14,560 >> 그냥하는 프롬프트라고 무엇 관례에 달러 기호입니다. 392 00:19:14,560 --> 00:19:19,130 그리고 내가 지금 가서 경우 ​​클릭 입력, 아무 일도 것으로 보인다. 393 00:19:19,130 --> 00:19:20,930 하지만 실제로 좋은 일입니다. 394 00:19:20,930 --> 00:19:23,650 적은 그가 발생 화면, 더 많은 가능성 395 00:19:23,650 --> 00:19:26,710 코드가 정확해야하는 것입니다, 적어도 구문. 396 00:19:26,710 --> 00:19:29,120 >> 나는 이것을 실행하려면 이렇게 프로그램, 내가 무엇을해야합니까? 397 00:19:29,120 --> 00:19:33,770 글쎄, 그것은 것으로 판명 규칙에 의해 기본 이름 398 00:19:33,770 --> 00:19:38,854 당신이를 지정하지 않는 경우 프로그램 프로그램이 단지의 a.out입니다에 대한 이름을 지정합니다. 399 00:19:38,854 --> 00:19:41,270 너무 구문, 당신은거야 머지 않아 익숙해. 400 00:19:41,270 --> 00:19:47,500 >> 점은, 헤이, CS50을 의미 슬래시 IDE, a.out의라는 프로그램을 실행 401 00:19:47,500 --> 00:19:49,400 그건 내 현재 디렉토리 안에 있습니다. 402 00:19:49,400 --> 00:19:51,520 그 점은 현재 디렉토리를 의미한다. 403 00:19:51,520 --> 00:19:55,040 그리고 우리는 무엇을 등의 순서를 볼 수 있습니다 문자 오래 전에 의미한다. 404 00:19:55,040 --> 00:19:58,430 >> 그래서 여기에 우리가 안녕하세요 세계, 입력, 이동합니다. 405 00:19:58,430 --> 00:20:00,080 그리고 당신은 무슨 일이 있었는지 것을 알 수 있습니다? 406 00:20:00,080 --> 00:20:01,580 그것은 안녕하세요 세상을 인쇄 않았다뿐만 아니라. 407 00:20:01,580 --> 00:20:05,990 또한 이동 한 다음 행으로 커서. 408 00:20:05,990 --> 00:20:07,160 >> 그리고 그 이유를했다? 409 00:20:07,160 --> 00:20:12,400 우리가 전에 쓴 코드는 무엇인가 그 보장 커서 것이라고 410 00:20:12,400 --> 00:20:14,882 다음 줄에 이동? 411 00:20:14,882 --> 00:20:16,840 약 재미있는 것은 컴퓨터는 단지 무슨이다 412 00:20:16,840 --> 00:20:18,570 문자 그대로 할 당신은 어떻게 그것을 말할 것. 413 00:20:18,570 --> 00:20:26,050 >> 그래서 당신은 안녕의 printf를 말한다면, 쉼표, 공간, 세계, 가까운 인용, 414 00:20:26,050 --> 00:20:29,090 그것은 문자 그대로 만거야 이러한 문자를 인쇄합니다. 415 00:20:29,090 --> 00:20:31,980 하지만이 특수 문자를했다 결국, 리콜, 백 슬래시 n은. 416 00:20:31,980 --> 00:20:34,230 그리고이 보장 무엇 캐릭터가 가서 그 417 00:20:34,230 --> 00:20:36,570 화면의 다음 행. 418 00:20:36,570 --> 00:20:38,097 >> 사실, 내가 가서이 작업을 수행 할 수 있습니다. 419 00:20:38,097 --> 00:20:39,430 내가 가서이 삭제 할 수 있습니다. 420 00:20:39,430 --> 00:20:41,180 이제, 알 내 화면의 상단이있다 421 00:20:41,180 --> 00:20:42,890 작은 빨간 빛 표시 탭, 422 00:20:42,890 --> 00:20:45,047 이봐, 당신은 당신의 파일을 저장하지했습니다. 423 00:20:45,047 --> 00:20:47,880 그래서 내가 컨트롤과 함께 진행거야 S 또는 명령 S, 파일을 저장합니다. 424 00:20:47,880 --> 00:20:51,130 지금은 moment-- 녹색에 들어갑니다 goes--. 425 00:20:51,130 --> 00:20:53,760 그리고 지금은 다시이다 그냥 닫기 아이콘을 주도했습니다. 426 00:20:53,760 --> 00:21:01,860 >> 내가 지금 다시 clanghello.c을 실행하면, 도트 슬래시, a.out의 Enter를 입력합니다, 427 00:21:01,860 --> 00:21:04,110 당신은 여전히​​ 작동하는지 확인할 수 있습니다. 428 00:21:04,110 --> 00:21:06,020 그러나 그것은 틀림없이 약간의 버그가 있습니다. 429 00:21:06,020 --> 00:21:08,714 지금, 내 prompt-- 작업 공간, 그리고 그 달러 기호, 430 00:21:08,714 --> 00:21:10,880 다음 내 실제 prompt-- 모두 같은 줄에 있습니다. 431 00:21:10,880 --> 00:21:14,540 그래서이 확실히 미적 버그, 도 정말 논리적 인 버그가 아니다. 432 00:21:14,540 --> 00:21:16,250 >> 그래서 난 그냥 무슨 짓을 취소하겠습니다. 433 00:21:16,250 --> 00:21:18,560 나는 a.out의를 다시 실행거야. 434 00:21:18,560 --> 00:21:22,710 내가 추가 한 유의 사항 개행 문자 다시. 435 00:21:22,710 --> 00:21:24,280 나는 파일을 저장했습니다. 436 00:21:24,280 --> 00:21:31,630 >> 그래서, a.out을 다시 실행거야 그리고 - 젠 버그, 실수를 의미 버그. 437 00:21:31,630 --> 00:21:35,020 그래서 버그는 비록입니다 나는, n은 거기에 백 슬래시를 추가 438 00:21:35,020 --> 00:21:41,180 재 저장, 프로그램을 다시 실행 동작은 동일하다. 439 00:21:41,180 --> 00:21:42,640 이유가 있을까요? 440 00:21:42,640 --> 00:21:43,910 >> 나는 오른쪽 단계를 실종 해요? 441 00:21:43,910 --> 00:21:47,620 그 핵심 단계 이전 당신이 가진 것이 었습니다 당신이 당신의 소스 코드를 변경할 때 께 다시, 442 00:21:47,620 --> 00:21:49,610 또한 실행 밝혀 컴파일러를 통해 443 00:21:49,610 --> 00:21:51,102 다시 새로운 머신 코드를 얻을 수 있도록. 444 00:21:51,102 --> 00:21:52,810 상기 머신 코드, 0과 1, 445 00:21:52,810 --> 00:21:56,260 거의 동일하려고하지만, 하지 완벽 그래서, 우리가 필요로하기 때문에, 446 00:21:56,260 --> 00:21:57,510 물론, 그 새로운 라인. 447 00:21:57,510 --> 00:22:02,640 >> 그래서 내가 필요한거야,이 문제를 해결하려면 입력, 점 clanghello.c를 다시 실행하기 448 00:22:02,640 --> 00:22:03,800 , a.out의 슬래시. 449 00:22:03,800 --> 00:22:08,402 그리고 지금, 안녕하세요 세계가 돌아왔다 내가 기대하는 곳이 될 수 있습니다. 450 00:22:08,402 --> 00:22:09,610 그래서이 모든 미세하고 좋은 것입니다. 451 00:22:09,610 --> 00:22:13,150 하지만 a.out의은을위한 매우 어리석은 이름입니다 프로그램이 될 일이 있더라도, 452 00:22:13,150 --> 00:22:16,530 역사적인 이유로 어셈블리 출력을 의미 default--. 453 00:22:16,530 --> 00:22:20,780 >> 그러나 내가 여기에 앞서 가자 다르게 이렇게. 454 00:22:20,780 --> 00:22:24,760 내 안녕하세요 세계 프로그램을 원하는 실제로 인사라고. 455 00:22:24,760 --> 00:22:28,320 그래서 만약 그것의 아이콘이었다 내 바탕 화면, 그것은 이는 a.out되지 않습니다. 456 00:22:28,320 --> 00:22:29,730 그것은 안녕하세요라는 것입니다. 457 00:22:29,730 --> 00:22:33,660 >> 그래서이 작업을 수행하는, 그것은 밝혀 연타가 많은 프로그램과 같은, 458 00:22:33,660 --> 00:22:37,980 명령 줄 인수를 지원합니다 또는 플래그 또는 스위치 459 00:22:37,980 --> 00:22:39,600 단순히 행동에 영향을한다. 460 00:22:39,600 --> 00:22:45,160 특히, 연타는 대시 O를 지원합니다 다음 두 번째 단어를 취 플래그입니다. 461 00:22:45,160 --> 00:22:48,190 이 경우, I 임의로거야 그러나 합리적 인사를 호출합니다. 462 00:22:48,190 --> 00:22:50,710 그러나 나는 아무것도를 호출 할 수 있습니다 나는 a.out을 제외하고, 할 463 00:22:50,710 --> 00:22:52,390 오히려 점 외에 될 것이다. 464 00:22:52,390 --> 00:22:55,640 >> 그리고 그냥 이름을 지정 파일의 I 컴파일 할 않습니다. 465 00:22:55,640 --> 00:22:59,190 그래서 지금도 처음에 생각 난 아직도 연타를 명령, 466 00:22:59,190 --> 00:23:01,410 명령 끝에 나는 아직도 파일 이름을 가지고, 467 00:23:01,410 --> 00:23:05,520 지금은 명령 행이 인수 말하는 이들 플래그, 468 00:23:05,520 --> 00:23:11,180 아, 그런데, 출력 - 오, 파일 하지의 기본은 a.out, 안녕하세요했다. 469 00:23:11,180 --> 00:23:13,810 >> 그래서 히트 경우, 아무것도 지금 입력하지 일 것으로 보인다. 470 00:23:13,810 --> 00:23:17,900 그리고, 아직, 지금은 안녕 점 슬래시를 할 수 있습니다. 471 00:23:17,900 --> 00:23:19,089 그래서 동일한 프로그램이다. 472 00:23:19,089 --> 00:23:21,380 0과 1은 하루의 끝에서 동일합니다. 473 00:23:21,380 --> 00:23:24,210 >> 그러나 그들은 두에있어 다른 files--의 a.out, 474 00:23:24,210 --> 00:23:26,490 이는 첫 번째 버전입니다 그냥 바보라는 475 00:23:26,490 --> 00:23:30,250 지금 안녕하세요, 이는 훨씬입니다 프로그램에 대한 더 강력한 이름입니다. 476 00:23:30,250 --> 00:23:33,195 그러나, 정직하게, 나는 결코 생각하지 다시 기억하는 것, 477 00:23:33,195 --> 00:23:34,070 다시, 다시. 478 00:23:34,070 --> 00:23:36,411 그리고, 사실로 우리는 쓰기 더 복잡한 프로그램, 479 00:23:36,411 --> 00:23:38,160 당신이있어 명령 작성해야 할 것 480 00:23:38,160 --> 00:23:40,920 도받을 예정 더 여전히 복잡. 481 00:23:40,920 --> 00:23:41,940 >> 그래서 걱정하지. 482 00:23:41,940 --> 00:23:46,220 그것은 밝혀 그 인간 전에 우리는 너무 그들은을 실현 483 00:23:46,220 --> 00:23:47,530 이 동일한 문제를 가지고 있었다. 484 00:23:47,530 --> 00:23:50,900 그들도를 갖는 즐기지 않았다 상당히 긴, 비밀 명령을 입력 485 00:23:50,900 --> 00:23:52,200 홀로 그들을 기억. 486 00:23:52,200 --> 00:23:56,070 그리고 우리 앞에 인간이 만든 보다 쉽게​​ 다른 프로그램 487 00:23:56,070 --> 00:23:57,670 소프트웨어를 컴파일합니다. 488 00:23:57,670 --> 00:24:01,609 >> 그리고, 참으로, 하나의 프로그램을 만들기라고합니다. 489 00:24:01,609 --> 00:24:03,150 그래서 내가 가서이 일을하려고 해요. 490 00:24:03,150 --> 00:24:05,691 나는 모든 것을 취소 할거야 I 다만 다음과 같은 방식으로했다. 491 00:24:05,691 --> 00:24:07,690 내가 LS를 입력 할 수 있습니다. 492 00:24:07,690 --> 00:24:10,980 그리고 당신은 세 가지를 알 수 있습니다 things-- a.out의, 그리고 별, 안녕하세요 493 00:24:10,980 --> 00:24:12,810 별과에서는 hello.c합니다. 494 00:24:12,810 --> 00:24:14,730 바라건대,이해야 조금 직관적 495 00:24:14,730 --> 00:24:18,220 등의 이전이 있었다 한, 이 작업 공간에 아무것도 없습니다. 496 00:24:18,220 --> 00:24:21,240 내가 가진 것은 아무 것도 없었다 우리가 수업을 시작할 때까지 만들었습니다. 497 00:24:21,240 --> 00:24:22,840 >> 그리고 나는에서는 hello.c를 만들었습니다. 498 00:24:22,840 --> 00:24:24,544 나는 다음을 컴파일하고 a.out을했다. 499 00:24:24,544 --> 00:24:27,460 그리고 나는 약간 다시 컴파일 다르게 인사를했다. 500 00:24:27,460 --> 00:24:32,830 그래서이 디렉토리에 세 개의 파일을 가지고, 작업 공간이라는 폴더입니다. 501 00:24:32,830 --> 00:24:35,005 지금, 나는 그뿐만 아니라 볼 수 있습니다 실제로 축소합니다. 502 00:24:35,005 --> 00:24:37,530 >> 내가 여기 축소하는 경우와 그 오른쪽 상단에 보면 503 00:24:37,530 --> 00:24:39,940 코너, 약속대로 왼쪽 화면의 편 504 00:24:39,940 --> 00:24:42,990 언제나 당신을 보여줄 것입니다 무엇 귀하의 계정에있어, 무슨 일이야 505 00:24:42,990 --> 00:24:44,790 CS50의 IDE의 내부. 506 00:24:44,790 --> 00:24:46,680 그리고 세 개의 파일이 있습니다. 507 00:24:46,680 --> 00:24:49,070 >> 그래서 인사와 a.out을 제거하려고합니다. 508 00:24:49,070 --> 00:24:51,275 그리고 당신은 수도 직관적으로 당신을 상상 509 00:24:51,275 --> 00:24:53,400 제어 클릭으로 정렬 할 수 있습니다 또는 오른쪽이 클릭합니다. 510 00:24:53,400 --> 00:24:54,590 그리고이 작은 메뉴가 나타납니다. 511 00:24:54,590 --> 00:24:57,170 당신은 파일을 다운로드 할 수 있습니다 실행 그것은, 그것을 미리보기, 새로 고침, 이름 바꾸기 512 00:24:57,170 --> 00:24:57,700 또는 무엇 없습니다. 513 00:24:57,700 --> 00:25:00,260 >> 그리고 난 그냥 삭제할 수 있습니다, 그리고 그것은 멀리 갈 것입니다. 514 00:25:00,260 --> 00:25:05,260 그러나의 명령으로 작업을 수행 할 수 지금은 줄 수 있도록하는 것이 편안합니다 515 00:25:05,260 --> 00:25:07,010 이에 의해, 다음을 수행. 516 00:25:07,010 --> 00:25:12,345 내가 가서 제거하는거야 말 그대로 rma.out 입력하여 a.out의. 517 00:25:12,345 --> 00:25:14,890 이 명령에 대해 밝혀 제거하거나 뭔가를 삭제, 518 00:25:14,890 --> 00:25:16,280 제거하거나 삭제하지 않습니다. 519 00:25:16,280 --> 00:25:21,260 >> 그냥 저장, 더 간결 RM의 당신이 몇 가지 키 입력하고 Enter를 누르십시오. 520 00:25:21,260 --> 00:25:24,707 이제 우리는 어느 정도가 될거야 비밀스럽게 일반 파일의 a.out을 제거합니다. 521 00:25:24,707 --> 00:25:27,040 정말 얼마나 몰라 불규칙한 파일은 아직 것입니다. 522 00:25:27,040 --> 00:25:28,660 그러나 나는 그것을 제거 할 않습니다. 523 00:25:28,660 --> 00:25:30,150 >> 그래서 예에 대한 y를 입력거야. 524 00:25:30,150 --> 00:25:31,940 아니면 내가 그것을 입력하고 Enter 키를 누르 수 있습니다. 525 00:25:31,940 --> 00:25:33,440 그리고, 다시, 아무것도 일어날 것 같다. 526 00:25:33,440 --> 00:25:35,840 하지만, 일반적으로 좋은 일이있다. 527 00:25:35,840 --> 00:25:40,490 >> 나는이 시간 LS를 입력하면, 내가 무엇을 볼 것인가? 528 00:25:40,490 --> 00:25:44,930 바라 건데, 그냥 인사 및에서는 hello.c. 529 00:25:44,930 --> 00:25:47,286 이제, AS는 제쳐두고, 당신은거야 , 별표 (*)를이 별을 발견, 530 00:25:47,286 --> 00:25:48,660 그건 내 프로그램의 끝 부분에 있습니다. 531 00:25:48,660 --> 00:25:50,201 그리고 그들은 또한 녹색으로 표시하고 있습니다. 532 00:25:50,201 --> 00:25:53,970 그건 그냥 CS50 IDE의 방법입니다 사실로 당신을 cluing의 533 00:25:53,970 --> 00:25:55,280 것을 그 소스 코드 아닙니다. 534 00:25:55,280 --> 00:25:58,880 즉, 실행 가능한 실행의 실제로 실행할 수있는 프로그램 535 00:25:58,880 --> 00:26:01,020 다음 점 슬래시 일을하고하여 이름입니다. 536 00:26:01,020 --> 00:26:05,860 >> 이제, 내가 가서 제거 할 수 이, 안녕하세요 RM은, 입력, 정기적으로 제거 537 00:26:05,860 --> 00:26:08,010 네, 안녕하세요 파일. 538 00:26:08,010 --> 00:26:11,180 그리고 지금은, LS를 입력하면 우리는 다시에서는 hello.c에있어. 539 00:26:11,180 --> 00:26:13,917 삭제하지 않으려 고 당신의 실제 소스 코드입니다. 540 00:26:13,917 --> 00:26:16,250 기능이있다하더라도 CS50의 IDE 위치에 내장 541 00:26:16,250 --> 00:26:19,870 당신은 당신의 개정 역사를 통해 갈 수 있습니다 시간에 당신이 만약 실수로 되감기 542 00:26:19,870 --> 00:26:23,660 뭔가를 삭제 염두에 두어야 할 이 메시지에 예 또는 아니오에 따라, 543 00:26:23,660 --> 00:26:25,381 당신이 실제로 수행 할 작업의. 544 00:26:25,381 --> 00:26:27,380 그리고 정상까지 가면 여기에 모서리를 왼쪽, 545 00:26:27,380 --> 00:26:30,696 에서는 hello.c는 모두 남아 있습니다. 546 00:26:30,696 --> 00:26:32,570 그래서 다발을 거기에 다른 명령 당신 547 00:26:32,570 --> 00:26:37,550 리눅스의 세계에서 실행할 수 있습니다, 중 하나가 다시 확인된다. 548 00:26:37,550 --> 00:26:40,180 그리고 우리는 확인거야 내 프로그램은 현재로는 다음과 같다. 549 00:26:40,180 --> 00:26:43,270 >> 대신 그 소리를하는, 대신 그 소리 - 오 일을, 550 00:26:43,270 --> 00:26:45,860 나는 단지에 갈거야 문자 그대로 안녕을 입력합니다. 551 00:26:45,860 --> 00:26:49,630 그리고 지금 나는, 알 에서는 hello.c을 입력하지. 552 00:26:49,630 --> 00:26:50,910 나는 안녕을 입력하고 있습니다. 553 00:26:50,910 --> 00:26:54,840 >> 이 프로그램은 만들기 CS50의 IDE 등을 함께 제공 554 00:26:54,840 --> 00:26:57,090 일반적으로 리눅스, 의 프로그램입니다 555 00:26:57,090 --> 00:26:59,120 안녕하세요라는 프로그램을 만들려고. 556 00:26:59,120 --> 00:27:03,680 그리고, 관례, 가정거야 이 프로그램 될 수있는 경우 것을 557 00:27:03,680 --> 00:27:09,030 이 소스에서 할 것 점 C로 끝나는 코드 파일에서는 hello.c. 558 00:27:09,030 --> 00:27:12,210 >> 그래서 나는 명중하면, 이제 통지를 입력하는 실행되는 명령 559 00:27:12,210 --> 00:27:14,340 더 오래 실제로 이전보다 전에. 560 00:27:14,340 --> 00:27:16,670 우리가했습니다 때문에 그건 사전 CS50의 IDE는이합니다 561 00:27:16,670 --> 00:27:19,878 그 내장 된 몇 가지 추가 기능 우리는 아직 필요하지만 곧 것입니다하지 않습니다. 562 00:27:19,878 --> 00:27:23,470 그러나 중요한 것은 실현 나는 안녕하세요 프로그램이 지금이다. 563 00:27:23,470 --> 00:27:27,080 >> 나는 다시 LS를 입력하면, I 헬로 프로그램이 있습니다. 564 00:27:27,080 --> 00:27:32,070 그리고 나는 그것을 실행할 수 있습니다 점은, 아니, a.out의 슬래시 565 00:27:32,070 --> 00:27:35,590 이것의 요점 때문에 운동 도트 슬래시 인사했다. 566 00:27:35,590 --> 00:27:38,089 그리고 지금 나는 안녕하세요 세계 프로그램이 있습니다. 567 00:27:38,089 --> 00:27:39,880 그래서 앞으로 이동, 우리는 거의 항상있어 568 00:27:39,880 --> 00:27:42,088 우리의 프로그램을 컴파일하는 것 명령 만들기를 사용하여. 569 00:27:42,088 --> 00:27:45,300 그리고 우리가 실행할거야 점은 슬래시, 프로그램의 이름입니다. 570 00:27:45,300 --> 00:27:49,610 그러나에 대한 일을되어 있는지 확인 실현 당신은,이 컴파일러 자체를하지입니다. 571 00:27:49,610 --> 00:27:53,310 그것은 단지 편리한 프로그램입니다 그 컴파일러를 실행하는 방법을 알고 572 00:27:53,310 --> 00:27:56,470 당신 자신이 사용할 수 있도록 실행합니다. 573 00:27:56,470 --> 00:28:00,220 >> 어떤 다른 명령이 존재 Linux 및 턴 CS50 IDE에서? 574 00:28:00,220 --> 00:28:03,107 우리는 곧이 있다고 볼 수 있습니다 CD 명령, 변경 디렉토리. 575 00:28:03,107 --> 00:28:05,190 이것은 이내에 할 수 있습니다 명령 줄 인터페이스 576 00:28:05,190 --> 00:28:07,610 다시 앞으로 이동하고, 다른 폴더를 열어 577 00:28:07,610 --> 00:28:08,860 마우스를 사용하지 않고. 578 00:28:08,860 --> 00:28:12,470 >> 목록 약자 우리가 본 LS, 현재 디렉토리에있는 파일. 579 00:28:12,470 --> 00:28:14,650 디렉터리를 확인, 당신은 할 수 아마 추측하기 시작 580 00:28:14,650 --> 00:28:18,150 이 디렉토리를 만들 now-- 무엇을 의미하는지, 당신은 폴더를 만들려면. 581 00:28:18,150 --> 00:28:21,270 제거를위한 RM, RM 디렉터리에 대한 , directory-- 이러한 제거 582 00:28:21,270 --> 00:28:24,160 다시, 명령어 라인이다 당신이 무엇을 등가물 583 00:28:24,160 --> 00:28:26,945 마우스로 CS50 IDE에서 할 수있다. 584 00:28:26,945 --> 00:28:28,820 하지만 당신은 곧 찾을 수 있습니다 때로는 그것은 단지 585 00:28:28,820 --> 00:28:30,610 빨리 많이해야 할 일 키보드와 가지, 586 00:28:30,610 --> 00:28:33,690 궁극적으로 훨씬 더 강력한. 587 00:28:33,690 --> 00:28:36,440 >> 그러나 주장하기 어렵다 무엇이든 우리가 지금까지 해왔 588 00:28:36,440 --> 00:28:39,990 모든 경우는 모두 강력한 우리는 안녕하세요 세계, IS 말을했습니다. 589 00:28:39,990 --> 00:28:43,740 그리고, 사실, 나는 하드 코딩 내 프로그램에 안녕하세요 세계 단어. 590 00:28:43,740 --> 00:28:45,530 더 역 동성이 아직 없습니다. 591 00:28:45,530 --> 00:28:49,320 스크래치는 크기의 순서였다 더 흥미로운 지난 주. 592 00:28:49,320 --> 00:28:51,220 >> 그리고 그래서 거기에 도착 할 수 있습니다. 593 00:28:51,220 --> 00:28:55,310 의에 의해 그 방향으로 단계를 보자 이러한 기능 중 일부의 방법입니다. 594 00:28:55,310 --> 00:28:59,470 그래서뿐만 아니라 C는 printf와 함께 않습니다, 다른 기능과 송이 595 00:28:59,470 --> 00:29:01,850 일부는 우리가 나타납니다 시간이 지남에, 그렇지 않습니다 596 00:29:01,850 --> 00:29:05,760 바로 잡아 모든 것을 쉽게 사용자 입력을 얻는데 게이트. 597 00:29:05,760 --> 00:29:08,140 >> 약점의 사실, 하나 C와 같은 언어, 598 00:29:08,140 --> 00:29:10,140 심지어 자바와 아직 다른 사람들이 없다는 것이다 599 00:29:10,140 --> 00:29:15,860 단지 같은 것들을 얻을 쉽게 만들 사용자 또는 문자열, 단어의 정수, 600 00:29:15,860 --> 00:29:19,970 및 문구처럼 혼자 일을하자 소수점 값, 또는 실수 부동 601 00:29:19,970 --> 00:29:23,240 정말 소수점과 함께 우리가 곧 볼 수 있습니다로 긴 번호. 602 00:29:23,240 --> 00:29:27,000 그래서 여기에 기능의 목록이 다른 스크래치 퍼즐 조각처럼 603 00:29:27,000 --> 00:29:31,090 우리는 CS50에 미리 설치되어 있는지 우리는 몇 주 동안 사용합니다 IDE 604 00:29:31,090 --> 00:29:34,010 훈련 종류의 바퀴, 그리고 결국 그들을 이륙 해 봐 605 00:29:34,010 --> 00:29:37,210 후드, 아마도에서 아래 이런 일이 어떻게 구현된다. 606 00:29:37,210 --> 00:29:40,460 >> 그러나이 작업을 수행하는,하자 실제로 프로그램을 작성. 607 00:29:40,460 --> 00:29:41,770 내가 지금 가서 보자. 608 00:29:41,770 --> 00:29:44,750 그리고 나는 새를 만들거야 이 작은 플러스 기호 (+)를 클릭하여 파일을, 609 00:29:44,750 --> 00:29:45,970 및 새 파일을 클릭. 610 00:29:45,970 --> 00:29:49,250 >> 나는이 다음을 저장거야 ,의 말을하자 하나, string.c, 611 00:29:49,250 --> 00:29:50,750 나는 문자열 놀고 싶어하기 때문이다. 612 00:29:50,750 --> 00:29:53,990 그리고 C에서 문자열은 그냥 일련의 문자. 613 00:29:53,990 --> 00:29:56,090 그래서 지금의 앞서 가자 그리고 다음을 수행합니다. 614 00:29:56,090 --> 00:30:01,204 >> 포함 표준 IO.h-- 및 그것은 표준 IO를 밝혀 615 00:30:01,204 --> 00:30:03,360 IO는 입력 및 출력을 의미한다. 616 00:30:03,360 --> 00:30:05,920 그래서 그것은 밝혀 여기에이 라인은 무엇입니까 617 00:30:05,920 --> 00:30:08,140 printf가를 사용하는 우리 이웃입니다. 618 00:30:08,140 --> 00:30:10,410 printf와, 물론, 출력을 생성합니다. 619 00:30:10,410 --> 00:30:15,000 그래서의 printf를 사용하기 위해서는, 회전 밖으로 당신은 코드 행이 있어야 620 00:30:15,000 --> 00:30:16,040 파일의 상단에. 621 00:30:16,040 --> 00:30:18,456 >> 그리고 우리는 다시 올 거 야 그건 정말 오래 전에 의미한다. 622 00:30:18,456 --> 00:30:20,400 이 글은 그 밝혀 내가 쓰는 모든 C 프로그램, 623 00:30:20,400 --> 00:30:23,640 나는 그것을 시작하는 데있어 다음과 같습니다 코드입니다. 624 00:30:23,640 --> 00:30:26,860 그리고 당신은 CS50 IDE를 발견하고 있습니다 다른 통합 개발 625 00:30:26,860 --> 00:30:30,050 그것과 같은 환경, 최선을 시도하려고 626 00:30:30,050 --> 00:30:31,780 그들은 당신의 생각을 완료 할 수 있습니다. 627 00:30:31,780 --> 00:30:35,930 사실, 잠시 전에 내가 취소하는 경우 난 그냥 무슨 짓을했는지, 내가 Enter 키를 누릅니다. 628 00:30:35,930 --> 00:30:39,160 >> 나는 그 다음 오픈 곱슬 충돌 중괄호, 다시 Enter 키를 누릅니다. 629 00:30:39,160 --> 00:30:40,430 그리고 내 생각을 마쳤다. 630 00:30:40,430 --> 00:30:45,140 그것은 나에게 새로운 라인을 준 덜 들여 쓰기하지 좋은 문체 이유로 우리는 볼 수 있습니다. 631 00:30:45,140 --> 00:30:48,559 그리고 자동 준 그 중괄호 내 생각을 완료합니다. 632 00:30:48,559 --> 00:30:50,600 지금, 그것은 항상 않습니다 당신이 무엇을 원하는 것 같아요. 633 00:30:50,600 --> 00:30:53,620 그러나 많은 부분, 그것을 수행 몇 가지 키 입력을 저장합니다. 634 00:30:53,620 --> 00:30:59,560 그래서 잠시 전, 우리는이 program--를 실행 안녕하세요, 세계, 후 컴파일, 635 00:30:59,560 --> 00:31:00,460 다음을 달렸다. 636 00:31:00,460 --> 00:31:01,867 하지만 동성 여기가 없습니다. 637 00:31:01,867 --> 00:31:03,700 우리가 원한다면 무엇 뭔가 다른 일을? 638 00:31:03,700 --> 00:31:07,630 글쎄, 난 사실에 무엇을 원하는 경우 사용자로부터 문자열을 얻을? 639 00:31:07,630 --> 00:31:11,250 나는 퍼즐 조각을 사용하는거야 문자열을 얻을 that-- 정확하게했다. 640 00:31:11,250 --> 00:31:15,860 >> C에서 밝혀 원하지 않는 때 퍼즐 조각에 입력을 제공하기 위해, 641 00:31:15,860 --> 00:31:19,360 이상 제대로 기능하려면 말 그대로 그냥 여는 괄호을 642 00:31:19,360 --> 00:31:20,430 닫는 괄호. 643 00:31:20,430 --> 00:31:25,540 거기 것처럼 그래서입니다 더 흰색 상자에 입력 없습니다. 644 00:31:25,540 --> 00:31:27,720 말 블록 전에 작은 흰색 상자를했다. 645 00:31:27,720 --> 00:31:29,660 우리는 지금 그 흰색 상자가 없습니다. 646 00:31:29,660 --> 00:31:33,310 >> 하지만 GET 문자열을 호출 할 때, I 어딘가에 결과를 넣을. 647 00:31:33,310 --> 00:31:37,680 그래서 C에서 매우 일반적인 패러다임이다 여기에 도착 문자열 같은 함수를 호출, 648 00:31:37,680 --> 00:31:41,070 다음 반환 값을 저장합니다. 649 00:31:41,070 --> 00:31:44,450 이 결과의 그것 뭔가 노력. 650 00:31:44,450 --> 00:31:47,630 >> 그리고 무엇 인 프로그램의 구성, 651 00:31:47,630 --> 00:31:53,450 C 지금 스크래치 또는 여부, 우리는 그 실제로 뭔가를 저장하는 데 사용할 수 있습니까? 652 00:31:53,450 --> 00:31:55,990 그것은 바로, 변수 호출? 653 00:31:55,990 --> 00:32:00,320 그리고 스크래치, 우리는 정말하지 않습니다 변수에 무슨 일이 있었는지 관심. 654 00:32:00,320 --> 00:32:02,170 >> 그러나,이 경우 실제로 수행. 655 00:32:02,170 --> 00:32:03,719 나는 문자열을 말하는거야. 656 00:32:03,719 --> 00:32:05,510 그리고 내가 부를 수 내가 원하는이 아무것도. 657 00:32:05,510 --> 00:32:08,340 나는 그것을 호출하는거야 이름, 문자열을 얻을 가져옵니다. 658 00:32:08,340 --> 00:32:10,250 >> 그리고 지금 당신이 경우에도 이에 작은 새, 659 00:32:10,250 --> 00:32:11,984 나는 몇 가지 세부 사항을 결여하고있어 것을 알 수 있습니다. 660 00:32:11,984 --> 00:32:13,150 나는 세미콜론을 잊고 있어요. 661 00:32:13,150 --> 00:32:14,400 나는이 생각을 완료해야합니다. 662 00:32:14,400 --> 00:32:17,480 그래서 나는 나의 커서를 이동하려고 해요 거기에 세미콜론을 기록했다. 663 00:32:17,480 --> 00:32:19,130 그리고 난 그냥 무슨 짓을 한거야? 664 00:32:19,130 --> 00:32:21,440 이 코드 줄에서, 순간에 5 번, 665 00:32:21,440 --> 00:32:23,799 나는 어떤 입력을 가진 GET 문자열을 호출하고 있습니다. 666 00:32:23,799 --> 00:32:26,090 그래서 더 작은 흰색이 없다 저장 블록이이 같은 상자. 667 00:32:26,090 --> 00:32:28,590 >> 난 그냥, 헤이, 말하는거야 컴퓨터가 나에게 문자열을 얻을. 668 00:32:28,590 --> 00:32:31,390 등호는 정말 아니다 등호는 그 자체. 669 00:32:31,390 --> 00:32:33,790 이 과제의 의미 연산자 670 00:32:33,790 --> 00:32:37,860 이봐, 컴퓨터, 값을 이동 왼쪽 위에 오른쪽에서. 671 00:32:37,860 --> 00:32:40,480 그리고 왼쪽에, 나는 다음과 같은 수 있습니다. 672 00:32:40,480 --> 00:32:43,580 >> 이봐, 컴퓨터가 나에게 string--을 제공 일련의 문자. 673 00:32:43,580 --> 00:32:45,637 그리고 그 캐릭터의 이름을 부른다. 674 00:32:45,637 --> 00:32:47,220 그리고 난 이름을 호출 할 필요가 없습니다. 675 00:32:47,220 --> 00:32:49,970 >> 나는 종래 그것을 호출 할 수 있습니다, S 같은, 676 00:32:49,970 --> 00:32:52,900 우리는에 내가 사용 많은처럼 변수를 내가 전화. 677 00:32:52,900 --> 00:32:54,829 하지만 지금은 그것으로 뭔가를 할 필요가있다. 678 00:32:54,829 --> 00:32:57,370 그것은 꽤 어리석은 것 실행이 코드를 컴파일 시도 679 00:32:57,370 --> 00:32:59,410 이 프로그램은, 비록 나는 문자열을 받고 있어요, 680 00:32:59,410 --> 00:33:01,580 그냥 아직 때문에 안녕하세요 세계를 말하는 것. 681 00:33:01,580 --> 00:33:06,140 >> 그러나 나는이 위치를 변경 무엇을 원하는 경우. 682 00:33:06,140 --> 00:33:07,940 왜 이렇게하지? 683 00:33:07,940 --> 00:33:11,632 퍼센트의, 쉼표의. 684 00:33:11,632 --> 00:33:13,090 그리고 이것은 여전히​​ 작은 비밀입니다. 685 00:33:13,090 --> 00:33:15,560 >> 그래서 내 변수를 더 명확하게 할 수 있습니다. 686 00:33:15,560 --> 00:33:17,510 날이 변수 이름의 이름을 보자. 687 00:33:17,510 --> 00:33:20,230 그리고 우리가 애타게 할 수없는 경우 보자 떨어져 여기에 무슨 일이 일어나고 있는지. 688 00:33:20,230 --> 00:33:22,770 >> 그래서 라인 오에, 나는 문자열을 받고 있어요. 689 00:33:22,770 --> 00:33:25,620 그리고 그 문자열을 저장하고있어, 어떤 사용자는에 입력했다 690 00:33:25,620 --> 00:33:28,430 자신의 키보드에서, 이름라는 변수입니다. 691 00:33:28,430 --> 00:33:30,590 그리고 그것은 밝혀 printf와는 단지 않습니다 692 00:33:30,590 --> 00:33:34,220 두 번에 하나의 인수를 따옴표, 큰 따옴표 하나의 입력. 693 00:33:34,220 --> 00:33:39,100 >> 또한 2 또는 3 또는 그 이상, 예를 취할 수 두 번째 또는 세 번째 또는 네 번째 것을 694 00:33:39,100 --> 00:33:42,320 변수의 모든 이름은, 또는 구체적으로, 값 695 00:33:42,320 --> 00:33:48,610 당신이에 연결하려는, 동적으로, 따옴표로 해당 문자열. 696 00:33:48,610 --> 00:33:52,110 즉, 어떤 이 잘못된 것입니까? 697 00:33:52,110 --> 00:33:57,920 내가 방금 말한 경우 안녕하세요 이름, 백 슬래시 N, 내 파일을 저장 한 코드를 컴파일 698 00:33:57,920 --> 00:34:01,660 이 달렸다, 어떤 일이 일어날까요? 699 00:34:01,660 --> 00:34:05,139 >> 그냥 인사 말 것 말 그대로 N-A-M-E, 이름, 700 00:34:05,139 --> 00:34:07,900 어떤 종류의 바보 때문에입니다 그것은 세계 다르지 없습니다. 701 00:34:07,900 --> 00:34:10,400 그래서 따옴표에서 아무것도이다 무엇을 말 그대로 인쇄됩니다. 702 00:34:10,400 --> 00:34:12,520 내가 가지고 싶다면 이 자리 표시 자, 703 00:34:12,520 --> 00:34:14,422 실제로 사용할 필요가 일부 특수 구문. 704 00:34:14,422 --> 00:34:17,380 당신이 읽을 경우 그리고 그것은 밝혀 printf 함수에 대한 설명서, 705 00:34:17,380 --> 00:34:21,320 그것은 당신을 말할 것이다 당신은 퍼센트의를 사용하는 경우, 706 00:34:21,320 --> 00:34:23,920 다음과 같이이 값을 대체 할 수 있습니다. 707 00:34:23,920 --> 00:34:27,190 >> 그 후 쉼표 후 큰 따옴표, 당신 만 708 00:34:27,190 --> 00:34:29,179 의 이름을 쓰기 당신이 원하는 변수 709 00:34:29,179 --> 00:34:33,790 그 형식으로의 연결합니다 코드 또는 형식 지정자, 710 00:34:33,790 --> 00:34:35,469 퍼센트의 문자열. 711 00:34:35,469 --> 00:34:39,190 그리고 지금은, 내 파일을 저장 한 경우 내 단말기에 다시 아래로 이동합니다. 712 00:34:39,190 --> 00:34:42,870 내가 문자열을 확인 입력 때문에, 이러한 다시 이름 713 00:34:42,870 --> 00:34:45,510 내가 전에 선택한 파일 string.c입니다. 714 00:34:45,510 --> 00:34:48,510 >> 그래서 내가 입력 한 문자열을 확인 말하는거야. 715 00:34:48,510 --> 00:34:51,550 선 (善) 오, 모든 봐 실수 우리는 이미했습니다. 716 00:34:51,550 --> 00:34:55,540 그리고 이것은이 정말 무엇인지, is-- 여섯, 일곱 줄 프로그램처럼? 717 00:34:55,540 --> 00:34:57,790 그래서이 곳은 매우 수있다 빨리 압도 얻을. 718 00:34:57,790 --> 00:35:00,890 >> 이 터미널 창은있다 지금 막 역류 719 00:35:00,890 --> 00:35:03,230 오류 메시지의 거대한 숫자. 720 00:35:03,230 --> 00:35:07,560 확실히, 나는 더 많은 오류가 없습니다 나는보다 메시지는 코드의 라인을 가지고있다. 721 00:35:07,560 --> 00:35:08,680 그래서 무슨 일입니까? 722 00:35:08,680 --> 00:35:10,920 >> 음, 최선의 전략 당신은 언제 할까 723 00:35:10,920 --> 00:35:13,710 압도적가 발생합니까 그런 오류의 목록, 724 00:35:13,710 --> 00:35:16,690 다시 스크롤된다 명령을 찾습니다 당신은 그냥 도망 내 경우에는 어떤 725 00:35:16,690 --> 00:35:18,020 문자열을 만들 수 있습니다. 726 00:35:18,020 --> 00:35:21,630 한 만든다 무엇을 봐, 그리고 그 것을이다 긴 연타 명령이 더 큰 문제. 727 00:35:21,630 --> 00:35:22,950 >> 하지만 빨간색은 나쁜 것입니다. 728 00:35:22,950 --> 00:35:24,750 녹색으로 노력하고있다 부드러운 도움. 729 00:35:24,750 --> 00:35:26,140 그러나이 경우에도, 여전히 나쁘다. 730 00:35:26,140 --> 00:35:27,510 그러나 어디는 나쁘다? 731 00:35:27,510 --> 00:35:31,450 >> String.c, 라인 오, 문자 오. 732 00:35:31,450 --> 00:35:32,930 그래서 이것은 단지 행해지고 있습니다. 733 00:35:32,930 --> 00:35:36,060 뭔가 대장 뭔가 의미 행 번호와 문자 수입니다. 734 00:35:36,060 --> 00:35:41,080 오류, 신고되지 않은 사용 식별자 문자열. 735 00:35:41,080 --> 00:35:42,900 당신은 표준 찾으시는 것입니까? 736 00:35:42,900 --> 00:35:45,530 >> 그래서, 불행하게도, 연타 도움이 될하려고합니다. 737 00:35:45,530 --> 00:35:46,850 그러나이 경우, 잘못. 738 00:35:46,850 --> 00:35:49,350 아니, 연타, 나는 표준 IO를 의미하지 않았다. 739 00:35:49,350 --> 00:35:51,070 나는 그래, 줄 하나에 그 의미. 740 00:35:51,070 --> 00:35:53,420 >> 그러나 라인 다섯은 여기 하나입니다. 741 00:35:53,420 --> 00:35:57,040 그리고 연타하지 않습니다 S-T-R-I-N-G를 이해합니다. 742 00:35:57,040 --> 00:36:01,490 이 선언되지 않은 식별자,이다 그냥 한 번도 본 적이없는 단어입니다. 743 00:36:01,490 --> 00:36:05,730 그리고는 C 때문에, 언어의 우리는 지금 코드를 작성하는 744 00:36:05,730 --> 00:36:08,070 문자열이라는 변수가 없습니다. 745 00:36:08,070 --> 00:36:11,380 >> 그것은 기본적으로 지원하여,하지 않습니다 뭔가 문자열을했다. 746 00:36:11,380 --> 00:36:16,750 즉의 CS50 편이다 전문 용어,하지만 매우 종래. 747 00:36:16,750 --> 00:36:18,600 다음과 같이 그러나 나는이 문제를 해결할 수 있습니다. 748 00:36:18,600 --> 00:36:22,090 >> 나는 한 줄의 코드를 추가하는 경우 이 프로그램의 상단에, 749 00:36:22,090 --> 00:36:27,890 다른 파일 CS50.h을 포함 어딘가 CS50 IDE의 내부 어딘가에 750 00:36:27,890 --> 00:36:30,820 하드 드라이브에, 말하자면, 우분투 운영 체제 751 00:36:30,820 --> 00:36:33,590 내가 실행 해요 것으로, 그 의 파일입니다 752 00:36:33,590 --> 00:36:38,740 운영을 가르 칠 것 문자열이 무엇인지 시스템, 단지 753 00:36:38,740 --> 00:36:41,930 표준 io.h 같은 파일입니다 의 운영 체제 754 00:36:41,930 --> 00:36:44,430 무엇의 printf를 가르 칠 것. 755 00:36:44,430 --> 00:36:46,810 >> 사실, 우리가받은 것 매우 비슷한 메시지 756 00:36:46,810 --> 00:36:50,600 IO 표준을 인정했다면 IO.h가와의 printf를 사용했습니다. 757 00:36:50,600 --> 00:36:53,632 그래서 나는 앞으로 그냥 갈거야 내 화면을 취소 제어 L을. 758 00:36:53,632 --> 00:36:56,340 아니면 명확 입력 할 수 있으며 것 그냥 터미널 창을 취소합니다. 759 00:36:56,340 --> 00:36:58,020 하지만 당신은 아직 시간이 다시 스크롤 할 수 있습니다. 760 00:36:58,020 --> 00:37:01,100 >> 그리고 문자열을 확인 다시 실행거야. 761 00:37:01,100 --> 00:37:03,660 입력, 내 손가락이 시간을 교차. 762 00:37:03,660 --> 00:37:05,380 나의 하나님 오, 일했다. 763 00:37:05,380 --> 00:37:09,280 그것은 나에게 긴 비밀 명령을 보여줍니다 즉, 어떤 연타를 통해 생성 확인하다 764 00:37:09,280 --> 00:37:10,460 하지만 오류 메시지. 765 00:37:10,460 --> 00:37:12,460 그래서 비록 실현 당신은 완전히 얻을 수 있습니다 766 00:37:12,460 --> 00:37:14,480 압도 오류 메시지의 수, 767 00:37:14,480 --> 00:37:17,540 그냥이 성가신 계단식 수 있습니다 연타가 이해하지 못하는 효과, 768 00:37:17,540 --> 00:37:19,620 다음을 의미 한 가지, 다음 단어를 이해하지 못하는, 769 00:37:19,620 --> 00:37:20,560 또는 다음의 행. 770 00:37:20,560 --> 00:37:22,850 그리고 그것은 당신의 코드에 질식. 771 00:37:22,850 --> 00:37:24,440 하지만 수정은 간단 수 있습니다. 772 00:37:24,440 --> 00:37:27,822 그래서 항상에 초점 출력의 첫 번째 라인. 773 00:37:27,822 --> 00:37:29,530 그리고 당신이하지 않으면 그것을 이해, 그냥 봐 774 00:37:29,530 --> 00:37:32,480 키워드에 대해 그 수 있습니다 단서 및 행 번호, 775 00:37:32,480 --> 00:37:34,650 상기 문자 곳 그 실수는있을 수 있습니다. 776 00:37:34,650 --> 00:37:40,328 >> 지금 내가 가서 입력하자 점은 입력 문자열을 슬래시. 777 00:37:40,328 --> 00:37:44,340 흠, 그것은 안녕하세요 아무 말도 아닙니다. 778 00:37:44,340 --> 00:37:46,210 왜? 779 00:37:46,210 --> 00:37:48,170 음, 어디가 실행되고, 기억? 780 00:37:48,170 --> 00:37:53,730 >> 그것은 아마 순간에 붙어 루프에서, 라인 여섯에, 만약에 당신, 781 00:37:53,730 --> 00:37:56,950 디자인 문자열을 가져 오기 때문에, CS50 직원에 의해 작성, 782 00:37:56,950 --> 00:38:00,350 말 그대로 그냥 앉아 의미 이 기다리고, 기다리고, 783 00:38:00,350 --> 00:38:01,850 및 문자열을 기다리고. 784 00:38:01,850 --> 00:38:03,792 우리는 문자열을 의미하는 모든 인간 입력된다. 785 00:38:03,792 --> 00:38:04,500 그래서 당신은 무엇인지? 786 00:38:04,500 --> 00:38:05,166 내가 가서 보자. 787 00:38:05,166 --> 00:38:08,704 단지 변덕에, 저를 보자 내 이름은 데이비드을 입력, 입력합니다. 788 00:38:08,704 --> 00:38:10,120 지금은보다 동적 인 프로그램이 있습니다. 789 00:38:10,120 --> 00:38:11,240 그것은 안녕하세요 데이비드 말했다. 790 00:38:11,240 --> 00:38:16,280 >> 내가 가서 다시 실행하면, 내가 입력 Zamila 이름을 말하려고 할 수 있습니다. 791 00:38:16,280 --> 00:38:17,940 그리고 지금 우리는 역동적 인 프로그램이 있습니다. 792 00:38:17,940 --> 00:38:19,380 내가 열심히 세계를 구분하지 않았습니다. 793 00:38:19,380 --> 00:38:21,760 나는 하드 코딩하지 않은 이름, 또는 다윗, 또는 Zamila. 794 00:38:21,760 --> 00:38:25,350 >> 지금은 프로그램과 같은 훨씬 더 이 입력을하면 우리는 여기서, 알고 795 00:38:25,350 --> 00:38:27,870 그것은 약간 다른 출력을 생성합니다. 796 00:38:27,870 --> 00:38:31,020 이제, 이것은 최선 아니다 사용자 경험, 또는 UX. 797 00:38:31,020 --> 00:38:33,000 나는 프로그램을 실행합니다. 798 00:38:33,000 --> 00:38:35,830 >> 내가 생각하고있는 무슨 모른다 내가 실제로보고하지 않는 한,해야 할 일 799 00:38:35,830 --> 00:38:37,290 또는 소스 코드를 기억한다. 800 00:38:37,290 --> 00:38:39,640 그럼 사용자를 만들어 보자 조금 더 나은 경험 801 00:38:39,640 --> 00:38:41,240 사물의 단순한와. 802 00:38:41,240 --> 00:38:44,782 날이 다시 가자 프로그램은 간단하게 printf의 말. 803 00:38:44,782 --> 00:38:48,870 >> 그리고, 내가 가서 이름, 콜론을 가정 해 봅시다 공백, 다음 세미​​콜론. 804 00:38:48,870 --> 00:38:51,170 그리고 단지 차기에 대한, 아니 반발 없음. 805 00:38:51,170 --> 00:38:52,980 그리고는 의도적이다 내가 원하지 않는 때문에 806 00:38:52,980 --> 00:38:54,590 프롬프트는 다음 행으로 이동합니다. 807 00:38:54,590 --> 00:38:58,800 >> 나는 문자열을, 대신,이 작업을 수행 할 수 새로운 기계에 내 코드를 다시 컴파일하기 808 00:38:58,800 --> 00:39:00,980 코드 점은 문자열을 슬래시. 809 00:39:00,980 --> 00:39:02,460 아,이 훨씬 예뻐이다. 810 00:39:02,460 --> 00:39:05,780 지금은 실제로 어떤 컴퓨터 알고 나, 이렇게 이름을 지정하려고합니다. 811 00:39:05,780 --> 00:39:10,020 >> 그래서 내가 가서 입력 할거야 롭에, 안녕하세요 롭을 입력합니다. 812 00:39:10,020 --> 00:39:13,640 그래서, 마지막에, 아직 실현 하루 만 아홉 줄 프로그램의. 813 00:39:13,640 --> 00:39:15,090 그러나 우리는이 아기 조치를 취했습니다. 814 00:39:15,090 --> 00:39:18,380 >> 우리는 한 줄 쓴과 우리 익숙한, printf와, 안녕하세요 세계이었다. 815 00:39:18,380 --> 00:39:19,980 그런 다음 우리는 약간을 취소 한. 816 00:39:19,980 --> 00:39:21,560 그리고 우리는 실제로 GET 문자열을 사용했다. 817 00:39:21,560 --> 00:39:23,362 그리고 우리는 변수에 그 값을 던졌다. 818 00:39:23,362 --> 00:39:26,070 그리고 우리가 나서서 개선 그것은 세 번째 라인 추가. 819 00:39:26,070 --> 00:39:29,220 그리고 이러한 반복 과정 소프트웨어를 작성하는 것은 참으로 중요합니다. 820 00:39:29,220 --> 00:39:33,420 CS50, 그리고 일반적으로 생활에, 당신은 일반적으로 앉아서는 안 821 00:39:33,420 --> 00:39:36,800 염두에두고 프로그램을, 쓰기를 시도 한 번에 전체 망할 것. 822 00:39:36,800 --> 00:39:40,810 >> 그것은 불가피하게 발생합니다 자신이 여기에 본 우리보다 더 많은 오류. 823 00:39:40,810 --> 00:39:44,070 심지어 나는이 일에 지속적으로 다른 바보 같은 실수를, 824 00:39:44,070 --> 00:39:47,480 실제로 열심히 실수는 알아 내기 어렵습니다 그. 825 00:39:47,480 --> 00:39:52,095 하지만 당신은 더 많은 실수가 더 많은 것 코드 라인은 한 번에 모든 물품. 826 00:39:52,095 --> 00:39:54,220 그리고이 연습, 코드를 조금 쓰기 827 00:39:54,220 --> 00:39:57,930 당신이 편안하게 걸, 컴파일 그것은, 그것을 실행 더 일반적으로 테스트 828 00:39:57,930 --> 00:40:01,370 우리는 계속 그렇게처럼 on-- 이동 레이어 지난 주 레이어, 829 00:40:01,370 --> 00:40:04,190 뭔가에서 구축 매우 더 복잡한 것을 단순, 830 00:40:04,190 --> 00:40:05,200 여기에 동일한 작업을 수행. 831 00:40:05,200 --> 00:40:08,500 앉아서하려고하​​지 마십시오 전체 문제를 작성합니다. 832 00:40:08,500 --> 00:40:10,780 실제로이 아기 조치를 취합니다. 833 00:40:10,780 --> 00:40:15,100 >> 자, 문자열은 모든되지 않습니다 자신에게 그 유용합니다. 834 00:40:15,100 --> 00:40:18,210 우리는에 같이 이상적으로, 실제로 거라고 우리의 툴킷에 뭔가가있다. 835 00:40:18,210 --> 00:40:20,990 그래서 실제로 정확하게 할 수 있습니다. 836 00:40:20,990 --> 00:40:24,900 >> 내가 지금 가서 채찍하자 약간 다른 프로그램입니다. 837 00:40:24,900 --> 00:40:28,320 그리고 우리는 정수에 대해,이 int.c를 호출 할 수 있습니다. 838 00:40:28,320 --> 00:40:30,870 나는 유사에 갈거야, CS550.h을 포함한다. 839 00:40:30,870 --> 00:40:33,060 나는 표준 IO를 포함하는거야. 840 00:40:33,060 --> 00:40:36,630 그리고 꽤 공통 될 것 클래스의이 처음 몇 일있다. 841 00:40:36,630 --> 00:40:39,050 >> 그리고 나는 준비에 갈거야 자신 주요 기능. 842 00:40:39,050 --> 00:40:43,370 그리고 지금 대신 문자열을 가져 오는, 이제 가서 int를 얻을 수 있습니다. 843 00:40:43,370 --> 00:40:49,285 의 난을 호출하자, 그것을 얻을 전화 INT, 가까운 괄호, 세미콜론. 844 00:40:49,285 --> 00:40:51,410 그리고 지금의이하자 그것으로 뭔가의 printf. 845 00:40:51,410 --> 00:40:56,190 >> 의이 같은 말을하자 안녕하세요, 백 슬래시 N, 쉼표 전. 846 00:40:56,190 --> 00:41:00,010 그래서 나는 꽤 많이 모방하고있어 난 그냥 잠시 전에 무슨 짓을했는지. 847 00:41:00,010 --> 00:41:01,660 여기 자리가 있습니다. 848 00:41:01,660 --> 00:41:05,150 내가 원하는 때문에, 여기에 내가 쉼표있다 그 자리에 내가 연결합니다. 849 00:41:05,150 --> 00:41:07,250 >> 그럼 가서 해보자 이 프로그램을 컴파일. 850 00:41:07,250 --> 00:41:10,060 이 파일은 int.c.라고 851 00:41:10,060 --> 00:41:12,920 그래서 입력 INT을 말할거야. 852 00:41:12,920 --> 00:41:16,420 오 나의 하나님,하지만 더 큰 문제가, 오른쪽? 853 00:41:16,420 --> 00:41:17,230 실수가있다. 854 00:41:17,230 --> 00:41:19,810 >> 통 사적 실수가있다 여기 있도록 프로그램 할 수 없습니다 855 00:41:19,810 --> 00:41:25,460 int.c, 라인 내부 컴파일 일곱, 문자 (27), 오류 형식 856 00:41:25,460 --> 00:41:28,400 char 형을 지정합니다 즉 무엇이든, 스타. 857 00:41:28,400 --> 00:41:30,020 그러나 인수 유형은 INT이다. 858 00:41:30,020 --> 00:41:33,110 >> 도, 우리는 그래서 여기를 건 ...하지 않을거야 오늘날 많은 물질이 있더라도 859 00:41:33,110 --> 00:41:35,710 우리는 당신을 압도거야 절대적 C의 모든 기능, 860 00:41:35,710 --> 00:41:38,070 그리고, 더 일반적으로 프로그래밍 다만이 처음 몇 주입니다. 861 00:41:38,070 --> 00:41:40,400 그래서 종종 전문 용어가있을거야 있는 당신이 익숙하지. 862 00:41:40,400 --> 00:41:43,350 그리고, 사실, 문자 스타 뭔가 우리는 다시 올거야 863 00:41:43,350 --> 00:41:44,830 주 또는 2의 시간입니다. 864 00:41:44,830 --> 00:41:47,530 >> 하지만 지금은, 우리가 할 수있는 경우에 보자 익숙한 단어를 구문 분석합니다. 865 00:41:47,530 --> 00:41:50,750 Formats-- 그래서 우리는 형식을 들었다 지정, 형식 코드 전에. 866 00:41:50,750 --> 00:41:51,840 즉, 잘 알고 있습니다. 867 00:41:51,840 --> 00:41:53,840 유형 선택 -하지만 인수는 int 형이있다. 868 00:41:53,840 --> 00:41:55,980 잠깐, 내가하는 int입니다. 869 00:41:55,980 --> 00:41:59,230 >> 실제로 아마 퍼센트의 일부 정의 된 의미를 갖습니다. 870 00:41:59,230 --> 00:42:00,230 그리고, 실제로는 않습니다. 871 00:42:00,230 --> 00:42:03,101 정수, 당신이 원하는 경우 를 대체 할 수는 printf, 872 00:42:03,101 --> 00:42:05,350 당신은 사실을 사용해야합니다 다른 형식 지정자. 873 00:42:05,350 --> 00:42:06,890 그리고 당신이 모르는 것 하지 않는 한 누군가가 당신에게 874 00:42:06,890 --> 00:42:07,973 또는 이전을 완료했다. 875 00:42:07,973 --> 00:42:10,490 그러나 %의 나는 무엇을이다 일반적으로 사용될 수있다 876 00:42:10,490 --> 00:42:12,240 정수를 연결하기위한 printf와있다. 877 00:42:12,240 --> 00:42:14,920 또한 퍼센트를 사용할 수 있습니다 진수 정수 라. 878 00:42:14,920 --> 00:42:16,490 하지만 난 여기에 좋은 간단하다. 879 00:42:16,490 --> 00:42:17,590 그래서 우리는 그와 함께 갈 것입니다. 880 00:42:17,590 --> 00:42:21,160 >> 지금 내가 가서 보자 다시 실행 메이크업의 int를 입력합니다. 881 00:42:21,160 --> 00:42:23,328 즉, 오류 좋은 없습니다. 882 00:42:23,328 --> 00:42:27,260 점은, int-- OK, 나쁜 사용자 경험을 슬래시 나는 나 자신에게 이야기하지 않았기 때문에 883 00:42:27,260 --> 00:42:27,760 무엇을 할 수 있습니다. 884 00:42:27,760 --> 00:42:28,426 하지만 괜찮아요. 885 00:42:28,426 --> 00:42:29,480 나는 빨리에 잡는거야. 886 00:42:29,480 --> 00:42:36,260 >> 그리고 지금 내가 가서 보자 데이비드, OK, Zamila, 롭을 입력합니다. 887 00:42:36,260 --> 00:42:37,820 OK, 그래서 이것은 좋은 일이있다. 888 00:42:37,820 --> 00:42:41,710 이 시간, 나는 기능을 사용하고 있습니다 가져 오기 INT라는 퍼즐 조각. 889 00:42:41,710 --> 00:42:44,230 그리고 그것은해서 돌출집니다 우리는거야 term--이 나중에 참조 890 00:42:44,230 --> 00:42:47,730 CS50 직원은 구현했습니다 같은 방법으로 문자열을 얻을 891 00:42:47,730 --> 00:42:50,350 즉, 단지 물리적 것 당신을 위해 문자열을 얻을. 892 00:42:50,350 --> 00:42:54,340 >> 이 글은 가져 오기 INT을 구현했습니다 같은 방식으로 그에만 의지 893 00:42:54,340 --> 00:42:55,590 당신을 위해 정수를 얻을. 894 00:42:55,590 --> 00:42:57,830 그리고 만약, 인간, 협력하지 않는, 그건 895 00:42:57,830 --> 00:43:00,590 말 그대로 단지로 이동 , 다시 시도, 시도 시도라고 896 00:43:00,590 --> 00:43:05,200 문자 그대로 때까지 반복 거기에 앉아 당신은 몇 가지 마법의 숫자로 강요, 897 00:43:05,200 --> 00:43:07,670 50, 50 안녕하세요있다. 898 00:43:07,670 --> 00:43:11,440 >> 아니면 우리는 다시이 작업을 실행하는 경우 입력 42, 42 안녕하세요. 899 00:43:11,440 --> 00:43:15,750 그리고 가져 오기 INT 함수 그 퍼즐 조각의 내부 900 00:43:15,750 --> 00:43:19,050 충분한 로직이 충분히 사상 파악하는 단어는 무엇인가? 901 00:43:19,050 --> 00:43:20,330 그리고 숫자는 무엇인가? 902 00:43:20,330 --> 00:43:23,165 단지 최종적으로, 숫자, 수용성. 903 00:43:23,165 --> 00:43:25,690 904 00:43:25,690 --> 00:43:30,230 >> 그래서이 밝혀 모든 표현이 아니다. 905 00:43:30,230 --> 00:43:30,910 지금까지. 906 00:43:30,910 --> 00:43:33,690 그래서, 실로, 지난 시간 우리 꽤 빨리 갔다 907 00:43:33,690 --> 00:43:38,320 실행 게임, 애니메이션으로, 스크래치 및 예술 작품. 908 00:43:38,320 --> 00:43:42,260 그리고 여기, 우리는 콘텐츠되고있다 안녕하세요 세계, 50 안녕하세요와. 909 00:43:42,260 --> 00:43:43,696 >> 그것은 모든 고무 아니다. 910 00:43:43,696 --> 00:43:46,070 그리고, 실제로이 처음 몇 예를 들면 시간이 좀 걸릴 것입니다 911 00:43:46,070 --> 00:43:47,510 흥분에 램프합니다. 912 00:43:47,510 --> 00:43:49,854 그러나 우리는 훨씬 더이 사실, 지금 제어 할 수 있습니다. 913 00:43:49,854 --> 00:43:51,770 그리고 우리는에거야 매우 빨리 레이어 시작 914 00:43:51,770 --> 00:43:53,870 이러한 기본 프리미티브의 상단에. 915 00:43:53,870 --> 00:43:56,370 >> 하지만 먼저,의 이해하자 한계는 무엇인지. 916 00:43:56,370 --> 00:43:58,620 일의 사실, 하나 스크래치는 쉽게하지 않습니다 917 00:43:58,620 --> 00:44:00,990 보면 정말 우리가 수행되어 보자 후드 아래, 918 00:44:00,990 --> 00:44:03,740 그리고 무엇을 이해 컴퓨터, 그것은 무엇을 할 수있다 919 00:44:03,740 --> 00:44:05,250 그리고 그 한계는 무엇인가. 920 00:44:05,250 --> 00:44:08,580 와, 실제로 그 부족 이해 잠재적 장기 921 00:44:08,580 --> 00:44:12,520 우리 자신의 mistakes-- 서면으로 이어질 수 있습니다 안전하지 않은 소프트웨어를 작성 버그, 그 922 00:44:12,520 --> 00:44:13,880 어떤 방법으로 해킹됩니다. 923 00:44:13,880 --> 00:44:17,130 >> 그럼 향한 어떤 조치를 취할 수 있도록 하여이 조금 더 이해 924 00:44:17,130 --> 00:44:19,710 의 방법은, 다음의 예를 말한다. 925 00:44:19,710 --> 00:44:23,550 내가 가서 구현하는거야 가산기라는 프로그램 진짜 빨리. 926 00:44:23,550 --> 00:44:25,134 마찬가지로,의 함께 몇 가지 숫자를 추가 할 수 있습니다. 927 00:44:25,134 --> 00:44:27,800 그리고 나는 약간의 모서리를 코딩하는거야 여기에, 그리고 그냥 복사 및 붙여 넣기 928 00:44:27,800 --> 00:44:30,270 여기서 난 그냥 예전 그래서 우리는 빨리 갈 수 있습니다. 929 00:44:30,270 --> 00:44:33,090 지금 나는 기본 시작있어 가산기라는 프로그램의. 930 00:44:33,090 --> 00:44:34,670 >> 그리고 이제 가서이 작업을 수행 할 수 있습니다. 931 00:44:34,670 --> 00:44:38,680 내가 가서거야 및 말하자면, INTX은 INT를 얻을 가져옵니다. 932 00:44:38,680 --> 00:44:39,430 그리고 그거 알아? 933 00:44:39,430 --> 00:44:40,990 의 더 나은 사용자 경험을 만들어 보자. 934 00:44:40,990 --> 00:44:45,740 >> 그래서 그냥 x는, 효과적으로 가정 해 봅시다 사용자에게 메시지를 표시하는 것은 우리에게 X를 제공합니다. 935 00:44:45,740 --> 00:44:50,600 그리고 다음 날의 printf, 가서 가정 해 봅시다 어떻게 y는 약, 이번에는 기대 936 00:44:50,600 --> 00:44:53,140 사용자로부터 두 개의 값. 937 00:44:53,140 --> 00:44:59,759 그리고 그냥 진행하자 가령의 printf, x와 y의 합이다. 938 00:44:59,759 --> 00:45:01,300 그리고 지금은 퍼센트의 싶지 않아. 939 00:45:01,300 --> 00:45:09,080 나는 퍼센트 내가하고 싶은, 백 슬래시 N, 다음 합계 값에 연결합니다. 940 00:45:09,080 --> 00:45:10,620 >> 그래서 내가 어떻게이 일에 대해 갈 수 있나요? 941 00:45:10,620 --> 00:45:11,270 당신 그거 알아? 942 00:45:11,270 --> 00:45:12,840 나는 변수를 사용하는 방법을 알고있다. 943 00:45:12,840 --> 00:45:15,140 나 그냥 새, INT z를 선언 할 수 있습니다. 944 00:45:15,140 --> 00:45:16,770 >> 그리고 여기 추측을거야. 945 00:45:16,770 --> 00:45:21,470 이에 등호가있는 경우 언어, 어쩌면 내가 X 플러스 y를 할 단지 수 있습니다, 946 00:45:21,470 --> 00:45:23,660 너무 오래 내 끝으로 세미콜론 생각? 947 00:45:23,660 --> 00:45:28,170 지금은, 아래로 여기 돌아가 Z에 연결할 수 있습니다, 세미콜론이 생각을 완료합니다. 948 00:45:28,170 --> 00:45:33,160 그리고 이제 이러한 경우, 지금 보자 lines-- X의 서열은 INT를 얻을 수있다. 949 00:45:33,160 --> 00:45:34,770 Y는 INT를 얻을 수있다. 950 00:45:34,770 --> 00:45:37,980 >> x와 y를 추가의 값을 저장 z-- 그래서, 다시, 등호를 기억 951 00:45:37,980 --> 00:45:38,560 동일하지 않다. 952 00:45:38,560 --> 00:45:41,100 그것은 오른쪽에서 왼쪽으로 할당합니다. 953 00:45:41,100 --> 00:45:45,180 그리고 이제 합 있음을 인쇄 할 수 X 축과 Y는 문자 Z 아니다 954 00:45:45,180 --> 00:45:46,830 그러나 Z의 내부거야. 955 00:45:46,830 --> 00:45:50,090 그럼 가산기를 만들어 보자 - 좋은, 실수없는이 시간. 956 00:45:50,090 --> 00:45:53,030 점은, 가산기는 입력 슬래시 여기서 x는 1이 될 것입니다. 957 00:45:53,030 --> 00:45:55,380 >> Y는 2 될 것입니다. 958 00:45:55,380 --> 00:45:58,964 그리고 x와 y의 합은 3이다. 959 00:45:58,964 --> 00:46:00,130 그래서 모든 벌금과 좋은입니다. 960 00:46:00,130 --> 00:46:03,260 >> 그래서 당신은 수학을 상상 이 같은 프로그램에서 작동합니다. 961 00:46:03,260 --> 00:46:04,040 하지만 당신은 알아? 962 00:46:04,040 --> 00:46:06,904 이 변수를 줄입니다 (12)도 필요? 963 00:46:06,904 --> 00:46:09,820 당신은 습관을 할 필요가 없습니다 단지 변수에 물건을 저장 964 00:46:09,820 --> 00:46:10,980 단지 당신이 할 수 있기 때문이다. 965 00:46:10,980 --> 00:46:13,550 그리고, 실제로, 통상의 심사숙고 나쁜 디자인 966 00:46:13,550 --> 00:46:18,100 당신이 변수를 작성하는 경우, 호출 이 경우의 Z는 그것을 뭔가 저장 967 00:46:18,100 --> 00:46:21,390 다음 바로 그러나 결코 다시 그것을 사용. 968 00:46:21,390 --> 00:46:24,700 이유는 뭔가에 이름을 지정 Z처럼 그대로 있다면 969 00:46:24,700 --> 00:46:26,770 것을 사용할 것 일이 한 번만 등 970 00:46:26,770 --> 00:46:29,380 사용자가 만든 곳으로 근위 처음에 그것은, 971 00:46:29,380 --> 00:46:31,052 코드 라인의 측면에서 너무 가까이? 972 00:46:31,052 --> 00:46:31,760 그래서 당신은 무엇인지? 973 00:46:31,760 --> 00:46:34,480 그것은 C 꽤 유연 것으로 나타났다. 974 00:46:34,480 --> 00:46:36,586 나는 실제로 원하는 경우 플러그인 값 여기서, 975 00:46:36,586 --> 00:46:38,210 나는 새로운 변수를 선언 할 필요가 없습니다. 976 00:46:38,210 --> 00:46:41,680 난 그냥 플러그인 수 X 플러스 Y, C가 이해하기 때문에 977 00:46:41,680 --> 00:46:43,390 산술 및 수학 연산자. 978 00:46:43,390 --> 00:46:47,140 >> 그래서 나는 단순히이 계산을 말할 수 X 플러스 Y, 그 값은 무엇이든, 979 00:46:47,140 --> 00:46:50,780 그 결과 연결 해당 문자열로 정수입니다. 980 00:46:50,780 --> 00:46:53,730 그래서, 비록 수 있습니다 한 줄 짧은, 981 00:46:53,730 --> 00:46:58,480 더 나은 디자인, 더 나은 프로그램, 적은 코드 따라서,이 때문에 982 00:46:58,480 --> 00:46:59,921 나를 이해하기 이하이다. 983 00:46:59,921 --> 00:47:01,920 그리고 그것은 또한 단지 청소기입니다 우리는 아니에요하는 한 984 00:47:01,920 --> 00:47:04,620 새로운 단어를 소개하고, 새로운 심볼, Z 등, 985 00:47:04,620 --> 00:47:07,510 비록 그들은 정말하지 않습니다 목적의 대부분을 제공합니다. 986 00:47:07,510 --> 00:47:12,890 >> 불행하게도, 수학은 아니다 모든 신뢰할 때로는. 987 00:47:12,890 --> 00:47:15,270 이제 가서이 작업을 수행 할 수 있습니다. 988 00:47:15,270 --> 00:47:18,200 나는 앞서 갈거야 이제 다음을 수행합니다. 989 00:47:18,200 --> 00:47:27,650 >> 의는의 printf, %의 난, 플러스 퍼센트를하자 난, %의 난, 백 슬래시 n을해야한다. 990 00:47:27,650 --> 00:47:32,240 그리고 나는이 항아리 xyx 플러스 y를 할거야. 991 00:47:32,240 --> 00:47:34,821 그래서 난 그냥 다시거야 이 약간 다르게 여기. 992 00:47:34,821 --> 00:47:36,320 내가 그냥 빨리 정신 검사를 할 수 있습니다. 993 00:47:36,320 --> 00:47:37,986 다시 말하지만,의 앞서 자신의 얻을 수 있습니다. 994 00:47:37,986 --> 00:47:41,420 가산기, 도트 슬래시 가산합니다. 995 00:47:41,420 --> 00:47:44,950 X 1, Y 2, 1 더하기 2는 3이다. 996 00:47:44,950 --> 00:47:45,870 그래서 좋다. 997 00:47:45,870 --> 00:47:49,060 그러나의 지금이 복잡하게 비트, 그리고 새로운 파일을 만듭니다. 998 00:47:49,060 --> 00:47:53,350 >> 나는이 하나를 호출하는거야, 정수, 정수에 대한 복수라고. 999 00:47:53,350 --> 00:47:55,980 내가 잠시 전에 어디 나부터 시작하자. 1000 00:47:55,980 --> 00:47:57,770 하지만 지금의 몇 가지 다른 라인을 수행 할 수 있습니다. 1001 00:47:57,770 --> 00:48:03,430 , 내가 가서 다음을 수행하자 의 printf, %의 난, 마이너스 %의 난, 1002 00:48:03,430 --> 00:48:08,959 %의 난, 쉼표 X, 쉼표 YX 마이너스 Y입니다. 1003 00:48:08,959 --> 00:48:10,750 그래서 조금하고 있어요 거기에 다른 수학. 1004 00:48:10,750 --> 00:48:11,624 의 또 다른 하나를 수행 할 수 있습니다. 1005 00:48:11,624 --> 00:48:16,610 그래서 %의 난 배 퍼센트 난 %의 난, 백 슬래시 n은. 1006 00:48:16,610 --> 00:48:21,430 의 플러그인에서 X 및 Y 및 X 시간 Y 보자. 1007 00:48:21,430 --> 00:48:24,530 우리는에 별표 (*)를 사용합니다 시간에 대한 컴퓨터. 1008 00:48:24,530 --> 00:48:26,390 >> 당신은 X를 사용하지 마십시오. X는 여기에 변수 이름. 1009 00:48:26,390 --> 00:48:28,270 당신은 곱셈의 스타를 사용합니다. 1010 00:48:28,270 --> 00:48:29,020 의 하나 이상을 수행 할 수 있습니다. 1011 00:48:29,020 --> 00:48:34,580 PRINTF %의 I, 분할 %의 난에 의해, 퍼센트 난입니다 1012 00:48:34,580 --> 00:48:40,460 백 슬래시 n은. XY y--로 나눈 그래서 당신은 C에서 슬래시를 사용 1013 00:48:40,460 --> 00:48:41,502 분할을 할 수 있습니다. 1014 00:48:41,502 --> 00:48:42,460 그리고의 다른 하나를 수행 할 수 있습니다. 1015 00:48:42,460 --> 00:48:47,920 1016 00:48:47,920 --> 00:48:55,240 %의 난의 나머지 분할 %의 난에 의해 %의 난입니다. 1017 00:48:55,240 --> 00:48:59,550 xy-- 이제 나머지 이상 남은 것입니다. 1018 00:48:59,550 --> 00:49:02,980 당신은 분할 할 때 분자로 분모 1019 00:49:02,980 --> 00:49:05,570 것이 이상 남은 당신은 밖으로 나눌 수 없었다? 1020 00:49:05,570 --> 00:49:07,910 >> 그래서, 정말이 없다 반드시, 상징 1021 00:49:07,910 --> 00:49:09,470 우리는이를 위해 초등학교에 사용했습니다. 1022 00:49:09,470 --> 00:49:13,830 그러나이 C에서 당신은 할 수 있습니다 말 X 모듈 Y, 어디 1023 00:49:13,830 --> 00:49:18,000 이 context--이 퍼센트 기호 혼동을 일으킬 당신 안에있을 때 1024 00:49:18,000 --> 00:49:20,170 큰 따옴표의, 의 printf의 %의 내부 1025 00:49:20,170 --> 00:49:21,830 형식 지정자로 사용됩니다. 1026 00:49:21,830 --> 00:49:25,420 >> 당신은 외부 퍼센트를 사용하는 경우 수학 식에 그, 1027 00:49:25,420 --> 00:49:29,910 이 모듈의 모듈로 연산자이다 우리의 목적을 위해 arithmetic-- 1028 00:49:29,910 --> 00:49:33,650 여기에, 그냥 의미, 무엇 인 X의 나머지 부분은 Y로 나눈? 1029 00:49:33,650 --> 00:49:36,130 Y로 나눈 x를 그래서 X 슬래시 Y입니다. 1030 00:49:36,130 --> 00:49:38,220 Y로 나눈 x의 나머지 부분은 무엇입니까? 1031 00:49:38,220 --> 00:49:41,780 프로그래머가 말하는 것처럼 그것은 모드 y를 x를합니다. 1032 00:49:41,780 --> 00:49:48,300 >> 여기에는 실수를하지 않는 경우 그래서, 저를 보자 가서 복수의 정수는, 좋은 수 있도록, 1033 00:49:48,300 --> 00:49:50,010 도트 슬래시 정수. 1034 00:49:50,010 --> 00:49:55,270 그리고 이제 가서 보자 수행의가, 1, 10을 가정 해 봅시다. 1035 00:49:55,270 --> 00:49:58,390 좋아, 1 더하기 (10)는 검사, 11이다. 1036 00:49:58,390 --> 00:50:01,240 1 마이너스 10 확인, 부정적인 9입니다. 1037 00:50:01,240 --> 00:50:03,420 >> 1 시간 10 검사, 10입니다. 1038 00:50:03,420 --> 00:50:07,090 1 10 is--로 나눈 OK, 우리는 하나를 건너 뛸 수 있습니다. 1039 00:50:07,090 --> 00:50:09,480 10로 나눈 1의 나머지는 1 개입니다. 1040 00:50:09,480 --> 00:50:10,680 맞습니다. 1041 00:50:10,680 --> 00:50:12,630 그러나 여기에 버그가있다. 1042 00:50:12,630 --> 00:50:15,390 >> 그래서 하나는 내가 넣어 내 정확하지, 넘겨. 1043 00:50:15,390 --> 00:50:16,670 나는 0으로 가까이, 의미한다. 1044 00:50:16,670 --> 00:50:20,670 우리가 인 경우 10로 나눈 1, 당신은 알고있다 일부 모서리를 절단해야합니다, 그것은 제로입니다. 1045 00:50:20,670 --> 00:50:28,050 하지만 정말, 1/10해야한다 0.1 또는 0.10, 0.1000, 또는 등. 1046 00:50:28,050 --> 00:50:30,600 >> 정말 제로이어야한다. 1047 00:50:30,600 --> 00:50:35,990 음, 컴퓨터가 밝혀 말 그대로 일을 우리는 어떻게 그것을 말한. 1048 00:50:35,990 --> 00:50:39,460 우리는 y를 나눈 X 같은 수학을하고있다. 1049 00:50:39,460 --> 00:50:44,680 그리고 라인 당 모두 x와 y, 코드의 이전, 정수입니다. 1050 00:50:44,680 --> 00:50:50,440 >> 또한, 라인 (15)에, 우리는 이야기의 printf, 헤이, printf와 플러그인 1051 00:50:50,440 --> 00:50:54,230 정수, 플러그인 정수 플러그에 integer-- 구체적 1052 00:50:54,230 --> 00:50:57,580 X, 다음 y 및 다음 X Y로 나눈. x와 y는 정수이다. 1053 00:50:57,580 --> 00:50:59,060 우리는이 좋은입니다. 1054 00:50:59,060 --> 00:51:01,250 >> 그러나 여기서 x는 x로 어떻게 구분합니까? 1055 00:51:01,250 --> 00:51:06,790 X, Y가되어야로 나눈 수학적으로, 1/10, 0.1, 1056 00:51:06,790 --> 00:51:11,600 어떤 실수, 실수이다 잠재적으로, 소수점을 갖는. 1057 00:51:11,600 --> 00:51:13,230 그것은 정수 아니다. 1058 00:51:13,230 --> 00:51:18,290 >> 그러나 가장 가까운 것입니다 1/10, 0.1 정수? 1059 00:51:18,290 --> 00:51:21,114 그래, 종류의 제로이다. 1060 00:51:21,114 --> 00:51:22,030 0.1이 훨씬 같다. 1061 00:51:22,030 --> 00:51:22,890 그리고 일이 많이 있습니다. 1062 00:51:22,890 --> 00:51:25,870 그래서 1/10에 가까운 0는 하나보다. 1063 00:51:25,870 --> 00:51:30,800 >> 그래서 C는 us--을 위해 무엇을하고 있는지 종류의 우리가 그것을 건 ... 말 때문에 1064 00:51:30,800 --> 00:51:32,600 그 정수를 절단한다. 1065 00:51:32,600 --> 00:51:40,540 또한 다시 한 값을 복용 0.1000 같은 것을해야하는데, 1066 00:51:40,540 --> 00:51:41,800 0 등등. 1067 00:51:41,800 --> 00:51:45,320 그리고 그것은 모든 것을 자르는 것 소수점 1068 00:51:45,320 --> 00:51:47,510 이러한 모든 때문에 물건이 없기 때문에 1069 00:51:47,510 --> 00:51:51,910 정수의 개념에 들어있는 1, 0, 1과 같은 부정적인 단지 숫자로, 1070 00:51:51,910 --> 00:51:55,830 위로 아래로, 그것은 모든 것을 버린다 당신 때문에 소수점 1071 00:51:55,830 --> 00:51:59,020 소수점에 맞지 않을 수 있습니다 정의에 의해 정수입니다. 1072 00:51:59,020 --> 00:52:01,290 >> 그래서 여기에 대한 답은 0이다. 1073 00:52:01,290 --> 00:52:02,600 그래서 우리는 어떻게이 문제를 해결합니까? 1074 00:52:02,600 --> 00:52:04,400 우리는 모두 함께 다른 솔루션이 필요합니다. 1075 00:52:04,400 --> 00:52:06,880 다음과 같이 우리는,이 작업을 수행 할 수 있습니다. 1076 00:52:06,880 --> 00:52:12,820 >> 내가 앞서 가자 새를 만들 파일이 하나 floats.c을했다. 1077 00:52:12,820 --> 00:52:16,500 그리고 여기에 저장 같은 디렉토리, float.c. 1078 00:52:16,500 --> 00:52:19,360 1079 00:52:19,360 --> 00:52:23,260 그리고 내가 가서 복사하자 이전부터 코드의 일부. 1080 00:52:23,260 --> 00:52:27,690 >> 그러나 대신에 점점 int 형은,이 해 보자. 1081 00:52:27,690 --> 00:52:31,037 나에게 부동 소수점 값을 지정 X라고합니다. 여기서 부동 소수점 1082 00:52:31,037 --> 00:52:33,370 값은 그대로입니다 부동 소수점 뭔가. 1083 00:52:33,370 --> 00:52:34,410 그것은 오른쪽으로, 왼쪽으로 이동할 수 있습니다. 1084 00:52:34,410 --> 00:52:35,530 그것은 실수입니다. 1085 00:52:35,530 --> 00:52:38,050 >> 그리고 내가하지 부르 자 INT를 얻을 수 있지만, 플로트를 얻을, 1086 00:52:38,050 --> 00:52:41,420 또한 메뉴 중이었다 C250 라이브러리의 옵션. 1087 00:52:41,420 --> 00:52:43,220 의는 float로 Y를 변경할 수 있습니다. 1088 00:52:43,220 --> 00:52:45,000 그래서이 플로트를 얻을된다. 1089 00:52:45,000 --> 00:52:47,620 >> 그리고 지금, 우리는 정수를 연결하고 싶지 않아요. 1090 00:52:47,620 --> 00:52:53,130 그것은 우리가 퍼센트를 사용할 필요가 밝혀 플로트에 대한 F, 부동 소수점에 대한 %의 F, 1091 00:52:53,130 --> 00:52:54,560 지금 저장합니다. 1092 00:52:54,560 --> 00:53:01,220 그리고 지금, 손가락이 교차 만들 수레, 좋은, 도트 슬래시 수레. 1093 00:53:01,220 --> 00:53:04,280 여기서 x는 하나 (1) Y가 될 것입니다 다시 10을 될 것입니다. 1094 00:53:04,280 --> 00:53:08,240 >> 그리고, 좋은, OK 내 추가 올바른 것입니다. 1095 00:53:08,240 --> 00:53:10,240 나는 더 기대했다 하지만 난 그것을 작성하는 잊어 버렸습니다. 1096 00:53:10,240 --> 00:53:13,250 그럼 가서이 논리 오류를 수정 할 수 있습니다. 1097 00:53:13,250 --> 00:53:16,280 >> 이제 가서 다음을 잡아 보자. 1098 00:53:16,280 --> 00:53:18,080 우리는 단지 약간의 복사 및 붙여 넣기를 할 수 있습니다. 1099 00:53:18,080 --> 00:53:20,080 그리고 마이너스 말거야. 1100 00:53:20,080 --> 00:53:21,890 >> 그리고 나는 시간을 말하는거야. 1101 00:53:21,890 --> 00:53:24,060 그리고 나는 나누어 말할거야. 1102 00:53:24,060 --> 00:53:28,240 그리고, 모듈을 않을거야 이는, 여기에 같은 게르만하지 않습니다 1103 00:53:28,240 --> 00:53:33,690 F로 분할하고, 회 plus-- OK, 이제 다시이 작업을 수행 할 수 있습니다. 1104 00:53:33,690 --> 00:53:44,210 >> 확인 수레, 도트 슬래시 수레, 1, 10, 그리고 - 좋은, 아니, 확인을 클릭합니다. 1105 00:53:44,210 --> 00:53:45,250 그래서 나는 바보입니다. 1106 00:53:45,250 --> 00:53:47,000 그래서 이것은 매우 일반적인 컴퓨터 과학 1107 00:53:47,000 --> 00:53:49,780 이 바보 같은 실수를합니다. 1108 00:53:49,780 --> 00:53:53,100 >> 교육적 목적을 위해, 내가 정말하고 싶었던 1109 00:53:53,100 --> 00:53:57,410 여기에 과학을 변경했다 더하기, 빼기에, 배, 1110 00:53:57,410 --> 00:54:01,140 희망 당신으로, 분할하기 이 운동을하는 동안 나타났습니다. 1111 00:54:01,140 --> 00:54:04,700 그래서 지금의이 다시 컴파일하자 프로그램, 점 슬래시 수레을한다. 1112 00:54:04,700 --> 00:54:07,950 >> 그리고 세 번째로,하자 내 기대를 충족되는지 확인합니다. 1113 00:54:07,950 --> 00:54:21,480 1, 10, 1.000, OK, 그래, 입력, 10.000 나눈, 0.100000이다. 1114 00:54:21,480 --> 00:54:24,952 그리고 그것은 우리가 제어 할 수 있습니다 밝혀 얼마나 많은 숫자는 그 소수점 후입니다. 1115 00:54:24,952 --> 00:54:25,660 우리는 실제로 것입니다. 1116 00:54:25,660 --> 00:54:26,790 우리는 다시 그에게 올 것이다. 1117 00:54:26,790 --> 00:54:28,440 >> 하지만 지금은, 사실, 수학은 올바른 것입니다. 1118 00:54:28,440 --> 00:54:30,090 그래서, 다시, 테이크 아웃은 여기에 무엇입니까? 1119 00:54:30,090 --> 00:54:33,050 그것은 C에 있다는 것을 밝혀 뿐만 아니라 단지 사실, strings--하고, 1120 00:54:33,050 --> 00:54:36,120 정말이없는 우리 때문에 CS50 라이브러리들을 추가 할 수 있습니다. 1121 00:54:36,120 --> 00:54:37,710 그러나 단지 정수가 없습니다. 1122 00:54:37,710 --> 00:54:38,990 >> 또한 수레가 있습니다. 1123 00:54:38,990 --> 00:54:42,810 그리고 다른 데이터의 무리를 밝혀 종류도, 우리는 오래 전에 사용하는거야. 1124 00:54:42,810 --> 00:54:46,270 단일 것인지 밝혀 문자의 문자가 아닌 문자열 1125 00:54:46,270 --> 00:54:47,610 당신은 단지 문자를 사용할 수 있습니다. 1126 00:54:47,610 --> 00:54:52,350 >> 당신은 부울을 원한다면 밝혀, 만 참 또는 거짓 부울 값, 1127 00:54:52,350 --> 00:54:56,840 CS50 라이브러리 덕분에, 우리는했습니다 뿐만 아니라 C 부울 데이터 유형에 추가됩니다. 1128 00:54:56,840 --> 00:54:59,180 그러나 그것은 또한에 존재하는 것 많은 다른 언어뿐만 아니라. 1129 00:54:59,180 --> 00:55:04,130 그리고 가끔 당신에게 밝혀 다음 기본적으로 올 더 큰 숫자가 필요합니다 1130 00:55:04,130 --> 00:55:05,210 정수와 수레. 1131 00:55:05,210 --> 00:55:10,590 >> 그리고, 사실, 이중 숫자는 즉,하지 32 비트,하지만 64 비트를 사용합니다. 1132 00:55:10,590 --> 00:55:14,990 그리고 오래 오래는 숫자입니다 아니라 32 비트이지만 64 비트를 사용 1133 00:55:14,990 --> 00:55:19,190 각각 부동 소수점에 대한 각각 값과 정수. 1134 00:55:19,190 --> 00:55:22,780 이제 실제로하자 행동이를 참조하십시오. 1135 00:55:22,780 --> 00:55:26,150 >> 여기 가서거야 그리고 다른 프로그램을 채찍. 1136 00:55:26,150 --> 00:55:32,020 자, 내가 가서거야 및 CS50.h.을 포함 할 1137 00:55:32,020 --> 00:55:34,910 그리고 나 가자, 표준 IO.h. 포함 1138 00:55:34,910 --> 00:55:37,320 >> 그리고 당신이 뭔가를 알 수 있습니다 펑키 여기에서 일어나고있다. 1139 00:55:37,320 --> 00:55:40,592 그것은 사물을 코딩 색상 아니에요 이전과 동일한 방법. 1140 00:55:40,592 --> 00:55:43,550 그리고 그게 내가 때문이다, 밝혀 물건을 파일 이름을 지정하지 않았습니다. 1141 00:55:43,550 --> 00:55:47,270 >> 나는이 하나를 호출거야 sizeof.c, 그리고 저장을 누르십시오. 1142 00:55:47,270 --> 00:55:51,039 그리고 내 매우 어떻게되는지 알 그 검은 배경에 흰색 코드입니다. 1143 00:55:51,039 --> 00:55:52,830 지금, 적어도 거기 일부가 보라색. 1144 00:55:52,830 --> 00:55:54,490 그리고 그것은 구문 강조한다. 1145 00:55:54,490 --> 00:55:57,700 >> 아주 간단하게, 나는했습니다 때문이다 파일의 형식 IDE를 말했다 1146 00:55:57,700 --> 00:56:01,060 그것의 이름을 제공함으로써, 그리고 특히 파일 확장자. 1147 00:56:01,060 --> 00:56:03,620 자, 가서이 작업을 수행 할 수 있습니다. 1148 00:56:03,620 --> 00:56:08,910 나는 앞으로 매우 갈거야 단순히 following-- 부울을 인쇄 1149 00:56:08,910 --> 00:56:11,080 %의 LU입니다. 1150 00:56:11,080 --> 00:56:12,950 >> 우리는 다시 올 것이다 그냥 순간에 그. 1151 00:56:12,950 --> 00:56:15,840 그리고 내가 갈거야 부울의 인쇄 크기. 1152 00:56:15,840 --> 00:56:18,170 그리고 지금, 바로 저장 자신 시간, 난 1153 00:56:18,170 --> 00:56:20,280 전체를 할 것 한 번에 이들의 무리. 1154 00:56:20,280 --> 00:56:24,620 그리고, 특히, 나는에 갈거야 숯불과 문자로 변경. 1155 00:56:24,620 --> 00:56:27,760 이 사람은, 내가 바꿀거야 더블 더블로. 1156 00:56:27,760 --> 00:56:31,440 >> 이 사람은, 내가 바꿀거야 부동 소수점 및 부동 소수점한다. 1157 00:56:31,440 --> 00:56:35,670 이 사람은, 내가 갈거야 int 형과 int로 변경합니다. 1158 00:56:35,670 --> 00:56:38,660 그리고이 사람은, 내가 갈거야 오래 오래로 변경합니다. 1159 00:56:38,660 --> 00:56:40,840 그리고 그것은 여전히​​ 복용 시간이 오래, 오래 오래. 1160 00:56:40,840 --> 00:56:44,572 >> 그리고, 마지막으로, 내가 준 자신은 너무 많은 문자열. 1161 00:56:44,572 --> 00:56:47,030 그것은 C에, 거기에 밝혀 라는 특수 연산자 1162 00:56:47,030 --> 00:56:50,260 그 크기는 그대로입니다 때 실행하는 것, 1163 00:56:50,260 --> 00:56:52,099 우리의 크기를 말해 이러한 변수의 각. 1164 00:56:52,099 --> 00:56:53,890 그리고 이것은 지금, 방법입니다 우리는 다시 연결할 수 있습니다 1165 00:56:53,890 --> 00:56:57,140 지난 주 토론 데이터 및 표현. 1166 00:56:57,140 --> 00:57:00,330 >> 내가 가서 컴파일하자 의 도트 슬래시 크기의 크기입니다. 1167 00:57:00,330 --> 00:57:01,210 그리고 보자. 1168 00:57:01,210 --> 00:57:05,210 그것은, C에서 밝혀 특히 CS50 IDE에, 1169 00:57:05,210 --> 00:57:08,170 특히에 운영 체제 우분투, 1170 00:57:08,170 --> 00:57:11,100 64 비트는 동작 인 이 경우 시스템, 1171 00:57:11,100 --> 00:57:14,189 부울는에 가고 공간 1 바이트를 사용합니다. 1172 00:57:14,189 --> 00:57:16,480 즉, 크기를 측정하는 방법은, 하지 비트,하지만 바이트입니다. 1173 00:57:16,480 --> 00:57:18,690 그리고 한 바이트는 8 비트 것을 기억합니다. 1174 00:57:18,690 --> 00:57:22,030 그래서 부울, 심지어하지만 기술적으로 만하면 0 또는 1, 1175 00:57:22,030 --> 00:57:24,092 그것은 약간의 낭비입니다 우리는 어떻게 그것을 구현했습니다. 1176 00:57:24,092 --> 00:57:26,800 실제로 전체를 사용하는 것 byte-- 그래서 모두 제로는, 어쩌면이다 1177 00:57:26,800 --> 00:57:31,050 그런 모든 것들, 또는 무엇인가, 또는 한 1 8 비트 중. 1178 00:57:31,050 --> 00:57:34,962 >> 숯불는 한편, 문자 사용 지난 주 ASCII 문자처럼, 1179 00:57:34,962 --> 00:57:36,170 하나의 문자가 될 것입니다. 1180 00:57:36,170 --> 00:57:42,340 그리고 그것은 우리의 개념과 함께 한단 그것은 오히려 더 이상 256 bits--되는 없습니다 1181 00:57:42,340 --> 00:57:45,360 그것은 더 인과 한단 위로 이상 8 비트, 어떤 1182 00:57:45,360 --> 00:57:47,450 우리에게 256 개의 값을 제공합니다. 1183 00:57:47,450 --> 00:57:49,680 이중이 가고있다 8 바이트 또는 64 비트합니다. 1184 00:57:49,680 --> 00:57:50,510 >> 플로트은 4입니다. 1185 00:57:50,510 --> 00:57:51,690 int입니다은 4입니다. 1186 00:57:51,690 --> 00:57:52,980 긴은 길이 8입니다. 1187 00:57:52,980 --> 00:57:54,716 그리고 문자열은 8입니다. 1188 00:57:54,716 --> 00:57:55,840 하지만 그것에 대해 걱정하지 마십시오. 1189 00:57:55,840 --> 00:57:57,340 우리는 층을 벗겨 것입니다. 1190 00:57:57,340 --> 00:57:59,940 그것은 문자열 수, 밝혀 8 바이트보다 더 길어질 수 있습니다. 1191 00:57:59,940 --> 00:58:02,310 >> 그리고, 참으로, 우리는 서면으로 작성했습니다 이미 문자열, 안녕하세요 세계, 1192 00:58:02,310 --> 00:58:03,700 8 바이트 이상. 1193 00:58:03,700 --> 00:58:06,270 그러나 우리는 다시 올 것이다 그냥 순간에 그. 1194 00:58:06,270 --> 00:58:09,690 그러나 멀리 여기 권취은 다음이다. 1195 00:58:09,690 --> 00:58:15,320 >> 모든 컴퓨터는 유한이 메모리 및 공간의 양입니다. 1196 00:58:15,320 --> 00:58:17,860 당신은 너무 많은 저장할 수 있습니다 Mac 또는 PC에있는 파일. 1197 00:58:17,860 --> 00:58:23,030 당신은 매우 많은 프로그램을 저장할 수 있습니다 RAM에도, 반드시 한 번에 실행 1198 00:58:23,030 --> 00:58:26,360 가상 메모리 때문에 당신은 RAM의 한정된 금액을 가지고있다. 1199 00:58:26,360 --> 00:58:28,990 >> 그냥 경우 picture--하기 당신은 노트북을 열어 적이 없어요 1200 00:58:28,990 --> 00:58:31,300 또는 추가 메모리를 주문 컴퓨터를 들어, 1201 00:58:31,300 --> 00:58:33,670 알고하지 않을 수 있습니다 컴퓨터의 내부 1202 00:58:33,670 --> 00:58:36,590 보이는 무언가가있다 이런 작은. 1203 00:58:36,590 --> 00:58:40,540 그래서이 이름을 그냥 일반적인 회사입니다 중요한 그 컴퓨터의 RAM을합니다. 1204 00:58:40,540 --> 00:58:43,620 그리고 RAM은 어디에 프로그램입니다 그들이 실행하는 동안 살고 있습니다. 1205 00:58:43,620 --> 00:58:46,630 >> 그래서 당신은 두 번 모든 Mac 또는 PC에 프로그램을 클릭하고 열어, 1206 00:58:46,630 --> 00:58:48,921 그리고 일부 Word 문서를 엽니 다 또는 그런 일, 1207 00:58:48,921 --> 00:58:51,764 일시적에 저장 RAM, RAM 빨리 때문에 1208 00:58:51,764 --> 00:58:53,680 하드 디스크 이상, 또는 솔리드 스테이트 디스크. 1209 00:58:53,680 --> 00:58:56,600 프로그램이 어디로 그래서 그냥 그들이 실행중인 경우 살, 1210 00:58:56,600 --> 00:58:58,060 또는 파일을 사용하는 경우. 1211 00:58:58,060 --> 00:59:00,890 >> 그래서 당신은 볼 일이 노트북이 내부처럼, 1212 00:59:00,890 --> 00:59:03,320 또는 약간 더 큰 것 바탕 화면의 내. 1213 00:59:03,320 --> 00:59:07,440 그러나 열쇠는 당신 만이있다 이러한 것들의 유한 수. 1214 00:59:07,440 --> 00:59:11,230 그리고의 유한 한 양있다 하드웨어는이 책상에 앉아있는 권리 1215 00:59:11,230 --> 00:59:11,730 이리. 1216 00:59:11,730 --> 00:59:15,920 >> 그래서, 확실히, 우리는 저장할 수 없습니다 무한히 긴 번호. 1217 00:59:15,920 --> 00:59:19,030 그리고, 그러나, 당신은 되돌아 생각하면 초등학교, 얼마나 많은 자리 수 1218 00:59:19,030 --> 00:59:21,400 당신은 오른쪽에 있습니다 소수점? 1219 00:59:21,400 --> 00:59:24,680 그 문제에 관해서는, 얼마나 많은 자리 수 당신은 소수점의 왼쪽에있다? 1220 00:59:24,680 --> 00:59:26,300 정말, 무한히 많은. 1221 00:59:26,300 --> 00:59:30,840 >> 이제, 우리 인간은 수도 만 발음하는 방법을 알고, 1222 00:59:30,840 --> 00:59:34,990 그리고 억, 조, 및 천조 및 quintillion. 1223 00:59:34,990 --> 00:59:39,370 그리고 난의 한계를 밀어있어 내 understanding-- 또는 거니 이해 1224 00:59:39,370 --> 00:59:41,110 숫자,하지만 내 숫자의 발음. 1225 00:59:41,110 --> 00:59:44,720 그러나 그들은 함께 무한히 큰 얻을 수 있습니다 왼쪽에 무한히 많은 숫자 1226 00:59:44,720 --> 00:59:47,050 또는 소수점의 오른쪽에. 1227 00:59:47,050 --> 00:59:50,040 >> 그러나 컴퓨터 만이 메모리의 유한 한 양, 1228 00:59:50,040 --> 00:59:53,510 트랜지스터의 유한 번호, 내부 전구의 유한 수. 1229 00:59:53,510 --> 00:59:57,350 그래서이 때 발생 당신은 공간이 부족? 1230 00:59:57,350 --> 00:59:59,620 즉, 만약 다시 지난 주에 생각 1231 00:59:59,620 --> 01:00:03,160 우리는 숫자에 대해 이야기 할 때 자신은 바이너리로 표현되는 1232 01:00:03,160 --> 01:00:05,480 우리가 가지고 있다고 가정 여기에서이 8 비트 값. 1233 01:00:05,480 --> 01:00:08,290 >> 그리고 우리는 일곱 1의 하나의 공을 가지고있다. 1234 01:00:08,290 --> 01:00:10,827 그리고 우리가 원하는 것을 가정 이 값에 1을 추가 할 수 있습니다. 1235 01:00:10,827 --> 01:00:12,410 이것은 지금 정말 큰 숫자입니다. 1236 01:00:12,410 --> 01:00:16,610 >> 내가 기억하는 경우에, 254 지난 주 오른쪽에서 수학. 1237 01:00:16,610 --> 01:00:19,480 그러나 나는 무엇을 변경하는 경우 오른쪽 0 1인가요? 1238 01:00:19,480 --> 01:00:22,800 전체 수의 물론에는 8 일의가됩니다. 1239 01:00:22,800 --> 01:00:24,050 그래서 우리는 여전히 좋은입니다. 1240 01:00:24,050 --> 01:00:27,204 >> 그리고 아마 대표 255하지만 문맥에 따라 1241 01:00:27,204 --> 01:00:29,120 실제로 나타낼 수 있습니다 음수. 1242 01:00:29,120 --> 01:00:31,240 하지만 다른 시간에 대한 자세한. 1243 01:00:31,240 --> 01:00:34,220 이 약처럼이 느낌 나는 셀 수만큼 높은. 1244 01:00:34,220 --> 01:00:35,290 >> 지금, 그것은 단지 8 비트입니다. 1245 01:00:35,290 --> 01:00:38,170 그리고 내 맥, 확실하게, 방법이 메모리의 8 비트 이상의. 1246 01:00:38,170 --> 01:00:39,170 그러나 유한 가지고있다. 1247 01:00:39,170 --> 01:00:43,230 그래서 동일한 인수하더라도 적용 우리 화면에이 사람을 더 많이 가지고있다. 1248 01:00:43,230 --> 01:00:47,020 >> 하지만 당신이 있다면 어떻게 이 번호 255를 저장, 1249 01:00:47,020 --> 01:00:49,290 당신은 1 비트 더 높은 계산하려면? 1250 01:00:49,290 --> 01:00:51,600 당신은 255에서 256로 가고 싶어. 1251 01:00:51,600 --> 01:00:55,800 이 문제는 물론, 그 경우 당신 지난 주와 같은 제로 카운트 시작 1252 01:00:55,800 --> 01:00:59,670 당신은 높은 셀 수 없다 256로, 혼자 257을 보자 1253 01:00:59,670 --> 01:01:02,584 혼자 258 보자 m 무엇 때문에 당신이 하나를 추가 할 때 어떻게됩니까? 1254 01:01:02,584 --> 01:01:05,000 당신은 오래된 초등학교를 할 경우 방법, 당신은 여기에 1을 넣어 1255 01:01:05,000 --> 01:01:08,150 다음 1 더하기 1은 2이지만, 그건 정말 제로, 당신은 1 휴대, 1256 01:01:08,150 --> 01:01:09,695 1을 가지고, 1을 수행한다. 1257 01:01:09,695 --> 01:01:12,620 이 모든 것들이, 이 일의의는 제로로 이동합니다. 1258 01:01:12,620 --> 01:01:17,820 그리고 당신은 사람으로, 그래, 바람 좌측에 1을 지적했다. 1259 01:01:17,820 --> 01:01:22,540 하지만 모든 것을 수행 할 수 있습니다 실제로보고 메모리에 맞지 1260 01:01:22,540 --> 01:01:27,960 말을 그냥 팔 공의입니다 어떤 시점에서 당신의 경우, 컴퓨터, 1261 01:01:27,960 --> 01:01:32,490 충분히 높이까지 계산 시도, 당신은있어 랩 어라운드 것, 그것은 보인다 1262 01:01:32,490 --> 01:01:35,850 아마 제로 또는 마이너스 제로보다 훨씬 낮은 수치. 1263 01:01:35,850 --> 01:01:37,260 >> 그리고 우리는 종류의이을 볼 수 있습니다. 1264 01:01:37,260 --> 01:01:39,900 내가 가서 쓸 수 여기 진짜 빠른 프로그램입니다. 1265 01:01:39,900 --> 01:01:43,690 내가 가서 쓸 수 오버 플로우라는 프로그램. 1266 01:01:43,690 --> 01:01:49,980 포함 CS50.h 포함 표준 IO.h-- 오, 1267 01:01:49,980 --> 01:01:51,730 난 정말 내 구문 강조를 놓쳤다. 1268 01:01:51,730 --> 01:01:54,440 그럼 overflow.c으로 저장 할 수 있습니다. 1269 01:01:54,440 --> 01:01:57,084 >> 그리고 지금 INT 주요 void-- 긴 전에, 우리는거야 1270 01:01:57,084 --> 01:01:59,500 이유를 설명에 돌아온다 우리는 INT 주요 무효를 작성 유지한다. 1271 01:01:59,500 --> 01:02:02,080 하지만 지금은, 그냥하자 부여는, 그것을 복용. 1272 01:02:02,080 --> 01:02:06,200 의 자신에게 int를 줘 보자, 0으로 초기화합니다. 1273 01:02:06,200 --> 01:02:11,716 >> 의 다음 인터넷 용하자 내가 zero-- 얻을 실제로,의 무한 루프를하자 1274 01:02:11,716 --> 01:02:12,590 그리고 무슨 일이 일어 나는지. 1275 01:02:12,590 --> 01:02:22,440 진정한 동안, 다음의 n을 출력 할 수 퍼센트 난, 백 슬래시 N, 플러그인 N. 1276 01:02:22,440 --> 01:02:27,200 하지만, 지금의 n은 n은 플러스 1 취득 할 수 있습니다. 1277 01:02:27,200 --> 01:02:29,660 >> 즉, 각 그래서 이 무한 루프의 반복, 1278 01:02:29,660 --> 01:02:32,550 의를 n의 값을 보자, 한 다음에 1을 추가하고, 1279 01:02:32,550 --> 01:02:34,350 왼쪽에 다시 N에 결과를 저장합니다. 1280 01:02:34,350 --> 01:02:37,150 그리고, 사실, 우리는 구문 봤어요 약간 이런 식으로 짧게. 1281 01:02:37,150 --> 01:02:39,730 멋진 트릭을 대신하다 이 모든을 작성, 1282 01:02:39,730 --> 01:02:42,770 당신은 실제로는 n 플러스 1에 해당 말할 수있다. 1283 01:02:42,770 --> 01:02:47,480 >> 아니면 정말 멋진 수 있도록하려면, 당신은 N 플러스 플러스 세미콜론 말할 수 있습니다. 1284 01:02:47,480 --> 01:02:50,130 그러나 이러한 후자의 두 단지입니다 우리는 문법 설탕이라고 부르는 1285 01:02:50,130 --> 01:02:50,790 제일 먼저합니다. 1286 01:02:50,790 --> 01:02:53,456 >> 우선, 더 명시 적입니다 완전히 잘 완전히 올바른. 1287 01:02:53,456 --> 01:02:55,470 하지만이 일반적이다, 내가 말할 수 있습니다. 1288 01:02:55,470 --> 01:02:57,210 그래서 우리는 단지 잠시 동안이 작업을 수행 할 수 있습니다. 1289 01:02:57,210 --> 01:03:01,685 >> 소리의 지금 만들어 보자 오버 플로우, 오히려 불길한, 도트 슬래시 오버 플로우. 1290 01:03:01,685 --> 01:03:04,380 1291 01:03:04,380 --> 01:03:09,852 의 n 개의 꽤 큰지고있어, 보자. 1292 01:03:09,852 --> 01:03:11,310 그러나의 생각하자 n은 얼마나 큰을받을 수 있나요? 1293 01:03:11,310 --> 01:03:12,870 >> n은 int이며. 1294 01:03:12,870 --> 01:03:16,400 우리는의 크기가 조금 전에 보았던 예를 int는 4 바이트입니다. 1295 01:03:16,400 --> 01:03:22,070 우리는 지난 주 알고, 4 바이트입니다 32 비트 때문에 8 시간 4, 즉 32입니다. 1296 01:03:22,070 --> 01:03:23,460 즉, 40 억이 될거야. 1297 01:03:23,460 --> 01:03:25,802 >> 그리고 우리는 80까지입니다. 1298 01:03:25,802 --> 01:03:28,510 이것은 영원히 걸릴 것입니다 나는 같은 높이로 가능한 계산합니다. 1299 01:03:28,510 --> 01:03:30,635 그래서 앞서 갈거야 당신은 머지 않아 수도 1300 01:03:30,635 --> 01:03:34,910 그리고, 솔직히 컨트롤을 제어 C-- 충돌 C, 많은, 위치 제어 C 일반적으로 1301 01:03:34,910 --> 01:03:36,034 수단을 취소 할 수 있습니다. 1302 01:03:36,034 --> 01:03:38,200 불행하게도,이 때문에 클라우드에서 실행되고, 1303 01:03:38,200 --> 01:03:41,190 때때로 구름입니다 너무 많은 물건을 침, 1304 01:03:41,190 --> 01:03:44,180 너무 많은 출력, 그것은 것 내 입력을위한 약간의 시간이 걸릴 1305 01:03:44,180 --> 01:03:45,630 클라우드로 얻을 수 있습니다. 1306 01:03:45,630 --> 01:03:49,240 그래서 공격에도 불구하고 몇 초 전에 제어 C, 1307 01:03:49,240 --> 01:03:53,110 이것은 확실히 쪽 무한 루프의 효과. 1308 01:03:53,110 --> 01:03:56,070 >> 그래서 이러한 경우에, 우리는있어 그 떠날 예정. 1309 01:03:56,070 --> 01:03:59,050 그리고 우리는 서로를 추가 할거야 여기에 터미널 창 1310 01:03:59,050 --> 01:04:03,186 물론하지 않는 플러스와 함께 그런 식으로, 아직 생각을하기 때문이다. 1311 01:04:03,186 --> 01:04:05,310 그리고 이제 가서하자 좀 더 합리적인. 1312 01:04:05,310 --> 01:04:07,768 >> 내가 가서 할거야 이 단지 유한 한 여러 번. 1313 01:04:07,768 --> 01:04:10,047 ,의 루프에 대한 사용하자 이는 내가 이전에 언급. 1314 01:04:10,047 --> 01:04:10,630 이 해 보자. 1315 01:04:10,630 --> 01:04:13,430 나에게 내가 공 얻는다 다른 int 변수를 제공합니다. 1316 01:04:13,430 --> 01:04:17,430 난,의, 난 ++ (64)를 가정 해 봅시다보다 작습니다. 1317 01:04:17,430 --> 01:04:24,010 그리고 지금 나를 앞서 및 인쇄 가자 n은 퍼센트 내가 체크 아웃, n은 콤마. 1318 01:04:24,010 --> 01:04:27,547 그리고 이것은 여전히​​ 다음 N-- 영원히 걸릴 것. 1319 01:04:27,547 --> 01:04:28,130 이 해 보자. 1320 01:04:28,130 --> 01:04:30,620 >> n을 가져 n 번 2. 1321 01:04:30,620 --> 01:04:34,140 아니면 우리는 멋진 될 수 있습니다 및 시간이 동일 할. 1322 01:04:34,140 --> 01:04:37,120 하지만 그냥 N 가정 해 봅시다 시간이 자체 같습니다. 1323 01:04:37,120 --> 01:04:39,321 즉, 이것으로 이 프로그램의 새로운 버전, 1324 01:04:39,321 --> 01:04:41,820 나는 영원히 기다리지 않으 같은 80 만 40 억에에서. 1325 01:04:41,820 --> 01:04:43,070 그냥이 이상하자. 1326 01:04:43,070 --> 01:04:44,920 >> 의 실제 n은 각각 시간을 두 배로 할 수 있습니다. 1327 01:04:44,920 --> 01:04:47,660 어느, 리콜, 두 배는이다 물론 갖는 대향. 1328 01:04:47,660 --> 01:04:50,035 그리고 지난 주 반면 우리는이 어떤 또 다시, 1329 01:04:50,035 --> 01:04:52,200 다시, 슈퍼 빠른, 두 배는 확실히 것 1330 01:04:52,200 --> 01:04:58,080 가장 큰 가능한 1에서 우리를 얻을 우리가하는 int로에 믿을 수있는 값입니다. 1331 01:04:58,080 --> 01:04:59,750 >> 그럼 바로이 작업을 수행 할 수 있습니다. 1332 01:04:59,750 --> 01:05:01,720 그리고 우리는 오래 전에 다시이에 올 것이다. 1333 01:05:01,720 --> 01:05:04,180 그러나 이것은, 다시, 단지처럼 스크래치에서 반복 블록. 1334 01:05:04,180 --> 01:05:05,600 그리고 당신은 오래 전에이 사용됩니다. 1335 01:05:05,600 --> 01:05:10,170 >> 이것은 단지 0에서 수를 의미 64,하지만 같지까지. 1336 01:05:10,170 --> 01:05:14,285 그리고이 각각의 반복에 루프는 그냥를 증가 유지. 1337 01:05:14,285 --> 01:05:18,990 그래서 나는 + + -이 일반적인 구조 라인 7은 슈퍼 일반적인 방법입니다 1338 01:05:18,990 --> 01:05:22,290 의 일부 라인을 반복 코드, 시간의 일부 번호. 1339 01:05:22,290 --> 01:05:23,362 어떤 코드 라인? 1340 01:05:23,362 --> 01:05:25,570 이 중괄호, 당신 같은 지금부터 수집 한 수, 1341 01:05:25,570 --> 01:05:26,780 다음을 의미한다. 1342 01:05:26,780 --> 01:05:29,510 >> 그것은 같은 스크래치에있어, 때 그것은 노란색 블록이 1343 01:05:29,510 --> 01:05:32,680 다른 색상이 가지 수용 또는 다른 블록을 포옹. 1344 01:05:32,680 --> 01:05:34,750 즉, 어떤 사람들 곱슬이다 중괄호는 여기하고있다. 1345 01:05:34,750 --> 01:05:40,200 그래서 난 내 구문을 가지고있는 경우 right--을 C 수단의 당근 기호를 볼 수 있습니다 1346 01:05:40,200 --> 01:05:42,706 그게 내가 얼마나 많은 시간이다 이 문제를 해결하려고. 1347 01:05:42,706 --> 01:05:45,330 그래서 그 하나를 제거 내버려 모두, 그 창을 닫습니다. 1348 01:05:45,330 --> 01:05:46,520 그리고 우리는 새로운 하나를 사용합니다. 1349 01:05:46,520 --> 01:05:51,980 오버 플로우, 도트 슬래시 만들기 오버 플로우, 입력, 모든 권리, 1350 01:05:51,980 --> 01:05:53,090 먼저 나쁜 보인다. 1351 01:05:53,090 --> 01:05:56,200 그러나 이제 시간을 거슬러 이동하자, 나는이 64 시간을했기 때문에. 1352 01:05:56,200 --> 01:05:58,700 >> 처음으로 알, n은 1이다. 1353 01:05:58,700 --> 01:06:03,110 두 번째는, n은 2이고 다음 4, 다음 8 다음 16. 1354 01:06:03,110 --> 01:06:09,450 그리고 그것은 가능한 한 빨리 것 같다 나는 약 10 억에 도착 1355 01:06:09,450 --> 01:06:12,800 내가 다시 두 배로 경우, 그 나에게 20 억을 제공해야합니다. 1356 01:06:12,800 --> 01:06:14,980 하지만 그건 밝혀 첨단 오른쪽. 1357 01:06:14,980 --> 01:06:18,930 >> 그리고 실제로 오버 플로우 10 억에서의 int 1358 01:06:18,930 --> 01:06:23,514 이 약 마이너스 억, 정수 때문에, 1359 01:06:23,514 --> 01:06:25,430 숫자의 우리와는 달리 지난 주 가정하고, 1360 01:06:25,430 --> 01:06:28,397 긍정과 부정 모두가 될 수 현실과 컴퓨터입니다. 1361 01:06:28,397 --> 01:06:30,730 그리고 그 너무 적어도 하나의 비트는 효과적으로 도난. 1362 01:06:30,730 --> 01:06:34,190 그래서 우리는 정말 만, 31 비트가 또는 20 억 가능한 값. 1363 01:06:34,190 --> 01:06:38,220 >> 하지만 지금은 테이크 아웃은 아주이다 간단하게, 어떤 이들 번호는 1364 01:06:38,220 --> 01:06:42,280 그리고 수학은, 무엇이든 나쁜 일이 결국 발생 1365 01:06:42,280 --> 01:06:46,980 결국 당신이 노력하고 있기 때문에 비트에게 너무 많은 시간을 바꾸어 넣습니다. 1366 01:06:46,980 --> 01:06:51,060 그리고 당신은 효과적으로 모든에서 이동 1의에 어쩌면 모두 0, 아니면 1367 01:06:51,060 --> 01:06:54,260 그냥 몇 가지 다른 패턴 그것은 그 분명히, 상황에 따라, 1368 01:06:54,260 --> 01:06:56,342 음수로 해석 될 수있다. 1369 01:06:56,342 --> 01:06:59,300 그리고 그것은 가장 높은 I을 보일 수있을 것입니다 이 특정 프로그램에 셀 수 1370 01:06:59,300 --> 01:07:01,210 만 약 10 억이다. 1371 01:07:01,210 --> 01:07:02,760 그러나 여기에 부분적인 해결책이있다. 1372 01:07:02,760 --> 01:07:03,480 당신 그거 알아? 1373 01:07:03,480 --> 01:07:07,600 >> 날이에서 변경할 수 있습니다 오래 오래에 int로. 1374 01:07:07,600 --> 01:07:10,633 그리고 내가 여기에 앞서 가자 그리고 내가 가진거야 say-- 1375 01:07:10,633 --> 01:07:12,290 부호없는 긴로 변경합니다. 1376 01:07:12,290 --> 01:07:16,860 아니면, 나 자신을 기억하지, 어디 보자. 1377 01:07:16,860 --> 01:07:19,920 >> 이제 가서 오버 플로우를 만들어 보자. 1378 01:07:19,920 --> 01:07:21,860 아니, 그게 아니라, LLD, 감사합니다. 1379 01:07:21,860 --> 01:07:23,430 그래서 때로는 연타가 도움이 될 수 있습니다. 1380 01:07:23,430 --> 01:07:27,550 나는 어떤 형식을 기억하지 않았다 지정은 오래 오래였다. 1381 01:07:27,550 --> 01:07:28,950 >> 그러나, 참으로, 연타 나에게 말했다. 1382 01:07:28,950 --> 01:07:31,570 녹색, 좋은의 일종이다 아직도 당신이 실수를 의미한다. 1383 01:07:31,570 --> 01:07:33,190 내가 LLD를 의미하는 추측입니다. 1384 01:07:33,190 --> 01:07:38,750 >> 그래서, 내가이 충고 걸릴 긴하자 긴 진수, 즉 저​​장합니다. 1385 01:07:38,750 --> 01:07:43,190 그리고 도트, 내가 그것을 다시 실행하자 입력 오버 플로우를 슬래시. 1386 01:07:43,190 --> 01:07:45,020 그리고 지금 어떤 멋진 것은 이것입니다. 1387 01:07:45,020 --> 01:07:49,140 >> 내가 시간을 거슬러 스크롤하면, 우리는 여전히 시작 동일한 place--에서 계수 1, 2, 4, 1388 01:07:49,140 --> 01:07:50,220 8, 16. 1389 01:07:50,220 --> 01:07:54,860 공지 사항, 우리가 얻을 수있는 모든 방법 최대 10 억까지. 1390 01:07:54,860 --> 01:07:57,070 그러나 우리는 안전하게 20 억에 도착. 1391 01:07:57,070 --> 01:08:01,300 >> 그리고 우리가 40 억에 도착, 다음 80 억, 170 억. 1392 01:08:01,300 --> 01:08:03,340 그리고 우리는 더 높은 가고, 이상, 더. 1393 01:08:03,340 --> 01:08:05,740 결국,이 역시 휴식. 1394 01:08:05,740 --> 01:08:09,350 >> 결국, 오래 오래 함께, 64 비트 값이 아니라 이는 1395 01:08:09,350 --> 01:08:13,660 32 비트 값하면 계산하면 너무 높은, 당신은 주위에 공을 포장. 1396 01:08:13,660 --> 01:08:16,410 이 경우, 우리는 일이 음수로 끝날. 1397 01:08:16,410 --> 01:08:17,550 >> 그래서이 문제이다. 1398 01:08:17,550 --> 01:08:20,439 그리고이 밝혀 문제는 모든 비밀이 아니다. 1399 01:08:20,439 --> 01:08:23,060 나는 의도적으로했습니다에도 불구하고 이러한 실수로 유도, 1400 01:08:23,060 --> 01:08:26,149 우리가 모든 종류의 볼 밝혀 우리 또는 우리의 적어도 일부 주위 않습니다. 1401 01:08:26,149 --> 01:08:28,939 >> 레고 스타 워즈에서, 경우에 따라서 혹시 게임을 해본 적이, 1402 01:08:28,939 --> 01:08:33,830 당신이 주변에 갈 수 있습니다 밝혀 LEGO 세계에서 물건을 깨고, 1403 01:08:33,830 --> 01:08:36,640 본질적으로, 동전을 수집. 1404 01:08:36,640 --> 01:08:39,200 그리고 혹시 연주 한 경우 이 게임에 너무 많은 시간, 1405 01:08:39,200 --> 01:08:42,630 이 이름이 개별로 여기서, 총 개수했다 1406 01:08:42,630 --> 01:08:46,700 당신이 수집 할 수 있습니다 동전 그것은, 40 억을 보일 수있을 것입니다. 1407 01:08:46,700 --> 01:08:48,240 >> 지금, 그것을 실제로 둥근 것. 1408 01:08:48,240 --> 01:08:50,239 그래서 LEGO는에 노력했다 쉬운 일 사용자를 유지합니다. 1409 01:08:50,239 --> 01:08:53,779 그들은에 정확히 2 그것을하지 않았다 지난 주 당 32 전원. 1410 01:08:53,779 --> 01:08:55,310 그러나 40 억은 이유입니다. 1411 01:08:55,310 --> 01:08:58,979 또한이 정보를 기반으로 보인다 그 LEGO, 회사 그 1412 01:08:58,979 --> 01:09:02,624 이 실제 소프트웨어를 만든 결정 그 동전들의 최대 개수 1413 01:09:02,624 --> 01:09:04,540 사용자가 쌓일 수 있습니다 이다, 참으로, 40 억, 1414 01:09:04,540 --> 01:09:12,069 그들은 그들의 코드를 선택했기 때문에 분명히, 오래 오래되지 사용하는, 1415 01:09:12,069 --> 01:09:16,140 하지만 그냥 정수, 부호 그 정수에만 양의 정수이고, 1416 01:09:16,140 --> 01:09:18,089 최대 값은 크게된다. 1417 01:09:18,089 --> 01:09:19,380 음, 여기에 또 다른 재미 하나입니다. 1418 01:09:19,380 --> 01:09:23,500 , 게임 문명에 따라서하는 당신의 일부와, 잘 알고 있습니다 1419 01:09:23,500 --> 01:09:26,660 그것은 년 전에 밝혀 이 게임을함으로써에서이 문제였다 1420 01:09:26,660 --> 01:09:28,750 당신은 역할을하는 경우 게임에서 간디의, 1421 01:09:28,750 --> 01:09:34,020 대신 그를 매우 평화 주의자 인 대신에 믿을 수 없을만큼, 믿을 수 없을만큼했다 1422 01:09:34,020 --> 01:09:36,399 공격적, 어떤 상황입니다. 1423 01:09:36,399 --> 01:09:40,529 특히, 방법 그 문명 작품은 당신의 경우, 플레이어, 1424 01:09:40,529 --> 01:09:44,680 민주주의를 채택하여 공격성 점수는 도착 1425 01:09:44,680 --> 01:09:48,130 이 때문에 마이너스로 감소 마이너스, 다음 마이너스 마이너스. 1426 01:09:48,130 --> 01:09:50,569 >> 그래서 당신은 2 빼기 실제 반복하는. 1427 01:09:50,569 --> 01:09:56,650 불행하게도, 당신의 반복하는 인 경우 처음 1, 그리고 그것에서 2 빼기 1428 01:09:56,650 --> 01:09:59,050 민주주의를 채택 후 여기에 수도 간디 등 1429 01:09:59,050 --> 01:10:02,200 그는 매우 passive-- 때문에, 수행 한 공격성의 규모에 1. 1430 01:10:02,200 --> 01:10:04,830 그러나 그는 다음, 민주주의를 채택하는 경우 그는 1 음 1로 이동합니다. 1431 01:10:04,830 --> 01:10:11,470 >> 불행하게도, 그들이 있었다 부호 번호를 사용하여, 1432 01:10:11,470 --> 01:10:15,400 어떤 의미 그들은 심지어 부정적인 처리 비록 숫자는 긍정적이었다. 1433 01:10:15,400 --> 01:10:19,780 그리고 그것은 것으로 판명 1 음의 긍정적 상응하는, 1434 01:10:19,780 --> 01:10:23,480 전형적인 컴퓨터 프로그램 (255)이다. 1435 01:10:23,480 --> 01:10:27,250 간디가 채택한다면 민주주의는, 따라서이 1436 01:10:27,250 --> 01:10:32,470 그의 공격성 ​​점수는 감소 실제로 255의 주위에 롤 1437 01:10:32,470 --> 01:10:35,470 그 가장한다 게임에서 공격적인 캐릭터. 1438 01:10:35,470 --> 01:10:36,930 그래서 당신이 위로 구글로 할 수 있습니다. 1439 01:10:36,930 --> 01:10:39,380 그리고 그것은, 실제로이었던 우발적 인 프로그래밍 버그, 1440 01:10:39,380 --> 01:10:43,010 그러나 그것은 아주 입력 있어요 그 이후로 지식. 1441 01:10:43,010 --> 01:10:44,360 >> 즉, 모든 재미와 귀여운입니다. 1442 01:10:44,360 --> 01:10:47,760 더 무서운 때 실제입니다 실제 장치가 아니라 게임 1443 01:10:47,760 --> 01:10:48,820 이 같은 버그가 있습니다. 1444 01:10:48,820 --> 01:10:54,500 사실, 그냥 년 전 기사가 와서 보잉 787 드림 라이너에 대한 아웃. 1445 01:10:54,500 --> 01:10:56,850 >> 그리고 처음 기사 눈은 작은 비밀을 읽습니다. 1446 01:10:56,850 --> 01:11:01,480 그러나 그것은 말했다이, 소프트웨어 보잉의 취약점 1447 01:11:01,480 --> 01:11:04,790 새로운 787 드림 라이너 제트가 전위는 파일럿을 일으키는 1448 01:11:04,790 --> 01:11:07,220 의 통제를 잃고 항공기, 아마도 1449 01:11:07,220 --> 01:11:11,750 중반 비행, 연방 항공국 관리 최근에 경고 항공사. 1450 01:11:11,750 --> 01:11:14,520 이 판정했다 그 모델 787 1451 01:11:14,520 --> 01:11:19,770 전원을 끈 비행기 지속적 대한 248일 1452 01:11:19,770 --> 01:11:24,880 모든 교류를 잃을 수, AC, 상기 발전기에 의한 전력 1453 01:11:24,880 --> 01:11:28,892 제어 유닛 GCUs 동시에 로가는 안전 모드를 실패합니다. 1454 01:11:28,892 --> 01:11:29,850 그것은 나 손실의 종류입니다. 1455 01:11:29,850 --> 01:11:35,390 하지만 메모는 OK, 지금은 그있어, 진술, 조건은 소프트웨어로 인해 발생 된 1456 01:11:35,390 --> 01:11:38,590 내부 카운터 발전기 제어 1457 01:11:38,590 --> 01:11:44,860 후 오버플 단위 연속 전력의 248일. 1458 01:11:44,860 --> 01:11:47,070 우리는이 발행된다 손실을 방지하기 위해주의 1459 01:11:47,070 --> 01:11:49,300 모든 AC 전기 될 수 있습니다 전원, 1460 01:11:49,300 --> 01:11:50,980 비행기의 제어의 손실이다. 1461 01:11:50,980 --> 01:11:55,380 >> 그래서, 말 그대로, 몇 가지 정수가, 일부 또는 등가 데이터 타입, 1462 01:11:55,380 --> 01:11:57,960 소프트웨어에서 사용되고 실제 비행기 1463 01:11:57,960 --> 01:12:00,756 당신이 당신의 비행기를 유지하는 경우 그 이는 분명히, 충분히 긴에 1464 01:12:00,756 --> 01:12:03,880 그냥 실행하는 경우 경우 일 수있다 그들에게 지속적으로 결코 분리 1465 01:12:03,880 --> 01:12:06,810 당신의 비행기, 그것은 것, 또는 그 배터리가 죽을시키는, 1466 01:12:06,810 --> 01:12:09,840 결국 카운트, 것, 위로, 위로, 위로, 위로. 1467 01:12:09,840 --> 01:12:12,150 >> 그리고, 자연에 의해, 메모리의 유한 한 양 1468 01:12:12,150 --> 01:12:15,880 오버플로 롤백합니다 제로 또는 약간의 음의 값, 1469 01:12:15,880 --> 01:12:19,920 부작용 인 무섭 실제 현실 1470 01:12:19,920 --> 01:12:23,970 비행기는해야 할 수도 있음 재부팅하고, 효율적으로, 1471 01:12:23,970 --> 01:12:27,290 또는,이 더 떨어질 수도는 파리로. 1472 01:12:27,290 --> 01:12:29,230 문제의 그래서 이러한 종류의 우리와 함께 여전히, 1473 01:12:29,230 --> 01:12:33,130 even--이는 2015 기사였다 더욱 무서운 1474 01:12:33,130 --> 01:12:36,100 당신은 필요하지 않을 때 이해에 감사, 또는 예상 1475 01:12:36,100 --> 01:12:38,640 오류의 그 종류. 1476 01:12:38,640 --> 01:12:42,030 >> 그래서 다른 하나는 거기에 밝혀 데이터 표현에 대한 나쁜 일. 1477 01:12:42,030 --> 01:12:47,080 심지어 수레가 밝혀 가지 결함, 수레 때문에, 너무, 1478 01:12:47,080 --> 01:12:51,440 나는 32 비트를하는 제안, 또는 아마 64 당신은 두 번을 사용하는 경우. 1479 01:12:51,440 --> 01:12:53,070 하지만 여전히 유한합니다. 1480 01:12:53,070 --> 01:12:57,070 >> 그리고 캐치는 당신이 할 수있는 경우에 그 숫자의 무한한 숫자를 넣어 1481 01:12:57,070 --> 01:12:59,460 소수점 후, 방법 당신은 없다 1482 01:12:59,460 --> 01:13:02,690 모든 가능한 나타낼 수 있습니다 우리가 배운 번호 1483 01:13:02,690 --> 01:13:04,990 학년 학교는 세계에서 존재할 수 있습니다. 1484 01:13:04,990 --> 01:13:08,870 컴퓨터는 본질적에 보유 그 수의 서브 세트를 선택할 1485 01:13:08,870 --> 01:13:10,200 정확하게 나타냅니다. 1486 01:13:10,200 --> 01:13:12,450 >> 현재, 컴퓨터는 수 라운드 어쩌면 조금, 1487 01:13:12,450 --> 01:13:17,900 그리고 대략 상점에 당신을 허용 할 수 있습니다 당신이 가능하게 할 수있는 번호입니다. 1488 01:13:17,900 --> 01:13:20,940 그러나 단지 직관적으로, 당신의 경우 비트 유한 수 있고, 1489 01:13:20,940 --> 01:13:24,560 당신은 단지 그들을 순열 수 많은 유한 한 방법이다. 1490 01:13:24,560 --> 01:13:26,570 그래서 당신은 아마도 수 없습니다 유한 번호를 사용 1491 01:13:26,570 --> 01:13:29,880 비트의 순열의, 0과 1의 패턴, 1492 01:13:29,880 --> 01:13:32,940 무한을 나타내는 숫자의 개수 1493 01:13:32,940 --> 01:13:37,370 이는 컴퓨터가 수도 있음을 시사 잘 때때로 우리에게 거짓말을합니다. 1494 01:13:37,370 --> 01:13:38,770 >> 사실,이 해 보자. 1495 01:13:38,770 --> 01:13:41,239 내가 CS50의 IDE로 돌아 가자. 1496 01:13:41,239 --> 01:13:43,030 내가 가서 보자 작은 프로그램을 작성 1497 01:13:43,030 --> 01:13:47,940 것을 보여주기 위해, 부정확라는 컴퓨터는 참으로 부정확하다. 1498 01:13:47,940 --> 01:13:51,910 >> 그리고 내가 가서 시작하자 전에에서 코드의 일부, 1499 01:13:51,910 --> 01:13:53,830 지금은 그냥 다음을 수행하십시오. 1500 01:13:53,830 --> 01:14:03,640 내가 가서 printf의, 퍼센트를하자 f를 10로 나눈 백 슬래시 n은 1. 1501 01:14:03,640 --> 01:14:07,430 즉,의 깊은 다이빙하자 1/10처럼 1과 10로 나눈 것이다. 1502 01:14:07,430 --> 01:14:09,760 확실히, 컴퓨터는 1/10를 나타낼 수 있습니다. 1503 01:14:09,760 --> 01:14:13,620 >> 그럼 가서 부정확 할 수 있습니다. 1504 01:14:13,620 --> 01:14:14,390 어디 보자. 1505 01:14:14,390 --> 01:14:16,210 형식은 두 번 입력을 지정합니다. 1506 01:14:16,210 --> 01:14:18,160 그러나 인수는 int 형이있다. 1507 01:14:18,160 --> 01:14:19,040 무슨 일이야? 1508 01:14:19,040 --> 01:14:21,970 >> 아, 흥미, 그래서 그것은이다 교훈은 앞에서 배웠습니다. 1509 01:14:21,970 --> 01:14:26,050 나는 어이, 컴퓨터 쇼, 말하는거야 날 %의 F의 float. 1510 01:14:26,050 --> 01:14:28,200 그러나 나는 그것을 2 정수를주는거야. 1511 01:14:28,200 --> 01:14:31,120 이 밝혀 그래서, 내가 해결할 수 몇 가지 방법이. 1512 01:14:31,120 --> 01:14:38,430 >> 난 그냥 1.0로 한 켠 수 10.0로 10,하는 것, 참으로, 1513 01:14:38,430 --> 01:14:42,390 변환의 효과가 floats--로 여전히 희망 1514 01:14:42,390 --> 01:14:43,180 같은 번호. 1515 01:14:43,180 --> 01:14:45,880 거기에 뭔가 밖으로 아니면집니다 우리는 오래 전에 다시 볼 수 있습니다. 1516 01:14:45,880 --> 01:14:47,170 당신은 번호를 캐스팅 할 수 있습니다. 1517 01:14:47,170 --> 01:14:49,880 >> 당신은이 괄호를 사용 할 수 있습니다 표현은, 당신은 말할 수 1518 01:14:49,880 --> 01:14:52,560 이봐, 컴퓨터,이 걸릴 내가 아는 (10)는 int이며. 1519 01:14:52,560 --> 01:14:54,660 하지만, 제발 치료 비록 그것은 부동입니다. 1520 01:14:54,660 --> 01:14:56,680 그러나 이것은 불필요하게 복잡한 느낀다. 1521 01:14:56,680 --> 01:14:59,040 >> 우리의 목적을 위해 오늘, 그냥 그대로하자 1522 01:14:59,040 --> 01:15:02,700 그것들은 부동 소수점 값을 만든다 이 같은 소수점와. 1523 01:15:02,700 --> 01:15:07,060 내가 앞서 가자 다시 실행, 확인 부정확, 좋은 점 슬래시 1524 01:15:07,060 --> 01:15:08,870 부정확 입력합니다. 1525 01:15:08,870 --> 01:15:10,990 OK, 우리는 좋은 찾고 있습니다. 1526 01:15:10,990 --> 01:15:18,194 >> (1)에 따르면, 10로 나눈 내 여기 맥, 참으로, 0.100000이다. 1527 01:15:18,194 --> 01:15:21,360 지금, 나는이 초등학교에서 배웠습니다 0의 무한한 수 있어야한다. 1528 01:15:21,360 --> 01:15:23,151 그럼 적어도 해보자 그 중 일부를 볼 수 있습니다. 1529 01:15:23,151 --> 01:15:26,770 그것은 printf와는 조금 밝혀 우리가 사용했던 것보다 애호가 여전히. 1530 01:15:26,770 --> 01:15:30,890 그것은 당신이 지정할 필요가 없습니다 밝혀 단지 %의 F, 아니면 그냥 %의 난. 1531 01:15:30,890 --> 01:15:33,830 당신은 실제로 지정할 수 있습니다 여기에 몇 가지 제어 옵션을 제공합니다. 1532 01:15:33,830 --> 01:15:36,470 >> 특히, 내가 갈거야 대답, 헤이, printf와, 1533 01:15:36,470 --> 01:15:39,660 실제로 나에게 10 소수점을 보여줍니다. 1534 01:15:39,660 --> 01:15:40,820 그래서 조금 이상한 보인다. 1535 01:15:40,820 --> 01:15:42,845 하지만 퍼센트를 말한다 점, 얼마나 많은 숫자 1536 01:15:42,845 --> 01:15:44,970 당신은 후에보고 싶어 소수점 다음 F 1537 01:15:44,970 --> 01:15:48,340 평면에 대해, 그건 그냥 있기 때문에 문서는 말씀. 1538 01:15:48,340 --> 01:15:50,080 내가 가서 그 내용을 저장 할 수 있습니다. 1539 01:15:50,080 --> 01:15:52,460 >> 그리고 난 받고 있어요, 너무 알 일을 다시 입력 피곤. 1540 01:15:52,460 --> 01:15:55,900 그래서 난 그냥 위로 설정하고 있는데 아래 여기 내 키에 화살표입니다. 1541 01:15:55,900 --> 01:15:58,710 그리고 I가 타격 계속 경우 모든 명령을 볼 수 있습니다 1542 01:15:58,710 --> 01:16:01,090 것을 내가 만든, 또는 잘못했다. 1543 01:16:01,090 --> 01:16:04,630 >> 그리고 지금 진행 예정하고있어 실제로 분명히, 그 사용합니다. 1544 01:16:04,630 --> 01:16:11,416 부정확, 점을 확인 그래서 imprecision-- 슬래시 1545 01:16:11,416 --> 01:16:13,290 내가 무엇에 배웠습니다 초등학교는 체크 아웃. 1546 01:16:13,290 --> 01:16:19,010 나는 10 진수로 인쇄 할 경우에도 를 배치, 참으로, 0.10000이다. 1547 01:16:19,010 --> 01:16:19,840 하지만 당신은 알아? 1548 01:16:19,840 --> 01:16:21,150 >> 의 조금 욕심하자. 1549 01:16:21,150 --> 01:16:23,990 나에게 (55)을 보여,의이 같은 가정 해 봅시다 소수 후 지적했다. 1550 01:16:23,990 --> 01:16:26,160 이제 정말 보자 스핀 밖으로 프로그램. 1551 01:16:26,160 --> 01:16:31,170 나 메이크업으로 리메이크하자 부정확, 도트 슬래시, 부정확성. 1552 01:16:31,170 --> 01:16:32,390 >> 그리고 여기 우리는 간다. 1553 01:16:32,390 --> 01:16:34,420 당신의 어린 시절은 거짓말이었다. 1554 01:16:34,420 --> 01:16:48,410 분명히, 10로 나눈 1은 참으로 0.100000000000000005551115123-- 1555 01:16:48,410 --> 01:16:49,740 >> 무슨 일 이죠? 1556 01:16:49,740 --> 01:16:53,360 음, 만약 당신이 가지 밝혀 기본에에서 충분히 봐 1557 01:16:53,360 --> 01:16:55,950 이 표현 수, 그것은 실제로 1558 01:16:55,950 --> 01:17:00,400 정확히 1/10, 또는 0.1입니다 제로의 무한한 수. 1559 01:17:00,400 --> 01:17:01,630 이제, 그 이유는 무엇입니까? 1560 01:17:01,630 --> 01:17:06,250 >> 그런데, 이것은 간단한하더라도 우리 인체 번호 1은 10로 나눈 1561 01:17:06,250 --> 01:17:10,910 여전히 무한 중 하나입니다 숫자는 우리가 생각할 수 있었다. 1562 01:17:10,910 --> 01:17:14,490 그러나 컴퓨터는 나타낼 수 유한 한 많은 그래서 번호. 1563 01:17:14,490 --> 01:17:18,710 그리고, 효과적으로, 무엇을 컴퓨터는 우리의 가장 가까운 보이고있다 1564 01:17:18,710 --> 01:17:22,940 개수 근사 우리는 1/10 믿고 싶어 1565 01:17:22,940 --> 01:17:27,760 또는 정말 0.10000 광고 인해서. 1566 01:17:27,760 --> 01:17:30,425 >> 오히려,하지만이입니다 이 얻을 수있는만큼 가깝습니다. 1567 01:17:30,425 --> 01:17:32,300 그리고, 참으로, 당신은 보면 후드 아래, 1568 01:17:32,300 --> 01:17:37,050 우리가보고 여기로 소수점 이하 55 자리, 1569 01:17:37,050 --> 01:17:39,990 우리는 실제로 현실을 참조하십시오. 1570 01:17:39,990 --> 01:17:42,610 이제했습니다 여담으로, 경우 이제까지 movie-- 본 1571 01:17:42,610 --> 01:17:45,780 당신의 대부분은 아마 haven't-- 하지만 슈퍼맨 3 몇 년 전, 1572 01:17:45,780 --> 01:17:49,500 리처드 프라는 기본적으로이 활용 그의 회사의 현실은 많이 훔치는 1573 01:17:49,500 --> 01:17:53,500 동전의 분수와 분수의, , 내 기억으로 company-- 때문에 1574 01:17:53,500 --> 01:17:57,210 그것은 본질적으로했다 while--을이었다 아무것도 버리는 것은 적합하지 않았다 1575 01:17:57,210 --> 01:17:58,790 센트의 개념으로. 1576 01:17:58,790 --> 01:18:01,480 >> 하지만 당신은 추가 할 경우 모든 다시 작은, 작은, 작은 숫자, 1577 01:18:01,480 --> 01:18:04,960 그리고 또 다시 경우에서와 같이, 수 그의 경우는, 돈을 좋은 금액을 확인합니다. 1578 01:18:04,960 --> 01:18:08,010 >> 그 같은 생각은에 의해 찢어했다 이제 이전 여전히 최신 있지만 1579 01:18:08,010 --> 01:18:10,500 사무실 공간라는 영화, 어디 그 영화에서 사람, 1580 01:18:10,500 --> 01:18:13,501 같은 일을했다 그것을 망쳐 완전하게, 너무 많은 방법을 결국 1581 01:18:13,501 --> 01:18:14,666 자신의 은행 계좌에 돈입니다. 1582 01:18:14,666 --> 01:18:15,800 그것은 모두 매우 의심했다. 1583 01:18:15,800 --> 01:18:19,290 그러나 결국, 부정확는 우리 주변입니다. 1584 01:18:19,290 --> 01:18:22,240 >> 그리고 그 역시 할 수있다 사건을 무섭게. 1585 01:18:22,240 --> 01:18:25,590 그것은 밝혀 그 슈퍼맨 3 및 사무실 공간 옆으로,이 1586 01:18:25,590 --> 01:18:28,460 매우 현실이 될 수 있습니다 세계의 파급 효과 1587 01:18:28,460 --> 01:18:32,290 부정확의 현실 데이터의 표현 1588 01:18:32,290 --> 01:18:34,770 심지어 우리 인간에게 이 날은 반드시 수행 1589 01:18:34,770 --> 01:18:38,230 뿐만 아니라 우리가해야로서 이해, 또는 자주 우리가해야으로 기억한다. 1590 01:18:38,230 --> 01:18:42,950 그리고, 참으로, 다음 클립입니다 매우 현실 세계를 살펴에서 1591 01:18:42,950 --> 01:18:47,730 당신이 경우 발생하는의 파급 효과 부정확성을 인정하지 않는 1592 01:18:47,730 --> 01:18:50,065 숫자 표현에서 발생할 수 있습니다. 1593 01:18:50,065 --> 01:18:51,300 >> [VIDEO 재생] 1594 01:18:51,300 --> 01:18:55,620 >> -Computers, 우리는 받아 왔어요 종종 좌절 문제가 1595 01:18:55,620 --> 01:19:00,310 , them-- 버그와 바이러스를 이동, 소프트웨어 결함, 1596 01:19:00,310 --> 01:19:03,130 작은 가격을 지불 할 편의를 위해. 1597 01:19:03,130 --> 01:19:07,800 그러나 첨단 기술 및 고속에서 군사 및 우주 프로그램 응용 프로그램, 1598 01:19:07,800 --> 01:19:12,800 작은 문제 수 재해로 확대 될 수있다. 1599 01:19:12,800 --> 01:19:18,900 >> 6 월 4, 1996, 과학자들은 준비 무인 아리안 5 로켓을 시작합니다. 1600 01:19:18,900 --> 01:19:21,220 그것은 과학 실시 하였다 위성 설계 1601 01:19:21,220 --> 01:19:24,600 정확하게 어떻게 수립 지구 자기장의 상호 작용 1602 01:19:24,600 --> 01:19:27,410 태양 바람과 함께. 1603 01:19:27,410 --> 01:19:30,800 로켓을 위해 세워졌습니다 유럽​​ 우주국, 1604 01:19:30,800 --> 01:19:34,370 그 시설에서 들어 올려 프랑스어 령 기아나의 해안. 1605 01:19:34,370 --> 01:19:37,540 >> 에 대한 37초 -at 비행, 그들은 처음 1606 01:19:37,540 --> 01:19:39,270 눈치 뭔가 잘못 가고 있었다. 1607 01:19:39,270 --> 01:19:42,250 노즐은으로 선회했다 방법 그들은 정말 안. 1608 01:19:42,250 --> 01:19:46,580 비행에 40초 주변, 분명히, 차량 문제가 있었다. 1609 01:19:46,580 --> 01:19:48,850 >> 그들이 만든 때 그건 결정을 파괴한다. 1610 01:19:48,850 --> 01:19:52,780 범위 안전 책임자와 엄청난 용기는, 버튼을 누르면, 1611 01:19:52,780 --> 01:19:58,150 그 전에, 로켓 폭발 공공 안전에 위험이된다. 1612 01:19:58,150 --> 01:20:01,060 >> -이는 처녀이었다 아리안 5의 항해. 1613 01:20:01,060 --> 01:20:03,960 그리고 그 파괴했다 때문에 결함의 위치 1614 01:20:03,960 --> 01:20:05,822 로켓의 소프트웨어에 내장. 1615 01:20:05,822 --> 01:20:08,280 아리안에 -THE 문제였다 숫자가 있다는 것을 그 1616 01:20:08,280 --> 01:20:10,600 표현하는 64 비트를 요구했다. 1617 01:20:10,600 --> 01:20:13,590 그리고 그들은 변환 원 16 비트 번호 그것. 1618 01:20:13,590 --> 01:20:15,610 그들은 가정 그 수는 결코 예정되지 않았다 1619 01:20:15,610 --> 01:20:20,980 아주 큰 일하는 사람들의 대부분이 64 비트 숫자 숫자 제로였다. 1620 01:20:20,980 --> 01:20:22,440 그들은 틀렸다. 1621 01:20:22,440 --> 01:20:25,060 >> 하나의 -THE 수 없음 소프트웨어 프로그램에 동의합니다 1622 01:20:25,060 --> 01:20:29,510 생성 수의 종류 또 다른 실패의 루트에 있었다. 1623 01:20:29,510 --> 01:20:34,350 소프트웨어 개발이 될 수 있었던 새로운 기술의 매우 비용이 많이 드는 부분입니다. 1624 01:20:34,350 --> 01:20:38,140 아리안 로켓은 매우되었습니다 소프트웨어의 성공, 너무 많은 1625 01:20:38,140 --> 01:20:41,550 그것은 또한이었다 생성 아리안 5에 사용됩니다. 1626 01:20:41,550 --> 01:20:47,940 >> 년 - 기본 문제는 아리안이었다 5 빨랐다 빠른 가속. 1627 01:20:47,940 --> 01:20:51,450 그리고 소프트웨어는했으나, 그를 차지했다. 1628 01:20:51,450 --> 01:20:55,060 >> 로켓의 -THE 파괴 거대한 금융 재앙이었다 1629 01:20:55,060 --> 01:20:58,790 모든 인해 분 소프트웨어 오류. 1630 01:20:58,790 --> 01:21:01,210 그러나이 제 아니었다 시간 데이터 변환 문제 1631 01:21:01,210 --> 01:21:04,820 현대 로켓 기술을 괴롭혀했다. 1632 01:21:04,820 --> 01:21:08,050 >> 시작으로 1991 년 -in 첫 번째 걸프 전쟁, 1633 01:21:08,050 --> 01:21:10,570 패트리어트 미사일 비슷한 종류의 경험 1634 01:21:10,570 --> 01:21:12,800 수 변환 문제. 1635 01:21:12,800 --> 01:21:16,090 결과적으로 28 명 28 미군, 1636 01:21:16,090 --> 01:21:19,080 사망, 약 하였다 100 명이 부상, 1637 01:21:19,080 --> 01:21:22,780 때 가정 된 애국, 들어오는 스커드을 방지하기 위해, 1638 01:21:22,780 --> 01:21:25,830 미사일을 발사하는 데 실패했습니다. 1639 01:21:25,830 --> 01:21:31,670 >> - 언제 이라크는 쿠웨이트, 미국을 침공 초기 1991 년 사막의 폭풍을 시작, 1640 01:21:31,670 --> 01:21:35,780 패트리어트 미사일 배터리는 배치되었다 사우디 아라비아와 이스라엘을 보호하기 위해 1641 01:21:35,780 --> 01:21:39,230 이라크의 스커드 미사일 공격. 1642 01:21:39,230 --> 01:21:43,810 애국은 미국의 중간 범위 공기 시스템의면에서 제조 1643 01:21:43,810 --> 01:21:45,770 레이 시온 회사에 의해. 1644 01:21:45,770 --> 01:21:52,340 >> 패트리어트 요격의 -THE 크기 자체에 대한 약 20 피트이다. 1645 01:21:52,340 --> 01:21:55,230 그리고 약 2,000 파운드의 무게. 1646 01:21:55,230 --> 01:21:59,320 그리고, 약의 탄두를 운반 나는 대략 150 파운드 생각합니다. 1647 01:21:59,320 --> 01:22:03,930 그리고 탄두 자체입니다 높은 폭발성, 어떤 1648 01:22:03,930 --> 01:22:07,330 주위 조각이있다. 1649 01:22:07,330 --> 01:22:11,680 탄두의 케이스입니다 사슴 사냥 용 총알처럼 행동하도록 설계되었습니다. 1650 01:22:11,680 --> 01:22:14,110 >> -THE 미사일이 수행된다 컨테이너 당 사, 1651 01:22:14,110 --> 01:22:17,130 및 세미 트레일러에 의해 운반된다. 1652 01:22:17,130 --> 01:22:24,930 >> 년 - 패트리어트 미사일 시스템 지금 적어도 20 년 전으로 거슬러 간다. 1653 01:22:24,930 --> 01:22:28,420 그것은 원래 설계되었습니다 공기 방어 미사일 등 1654 01:22:28,420 --> 01:22:30,720 적군의 비행기를 격추합니다. 1655 01:22:30,720 --> 01:22:34,500 첫 번째 걸프 전쟁에서, 그 전쟁이 따라 왔을 때, 1656 01:22:34,500 --> 01:22:39,745 육군은에 그것을 사용하고 싶어 스커드가 아닌 비행기를 격추. 1657 01:22:39,745 --> 01:22:43,620 >> 이라크 공군이었다 문제가 너무 없습니다. 1658 01:22:43,620 --> 01:22:46,670 그러나 군은 스커드에 대해 걱정했다. 1659 01:22:46,670 --> 01:22:50,170 그래서 그들은하려 애국를 업그레이드합니다. 1660 01:22:50,170 --> 01:22:52,800 >> 적을 -Intercepting 미사일 마하 5에 여행 1661 01:22:52,800 --> 01:22:55,830 충분히 도전 할 예정였다. 1662 01:22:55,830 --> 01:22:58,490 그러나 때 애국 서비스로 돌진했다, 1663 01:22:58,490 --> 01:23:02,860 육군은 인식하지 않았다 만든 이라크 수정 1664 01:23:02,860 --> 01:23:05,930 자신의 스커드 칠 거의 불가능합니다. 1665 01:23:05,930 --> 01:23:10,740 >> 무슨 일이 것은 스커드입니다 에서오고 있었다 불안정했다. 1666 01:23:10,740 --> 01:23:11,692 그들은 흔들 흔들했다. 1667 01:23:11,692 --> 01:23:14,910 그 이유였다 순서대로 이라크, 1668 01:23:14,910 --> 01:23:18,280 600km를 얻을 수 300 킬로미터 밖으로 1669 01:23:18,280 --> 01:23:21,700 미사일, 무게를했다 전면 탄두 중. 1670 01:23:21,700 --> 01:23:23,390 그들은 탄두 경량화했다. 1671 01:23:23,390 --> 01:23:27,330 >> 그래서 지금 애국이다 스커드에 와서하려고합니다. 1672 01:23:27,330 --> 01:23:30,230 대부분의 시간은 시간의 압도적 인 다수, 1673 01:23:30,230 --> 01:23:32,940 그냥 스커드에 의해 비행 것입니다. 1674 01:23:32,940 --> 01:23:37,260 애국 시스템 운영자 번 , 애국자는 목표를 놓친 실현 1675 01:23:37,260 --> 01:23:41,690 그들은 애국의 탄두를 폭발 그것이 가능하면 사고를 방지하기 위해 1676 01:23:41,690 --> 01:23:44,570 땅에 떨어지지 하였다. 1677 01:23:44,570 --> 01:23:48,790 >> 대부분의 사람들이 본 것을 - 그건이었다 하늘에서 그 큰 불 덩어리, 1678 01:23:48,790 --> 01:23:54,550 와 같은 오해 스커드 탄두의 차단. 1679 01:23:54,550 --> 01:23:56,630 >> 밤에 - 비록 하늘, 애국자 등장 1680 01:23:56,630 --> 01:24:00,370 성공적으로 될 수 있습니다 다란에서 스커드를 파괴, 1681 01:24:00,370 --> 01:24:03,360 실수있을 수 없다 성능에 대한. 1682 01:24:03,360 --> 01:24:07,970 거기에, 애국의 레이더 시스템 수신 스커드 추적을 잃었 1683 01:24:07,970 --> 01:24:10,721 및 때문에 시작하지 소프트웨어 결함에. 1684 01:24:10,721 --> 01:24:14,090 1685 01:24:14,090 --> 01:24:18,940 먼저 발견 한 이스라엘이었다 더 이상 시스템이 켜져 있는지, 1686 01:24:18,940 --> 01:24:22,690 큰 시간 불일치 때문에 내장 된 시계가되었다 1687 01:24:22,690 --> 01:24:24,810 이 시스템의 컴퓨터이다. 1688 01:24:24,810 --> 01:24:28,210 >> 대략 125 이주하기 전에 다란의 비극, 1689 01:24:28,210 --> 01:24:30,770 이스라엘은보고 국방부 1690 01:24:30,770 --> 01:24:32,590 그 시스템은 시간을 손실 하였다. 1691 01:24:32,590 --> 01:24:35,360 여덟 시간 실행 한 후, 그들은 시스템 것으로 나타났습니다 1692 01:24:35,360 --> 01:24:37,720 눈에 띄게 덜 정확한되고 있었다. 1693 01:24:37,720 --> 01:24:41,900 국방부에 의해 반응 애국 배터리의 모든 이야기 1694 01:24:41,900 --> 01:24:44,950 시스템을 떠나지합니다 오랜 시간에. 1695 01:24:44,950 --> 01:24:49,160 그들은 무엇을 오랫동안 말한 적 전 ... - 팔시간 10 시간 1,000 시간이다. 1696 01:24:49,160 --> 01:24:51,360 아무도 몰랐다. 1697 01:24:51,360 --> 01:24:53,380 >> 년 - 애국 배터리 막사에 주둔 1698 01:24:53,380 --> 01:24:58,350 다란과 결함이 내부에서 100시간를 통해 시계에 있었다 1699 01:24:58,350 --> 01:25:01,670 2 월 25 일의 밤에. 1700 01:25:01,670 --> 01:25:05,917 >> - 그것은 정확도로 시간을 추적 두 번째의 10 대한. 1701 01:25:05,917 --> 01:25:08,000 두 번째의 자, 십분의 흥미로운 숫자입니다, 1702 01:25:08,000 --> 01:25:11,920 이 표현 될 수 있기 때문에 정확히 이진에있는 1703 01:25:11,920 --> 01:25:16,820 정확히 표현할 수없는 수단 현대의 디지털 컴퓨터입니다. 1704 01:25:16,820 --> 01:25:18,540 그것은 믿기 어렵다. 1705 01:25:18,540 --> 01:25:21,210 >> 그러나 예를 들어이를 사용합니다. 1706 01:25:21,210 --> 01:25:23,540 이제 번호를 하나의 세 번째 보자. 1707 01:25:23,540 --> 01:25:27,350 한 세 번째는 될 수 없습니다 정확히 진수로 표현. 1708 01:25:27,350 --> 01:25:32,080 한 세 번째는 0.333이다 무한 동안 진행. 1709 01:25:32,080 --> 01:25:36,480 >> 와 그렇게 할 수있는 방법은 없습니다 소수의 절대 정확도. 1710 01:25:36,480 --> 01:25:39,560 즉, 문제의 정확히 종류의 그 애국에 일어났다. 1711 01:25:39,560 --> 01:25:44,100 더 이상 시스템이 실행은 더 시간 오류가되었다. 1712 01:25:44,100 --> 01:25:48,890 >> 운전 100 시간 -after의 시간 오류는 1/3이었다 1713 01:25:48,890 --> 01:25:50,600 초. 1714 01:25:50,600 --> 01:25:54,210 그러나 타겟팅의 측면에서 미사일 마하 5에 여행, 1715 01:25:54,210 --> 01:25:58,710 그 추적 결과 600 미터의 오류입니다. 1716 01:25:58,710 --> 01:26:02,120 그것은 치명적인 오류가 될 것이다 무엇에 군인을위한 1717 01:26:02,120 --> 01:26:08,940 무슨 일이 있었 스커드 발사했다입니다 조기 경보 위성에 의해 검출 1718 01:26:08,940 --> 01:26:12,860 그들은 스커드는 것을 알고 있었다 자신의 일반적인 방향으로오고. 1719 01:26:12,860 --> 01:26:15,320 이오고 어디 그들은 몰랐다. 1720 01:26:15,320 --> 01:26:18,250 >> - 그것은 레이더까지 지금이었다 패트리어트 시스템의 구성 요소 1721 01:26:18,250 --> 01:26:23,190 다란을 방어하는 것은 찾아 유지 들어오는 적의 미사일을 추적. 1722 01:26:23,190 --> 01:26:24,609 >> -THE 레이더는 매우 영리했다. 1723 01:26:24,609 --> 01:26:26,650 실제로 추적 할 것 스커드의 위치, 1724 01:26:26,650 --> 01:26:30,350 다음 어디 아마 예측 레이더 보낸 다음 시간이 될 것입니다 1725 01:26:30,350 --> 01:26:31,420 아웃 펄스. 1726 01:26:31,420 --> 01:26:33,110 즉 범위 게이트 불렀다. 1727 01:26:33,110 --> 01:26:37,660 >> - 그럼, 애국 번 충분한 시간을 가지고 결정 1728 01:26:37,660 --> 01:26:42,450 돌아가서 다음을 확인 통과 이 검출 된 객체에 대한 위치, 1729 01:26:42,450 --> 01:26:43,600 그것은 돌아갑니다. 1730 01:26:43,600 --> 01:26:48,650 그래서 잘못된로 돌아 갔을 때 장소는 그 다음에 어떤 물체를보고하지 않는다. 1731 01:26:48,650 --> 01:26:52,160 그리고 그것은 전혀가 있다고 결정하지 객체는 잘못된 검출했다 1732 01:26:52,160 --> 01:26:53,930 트랙을 삭제합니다. 1733 01:26:53,930 --> 01:26:57,030 >> -THE 들어오는 스커드가 사라 레이더 화면에서. 1734 01:26:57,030 --> 01:27:00,260 그리고 초 후에, 그것을 막사를 강타. 1735 01:27:00,260 --> 01:27:06,150 스커드 (28)를 살해하고 마지막으로 하나는 첫 번째 걸프 전쟁 때졌습니다. 1736 01:27:06,150 --> 01:27:11,960 >> 안타깝게도, 업데이트 된 소프트웨어 다음 날 다란에 도착했다. 1737 01:27:11,960 --> 01:27:14,930 소프트웨어 결함이 있었다 하고 고정 폐쇄 1738 01:27:14,930 --> 01:27:19,806 고생 한 장 패트리어트 미사일의 역사. 1739 01:27:19,806 --> 01:27:20,729 >> [VIDEO 재생] 1740 01:27:20,729 --> 01:27:23,520 데이비드 J. 마란 : 그래서이 모든이다 말 오버 플로우의 이러한 문제가 1741 01:27:23,520 --> 01:27:25,860 및 부정확성은 너무 현실이다. 1742 01:27:25,860 --> 01:27:26,920 어떻게 우리가 여기에 도착 했습니까? 1743 01:27:26,920 --> 01:27:28,895 우리는 printf의에 대해 얘기하기 시작했다. 1744 01:27:28,895 --> 01:27:31,270 다시 말하지만,이 기능이 화면에 뭔가를 인쇄 1745 01:27:31,270 --> 01:27:33,450 우리는 그 후 도입 몇 가지 다른 기능 1746 01:27:33,450 --> 01:27:34,945 소위 CS50의 라이브러리에서. 1747 01:27:34,945 --> 01:27:36,910 그리고 우리는 계속됩니다 때문에 시간이를 참조하십시오. 1748 01:27:36,910 --> 01:27:40,760 그리고 우리는, 특히, GET 문자열을 사용 및 INT를 얻고, 이제 플로트를 얻을, 1749 01:27:40,760 --> 01:27:44,410 그럼에도 불구하고 사람들은 여전히​​ 우리는 발생합니다 머지 않아 자신을 사용합니다. 1750 01:27:44,410 --> 01:27:47,220 >> 그러나 경우에,이 우리는 이미 필요를 볼 1751 01:27:47,220 --> 01:27:50,520 다시 무엇을 그 기능을 손 저장하는 방법? 1752 01:27:50,520 --> 01:27:52,920 그들은 우리 다시 문자열을 손, int 형, 또는 플로트 나. 1753 01:27:52,920 --> 01:27:56,070 그리고 때때로 우리는 그것을 둘 필요 어딘가에 문자열 또는 INT 또는 플로트. 1754 01:27:56,070 --> 01:28:00,100 >> 그리고 그 물건을 저장하는 데, 그냥 기억 스크래치처럼, 우리는 변수가 있습니다. 1755 01:28:00,100 --> 01:28:03,260 그러나 스크래치 달리, C에서 우리는 실제 유형이 1756 01:28:03,260 --> 01:28:05,530 variables-- 데이터의 유형, 더 generally-- 1757 01:28:05,530 --> 01:28:08,640 그 (것)들의 사이에서, 문자열의 int하는 떠, 여전히이 다른 사람. 1758 01:28:08,640 --> 01:28:12,321 >> 그래서 우리는 C에서 변수를 선언 할 때, 우리는 우리의 데이터 형식을 선언해야합니다. 1759 01:28:12,321 --> 01:28:14,820 이것은 우리가거야 일이 아니다 학기 이후에해야 할 1760 01:28:14,820 --> 01:28:16,810 로 우리는 다른 언어로 전환. 1761 01:28:16,810 --> 01:28:19,610 하지만 지금, 우리는 필요합니까 미리 사전에, 1762 01:28:19,610 --> 01:28:24,370 컴퓨터 유형에 대해 설명 변수의 우리는 우리를주고 싶다. 1763 01:28:24,370 --> 01:28:27,290 >> 지금, 한편, 인쇄 데이터 유형들 종류 1764 01:28:27,290 --> 01:28:29,570 우리에게 무엇을 기대해야하는지는 printf해야합니다. 1765 01:28:29,570 --> 01:28:32,450 그리고 우리는, 문자열 퍼센트의보고 및 정수에 대한 퍼센트 내가, 1766 01:28:32,450 --> 01:28:33,790 이미 몇 다른 사람. 1767 01:28:33,790 --> 01:28:37,237 그리고 그 단순히 요구 사항 시각적 프리젠 테이션 1768 01:28:37,237 --> 01:28:38,070 정보의. 1769 01:28:38,070 --> 01:28:42,080 >> 이들 각각은 실제로 될 수 매개 변수화 또는 어떤 방법으로 불통, 1770 01:28:42,080 --> 01:28:45,370 당신이 컨트롤을 촉진하려는 경우 당신이 얻을 출력의 유형입니다. 1771 01:28:45,370 --> 01:28:49,604 그리고, 사실, 그뿐만 아니라 밝혀 새로운 라인 백 슬래시 N이있다. 1772 01:28:49,604 --> 01:28:52,520 다른 백 슬래시라는 뭔가가있다 캐리지 리턴에 대한 연구한다 1773 01:28:52,520 --> 01:28:54,360 에 더 가깝다 구식 타자기, 1774 01:28:54,360 --> 01:28:57,690 또한 윈도우는 몇 년 동안 사용. 1775 01:28:57,690 --> 01:28:59,690 >> 탭의 백 슬래시 t이있다. 1776 01:28:59,690 --> 01:29:03,170 당신이 원한다면 것을 밝혀 문자열 내부에 큰 따옴표, 1777 01:29:03,170 --> 01:29:05,000 우리가 사용했던 리콜 큰 따옴표를 두 번 1778 01:29:05,000 --> 01:29:07,900 왼쪽과 오른쪽에 인용 지금까지 우리의 문자열로 끝납니다. 1779 01:29:07,900 --> 01:29:09,420 즉, 일을 혼동하는 것 같다. 1780 01:29:09,420 --> 01:29:12,503 >> 당신의 따옴표를 넣어하려는 경우 실제로, string--과의 중간, 1781 01:29:12,503 --> 01:29:13,670 그것을보고 혼란이다. 1782 01:29:13,670 --> 01:29:17,120 그리고 당신은 너무, 탈출해야 , 뭔가 이중 인용 부호를 말한다 1783 01:29:17,120 --> 01:29:18,860 같은, 말 그대로, 큰 따옴표를 백 슬래시. 1784 01:29:18,860 --> 01:29:20,230 그리고 아직도 다른 몇 가지가 있습니다. 1785 01:29:20,230 --> 01:29:24,540 그리고 우리는 그 이상을 볼 수 있습니다 오래 전에 실제 사용한다. 1786 01:29:24,540 --> 01:29:27,930 >> 그럼 지금부터 전환하자 데이터 및 표현, 1787 01:29:27,930 --> 01:29:30,820 및 산술 연산자, 모든 그 중 우리에게 약간의 건물을 준 1788 01:29:30,820 --> 01:29:32,070 와 블록을 재생합니다. 1789 01:29:32,070 --> 01:29:34,481 하지만 지금의이 실제로 제공 할 수 우리 어휘의 나머지 1790 01:29:34,481 --> 01:29:36,230 우리는 이미 한 것으로 스크래치와 지난 주 1791 01:29:36,230 --> 01:29:39,350 다른에 모습을 취함으로써 C--에서 구조되지 모두. 1792 01:29:39,350 --> 01:29:41,680 그러나 아이디어는 우리 것 정말 볼에 대한 1793 01:29:41,680 --> 01:29:45,610 에서 번역을 강조하기 위해 하나의 언어, 스크래치, 다른, C. 1794 01:29:45,610 --> 01:29:48,470 >> 그리고 시간이 지남에, 우리가 데리러 갈게 우리의 툴킷에 대한 더 많은 도구, 1795 01:29:48,470 --> 01:29:49,820 그래서 구문, 말을합니다. 1796 01:29:49,820 --> 01:29:54,190 그리고, 참으로, 당신은 아이디어를 볼 수 있습니다 지금 지난 주보다는 잘 알고 있습니다. 1797 01:29:54,190 --> 01:29:55,200 그래서이 작업을 수행 할 수 있습니다. 1798 01:29:55,200 --> 01:29:58,870 >> 이제 가서 프로그램을 채찍질하자 그 사실은 몇 가지 표현을 사용, 1799 01:29:58,870 --> 01:30:00,720 부울 식입니다. 1800 01:30:00,720 --> 01:30:02,810 내가 여기에 앞서 가자 새 파일을 만듭니다. 1801 01:30:02,810 --> 01:30:06,090 나는이 condition.c를 호출 할 수 있습니다. 1802 01:30:06,090 --> 01:30:09,350 >> 내가 가서 보자 CS50 라이브러리를 포함한다. 1803 01:30:09,350 --> 01:30:12,640 그리고 내가 가서 포함 할 수 우리의 기능에 대한 표준 IO.h, 1804 01:30:12,640 --> 01:30:14,690 과의 printf 등 각각. 1805 01:30:14,690 --> 01:30:18,900 나 자신에게의 상용구를 제공하자 그의 설명 우리는거야 INT 주요 무효, 1806 01:30:18,900 --> 01:30:20,360 뒤로 앞으로 온다. 1807 01:30:20,360 --> 01:30:23,820 >> 지금 내가 가서 해주지 자신의 get INT를 통해 INT. 1808 01:30:23,820 --> 01:30:25,970 그리고 내가 가서이 작업을 수행 할 수 있습니다. 1809 01:30:25,970 --> 01:30:30,150 내가하자 less-- 경우 내가하고 싶은 말 음, 양의 구별, 1810 01:30:30,150 --> 01:30:31,260 또는 0 값. 1811 01:30:31,260 --> 01:30:36,630 >> i가 0보다 작은 경우 그래서, 저를 보자 다만이 프로그램은 단순히 말을 가지고, 1812 01:30:36,630 --> 01:30:42,370 음, 백 슬래시 n을, 다른 I는 0보다 큰 경우. 1813 01:30:42,370 --> 01:30:47,030 지금은 물론, 말거야 긍정적 인, 백 슬래시 N을는 printf. 1814 01:30:47,030 --> 01:30:50,690 그리고 또 나는이 작업을 수행 할 수 혹시 .... 1815 01:30:50,690 --> 01:30:53,410 >> 내가 0 동일한 경우 나는 할 수있다. 1816 01:30:53,410 --> 01:30:55,840 하지만 난에서 만드는 것 이미 적어도 하나의 실수. 1817 01:30:55,840 --> 01:30:59,480 등호가 있음을 기억하라 동일하지, 우리 인간이 그것을 알고있다. 1818 01:30:59,480 --> 01:31:01,010 >> 그러나 할당 연산자입니다. 1819 01:31:01,010 --> 01:31:05,640 그리고 우리는에 0을하지 않으 오른쪽과 왼쪽 난에 넣어. 1820 01:31:05,640 --> 01:31:11,810 그래서이 혼란을 피하기, 또는하기 아마도 등호의 오용 서명, 1821 01:31:11,810 --> 01:31:14,740 인간은 몇 년 전에 결정 많은 프로그래밍 언어 1822 01:31:14,740 --> 01:31:18,000 당신은 어떤지를 확인하고자 할 때 왼쪽과 오른쪽 사이 1823 01:31:18,000 --> 01:31:19,635 당신은 실제로 동등한 동일 사용합니다. 1824 01:31:19,635 --> 01:31:21,010 그래서 당신은 등호 두 번에 서명했다. 1825 01:31:21,010 --> 01:31:25,600 당신은 오른쪽에서 할당 할 때 왼쪽에, 당신은 하나의 등호를 사용합니다. 1826 01:31:25,600 --> 01:31:29,360 그래서 우리는이 항아리 다른 할 수있는 전 같으면 0 인. 1827 01:31:29,360 --> 01:31:31,710 >> 그때 가서 수 내 중괄호를 엽니 다 1828 01:31:31,710 --> 01:31:36,087 과의 printf 0, 백 슬래시 N, 수행, 말한다. 1829 01:31:36,087 --> 01:31:38,170 하지만 방법이 기억 도로에서 포크 작업 할 수 있습니다. 1830 01:31:38,170 --> 01:31:39,836 그리고, 정말로, 그냥 논리에 대해 생각합니다. 1831 01:31:39,836 --> 01:31:41,510 나는 숫자입니다. 1832 01:31:41,510 --> 01:31:43,320 이는 구체적으로, 정수이다. 1833 01:31:43,320 --> 01:31:48,600 그리고 그것은 덜 될 것 의미 0, 0 0보다, 나보다. 1834 01:31:48,600 --> 01:31:51,600 그래서이 종류가있다 묵시적 기본 케이스. 1835 01:31:51,600 --> 01:31:54,920 >> 그래서 우리는 그냥 좋아하는 수 스크래치,의 다른 경우 생략 1836 01:31:54,920 --> 01:31:55,747 그냥 다른 말한다. 1837 01:31:55,747 --> 01:31:57,830 논리적으로, 만약 당신이 프로그래머가 만 알고 1838 01:31:57,830 --> 01:32:01,635 세 가지 버킷 이는에 시나리오 첫 fall-- 수 1839 01:32:01,635 --> 01:32:03,510 두 번째 또는 세 번째 이하지 않는 case--에 1840 01:32:03,510 --> 01:32:07,100 추가 정확도를 추가 귀찮게 거기에 추가 논리. 1841 01:32:07,100 --> 01:32:09,690 그냥 함께 진행 여기에 다른 사람의 기본 케이스. 1842 01:32:09,690 --> 01:32:11,950 >> 이제, 앞서 가자 이 저장 한 후, 확인 1843 01:32:11,950 --> 01:32:15,760 조건은 conditions-- 슬래시 점 없는 훌륭한 사용자 인터페이스, 1844 01:32:15,760 --> 01:32:18,914 내가 묻지 않을거야 때문에 사용자는 내가 앞서 언급으로. 1845 01:32:18,914 --> 01:32:19,580 하지만 괜찮아요. 1846 01:32:19,580 --> 01:32:20,454 우리는 간단하게됩니다. 1847 01:32:20,454 --> 01:32:21,890 의이 수 (42)를 해보자. 1848 01:32:21,890 --> 01:32:23,240 그리고 긍정적이다. 1849 01:32:23,240 --> 01:32:26,120 의이 수를 해보자 음, 42 음. 1850 01:32:26,120 --> 01:32:28,244 >> 의의 값이 0 해보자. 1851 01:32:28,244 --> 01:32:29,160 그리고, 참으로, 그것을 작동합니다. 1852 01:32:29,160 --> 01:32:33,900 지금, 당신은 전에 문제를 볼 수 있습니다 긴 테스트 것들 세 번, 1853 01:32:33,900 --> 01:32:34,980 아마 충분하지 않습니다. 1854 01:32:34,980 --> 01:32:37,438 당신은 아마 몇 가지를 테스트하려면 더 큰 숫자, 몇 가지 작은 1855 01:32:37,438 --> 01:32:40,520 숫자, 일부 코너의 경우, 같은 우리는 그들을 설명하기 위해 온 것입니다. 1856 01:32:40,520 --> 01:32:42,500 >> 하지만 지금,이 인 아주 간단한 프로그램. 1857 01:32:42,500 --> 01:32:45,160 그리고, 논리적으로, 확실 해요 그것은 세 가지 경우로 떨어질 것이다. 1858 01:32:45,160 --> 01:32:49,360 그리고, 참으로, 심지어 우리하지만 단지 잠재적 인 단점에 초점을 맞춘 1859 01:32:49,360 --> 01:32:53,480 부정확 및 오버 플로우에서 CS50의 문제가 많은 현실 경우, 1860 01:32:53,480 --> 01:32:56,000 우리는 걱정하지 않을 수 있습니다 모든 시간에 대한, 1861 01:32:56,000 --> 01:32:59,050 오버 플로우의 그 문제와 부정확성 때문에, 사실, C에서, 1862 01:32:59,050 --> 01:33:01,889 사실은 모두가 아니다 그 그 일을 방지하기 쉬운. 1863 01:33:01,889 --> 01:33:04,180 당신은 카운트하려면 더 큰, 더 큰, 더 큰, 1864 01:33:04,180 --> 01:33:07,510 이 기술을 사용하면이 밝혀 자주라는 것을 포함, 사용할 수 있습니다 1865 01:33:07,510 --> 01:33:11,240 라이브러리, 코드의 수집, 그 당신이 사용할 수있는 다른 사람들이 쓴 1866 01:33:11,240 --> 01:33:13,910 같은 다른 언어 실제로 자바와 다른 사람, 1867 01:33:13,910 --> 01:33:15,800 그것은 훨씬 쉽게 만들 더 높은 계산합니다. 1868 01:33:15,800 --> 01:33:19,810 그래서 정말 이러한 위험의 일부입니다 당신이 사용하는 언어의 함수. 1869 01:33:19,810 --> 01:33:22,710 그리고 앞으로 몇 주 안에, 우리는거야 정말 얼마나 위험 C를 참조하십시오 1870 01:33:22,710 --> 01:33:24,950 당신이 그것을 제대로 사용하지 않는 경우 일 수있다. 1871 01:33:24,950 --> 01:33:27,610 그러나 거기에서,와 함께 파이썬, 자바 스크립트, 것입니다 1872 01:33:27,610 --> 01:33:32,620 우리는 몇 가지 추가 보호를에 층, 그 위험의 적은 실행합니다. 1873 01:33:32,620 --> 01:33:35,820 >> 그럼 만들어 보자 조금 더 우리의 프로그램에서 흥미로운 논리. 1874 01:33:35,820 --> 01:33:39,110 그래서 내가 가서 만들 수 있습니다 논리라는 프로그램 1875 01:33:39,110 --> 01:33:43,804 그냥 좀 놀 수 있습니다 실제 로​​직, logical.c. 1876 01:33:43,804 --> 01:33:46,870 난 그냥 복사 일부를 붙여 넣기합니다 이전 그래서 코드에서 나는 돌아 가야 1877 01:33:46,870 --> 01:33:49,950 이 좋은 출발점이다. 1878 01:33:49,950 --> 01:33:53,980 >> 난 문자 C.을 나에게이 시간을 보자 그것을 C의 이름을 지정 예정 1879 01:33:53,980 --> 01:33:58,510 그것은 기존의 그냥 있기 때문에, 사용자로부터 문자를 얻을. 1880 01:33:58,510 --> 01:34:00,730 그리고 이제 척하자 나는 부분을 구현하고 있습니다 1881 01:34:00,730 --> 01:34:04,130 그 Rm의 프로그램의 제거 그 이전 프로그램은 사용자를 프롬프트 1882 01:34:04,130 --> 01:34:05,400 파일을 제거합니다. 1883 01:34:05,400 --> 01:34:06,750 우리는 이것을 어떻게 할 수 있습니까? 1884 01:34:06,750 --> 01:34:11,090 >> C가 동일한 경우는 내가하고 싶은 말 , 인용 인용을 끝내, 동일 1885 01:34:11,090 --> 01:34:16,304 Y는 다음 나는 가정거야 사용자가 예를 선택했다고. 1886 01:34:16,304 --> 01:34:17,470 난 그냥 예 인쇄 할거야. 1887 01:34:17,470 --> 01:34:19,440 실제로 기록 된 경우 제거 프로그램 1888 01:34:19,440 --> 01:34:21,420 우리는 파일을 제거 할 수 있습니다 코드의 더 많은 라인. 1889 01:34:21,420 --> 01:34:22,461 그러나 우리는 간단하게됩니다. 1890 01:34:22,461 --> 01:34:25,950 1891 01:34:25,950 --> 01:34:31,250 >> 다른 C가 동일한 경우 N-- 동일 지금 여기, 내가 말할거야 1892 01:34:31,250 --> 01:34:32,980 사용자는 어떤 의미가 있어야합니다. 1893 01:34:32,980 --> 01:34:34,360 그리고 다른, 그거 알아? 1894 01:34:34,360 --> 01:34:36,200 나는 어떤 다른 모른다 사용자가 입력하는 것입니다. 1895 01:34:36,200 --> 01:34:38,533 그래서 난 그냥 그런 말을하는거야 그 오류, 무엇이든 1896 01:34:38,533 --> 01:34:40,070 그 또는 그녀는 실제로 입력했습니다. 1897 01:34:40,070 --> 01:34:41,180 >> 그래서 여기 일이야? 1898 01:34:41,180 --> 01:34:44,530 근본적인 차이가있다 내가 과거에 한 일을 대. 1899 01:34:44,530 --> 01:34:49,300 큰 따옴표 큰 따옴표를 두 번 따옴표, 그리고 아직, 작은 따옴표, 1900 01:34:49,300 --> 01:34:50,170 작은 따옴표. 1901 01:34:50,170 --> 01:34:52,860 이 때, C에서 밝혀 당신은 문자열을 쓰고 싶어요, 1902 01:34:52,860 --> 01:34:56,680 당신은 우리가했습니다 것처럼 따옴표를 사용합니까 printf와 함께 모든 시간을 사용하고있다. 1903 01:34:56,680 --> 01:35:02,030 >> 하지만 당신은 단지에 대처하려면 단일 문자, 소위 문자, 1904 01:35:02,030 --> 01:35:03,780 당신은 실제로 작은 따옴표를 사용합니다. 1905 01:35:03,780 --> 01:35:05,450 프로그램 한 분들 전에, 당신은하지 않을 수 있습니다 1906 01:35:05,450 --> 01:35:07,850 이것에 대해 걱정했다 특정 언어로 구분. 1907 01:35:07,850 --> 01:35:09,450 C에서는 문제 않습니다. 1908 01:35:09,450 --> 01:35:12,560 내가 문자를받을 때 그래서 내가 원하는 등호를 사용하여 해당 문자를 비교 1909 01:35:12,560 --> 01:35:18,350 Y 또는 N 같은 일부 문자에 동일, 내가, 실제로, 작은 따옴표가 필요합니다. 1910 01:35:18,350 --> 01:35:19,770 >> 자, 가서이 작업을 수행 할 수 있습니다. 1911 01:35:19,770 --> 01:35:26,180 이제 가서 확인하자 논리적 점은 논리적 슬래시. 1912 01:35:26,180 --> 01:35:27,305 그리고 지금은 묻지하고 있습니다. 1913 01:35:27,305 --> 01:35:30,638 그래서, 아마, 더 나은 사용자 경험 실제로 말해 것입니다 무슨 여기에해야 할 일. 1914 01:35:30,638 --> 01:35:33,030 하지만 난 그냥 맹목적에 갈거야 좋은, OK, 예에 대한 y를 말한다. 1915 01:35:33,030 --> 01:35:35,780 >> 이제 다시 실행하자, n은 없음에 대한 좋은. 1916 01:35:35,780 --> 01:35:39,610 내가 아는 어떤 사람처럼 가정, 내 모자는 키가 너무 자주 모두에 잠급니다. 1917 01:35:39,610 --> 01:35:43,740 그래서, 자본 Y는 입력 오류를 않습니다. 1918 01:35:43,740 --> 01:35:46,130 OK, 내가 기대하고있어 정확히 아니다. 1919 01:35:46,130 --> 01:35:48,170 실제로, 컴퓨터 말 그대로 일을한다 1920 01:35:48,170 --> 01:35:51,794 나는 확인 do-- 할 말 소문자 y를 소문자 n은. 1921 01:35:51,794 --> 01:35:53,960 이 좋은 기분하지 않습니다 사용자 경험하지만. 1922 01:35:53,960 --> 01:35:59,010 나에 대해 물어 보자 수락 소문자 나 대문자 중 하나. 1923 01:35:59,010 --> 01:36:02,090 이 밝혀 그래서, 당신은 할 수 있습니다 스크래치처럼 뭔가 말을하고, 1924 01:36:02,090 --> 01:36:08,150 같은 문자 또는 C 같음 자본 단일 인용 Y 같습니다. 1925 01:36:08,150 --> 01:36:11,400 알고 보니, C는 없습니다 이 문자 키워드 나. 1926 01:36:11,400 --> 01:36:12,880 >> 그러나 두 개의 수직 막대를 가지고있다. 1927 01:36:12,880 --> 01:36:15,463 당신은 일반적으로 Shift 키를 누른해야 당신이 미국 키보드를 사용하는 경우, 1928 01:36:15,463 --> 01:36:18,910 수직 가로대에 맞았 당신의 리턴 키 위의 키. 1929 01:36:18,910 --> 01:36:22,410 하지만이 수직 막대 수직 막대는 의미 나. 1930 01:36:22,410 --> 01:36:26,220 >> 경우, 대조적으로, 우리는 원 스크래치처럼, 말을하고, 1931 01:36:26,220 --> 01:36:28,180 우리는 앰퍼샌드 앰퍼샌드을 할 수 있습니다. 1932 01:36:28,180 --> 01:36:31,330 즉, 여기에 논리적 인 이해되지 않는다 때문에 인간의 가능성이없는 수 1933 01:36:31,330 --> 01:36:37,110 입력 한 두 Y와 소문자 y를 같은 문자로 자본 Y. 1934 01:36:37,110 --> 01:36:39,470 그래서이거나 우리가 여기서 뭘하려는. 1935 01:36:39,470 --> 01:36:46,280 >> 나는 두 곳에서이 작업을 수행하는 경우, 또는 c 그래서 자본 N, 지금 다시 실행 일치 한 동일 1936 01:36:46,280 --> 01:36:49,390 논리 논리 다시 실행합니다. 1937 01:36:49,390 --> 01:36:51,200 지금, 나는 Y를 입력 할 수 있습니다. 1938 01:36:51,200 --> 01:36:53,920 그리고 난 다시 그것을 할 수 있습니다 자본 Y, 또는 자본 N. 1939 01:36:53,920 --> 01:36:56,630 그리고 추가에 추가 할 수 있습니다 아직 조합. 1940 01:36:56,630 --> 01:36:58,810 >> 그래서 이것은 논리적이다 지금처럼하는 한 프로그램 1941 01:36:58,810 --> 01:37:01,940 나는에 대해 논리적으로 확인 해요 이 값 또는이 값. 1942 01:37:01,940 --> 01:37:06,420 그리고, 반드시 필요 없어 두 개 더 IFS 또는 다른 IFS와 함께 제공됩니다. 1943 01:37:06,420 --> 01:37:09,960 나는 실제로 몇 가지를 결합 할 수 있습니다 이러한 방식으로 서로 관련 논리. 1944 01:37:09,960 --> 01:37:11,950 그래서이 더 나은 것 단순히보다 설계 1945 01:37:11,950 --> 01:37:17,490 C는 소문자 y를 동일한 경우, 말, C는 자본 Y와 동일한 경우는 다른, 예 인쇄, 1946 01:37:17,490 --> 01:37:20,074 C가 동일한 경우는 다른, 예 인쇄 즉 lower--, 1947 01:37:20,074 --> 01:37:21,990 당신은 할 필요가 없습니다 더 많은 지점. 1948 01:37:21,990 --> 01:37:28,840 당신은 등가의 일부를 결합 할 수 있습니다 이러한 방식으로 논리적 분기. 1949 01:37:28,840 --> 01:37:34,150 >> 그래서 그냥 한 곳에서 살펴 보자 최종 성​​분, 하나의 최종 구조, 1950 01:37:34,150 --> 01:37:34,847 그 C가 있습니다. 1951 01:37:34,847 --> 01:37:36,930 그리고 우리는 다시 올 것이다 여전히 다른 사람에게 미래. 1952 01:37:36,930 --> 01:37:41,400 그리고 우리는보고 결론을 내릴 수 있습니다 code-- 아닌 정확성에 1953 01:37:41,400 --> 01:37:46,070 코드를 얻는 것은 work--하지만 디자인하기 코드로, 초기에 그 씨앗을 심는. 1954 01:37:46,070 --> 01:37:51,337 >> 그래서 내가 가서 보자 여기에 새 파일을 엽니 다. 1955 01:37:51,337 --> 01:37:51,920 당신 그거 알아? 1956 01:37:51,920 --> 01:37:54,450 나는 다시 구현거야 같은 프로그램, 1957 01:37:54,450 --> 01:37:55,940 하지만 다른 구조를 사용하여. 1958 01:37:55,940 --> 01:38:00,110 >> 그래서 자신을주고 빨리 저를 보자 액세스 CS50.h을 포함하는 1959 01:38:00,110 --> 01:38:04,150 CS50 라이브러리, printf의 표준 Io.h. 1960 01:38:04,150 --> 01:38:06,510 나에게 내 INT의 주요 공간을 제공합니다. 1961 01:38:06,510 --> 01:38:09,310 그리고 여기,하자 나 가서 이렇게. 1962 01:38:09,310 --> 01:38:12,010 >> 문자 C는 직전과 같은 문자를 얻을 가져옵니다. 1963 01:38:12,010 --> 01:38:16,770 그리고 나는 새로운 구조를 사용하는거야 어떤 캐릭터, 전환 now--? 1964 01:38:16,770 --> 01:38:19,820 그래서 스위치는 가지처럼 기차 트랙을 전환. 1965 01:38:19,820 --> 01:38:22,070 아니면, 정말, 그것의 종류입니다 다른 경우, 만약 다른 경우, 1966 01:38:22,070 --> 01:38:23,980 하지만 다소 다르게 작성합니다. 1967 01:38:23,980 --> 01:38:25,490 >> 스위치는 다음과 같습니다. 1968 01:38:25,490 --> 01:38:29,060 당신은 스위치가 다음 무엇을 문자 또는 당신이보고 싶을 수, 1969 01:38:29,060 --> 01:38:32,000 그 다음 약간의 중괄호에 좋아 스크래치, 그냥 물건을 말한다. 1970 01:38:32,000 --> 01:38:33,480 그리고 당신은 다른 경우가 있습니다. 1971 01:38:33,480 --> 01:38:34,830 >> 다음과 같은 경우와 다른 사용하지 마십시오. 1972 01:38:34,830 --> 01:38:37,050 당신은 말 그대로 단어 케이스를 사용합니다. 1973 01:38:37,050 --> 01:38:38,790 그리고 당신이 뭔가를 말할 것입니다. 1974 01:38:38,790 --> 01:38:43,820 >> 그래서 소문자 (Y)의 경우, 또는 자본 Y의 경우, 1975 01:38:43,820 --> 01:38:47,350 가서 네 인쇄. 1976 01:38:47,350 --> 01:38:49,020 그리고 스위치에서 휴식. 1977 01:38:49,020 --> 01:38:49,580 이게 다예요. 1978 01:38:49,580 --> 01:38:50,880 되었다. 1979 01:38:50,880 --> 01:38:57,270 >> 말하자면, 경우 다른, 소문자 N, 자본 N, 1980 01:38:57,270 --> 01:39:02,560 다음 가서 인쇄 밖으로없는 한 다음 휴식. 1981 01:39:02,560 --> 01:39:08,022 Else-- 그리고이 종류 인 기본 경우 indeed--의 printf error-- 1982 01:39:08,022 --> 01:39:10,980 그냥하지만​​, 좋은 측정을위한 논리적으로이 휴식이 필요하지 않습니다 1983 01:39:10,980 --> 01:39:12,896 우리는 마지막이기 때문에 어쨌든 스위치, 1984 01:39:12,896 --> 01:39:14,520 지금은 스위치의 돌발하고있다. 1985 01:39:14,520 --> 01:39:16,280 그래서 이것은 조금 다른 보인다. 1986 01:39:16,280 --> 01:39:18,272 >> 하지만, 논리적으로, 그것은이다 실제로 것과 같습니다. 1987 01:39:18,272 --> 01:39:19,980 그리고 왜 사용합니다 다른 통해 하나? 1988 01:39:19,980 --> 01:39:23,220 때로는 그냥 개인적인 취향, 때로는 미학, 1989 01:39:23,220 --> 01:39:25,420 나는이 언뜻 경우 지금, 거기에 뭔가 1990 01:39:25,420 --> 01:39:27,510 라고 할 수 있습니다 이 코드의 가독성. 1991 01:39:27,510 --> 01:39:30,690 내 말은,이 사실을 결코 마음 코드는 방에있는 우리의 많은 새로운 기능입니다. 1992 01:39:30,690 --> 01:39:33,515 >> 그러나 그것은 단지 종류의 예쁜입니다. 1993 01:39:33,515 --> 01:39:37,760 당신은 소문자 y를, 자본 Y 참조 소문자 N 자본 N 기본, 1994 01:39:37,760 --> 01:39:40,150 그냥 가지 점프 방법으로 당신의 밖으로 1995 01:39:40,150 --> 01:39:42,200 틀림없이, 어쩌면, 그 앞의 예 1996 01:39:42,200 --> 01:39:45,780 IFS의, 수직 막대, 그리고 다른 사람의 IFS는 없을 수도 있습니다. 1997 01:39:45,780 --> 01:39:51,600 그래서 이것은 개인의 정말 문제입니다 선택, 정말, 또는 가독성, 1998 01:39:51,600 --> 01:39:52,360 코드. 1999 01:39:52,360 --> 01:39:58,230 >> 그러나 기능의 관점에서 나를 보자 가서 스위치, 도트 슬래시을 2000 01:39:58,230 --> 01:40:05,830 스위치는, 지금, 소문자 y를 입력 자본 Y, 소문자 N 자본 N, 2001 01:40:05,830 --> 01:40:09,250 그 때문에 다윗은 다시 시도 하지 단일 문자. 2002 01:40:09,250 --> 01:40:12,050 예상대로의이, 배, 오류를하자. 2003 01:40:12,050 --> 01:40:15,640 그리고, logically--이는 뭔가 나는 general--도에 격려 것 2004 01:40:15,640 --> 01:40:17,790 우리는 단지 긁적하고 비록 이러한 기능 중 일부의 표면. 2005 01:40:17,790 --> 01:40:20,560 >> 그리고 그것은 분명하지 않을 수 있습니다 때를 자신은 키보드에 앉아 2006 01:40:20,560 --> 01:40:21,370 어떻게 작동합니까? 2007 01:40:21,370 --> 01:40:22,240 이것은 무엇을 할 것인가? 2008 01:40:22,240 --> 01:40:25,630 데에 대한 아름다운 것 노트북 또는 데스크탑, 또는 액세스 2009 01:40:25,630 --> 01:40:29,290 컴파일러와 컴퓨터, 이 같은 코드 편집기, 2010 01:40:29,290 --> 01:40:32,990 당신은 거의 항상이 대답 할 수있다 다만 노력에 의해 자신에 대한 질문. 2011 01:40:32,990 --> 01:40:36,570 >> 예를 들어, 수사학 경우 손에 질문했다, 2012 01:40:36,570 --> 01:40:39,540 당신이 잊어 버리면 어떻게됩니까 당신의 휴식 문? 2013 01:40:39,540 --> 01:40:41,400 이는 실제로 할 일이 매우 일반적인, 2014 01:40:41,400 --> 01:40:43,540 그것은 보이지 않는 때문에 같은 당신이 정말로 그들을 필요합니다. 2015 01:40:43,540 --> 01:40:46,790 그들은 정말 완료하지 귀하 괄호 또는 곱슬처럼 생각 2016 01:40:46,790 --> 01:40:47,714 중괄호는 않습니다. 2017 01:40:47,714 --> 01:40:49,630 의 앞서 가자와 코드를 컴파일하고 참조하십시오. 2018 01:40:49,630 --> 01:40:53,690 그래서 스위치, 도트 슬래시 스위치를 확인하십시오. 2019 01:40:53,690 --> 01:40:56,435 의 소문자를 입력하자 Y는 상단 경우, 입력합니다. 2020 01:40:56,435 --> 01:40:59,390 2021 01:40:59,390 --> 01:41:00,700 그래서 나는 Y를 입력했습니다. 2022 01:41:00,700 --> 01:41:04,420 >> 이 프로그램은 아니, 그래 말했다, 오류, 비록 그것의 마음을 변경했다. 2023 01:41:04,420 --> 01:41:09,280 어떤 일이 발생하기 때문에 그러나 가지였다 스위치와 함께 첫 번째 경우는 그 2024 01:41:09,280 --> 01:41:13,899 경기는 본질적 의미, 헤이 컴퓨터, 그 아래에 모든 코드를 실행합니다. 2025 01:41:13,899 --> 01:41:16,690 그리고 당신은 말을하지 않는 경우 휴식, 또는 휴식을 말을하지 않습니다, 또는 휴식을 말을하지 않습니다, 2026 01:41:16,690 --> 01:41:19,540 컴퓨터가 날려 것입니다 그 라인의 모든을 통해 2027 01:41:19,540 --> 01:41:22,779 때까지 모두를 수행 그것은 그 중괄호로 가져옵니다. 2028 01:41:22,779 --> 01:41:24,320 따라서 브레이크는, 참으로 필요하다. 2029 01:41:24,320 --> 01:41:27,120 그러나 여기에 테이크 아웃이 될 때입니다 의심, 무언가를 시도. 2030 01:41:27,120 --> 01:41:29,510 아마 먼저 코드를 저장, 또는 별도의 파일에 저장 2031 01:41:29,510 --> 01:41:32,930 당신은 정말 걱정하는 경우 엉망 및 복구하는 데 2032 01:41:32,930 --> 01:41:34,430 당신이 알고있는 작품 노력하고 있습니다. 2033 01:41:34,430 --> 01:41:35,410 >> 그러나 일을하려고합니다. 2034 01:41:35,410 --> 01:41:38,074 그리고, 아마도, 같은 두려워하지 말라 컴퓨터가 할 수있는 무엇, 2035 01:41:38,074 --> 01:41:39,490 또는 당신이 뭔가를 깰 수있다. 2036 01:41:39,490 --> 01:41:42,790 당신은 항상 다시 되돌릴 수 있습니다 일부 이전 버전. 2037 01:41:42,790 --> 01:41:45,640 >> 그럼보고 끝낼 수 있습니다 코드의 디자인에서. 2038 01:41:45,640 --> 01:41:49,020 우리가 작성하는 지금이 능력을 가지고 조건 및 기록 루프 2039 01:41:49,020 --> 01:41:50,850 변수 및 통화 기능을 제공합니다. 2040 01:41:50,850 --> 01:41:54,590 그래서 솔직히, 우리는 뒷면에 친절 여기서 우리는 스크래치와 주일 전이었다 2041 01:41:54,590 --> 01:42:00,120 덜 강력한 텍스트와이기는하지만 스크래치보다 환경이 있습니다. 2042 01:42:00,120 --> 01:42:03,990 >> 그러나 우리가 획득 한 얼마나 빨리 발견 이 경우에도 그 어휘, 2043 01:42:03,990 --> 01:42:07,570 에서 싱크 조금 시간이 걸릴 것, 우리가이 용어를 사용할 수 있도록 2044 01:42:07,570 --> 01:42:10,320 더 흥미로운 프로그램을 작성합니다. 2045 01:42:10,320 --> 01:42:12,940 그리고 이제 아기 조치를 취할 수 있도록 그 방향으로는 다음과 같다. 2046 01:42:12,940 --> 01:42:14,890 내가 가서 보자 여기에 새 파일을 만듭니다. 2047 01:42:14,890 --> 01:42:17,750 >> 나는이 전화거야 prototype.c 및 소개 2048 01:42:17,750 --> 01:42:20,954 처음 능력 자신의 기능을 확인합니다. 2049 01:42:20,954 --> 01:42:22,870 여러분 중 일부는있을 수 있습니다 스크래치와 함께이 일을, 2050 01:42:22,870 --> 01:42:25,430 이에 만들 수 있습니다 스크래치에서 사용자 정의 블록, 2051 01:42:25,430 --> 01:42:27,892 다음 장소로 드래그 어디든지 당신이 C로하고 싶습니다 2052 01:42:27,892 --> 01:42:30,100 그리고 대부분의 프로그래밍에 언어, 당신은 정확하게 수행 할 수 있습니다 2053 01:42:30,100 --> 01:42:33,580 that-- 자신의 기능을, 그들은 이미 존재하지 않는 경우. 2054 01:42:33,580 --> 01:42:38,660 >> 그래서, 예를 들어, 내가 앞서 가자 및 CS50.h을 포함하고 포함 2055 01:42:38,660 --> 01:42:43,110 표준 IO.h, INT 주요 무효. 2056 01:42:43,110 --> 01:42:46,020 그리고 지금 우리는이 갈 준비가 자리 표시 자. 2057 01:42:46,020 --> 01:42:48,550 나는 인쇄 일을 계속 사람들의 이름이 오늘있다. 2058 01:42:48,550 --> 01:42:51,910 그리고는 이렇게 ... 느낌 좋은하지 않을 경우이 2059 01:42:51,910 --> 01:42:53,936 인쇄 이름라는 함수를했다? 2060 01:42:53,936 --> 01:42:55,060 나는의 printf를 사용할 필요가 없습니다. 2061 01:42:55,060 --> 01:42:56,976 나는 기억할 필요가 없습니다 모든 형식의 코드. 2062 01:42:56,976 --> 01:43:00,050 왜하지 I, 또는 왜 내 앞에 누군가를하지 않았다 2063 01:43:00,050 --> 01:43:02,980 함수 호출 인쇄를 작성 이름, 몇 가지 이름을 부여하는 것이, 2064 01:43:02,980 --> 01:43:03,980 간단하게 출력한다? 2065 01:43:03,980 --> 01:43:08,700 >> 즉, 나는 야, 말한다면 컴퓨터가 나에게 문자열을 제공 2066 01:43:08,700 --> 01:43:11,870 예를 사용자에게 요청하여, CS50의 GET 문자열 기능을 통해. 2067 01:43:11,870 --> 01:43:15,090 이봐, 컴퓨터에서 해당 문자열을 넣어 좌측의 변수, 2068 01:43:15,090 --> 01:43:16,150 그것은이야 호출합니다. 2069 01:43:16,150 --> 01:43:22,150 그리고, 컴퓨터 야, 가서 그리고 사람의 이름, 수행 것을 인쇄 할 수 있습니다. 2070 01:43:22,150 --> 01:43:26,240 >> 지금, 그것은 좋은 일 때문에 것 이 프로그램은 적절하게 명명 2071 01:43:26,240 --> 01:43:29,170 이하기로되어 있는지 알려줍니다 그 함수의 이름의 방법으로. 2072 01:43:29,170 --> 01:43:32,930 내가 가서 프로토 타입을 만들어 입력 할 수 있습니다. 2073 01:43:32,930 --> 01:43:34,930 그리고, 불행하게도, 이 비행하지 않을. 2074 01:43:34,930 --> 01:43:39,430 >> Prototype.c, 7 호선, 문자 5, 오류, 암시 적 선언 2075 01:43:39,430 --> 01:43:42,960 기능 인쇄 이름 C99, C99에 유효하지 않습니다 2076 01:43:42,960 --> 01:43:45,130 C 버전을 의미 즉, 1999 년에 나왔다. 2077 01:43:45,130 --> 01:43:45,730 그게 다야. 2078 01:43:45,730 --> 01:43:48,780 >> 그래서 나도 몰라 무엇을 이 모든 아직 의미한다. 2079 01:43:48,780 --> 01:43:50,810 그러나 나는 빨간색으로 오류를 인식 할. 2080 01:43:50,810 --> 01:43:51,770 그것은 매우 분명하다. 2081 01:43:51,770 --> 01:43:53,769 >> 그리고 그것은을 가진 것 같다 여기에 녹색 문자, 2082 01:43:53,769 --> 01:43:57,520 문제는 인쇄 이름으로 열려 괄호 s에 가까운 괄호, 세미콜론. 2083 01:43:57,520 --> 01:44:01,800 그러나의 암시 적 선언 함수 우리는 간단히 이전 보았다. 2084 01:44:01,800 --> 01:44:04,880 이 것을 단순히 의미 연타 무슨 뜻인지 알 수 없습니다. 2085 01:44:04,880 --> 01:44:09,000 >> 그것의 것을 나는 어휘 단어를 사용했습니다 본하거나 이전에 배운 적이. 2086 01:44:09,000 --> 01:44:11,950 그래서 나는 그것을 가르 칠 필요 이 기능은 무엇을 의미하는지. 2087 01:44:11,950 --> 01:44:13,590 그래서 내가 가서 그렇게 할거야. 2088 01:44:13,590 --> 01:44:17,970 >> 내가 가서 구현하는거야 인쇄 이름이라고 내 자신의 함수입니다. 2089 01:44:17,970 --> 01:44:24,720 다음과 같이 그리고 나는 것을 말할거야 그것은이, printf와, 안녕하세요, 퍼센트 않습니다 2090 01:44:24,720 --> 01:44:27,760 의, 백 슬래시 N, 이름, 세미콜론. 2091 01:44:27,760 --> 01:44:29,250 그래서 난 그냥 무슨 짓을 한거야? 2092 01:44:29,250 --> 01:44:31,325 >> 그래서에, 밝혀 자신의 기능을 구현 2093 01:44:31,325 --> 01:44:33,845 우리는 가지의 일부를 빌려 메인 동일한 구조 2094 01:44:33,845 --> 01:44:35,720 우리는 단지 있었던 것을 촬영 부여, 그리고 2095 01:44:35,720 --> 01:44:37,730 알고 그냥 복사 거의 어떤 붙여 넣기 2096 01:44:37,730 --> 01:44:39,170 나는 과거에 작성했습니다. 2097 01:44:39,170 --> 01:44:40,570 그러나 여기 패턴을 알 수 있습니다. 2098 01:44:40,570 --> 01:44:43,750 지능은, 주요, 무효, 우리는 떨어져 애타게합니다 머지 않아이 실제로 무엇을 의미하는지. 2099 01:44:43,750 --> 01:44:46,160 >> 그러나 오늘, 단지 병렬을 알 수 있습니다. 2100 01:44:46,160 --> 01:44:48,210 공허, 인쇄 이름, 문자열 이름, 그래서 거기에 2101 01:44:48,210 --> 01:44:50,310 보라색 ​​키워드하는 우리는 시작하는거야 2102 01:44:50,310 --> 01:44:54,067 의 반환 형식을 호출, 이름 기능하고, 입력. 2103 01:44:54,067 --> 01:44:56,400 그래서, 실제로, 우리는 증류 할 수 있습니다 등 지난 주 이런 종류의 2104 01:44:56,400 --> 01:44:59,030 이는 나 이름은 그대로 우리가있어 코드의 알고리즘 2105 01:44:59,030 --> 01:45:00,761 을 write-- 것 기본 알고리즘 2106 01:45:00,761 --> 01:45:02,010 코드는 우리가 작성하는 것입니다. 2107 01:45:02,010 --> 01:45:03,180 >> 이 입력된다. 2108 01:45:03,180 --> 01:45:04,670 이 출력된다. 2109 01:45:04,670 --> 01:45:08,730 이 기능은 인쇄 이름이며 이름라는 문자열을하도록 설계, 2110 01:45:08,730 --> 01:45:11,350 또는 무엇 이건, 입력으로하고 무효. 2111 01:45:11,350 --> 01:45:13,904 그것은 아무것도 반환하지 않습니다 같은 문자열을 가져 오거나 INT는 않습니다 얻을. 2112 01:45:13,904 --> 01:45:15,570 그래서 다시 내게 뭔가를 손에 것입니다. 2113 01:45:15,570 --> 01:45:17,960 그냥있는 것 부작용 말하자면 2114 01:45:17,960 --> 01:45:19,570 사람의 이름을 인쇄. 2115 01:45:19,570 --> 01:45:22,260 그래서, 7 호선, 알 인쇄 이름을 호출 할 수 있습니다. 2116 01:45:22,260 --> 01:45:25,920 선 (10), 나는 정의 할 수 있습니다 또는 인쇄 이름을 구현합니다. 2117 01:45:25,920 --> 01:45:28,450 그러나, 불행하게도, 그것은 충분하지 않습니다. 2118 01:45:28,450 --> 01:45:31,230 >> 내가 가서 보자 저장 한 후이를 다시 컴파일. 2119 01:45:31,230 --> 01:45:33,910 우와, 지금, 나는 그것을했습니다 더 나쁜, 그것은 보인다. 2120 01:45:33,910 --> 01:45:37,027 그렇게 암시 적 선언 기능 인쇄 이름이 잘못되었습니다. 2121 01:45:37,027 --> 01:45:38,360 그리고, 다시, 더 많은 오류가있다. 2122 01:45:38,360 --> 01:45:41,430 하지만 난 이전주의로 당신이 압도 얻을 경우, 2123 01:45:41,430 --> 01:45:44,850 또는 조금 슬픈 너무 많은 것을 볼 수 있습니다 에러는, 제에만 집중 2124 01:45:44,850 --> 01:45:47,500 초기 왜냐하면 그것은 단지 수도 계단식 효과가 있었다. 2125 01:45:47,500 --> 01:45:51,970 보다 구체적으로 C 또는 연타 그래서 여전히 인쇄 이름을 인식하지 못합니다. 2126 01:45:51,970 --> 01:45:54,580 >> 그리고 그 때문에 연타는이다 디자인, 종류의 바보입니다. 2127 01:45:54,580 --> 01:45:56,280 그것은 단지 당신이 그것을 말해 무엇 않습니다. 2128 01:45:56,280 --> 01:46:00,950 그리고만을 위해 그렇게 하는 당신이 할 그것을 말해. 2129 01:46:00,950 --> 01:46:05,270 >> 그래서, 온라인 사에 대한 기본 정의 같은 우리는 꽤 자주 해왔습니다. 2130 01:46:05,270 --> 01:46:07,980 나는 선 (10)에 인쇄 이름을 정의했습니다. 2131 01:46:07,980 --> 01:46:11,793 하지만 내가 사용하려고 해요 라인 일곱에 인쇄 이름입니다. 2132 01:46:11,793 --> 01:46:13,670 >> 그것은 너무 빨리, 아직 존재하지 않는 것. 2133 01:46:13,670 --> 01:46:19,150 그래서 영리하고, 같은 수, 좋아, 그럼 그냥 연주하자, 2134 01:46:19,150 --> 01:46:23,680 인쇄 이름을 이동 여기에, 다시 컴파일합니다. 2135 01:46:23,680 --> 01:46:24,550 세상에. 2136 01:46:24,550 --> 01:46:25,260 그것은했다. 2137 01:46:25,260 --> 01:46:26,670 그것은 그렇게 간단했다. 2138 01:46:26,670 --> 01:46:28,120 >> 그러나 논리는 정확히이다. 2139 01:46:28,120 --> 01:46:30,870 당신은 연타를 가르 칠 필요가 무엇 제 기능을 정의한다. 2140 01:46:30,870 --> 01:46:31,920 그럼 당신은 그것을 사용할 수 있습니다. 2141 01:46:31,920 --> 01:46:33,940 하지만, 솔직히,이 느낌 미끄러운 경사 등을들 수있다. 2142 01:46:33,940 --> 01:46:35,773 >> 그래서 때마다 나는 실행 문제로, 그냥 해요 2143 01:46:35,773 --> 01:46:39,450 선택하고 코드를 복사 예정 나는 그것을 잘라 여기를 붙여 썼다. 2144 01:46:39,450 --> 01:46:41,370 그리고, 확실히, 우리는 할 수 몇 가지 시나리오를 고안 2145 01:46:41,370 --> 01:46:43,286 여기서 하나의 기능은 수도 서로를 호출해야합니다. 2146 01:46:43,286 --> 01:46:46,030 그리고 당신은 모든을 넣을 수 없습니다 다른 모든 위의 함수. 2147 01:46:46,030 --> 01:46:47,930 >> 그래서 거기의 밝혀 더 나은 솔루션입니다. 2148 01:46:47,930 --> 01:46:50,100 우리는이 될 남길 수 있습니다. 2149 01:46:50,100 --> 01:46:53,677 그리고, 솔직히, 그것은 일반적으로 좋은입니다 편리하고 좋은 디자인 2150 01:46:53,677 --> 01:46:56,760 때문에, 다시, 제 1 주 넣어, 다만 녹색 깃발을 클릭 할 때처럼 주, 2151 01:46:56,760 --> 01:46:59,027 그 기능입니다 기본적으로 실행됩니다. 2152 01:46:59,027 --> 01:47:01,110 그래서 당신은뿐만 아니라 넣을 수 있습니다 파일의 맨 위에 그 2153 01:47:01,110 --> 01:47:03,560 그래서 당신이나 때 다른 사람은 파일을 살펴 봅니다 2154 01:47:03,560 --> 01:47:06,360 당신은 무슨 일이 일어나고 있는지 알고 다만 주 먼저 읽어. 2155 01:47:06,360 --> 01:47:15,360 이 밝혀 그래서, 우리는 연타를 알 수 있습니다 사전에, 헤이, 연타, 행 사에, 2156 01:47:15,360 --> 01:47:17,940 내가 구현하는 약속 함수 호출 인쇄 2157 01:47:17,940 --> 01:47:22,600 문자열라는 이름을 사용합니다 이름 입력 및 반환 아무것도 무효로. 2158 01:47:22,600 --> 01:47:24,770 그리고 주위에 얻을 것이다 나중에 구현. 2159 01:47:24,770 --> 01:47:25,680 >> 여기에 주요 온다. 2160 01:47:25,680 --> 01:47:29,130 지금 줄에 9 사용할 수있는 홈페이지 인쇄 이름 때문에 연타 2161 01:47:29,130 --> 01:47:32,600 결국, 그 신뢰한다, 그 정의를 만날 2162 01:47:32,600 --> 01:47:34,880 인쇄 이름의 구현. 2163 01:47:34,880 --> 01:47:37,390 그래서 내 파일을 저장 한 후,하자 나 가서 프로토 타입을, 2164 01:47:37,390 --> 01:47:38,498 이 때 좋아 보인다. 2165 01:47:38,498 --> 01:47:43,470 점은 프로토 타입, 나를 보자, 슬래시 가서 이름을 입력합니다. 2166 01:47:43,470 --> 01:47:48,440 데이비드, 안녕하세요 데이비드, Zamila, 안녕하세요 Zamila, 그리고, 참으로, 지금은 작동합니다. 2167 01:47:48,440 --> 01:47:52,200 >> 그래서 여기 성분은 우리가했습니다 것입니다 사용자 정의처럼, 사용자 정의 함수를 만든 2168 01:47:52,200 --> 01:47:54,219 스크래치 블록 우리가 그것을 호출하고 있습니다. 2169 01:47:54,219 --> 01:47:57,010 그러나 스크래치와는 달리 어디 수 그냥 만들고 그것을 사용하기 시작, 2170 01:47:57,010 --> 01:47:59,330 지금 우리는 일해야 더 현학적 작은 2171 01:47:59,330 --> 01:48:03,410 실제로 연타를 양성 사용하거나 예상 할 수 있습니다. 2172 01:48:03,410 --> 01:48:09,140 이제 제쳐두고로 모든이 시간은 왜 우리는 다음과 같은 믿음에 그냥 맹목적으로되어 2173 01:48:09,140 --> 01:48:12,170 표준 IO.h 포함 CS50.h, 그리고? 2174 01:48:12,170 --> 01:48:15,190 >> 글쎄, 그것은 밝혀, 몇 가지 다른 것들 사이에, 2175 01:48:15,190 --> 01:48:18,550 모두 그 점 시간에있어 일이 파일은 파일이어야합니다. 2176 01:48:18,550 --> 01:48:20,460 그들은 말하자면, 파일 헤더하고 있습니다. 2177 01:48:20,460 --> 01:48:23,270 그들은 여전히​​ C로 작성하고 그러나 파일들은 다른 유형의 것. 2178 01:48:23,270 --> 01:48:28,690 >> 지금, 당신은 꽤 많은 가정 할 수있다 CS50.h의 내부에 그 모든 것을 2179 01:48:28,690 --> 01:48:33,360 이 같은 일부 한 - 라이너, 아니다 인쇄 이름이라는 기능, 2180 01:48:33,360 --> 01:48:36,840 하지만 문자열을 얻기 위해, 가져 오기 플로트, 그리고 몇 가지 다른. 2181 01:48:36,840 --> 01:48:41,510 그리고 유사한 프로토 타입이있다, 표준 IO.h 내부에 하나 라이너, 2182 01:48:41,510 --> 01:48:46,241 에 지금의 printf에 대한 내 자신의 인쇄 이름 기능. 2183 01:48:46,241 --> 01:48:49,490 그래서 다른 말로,이 모든 시간을 우리는했습니다 그냥 맹목적으로 복사 및 붙여 넣기 한 2184 01:48:49,490 --> 01:48:51,780 등이 포함 것을, 무슨 일이야? 2185 01:48:51,780 --> 01:48:55,310 사람들은 단서의 단지 종류입니다 어떤 기능으로 연타하기 2186 01:48:55,310 --> 01:49:00,170 실제로, 단지 구현 다른 곳에서 다른 파일에 2187 01:49:00,170 --> 01:49:02,440 다른 시스템. 2188 01:49:02,440 --> 01:49:05,160 >> 그래서 우리는 인쇄 이름을 구현했습니다. 2189 01:49:05,160 --> 01:49:07,910 그것은 이러한 부작용을 가지고 화면에 뭔가를 인쇄. 2190 01:49:07,910 --> 01:49:10,170 그러나 실제로는 그렇지 않습니다 다시 나에게 뭔가를 손. 2191 01:49:10,170 --> 01:49:12,200 우리는 약 가서 어떻게 프로그램을 실행하는 2192 01:49:12,200 --> 01:49:14,510 다시 나에게 뭔가를 손으로 무엇입니까? 2193 01:49:14,510 --> 01:49:15,580 >> 글쎄,이 시도 할 수 있습니다. 2194 01:49:15,580 --> 01:49:21,360 내가 가서 구현하자 라는 파일 return.c 2195 01:49:21,360 --> 01:49:24,530 그래서 우리는 어떻게 뭔가를 보여줄 수 같은 문자열을 가져 오기, 또는 지능을 가져, 2196 01:49:24,530 --> 01:49:27,340 실제로 반환 사용자에게 다시 뭔가. 2197 01:49:27,340 --> 01:49:29,840 이제 가서 INT 주요 무효를 정의 할 수 있습니다. 2198 01:49:29,840 --> 01:49:33,230 >> 그리고, 다시 미래에, 우리는거야 그 INT 그 보이드 무엇을 설명 2199 01:49:33,230 --> 01:49:34,090 실제로 일이다. 2200 01:49:34,090 --> 01:49:35,840 그러나 오늘, 우리는거야 그것을 가지고 부여. 2201 01:49:35,840 --> 01:49:39,970 나는, 앞서와의 printf 갈거야 좋은 사용자 경험을 위해, 배입니다. 2202 01:49:39,970 --> 01:49:44,360 그리고 나는 기다릴거야 사용자는 가져 오기 INT와 x를 저를 얻었다. 2203 01:49:44,360 --> 01:49:48,459 >> 그리고 내가 가서거야 그리고 광장에 X를 인쇄 할 수 있습니다. 2204 01:49:48,459 --> 01:49:50,500 그래서 당신은 단지이있을 때 일반적으로 키보드, 사람들 2205 01:49:50,500 --> 01:49:52,600 작은 당근을 사용 키보드의 상징 2206 01:49:52,600 --> 01:49:55,330 전원을 대표하는 중 또는 지수. 2207 01:49:55,330 --> 01:49:58,960 그래서 제곱 x를 내가 존재한다. 2208 01:49:58,960 --> 01:50:00,660 >> 그리고 지금은이 작업을 수행하겠습니다. 2209 01:50:00,660 --> 01:50:03,940 난 그냥 여기서 x는 무엇 do-- 수 제곱? X 제곱은 X 곱하기 x는. 2210 01:50:03,940 --> 01:50:06,690 >> 그리고 우리가했던이 일부 전 시간이 이미 오늘. 2211 01:50:06,690 --> 01:50:08,730 이 같은 느낌하지 않습니다 모든 그 정도 진행. 2212 01:50:08,730 --> 01:50:09,570 당신 그거 알아? 2213 01:50:09,570 --> 01:50:13,100 이제 그 생각의 일부를 활용하자 추상화의 마지막에서. 2214 01:50:13,100 --> 01:50:16,080 >> 이 경우 좋지 않을까 라는 함수가있다 2215 01:50:16,080 --> 01:50:18,460 정확하게 작업을 수행 광장? 2216 01:50:18,460 --> 01:50:20,640 의 끝에 여전히, 일, 같은 연산을 수행합니다. 2217 01:50:20,640 --> 01:50:22,410 그러나의 추상하자 복용의 거리에 아이디어 2218 01:50:22,410 --> 01:50:25,280 하나의 수를 곱한 다른 하나는, 그냥 이름을 지정, 2219 01:50:25,280 --> 01:50:27,360 등이 값을 제곱. 2220 01:50:27,360 --> 01:50:29,560 >> 또한, 다시 말하면,에 C는의 함수를 만들 수 있습니다 2221 01:50:29,560 --> 01:50:32,660 정확하게 작업을 수행라는 광장. 2222 01:50:32,660 --> 01:50:34,600 광장 호출 할 것입니다. 2223 01:50:34,600 --> 01:50:35,790 int를 취할 것입니다. 2224 01:50:35,790 --> 01:50:37,820 그리고 우리는거야 그냥 것 기본적으로, n 개의 호출. 2225 01:50:37,820 --> 01:50:39,403 >> 그러나 우리는 우리가 원하는 무엇이든 그것을 호출 할 수 있습니다. 2226 01:50:39,403 --> 01:50:42,900 그리고 모든이에게 무슨 일이 문자 그대로, 복귀가 수행 2227 01:50:42,900 --> 01:50:45,810 N 곱하기 N의 결과. 2228 01:50:45,810 --> 01:50:48,980 그러나 때문에 뭔가를 반환하는 2229 01:50:48,980 --> 01:50:53,690 우리는했습니다 보라색의 키워드는 결코 내가 라인 (11)에, 전에 볼 수없는, 2230 01:50:53,690 --> 01:50:55,410 그냥이 시간을 무효 말할 수 없습니다. 2231 01:50:55,410 --> 01:51:01,320 >> 공허의 예에서 우리는 방금 본 인쇄 이름의 오히려, 그냥 의미 2232 01:51:01,320 --> 01:51:02,190 뭔가. 2233 01:51:02,190 --> 01:51:04,170 그러나 다시 나에게 뭔가를 손으로하지 않습니다. 2234 01:51:04,170 --> 01:51:06,790 이 경우, 내가 원하는거야 n 번 N 돌아갑니다, 2235 01:51:06,790 --> 01:51:08,460 또는 그 무엇이든, 그 번호. 2236 01:51:08,460 --> 01:51:12,460 >> 그래서 난 말할 수 없다, 헤이, 컴퓨터, 나는 무효, 아무 것도 반환하지 않습니다. 2237 01:51:12,460 --> 01:51:16,166 본질적으로 int를 반환하는 것입니다. 2238 01:51:16,166 --> 01:51:17,790 그리고 그래서 여기에 무슨 일이 전부입니다. 2239 01:51:17,790 --> 01:51:20,070 >> 입력은 광장 하는 int 될 것입니다. 2240 01:51:20,070 --> 01:51:24,760 우리가 사용할 수 있도록, 그것은에 보유 이름이, N. 그것은 출력거야 2241 01:51:24,760 --> 01:51:26,240 이름을 필요로하지 않는 INT. 2242 01:51:26,240 --> 01:51:29,590 우리는 주에 남길 수 있습니다, 또는 누구는 저를 사용하여 우리의 경우이 값을 기억 2243 01:51:29,590 --> 01:51:31,120 자신의 변수로합니다. 2244 01:51:31,120 --> 01:51:33,230 >> 그리고, 다시, 단지 새로운 여기에 키워드를 반환합니다. 2245 01:51:33,230 --> 01:51:34,480 그리고 난 그냥 수학을하고 있어요. 2246 01:51:34,480 --> 01:51:41,825 정말 불필요하고 싶었다면, 나는 INT 제품이 n 번 N 가져옵니다 말할 수 있습니다. 2247 01:51:41,825 --> 01:51:44,170 >> 그리고 나는 제품을 반환 말할 수 있습니다. 2248 01:51:44,170 --> 01:51:47,360 그러나,의 다시, 내 지점으로 이전 이 단지없는 좋은 디자인 - 2249 01:51:47,360 --> 01:51:50,060 같은, 왜 이름을 소개하고, 상징, 제품 등, 2250 01:51:50,060 --> 01:51:51,570 다만 즉시 반환? 2251 01:51:51,570 --> 01:51:53,670 그것은 조금 청소기의 조금 더 단단한, 그래서 2252 01:51:53,670 --> 01:51:59,380 그냥 반환 n 배 말을, 말하자면 n은 모두이 줄을 없애. 2253 01:51:59,380 --> 01:52:02,860 >> 그리고 그것은 읽을 수있는 단지 적은 코드가 있어요 실수 적은 기회. 2254 01:52:02,860 --> 01:52:05,180 그리고 이제이 있는지 확인하자 실제로 작동합니다. 2255 01:52:05,180 --> 01:52:09,380 지금, 나는 갈거야 앞서 및 반환을합니다. 2256 01:52:09,380 --> 01:52:11,460 >> 어 - 오, 함수의 암시 적 선언. 2257 01:52:11,460 --> 01:52:14,080 나는 전에 더 큰 거래를이 실수를하지 않았다. 2258 01:52:14,080 --> 01:52:18,950 나 방금 입력하자, 또는 강조 복사, 동일한 함수 프로토 타입, 2259 01:52:18,950 --> 01:52:21,342 또는 서명, 여기까지 함수. 2260 01:52:21,342 --> 01:52:22,800 아니면 전체 기능을 이동할 수 있습니다. 2261 01:52:22,800 --> 01:52:23,841 >> 하지만 그건 좀 게으른입니다. 2262 01:52:23,841 --> 01:52:24,870 그래서 우리는 그렇게하지 ​​않습니다. 2263 01:52:24,870 --> 01:52:27,960 이제, 내가 수익을 만들어 보자 다시, 슬래시 수익을 점. 2264 01:52:27,960 --> 01:52:32,790 >> X 2. x는 제곱은 4입니다. X 3. x는 제곱은 9입니다. 2265 01:52:32,790 --> 01:52:35,300 그리고 기능이 보인다 이제 작동합니다. 2266 01:52:35,300 --> 01:52:36,550 그래서 차이는 여기에 무엇입니까? 2267 01:52:36,550 --> 01:52:42,520 나는, 사각라고하는 기능을 가지고 내가 입력에 넣어이 경우입니다. 2268 01:52:42,520 --> 01:52:43,830 그리고 출력을 다시 얻을. 2269 01:52:43,830 --> 01:52:46,210 그럼에도 불구하고, 이전하는 경우 나는 다른 예를 열고 2270 01:52:46,210 --> 01:52:51,640 이전로부터의 , prototype.c라고했다 2271 01:52:51,640 --> 01:52:54,770 나는 인쇄 이름을 가지고있는 말하자면, 무효 반환, 2272 01:52:54,770 --> 01:52:58,730 아니면 아무 것도 반환하지 않으며, 단순히 부작용이 있었다. 2273 01:52:58,730 --> 01:53:00,230 >> 그래서 여기 일이야? 2274 01:53:00,230 --> 01:53:03,520 음, 기능을 고려 단지 잠시 문자열을 찾으실 수 있습니다. 2275 01:53:03,520 --> 01:53:06,570 우리는 함수를 사용하고있다 다음과 같은 방법으로 문자열을 찾으실 수 있습니다. 2276 01:53:06,570 --> 01:53:10,464 >> 우리는 기능을 얻을 했어 문자열 등이 CS50.h 포함 2277 01:53:10,464 --> 01:53:16,624 표준 IO.h, INT, 메인, 무효를 포함한다. 2278 01:53:16,624 --> 01:53:18,790 그리고 그 때마다 나는했습니다 지금까지 GET 문자열이라고, 2279 01:53:18,790 --> 01:53:23,260 내가 말한 뭔가 문자열의 같은 GET string-- 때문에, 문자열을 얻을 도착 2280 01:53:23,260 --> 01:53:27,880 의이 get.c-- GET 문자열을 부르 자 자신은 그때 할 수있는 문자열을 반환 2281 01:53:27,880 --> 01:53:32,050 쉼표, 사용, 안녕하세요, 말, 퍼센트의, 백 슬래시 N, S. 2282 01:53:32,050 --> 01:53:35,660 >> 따라서이 같은 예는, 정말, 우리는 이전하였습니다. 2283 01:53:35,660 --> 01:53:37,920 그래서 문자열 값을 반환받을. 2284 01:53:37,920 --> 01:53:41,260 그러나 잠시 전, 인쇄 문자열 값을 반환하지 않습니다. 2285 01:53:41,260 --> 01:53:42,721 단순히 부작용을 갖는다. 2286 01:53:42,721 --> 01:53:44,220 그래서 이것은 근본적인 차이가있다. 2287 01:53:44,220 --> 01:53:46,710 우리는 다른 보았다 이제 함수의 종류, 2288 01:53:46,710 --> 01:53:49,490 그 중 일부는 돌아왔다 값은, 그 중 일부는하지 않습니다. 2289 01:53:49,490 --> 01:53:51,890 그래서 어쩌면 문자열 또는 INT 또는 부동입니다. 2290 01:53:51,890 --> 01:53:53,480 아니면 그냥 무효입니다. 2291 01:53:53,480 --> 01:53:55,710 >> 그 차이는 이러한 기능이 그 2292 01:53:55,710 --> 01:53:59,940 데이터를 가져 값을 반환하는 것은 실제로 테이블에 다시 무언가를 가져, 2293 01:53:59,940 --> 01:54:01,110 말하자면. 2294 01:54:01,110 --> 01:54:03,710 그럼 가서 보자 하나의 최종 세트 봐 2295 01:54:03,710 --> 01:54:09,129 의, 지금은 감각을 준다 예 우리가 어떻게 수도, 참으로, 추상적 인 더, 2296 01:54:09,129 --> 01:54:11,670 더 나은, 그리고 더 나은, 이상, 위해서는, 더욱,보다 2297 01:54:11,670 --> 01:54:13,810 궁극적으로 더 나은 코드를 작성합니다. 2298 01:54:13,810 --> 01:54:16,860 의 전방 이동 및 정신하자 스크래치에, 다음을 수행하십시오. 2299 01:54:16,860 --> 01:54:21,700 >> 내가 가서 포함하자 CS50.h 및 표준 IO.h. 2300 01:54:21,700 --> 01:54:24,010 내가 가서 보겠습니다 주 자신의 int, 무효. 2301 01:54:24,010 --> 01:54:27,380 그리고 날, 가서이 cough.c를 호출 할 수 있습니다. 2302 01:54:27,380 --> 01:54:35,510 >> 그리고 내가 앞으로 그냥 가자 스크래치처럼, 기침 / N을 인쇄 할 수 있습니다. 2303 01:54:35,510 --> 01:54:37,170 그리고이 세 번 싶어요. 2304 01:54:37,170 --> 01:54:39,670 그래서 나는, 물론, 그냥 갈거야 복사 세 번 붙여 넣습니다. 2305 01:54:39,670 --> 01:54:46,440 지금 만들려고 해요 도트 슬래시 기침 기침. 2306 01:54:46,440 --> 01:54:50,120 의 나 자신에게 좀 더 많은 공간을 줘 보자 여기, 기침, 기침, 기침, 입력합니다. 2307 01:54:50,120 --> 01:54:53,970 >> 이미 분명히있다 개선을위한 기회를 제공합니다. 2308 01:54:53,970 --> 01:54:55,679 나는 복사 및 붙여 넣기 한 몇 번 오늘. 2309 01:54:55,679 --> 01:54:58,261 내가하지 않았다, 그래서하지만 만했다 많은 문자를 입력해야합니다. 2310 01:54:58,261 --> 01:55:00,250 난 아직도 변경 내용 코드의 그 라인이다. 2311 01:55:00,250 --> 01:55:04,240 >> 이 세 가지 라인은 동일 어느 게으른 느낌이 참으로, 2312 01:55:04,240 --> 01:55:07,110 아마 올바른 방법이 아니다. 2313 01:55:07,110 --> 01:55:11,029 어떤 성분에 따라서 우리는이 코드를 향상시킬 수? 2314 01:55:11,029 --> 01:55:12,570 우리는 복사 및 붙여 넣기 코드가 없습니다. 2315 01:55:12,570 --> 01:55:15,070 >> 그리고, 참으로, 언제든지 당신이 기분 자신을 복사 및 붙여 넣기, 2316 01:55:15,070 --> 01:55:17,700 심지어, 코드를 변경하지 확률은 더 나은 방법이 있습니다. 2317 01:55:17,700 --> 01:55:19,470 그리고, 실제로 존재한다. 2318 01:55:19,470 --> 01:55:22,510 내가 가서 보자 루프를 수행 비록 구문은 그렇지 않을 수 있습니다 2319 01:55:22,510 --> 01:55:24,570 아직 자연적으로 온다. 2320 01:55:24,570 --> 01:55:29,494 >> 단지,이 세 번 수행 following--을 수행하여 2321 01:55:29,494 --> 01:55:31,160 나는 연습에서이 알고 일어난다. 2322 01:55:31,160 --> 01:55:32,810 그러나 우리는 지금 예제 수 있습니다. 2323 01:55:32,810 --> 01:55:34,950 그리고 당신은 온라인으로 볼 수 있습니다 아직도 참조. 2324 01:55:34,950 --> 01:55:37,790 >> 이 것을, 6 행의 구문입​​니다 반복 스크래치 등 많은 2325 01:55:37,790 --> 01:55:40,090 블록은 다음 세 번 반복한다. 2326 01:55:40,090 --> 01:55:41,340 그것은 지금 약간의 마법입니다. 2327 01:55:41,340 --> 01:55:43,050 그러나 이것은 더 얻을 것이다, 더 익숙한. 2328 01:55:43,050 --> 01:55:45,050 >> 그리고 반복 것 라인 팔을 세 번, 2329 01:55:45,050 --> 01:55:52,390 내가하면 화장 기침을 다시 컴파일되도록, 점은 기침, 기침, 기침, 기침을 슬래시. 2330 01:55:52,390 --> 01:55:54,030 여전히 동일한 방식으로 작동한다. 2331 01:55:54,030 --> 01:55:55,550 그래서 모든 벌금과 좋은입니다. 2332 01:55:55,550 --> 01:55:58,200 그러나 그것은 매우 추상화 아니다. 2333 01:55:58,200 --> 01:55:59,371 >> 그것은 완벽하게 맞습니다. 2334 01:55:59,371 --> 01:56:01,370 그러나이 같은 느낌 기회가 될 수있다, 2335 01:56:01,370 --> 01:56:03,750 의 세계로 시작의 종류 스크래치, 2336 01:56:03,750 --> 01:56:07,530 그래서 여기에 몇 가지 의미를 추가하는 방법 난 그냥 루프에 대한 몇 가지가 없습니다 2337 01:56:07,530 --> 01:56:09,867 그리고 함수는 말한다 기침을하거나 기침 않습니다. 2338 01:56:09,867 --> 01:56:10,450 당신 그거 알아? 2339 01:56:10,450 --> 01:56:12,620 날이 될 해보자 보다 작은 쿨러, 2340 01:56:12,620 --> 01:56:16,090 실제로 함수를 작성하는 약간의 부작용을 가지고, 이는 기침 부른다. 2341 01:56:16,090 --> 01:56:20,830 >> 그리고 그것은 어떤 입력을 받아없고, 출력으로 어떤 값도 반환하지 않는다. 2342 01:56:20,830 --> 01:56:22,680 그러나 당신은 무엇을 알아? 2343 01:56:22,680 --> 01:56:29,370 그것은,이 항아리의 printf 않습니다 인용을 끝내 인용, 기침. 2344 01:56:29,370 --> 01:56:32,380 >> 그리고 지금 여기까지 나는거야 앞서 및 인터넷 용 이동, 2345 01:56:32,380 --> 01:56:36,070 내가 플러스 플러스, 제로를 얻을 난 미만 3. 2346 01:56:36,070 --> 01:56:39,770 나는 인의 printf하지거야 틀림없이 낮은 수준의 구현 2347 01:56:39,770 --> 01:56:40,270 세부. 2348 01:56:40,270 --> 01:56:41,353 나는 기침을하는 방법에 대해 걱정하지 않는다. 2349 01:56:41,353 --> 01:56:43,240 난 그냥 기침 기능을 사용하고 싶습니다. 2350 01:56:43,240 --> 01:56:44,840 그리고 난 그냥 기침을 호출하는거야. 2351 01:56:44,840 --> 01:56:46,204 >> 이제 이분법을 알 수 있습니다. 2352 01:56:46,204 --> 01:56:49,370 그렇게하지 ​​않으면 당신은 함수를 호출 할 때 그것은 완전히 잘, 입력주고 싶다. 2353 01:56:49,370 --> 01:56:51,780 그냥 열린 괄호 닫고을 괄호,하면됩니다. 2354 01:56:51,780 --> 01:56:56,271 >> 당신은 함수를 정의 할 때, 또는 함수의 프로토 타입을 선언 2355 01:56:56,271 --> 01:56:58,770 당신이 미리 알고있는 경우는 아니다 인수를 취할 것, 2356 01:56:58,770 --> 01:57:01,170 거기에 그 괄호 안의 무효 말한다. 2357 01:57:01,170 --> 01:57:05,660 그리고 특정하게 당신이 실수로 오용되지 않습니다. 2358 01:57:05,660 --> 01:57:07,020 내가 가서 기침을 만들어 보자. 2359 01:57:07,020 --> 01:57:08,540 그리고 물론, 내가 실수를했습니다. 2360 01:57:08,540 --> 01:57:10,410 >> 젠 것을 거기 암시 적 선언. 2361 01:57:10,410 --> 01:57:11,325 하지만 괜찮아요. 2362 01:57:11,325 --> 01:57:12,590 그것은 쉽게 수정합니다. 2363 01:57:12,590 --> 01:57:18,240 난 그냥 프로토 타입 이상을 필요로 내 파일에 나는 실제로 그것을 사용하고보다. 2364 01:57:18,240 --> 01:57:20,070 >> 그래서 지금 나 기침 다시, 좋은합시다. 2365 01:57:20,070 --> 01:57:20,790 지금, 그것은 작동합니다. 2366 01:57:20,790 --> 01:57:22,930 기침, 기침, 기침, 기침을합니다. 2367 01:57:22,930 --> 01:57:25,930 그래서 우리가 정말 걸 생각 그냥이 문제를 엔지니어링. 2368 01:57:25,930 --> 01:57:26,763 그리고, 참으로, 우리는. 2369 01:57:26,763 --> 01:57:28,870 이것은 좋지 않다 프로그램의 후보 2370 01:57:28,870 --> 01:57:31,930 의 순간 리팩토링, 그리고 무슨 일을 2371 01:57:31,930 --> 01:57:35,645 계층 적 분해라고, 어디 몇 가지 코드를 가지고 다음 2372 01:57:35,645 --> 01:57:38,790 그래서 당신이 가지 요인 것들 아웃, 그들에게 더 많은 의미를 돌리다하고, 2373 01:57:38,790 --> 01:57:40,930 그리고 그것을 궁극적으로 장기를 다시 사용합니다. 2374 01:57:40,930 --> 01:57:43,490 그러나 향해 빌딩 블록의 더 정교한 프로그램 2375 01:57:43,490 --> 01:57:45,600 우리는 시작됩니다 머지 않아 그 작성 2376 01:57:45,600 --> 01:57:50,090 우리는 어휘를 가질 수 있습니다 있는 더 나은 코드를 작성합니다. 2377 01:57:50,090 --> 01:57:52,920 그리고, 참으로,의가 있는지 확인하자 우리 또한이 일반화 할 수 없습니다. 2378 01:57:52,920 --> 01:57:57,984 >> 그것은 약간의 색상을 보인다 I, 메인, 루프이 이놈에 대해 걱정할 필요, 2379 01:57:57,984 --> 01:57:59,400 그리고 또 다시 기침을 호출. 2380 01:57:59,400 --> 01:58:03,050 왜 난 그냥 기침을 말할 수 없다 세 번 기침하세요? 2381 01:58:03,050 --> 01:58:08,170 즉, 왜 나는 할 수 없습니다 단지 기침이 작업을 수행하는 입력을 제공? 2382 01:58:08,170 --> 01:58:11,270 >> 왜 그냥, 말할 수 없다 주요 기침을 세 번. 2383 01:58:11,270 --> 01:58:13,150 그리고 지금,이 종류의 마법이다. 2384 01:58:13,150 --> 01:58:14,540 그것은 여기에 매우 반복적이다. 2385 01:58:14,540 --> 01:58:15,940 그리고, 참으로, 아기 단계입니다. 2386 01:58:15,940 --> 01:58:19,250 >> 그러나 단지 능력에 대답 라인 팔, 세 번 기침, 2387 01:58:19,250 --> 01:58:20,730 그냥 훨씬 더 읽을 수 있습니다. 2388 01:58:20,730 --> 01:58:24,210 그리고, 플러스, 나도 할 필요가 없습니다 또는 기침이 구현되는 방법을 신경. 2389 01:58:24,210 --> 01:58:26,460 그리고, 참으로, 이후에 용어 및 최종 프로젝트, 2390 01:58:26,460 --> 01:58:29,150 당신은 프로젝트와 태클 경우 동급생 또는 두 개의 반 친구, 2391 01:58:29,150 --> 01:58:32,370 당신은 당신이 가고 있다는 것을 깨닫게됩니다 에, 또는, 작업을 분할 할 수 있습니다. 2392 01:58:32,370 --> 01:58:34,650 >> 그리고 당신은 결정하려는거야 사전에 누가 무엇을 할 것, 2393 01:58:34,650 --> 01:58:35,483 어느 조각? 2394 01:58:35,483 --> 01:58:37,520 그리고 그것은 좋은되지 않을 것 당신이 경우, 예를 들어, 2395 01:58:37,520 --> 01:58:40,100 쓰기의 주요 담당, 수행을. 2396 01:58:40,100 --> 01:58:43,470 그리고 당신의 룸메이트, 또는 파트너보다 일반적 2397 01:58:43,470 --> 01:58:45,230 기침을 구현 처리합니다. 2398 01:58:45,230 --> 01:58:49,540 >> 그리고이 부문이 추상화의 벽, 2399 01:58:49,540 --> 01:58:52,310 추상화 또는 레이어 경우 당신은, 매우 강력합니다 2400 01:58:52,310 --> 01:58:55,480 특히 큰위한 때문에 더 복잡한 프로그램 및 시스템, 2401 01:58:55,480 --> 01:59:00,070 그것은 여러 사람이 만들 수 있습니다 일 함께, 궁극적 2402 01:59:00,070 --> 01:59:02,680 이러한 방식으로 함께 작업을 만들기. 2403 01:59:02,680 --> 01:59:05,332 하지만, 물론, 우리 지금 기침을 수정해야합니다. 2404 01:59:05,332 --> 01:59:07,290 우리는 기침을 말할 필요 즉, 야, 그거 알아? 2405 01:59:07,290 --> 01:59:11,230 당신은 걸릴 필요 해요 input-- 무효로하지만, INT 지금은 없습니다. 2406 01:59:11,230 --> 01:59:15,170 이제 가서 넣어 보자 INT 기침. 나는 제로를 가져옵니다. 2407 01:59:15,170 --> 01:59:16,890 >> 내가 얼마나 많은 시간 미만이다. 2408 01:59:16,890 --> 01:59:18,550 나는 3을하기 전에 말했다. 2409 01:59:18,550 --> 01:59:20,420 하지만 내가 원하는 게 아니에요. 2410 01:59:20,420 --> 01:59:25,520 나는 일반화 될 기침을 원하는 반복의 임의의 수를 지원한다. 2411 01:59:25,520 --> 01:59:28,800 >> 그래서, 사실, 그것이 내가 원하는 n이있어, 어떤 사용자가 나에게 이야기한다. 2412 01:59:28,800 --> 01:59:31,620 지금, 나는 가서 인쇄 기침을 말할 수있다. 2413 01:59:31,620 --> 01:59:34,750 그리고 상관없이 번호 사용자는에 전달 2414 01:59:34,750 --> 01:59:36,890 나는 여러 번 반복합니다. 2415 01:59:36,890 --> 01:59:39,160 >> 하루의 끝에 그래서 프로그램은 동일합니다. 2416 01:59:39,160 --> 01:59:42,820 하지만이 물건의 모든 통지 심지어 다른 파일에있을 수 있습니다. 2417 01:59:42,820 --> 01:59:45,620 사실, 나는에 몰라 순간 방법의 printf 구현된다. 2418 01:59:45,620 --> 01:59:47,980 >> 나는 얼마나 순간에 알 수없는 문자열, 또는 INT를 얻을, 또는 플로트를 얻을 수 2419 01:59:47,980 --> 01:59:48,646 구현된다. 2420 01:59:48,646 --> 01:59:50,930 그리고 난 싶지 않아 내 화면을 참조하십시오. 2421 01:59:50,930 --> 01:59:55,320 그대로, 나는에 초점을 시작 해요 내 프로그램되지 않은 기능을한다. 2422 01:59:55,320 --> 01:59:59,070 >> 그리고, 참으로, 즉시로 이 같은 코드를 감안 시작 2423 01:59:59,070 --> 02:00:01,397 우리는 심지어 기침을 움직일 수 별도의 파일에? 2424 02:00:01,397 --> 02:00:02,730 다른 사람이 그것을 구현할 수 있습니다. 2425 02:00:02,730 --> 02:00:06,810 그리고 당신과 당신의 프로그램이 될 매우 아름답고, 매우 읽을 수있는, 2426 02:00:06,810 --> 02:00:10,830 틀림없이, 정말 네 바로 거기에 줄 프로그램. 2427 02:00:10,830 --> 02:00:13,510 >> 그럼 이제 앞서 가자 그리고 한 번 더 변경합니다. 2428 02:00:13,510 --> 02:00:16,180 주목 나의 프로토 타입 상단을 변경할 수 있습니다. 2429 02:00:16,180 --> 02:00:18,390 그래서 내가 그래서 문제를 해결하자 나는 고함되지 않습니다. 2430 02:00:18,390 --> 02:00:22,580 >> 기침을 확인, 내가 한 번 기침을 실행하자 더, 여전히 같은 일을하고. 2431 02:00:22,580 --> 02:00:26,010 하지만 지금, 우리는이 통지 하나의 최종 버전에 해당하는 성분. 2432 02:00:26,010 --> 02:00:26,940 당신 그거 알아? 2433 02:00:26,940 --> 02:00:29,040 나는 반드시, 단지 기침을하고 싶지 않다. 2434 02:00:29,040 --> 02:00:30,802 좀 더 일반적으로 무언가를 갖고 싶어. 2435 02:00:30,802 --> 02:00:31,510 그래서 당신은 무엇인지? 2436 02:00:31,510 --> 02:00:32,450 나는이 작업을 수행 할 수 있습니다. 2437 02:00:32,450 --> 02:00:37,140 나는 많은 스크래치처럼, 갖고 싶어 , 않는 말 블록 아니라 단지 2438 02:00:37,140 --> 02:00:38,680 무언가에게 시간의 어떤 수를 말한다. 2439 02:00:38,680 --> 02:00:41,510 나는 그것이 매우 특정 문자열을 말하고 싶습니다. 2440 02:00:41,510 --> 02:00:43,850 그리고, 그러므로, 난 몰라 그냥 기침을 말하고 싶습니다. 2441 02:00:43,850 --> 02:00:47,660 내가 말하고 싶은대로 문자열에 전달됩니다. 2442 02:00:47,660 --> 02:00:49,960 >> 그래서 알, 나는 일반화 한 이 때문에 지금 2443 02:00:49,960 --> 02:00:53,110 말은 좋은 이름 같은 느낌 이것에 대한, 스크래치 등, 2444 02:00:53,110 --> 02:00:55,530 스크래치는 달리, 2 개의 인수를 취하는. 2445 02:00:55,530 --> 02:00:56,570 하나는 문자열입니다. 2446 02:00:56,570 --> 02:00:57,300 하나는 int이며. 2447 02:00:57,300 --> 02:00:58,130 >> 그리고 나는 그들을 전환 할 수 있습니다. 2448 02:00:58,130 --> 02:01:00,713 나는 그냥 가지의 아이디어 등 첫 번째 문자열 말을 한 다음 2449 02:01:00,713 --> 02:01:01,940 얼마나 많은 나중에 시간. 2450 02:01:01,940 --> 02:01:03,970 보이드는 여전히 의미 아무것도 반환하지 않습니다. 2451 02:01:03,970 --> 02:01:06,428 이 단지 시각적 인 측면이다 [와 같은 효과? 요르단,?] 2452 02:01:06,428 --> 02:01:08,240 소리의 구두 부작용. 2453 02:01:08,240 --> 02:01:12,630 아직, 뭔가 n 배를 않습니다 최대 0하지만, n은 동일하지. 2454 02:01:12,630 --> 02:01:14,540 이는 N 개의 총 시간을 의미한다. 2455 02:01:14,540 --> 02:01:16,540 그리고 바로 인쇄 무엇이든 그 문자열입니다. 2456 02:01:16,540 --> 02:01:19,060 그래서 난 정말 일반화 한 이 코드 줄. 2457 02:01:19,060 --> 02:01:22,460 그래서 지금, 내가 어떻게 구현합니까 기침 기능? 2458 02:01:22,460 --> 02:01:25,520 >> 나는 무효 기침을 할 수 있습니다. 2459 02:01:25,520 --> 02:01:28,501 그리고 난 아직도 방법에 걸릴 수 있습니다 몇 번 기침을합니다. 2460 02:01:28,501 --> 02:01:29,250 하지만 당신은 알아? 2461 02:01:29,250 --> 02:01:31,240 지금은 말을 펀트 수 있습니다. 2462 02:01:31,240 --> 02:01:36,540 >> 나는 말할 호출 할 수 있습니다 워드 기침, n은 전달. 2463 02:01:36,540 --> 02:01:40,410 그리고 나는 또한 구현하려는 경우, 그냥 재미를 위해, 재채기 기능, 2464 02:01:40,410 --> 02:01:42,290 나는 시간의 어떤 수를 재채기를 할 수 있습니다. 2465 02:01:42,290 --> 02:01:47,300 그리고 나는 때문에, n은 재사용 유지할 수 있습니다 이러한 맥락 또는 범위에서 해당 m 통지 2466 02:01:47,300 --> 02:01:49,470 단지이 함수 내에서 존재한다. 2467 02:01:49,470 --> 02:01:52,767 >> n은이 맥락에서 만 여기에이 함수 내에서 존재한다. 2468 02:01:52,767 --> 02:01:54,600 그래서 우리는 되돌아 올 것이다 범위의 이러한 문제. 2469 02:01:54,600 --> 02:02:01,160 그리고 여기, 난 그냥 말할거야 achoo 한 다음 n 번, 세미콜론. 2470 02:02:01,160 --> 02:02:04,340 >> 그리고 지금, 난 그냥 빌릴 필요 이러한 기능은 여기 시그니처. 2471 02:02:04,340 --> 02:02:06,290 그래서 기침이 올바른 것입니다. 2472 02:02:06,290 --> 02:02:10,090 공허 재채기 이제 올바른 것입니다. 2473 02:02:10,090 --> 02:02:12,390 >> 그리고 난 아직도 그냥 말을해야합니다. 2474 02:02:12,390 --> 02:02:18,990 그래서 나는 말, 말거야 문자열의, INT n을, 세미콜론. 2475 02:02:18,990 --> 02:02:22,010 그래서 과잉 설계 한 이 프로그램의 밖으로 지옥. 2476 02:02:22,010 --> 02:02:23,760 >> 그리고 이것은하지 않습니다 반드시이 의미 2477 02:02:23,760 --> 02:02:26,343 쓸 때 당신은 무엇을해야하는지 프로그램 중 가장 간단한. 2478 02:02:26,343 --> 02:02:29,280 그건 분명 뭔가를 타고 정말 짧은, 정말 간단, 2479 02:02:29,280 --> 02:02:31,800 그것을 다시 구현 너무 많은 코드를 사용하여. 2480 02:02:31,800 --> 02:02:34,560 그러나 실제로 확인하고있는 것입니다 시간은, 이들 실시 예에 되돌아 볼 2481 02:02:34,560 --> 02:02:38,610 및 실현, 오, 사람들은 단계는 우리는 실제로 일반화했다 2482 02:02:38,610 --> 02:02:40,797 뭔가를 고려하고, 하루의 끝에까지 2483 02:02:40,797 --> 02:02:42,380 내 코드는 실제로 꽤 합리적이다. 2484 02:02:42,380 --> 02:02:45,960 나는 세 가지 기침을 할 경우 때문에 다음 번, 세 번 재채기 2485 02:02:45,960 --> 02:02:50,420 나는 단순히이를 다시 실행거야 프로그램은 기침을하고, 기침을 실행합니다. 2486 02:02:50,420 --> 02:02:53,620 그리고 나는 3 기침이 세 재채기. 2487 02:02:53,620 --> 02:02:55,990 >> 그리고이 기본이다 패러다임, 만약에 당신, 2488 02:02:55,990 --> 02:03:00,110 우리가 갈 수있는 방법에 대한 실제로 프로그램을 구현. 2489 02:03:00,110 --> 02:03:03,220 하지만 그냥은 지금 무엇을 보자 우리는이 모든 시간을 해왔습니다 2490 02:03:03,220 --> 02:03:06,940 어떤 최종 작품의 일부 이 간단한 명령 뒤에 있습니다. 2491 02:03:06,940 --> 02:03:09,620 하루의 끝에서, 우리는했습니다 우리의 컴파일러로 연타를 사용하고. 2492 02:03:09,620 --> 02:03:11,494 우리는 소스를 작성했습니다 코드로 변환 2493 02:03:11,494 --> 02:03:12,820 기계 코드로 연타를 통해. 2494 02:03:12,820 --> 02:03:15,540 >> 그리고 우리는 단지 확인 사용했던 그래서 우리의 키 입력을 용이하게하기 2495 02:03:15,540 --> 02:03:20,740 우리는 기억 할 필요가 없습니다 연타 자체의 그 주술. 2496 02:03:20,740 --> 02:03:22,640 그러나 실제로 확인하고 무엇입니까? 2497 02:03:22,640 --> 02:03:24,750 그리고, 다시, 무엇이다 연타 실제로 일을? 2498 02:03:24,750 --> 02:03:28,790 >> 우리는 간단했다하지만 그것은 밝혀 말을하여 오늘의 토론, 2499 02:03:28,790 --> 02:03:33,090 당신은 소스 코드를 가지고로 전달 당신을 제공하는 컴파일러에 입력 2500 02:03:33,090 --> 02:03:35,750 기계의 출력 코드가의 밝혀 2501 02:03:35,750 --> 02:03:37,420 이 안에 몇 가지 단계. 2502 02:03:37,420 --> 02:03:41,940 그리고 컴파일은 우산 될 일이 단계의 모두에 대한 용어입니다. 2503 02:03:41,940 --> 02:03:43,970 하지만 그냥 애타게하자 이 밖으로 정말 빠르게. 2504 02:03:43,970 --> 02:03:48,070 >> 그것은 우리가 해왔 밝혀 더 많은 것들이 내가 프로그램을 실행할 때마다, 2505 02:03:48,070 --> 02:03:50,990 또는 때마다 나는 오늘 프로그램을 컴파일합니다. 2506 02:03:50,990 --> 02:03:55,020 그래서 전처리를 의미한다 C 프로그램에서 아무 것도이 항아리, 2507 02:03:55,020 --> 02:03:58,720 우리는 또 다시 살펴 보 겠지만, 즉,이 해시 기호로 시작 2508 02:03:58,720 --> 02:04:03,320 또는 여기에 해시 태그 기호, 의미 그것은 처리기 지시문입니다. 2509 02:04:03,320 --> 02:04:07,330 즉 이봐,이 경우, 의미 컴퓨터는이 파일에 뭔가를 2510 02:04:07,330 --> 02:04:09,430 당신은 실제로 내 자신의 코드를 컴파일하기 전에. 2511 02:04:09,430 --> 02:04:15,220 >> 이 경우, 해시가 포함 본질적으로, 말의 C의 방법, 2512 02:04:15,220 --> 02:04:19,325 헤이 컴퓨터, 내용을 가서 및 CS50.h의 여기에 붙여 넣습니다. 2513 02:04:19,325 --> 02:04:22,170 헤이 컴퓨터 인 가서 표준 IO.h의 내용, 2514 02:04:22,170 --> 02:04:24,690 그것은에 어디든지 하드 드라이브, 여기에 붙여 넣습니다. 2515 02:04:24,690 --> 02:04:27,390 그래서 그 일이 일어날 전처리 중 첫 번째. 2516 02:04:27,390 --> 02:04:28,880 >> 그리고 연타 우리를 위해이 모든 작업을 수행합니다. 2517 02:04:28,880 --> 02:04:30,510 그리고 그것은 그래서 이놈을 수행 빨리, 당신도하지 않습니다 2518 02:04:30,510 --> 02:04:32,000 일이 네 가지 일을 참조하십시오. 2519 02:04:32,000 --> 02:04:34,100 그러나 그것은 최초의 단계입니다. 2520 02:04:34,100 --> 02:04:35,560 >> 무엇 실제로 다음됩니까? 2521 02:04:35,560 --> 02:04:38,320 그럼, 다음 공식 단계는 컴파일됩니다. 2522 02:04:38,320 --> 02:04:40,385 그리고 그것은 밝혀 프로그램을 컴파일 2523 02:04:40,385 --> 02:04:44,060 기술적에서가는 의미 소스 코드, 우리가했습니다 물건 2524 02:04:44,060 --> 02:04:47,890 뭔가, 오늘 쓰고 뭔가, 어셈블리 코드라고 2525 02:04:47,890 --> 02:04:49,260 그건 좀 다르게 보입니다. 2526 02:04:49,260 --> 02:04:51,050 >> 그리고, 사실, 우리는 정말 빨리이를 볼 수 있습니다. 2527 02:04:51,050 --> 02:04:53,890 내가 실제로 내 IDE로 가자. 2528 02:04:53,890 --> 02:04:58,050 나 앞서 오픈에서는 hello.c 가자하는 맨 처음 프로그램 인과 우리 2529 02:04:58,050 --> 02:04:59,120 오늘 시작했다. 2530 02:04:59,120 --> 02:05:04,130 그리고 내가 가서 연타 a를 실행하자 다른 작은, 연타-S,에서는 hello.c, 2531 02:05:04,130 --> 02:05:07,720 실제로에있는을 것입니다 나에게 다른 파일 hello.s을 제공합니다. 2532 02:05:07,720 --> 02:05:10,330 >> 그리고 우리는 결코 아마 것 다시 코드의이 종류를 참조하십시오. 2533 02:05:10,330 --> 02:05:13,030 당신은 낮은 수준을 경우 CS61 같은 시스템 클래스, 2534 02:05:13,030 --> 02:05:14,920 당신은 더 많이 볼 수 있습니다 이 코드 종류의. 2535 02:05:14,920 --> 02:05:17,020 그러나 이것은 어셈블리 언어입니다. 2536 02:05:17,020 --> 02:05:22,050 이는 X86 어셈블리 언어 그 기본이되는 CPU 2537 02:05:22,050 --> 02:05:24,460 CS50 IDE는 실제로 이해한다. 2538 02:05:24,460 --> 02:05:27,060 >> 그리고 그것은 비밀처럼 그것은 뭔가 봐 2539 02:05:27,060 --> 02:05:29,180 컴퓨터가 꽤 잘 이해하고 있습니다. 2540 02:05:29,180 --> 02:05:30,790 서브 Q, 이것은 빼기이다. 2541 02:05:30,790 --> 02:05:31,660 움직임이있다. 2542 02:05:31,660 --> 02:05:35,730 >> 여기 기능의이 부르고 X or 연산, 이동, 추가, 팝업, 2543 02:05:35,730 --> 02:05:36,430 반환. 2544 02:05:36,430 --> 02:05:38,850 그래서 거기에 아주 낮은 수준의 지침 2545 02:05:38,850 --> 02:05:41,280 CPU는 것을 이해 나는 이전에 언급. 2546 02:05:41,280 --> 02:05:43,100 즉, 어떤 인텔 인사이드입니다. 2547 02:05:43,100 --> 02:05:45,030 >> 패턴이 있습니다 0과 1이 2548 02:05:45,030 --> 02:05:51,800 이 arcanely 말로에 매핑하지만, 다소 잘 이름, 설명, 2549 02:05:51,800 --> 02:05:52,780 말하자면. 2550 02:05:52,780 --> 02:05:54,780 그 때 발생하는 것입니다 당신은 당신의 코드를 컴파일합니다. 2551 02:05:54,780 --> 02:05:58,560 당신은 조립 얻을 그것에서 언어, 어느 2552 02:05:58,560 --> 02:06:04,680 세 번째 단계는 조립을 의미 해당 어셈블리 코드로, 궁극적으로, 2553 02:06:04,680 --> 02:06:09,080 기계 code-- 0과 1이 아닌 우리가 잠시 전에 본 텍스트입니다. 2554 02:06:09,080 --> 02:06:13,370 >> 그래서 사전 처리는 찾지 않습니다 대체, 그리고 몇 가지 다른 것들과. 2555 02:06:13,370 --> 02:06:16,430 컴파일은 소스 소요 C 코드에서, 소스 코드 2556 02:06:16,430 --> 02:06:18,980 우리는 어셈블리에, 쓴 우리가 흘끗 코드입니다. 2557 02:06:18,980 --> 02:06:22,170 조립은 조립 소요 0과에 코드 2558 02:06:22,170 --> 02:06:24,680 는 CPU 정말 것이다 하루의 끝에 이해한다. 2559 02:06:24,680 --> 02:06:27,630 그리고 링크는 마지막 단계입니다 즉, 다시 us--에 대한 발생 2560 02:06:27,630 --> 02:06:29,830 너무 빨리 우리는 심지어하지 않습니다 즉 말한다 notice-- 2561 02:06:29,830 --> 02:06:32,460 헤이 컴퓨터의 모든을 0과 1이 2562 02:06:32,460 --> 02:06:36,750 다윗의 코드를 컴파일의 결과 이 경우 자신의 주요 기능. 2563 02:06:36,750 --> 02:06:39,160 >> 그리고 컴퓨터 야, 가서 0과 1의 모든 2564 02:06:39,160 --> 02:06:42,180 CS50 직원이 쓴 CS50 라이브러리 내부. 2565 02:06:42,180 --> 02:06:43,440 다윗과 그에 섞는다. 2566 02:06:43,440 --> 02:06:46,648 그리고 헤이 컴퓨터가 모두 0을 가서 그리고 다른 사람이 년을 쓴 사람 있음 2567 02:06:46,648 --> 02:06:47,470 전 printf의합니다. 2568 02:06:47,470 --> 02:06:49,880 그리고에 사람들을 추가 모든 것은, 우리가했습니다 있도록 2569 02:06:49,880 --> 02:06:52,870 내 0과 1을은있어 CS50 직원의 0과 1, 2570 02:06:52,870 --> 02:06:55,370 printf가의 0과 1, 그리고 무엇 우리가 사용하고 있습니다. 2571 02:06:55,370 --> 02:07:00,410 >> 그들은 모두 하나에 정리하세요 프로그램 안녕하세요,이 경우했다. 2572 02:07:00,410 --> 02:07:03,141 그래서 이제부터는, 우리는 것입니다 단지 단어 컴파일을 사용합니다. 2573 02:07:03,141 --> 02:07:06,390 그리고 우리는 당연한 걸릴 때 우리는 그 의미, 당신의 프로그램을 컴파일, 말 2574 02:07:06,390 --> 02:07:08,849 헤이 전처리를 수행 조립 및 연결. 2575 02:07:08,849 --> 02:07:11,890 그러나 실제로 일부 육즙이 물건을 거기에 후드 아래가 진행. 2576 02:07:11,890 --> 02:07:13,723 그리고 특히 경우 호기심 시간을 얻을 2577 02:07:13,723 --> 02:07:15,900 당신은 파고 시작할 수 있습니다 주변이 낮은 수준에서. 2578 02:07:15,900 --> 02:07:19,660 하지만 지금은, 그 실현 오늘의 테이크 아웃 중 2579 02:07:19,660 --> 02:07:23,420 이다 아주 간단하게 프로세스의 시작, 2580 02:07:23,420 --> 02:07:26,700 편안한 점점 안녕하세요 세계 같은. 2581 02:07:26,700 --> 02:07:29,575 사실, 우리가 오늘 한 일의 대부분 확실히 슈퍼 빠른에 침몰되지 않습니다. 2582 02:07:29,575 --> 02:07:31,491 그리고 그것은 일부를 취할 것 시간 및 연습. 2583 02:07:31,491 --> 02:07:33,864 그리고 확률, 당신은 정렬합니다 의 키보드를 치고 싶어 2584 02:07:33,864 --> 02:07:34,780 또는 화면에서 소리. 2585 02:07:34,780 --> 02:07:35,880 그리고 그 모두 OK입니다. 2586 02:07:35,880 --> 02:07:38,320 하지만, 아마에하지 않으려 고 너무 많은 도서관에서 그것을 할. 2587 02:07:38,320 --> 02:07:40,820 >> 그리고 궁극적으로, 당신은거야 하지만 수 시작된다 2588 02:07:40,820 --> 02:07:44,580 좋은 코드 모두에서 패턴을보고 당신이 쓴 그 실수에 2589 02:07:44,580 --> 02:07:45,370 당신은했습니다있다. 2590 02:07:45,370 --> 02:07:48,965 그리고 과정 등 많은 TF되고 또는 CA 같은 것입니다, 2591 02:07:48,965 --> 02:07:51,590 당신이 더 얻을 시작합니다 및 그 패턴을보고 더 나은, 2592 02:07:51,590 --> 02:07:53,774 그냥 당신을 해결 궁극적으로 자신의 문제. 2593 02:07:53,774 --> 02:07:56,940 한편, 충분히있을 것입니다 우리의 당신이 지원을 빌려, 당신을 얻을 수 2594 02:07:56,940 --> 02:07:57,481 이를 통해. 2595 02:07:57,481 --> 02:07:59,450 그리고 쓰기 업에 모든 문제에 대한 2596 02:07:59,450 --> 02:08:01,366 당신은을 통해 안내됩니다 모든 명령 2597 02:08:01,366 --> 02:08:05,330 나는 확실히 알고 있음 지금 쯤 연습을 많이, 2598 02:08:05,330 --> 02:08:07,380 하지만 비행 수도 지금은 하나의 머리. 2599 02:08:07,380 --> 02:08:08,580 그리고 완전히 괜찮아요. 2600 02:08:08,580 --> 02:08:11,230 >> 그러나, 궁극적으로, 당신은거야 패턴이 등장보고 시작합니다. 2601 02:08:11,230 --> 02:08:14,260 그리고 당신은 모든 과거의 일단 바보 세부 사항, 괄호 등, 2602 02:08:14,260 --> 02:08:16,710 중괄호, 세미 콜론, 그리고 물건, 솔직히, 2603 02:08:16,710 --> 02:08:19,360 그건 전혀 아니다 지적 흥미 롭군요. 2604 02:08:19,360 --> 02:08:22,690 그리고 그것은의 목적 아니다 어떤 입문 수업을. 2605 02:08:22,690 --> 02:08:24,410 그것은 중요하고자하는 아이디어입니다. 2606 02:08:24,410 --> 02:08:26,659 >> 이것은 루프의 및 조건 및 기능 2607 02:08:26,659 --> 02:08:30,552 더 강력하게 추상화, 코드의 인수 분해, 2608 02:08:30,552 --> 02:08:33,510 그리고 좋은 디자인과 좋은 스타일 및 궁극적 정확성 2609 02:08:33,510 --> 02:08:37,330 코드의 그 궁극적이다 가장 중요한 것. 2610 02:08:37,330 --> 02:08:40,925 그래서 다음 주에, 우리는이 걸릴 것입니다 우리가 처음 스크래치에서 본 아이디어 2611 02:08:40,925 --> 02:08:42,800 지금 번역했습니다 C.에 그리고 우리는 시작합니다 2612 02:08:42,800 --> 02:08:45,740 의 첫 번째를 소개합니다 과정의 실제 도메인. 2613 02:08:45,740 --> 02:08:50,140 >> 우리는 보안의 세계에 초점을 맞출 것 더욱 구체적으로, 암호화 2614 02:08:50,140 --> 02:08:51,980 스크램블링 정보의 기술. 2615 02:08:51,980 --> 02:08:54,000 그리고 첫 번째 중 문제가 당신에게 자신을 2616 02:08:54,000 --> 02:08:56,840 이후 작성하는 얻을 것이다 구문의 일부와 함께 연주 2617 02:08:56,840 --> 02:08:59,880 어떤 논리를 해결 문제, 궁극적으로 머지 않아, 2618 02:08:59,880 --> 02:09:03,960 실제로 스크램블링 또는 암호화하는 것입니다, 궁극적 정보를 해독. 2619 02:09:03,960 --> 02:09:06,470 그리고 모든 것을 우리가했던 오늘 것이다 상당히 낮은 2620 02:09:06,470 --> 02:09:09,190 레벨, 그냥 허용하는 것입니다 우리는 하나, 그리고 하나를 수행합니다 2621 02:09:09,190 --> 02:09:13,550 위를 향해 한 단계 그러나 가장 흥미로운 코드를 작성. 2622 02:09:13,550 --> 02:09:15,050 >> 그 다음 주에 그래서 더. 2623 02:09:15,050 --> 02:09:17,834 2624 02:09:17,834 --> 02:09:18,762 >> [VIDEO 재생] 2625 02:09:18,762 --> 02:09:19,690 2626 02:09:19,690 --> 02:09:22,006 >> - 왜 당신에 대해 말해 줄 수 당신이 그를 마지막으로 본 게 언제? 2627 02:09:22,006 --> 02:09:26,041 2628 02:09:26,041 --> 02:09:27,040 - 무슨 난 정말 말할 수 있습니까? 2629 02:09:27,040 --> 02:09:30,500 2630 02:09:30,500 --> 02:09:35,340 내 말은, 그것은 다른 것 같았다 사전 제작 리허설 2631 02:09:35,340 --> 02:09:40,510 뭔가가 있었다를 제외하고 그는 말했다 나와 함께 붙어 매우 끝. 2632 02:09:40,510 --> 02:09:44,810 2633 02:09:44,810 --> 02:09:46,640 >> -이는 CS50했다. 2634 02:09:46,640 --> 02:09:49,440 2635 02:09:49,440 --> 02:09:52,190 >> - 그건, 절단 모든 사람의 리허설에 훌륭한 일. 2636 02:09:52,190 --> 02:09:53,070 >> - 그건의 점심? 2637 02:09:53,070 --> 02:09:54,986 >> 그래, 당신과 나는 할 수 약간의 샌드위치를​​ 잡아. 2638 02:09:54,986 --> 02:09:58,380 내가 단지로 브리핑하자 데이비드 정말 빨리. 2639 02:09:58,380 --> 02:09:59,160 데이비드? 2640 02:09:59,160 --> 02:10:01,260 데이비드? 2641 02:10:01,260 --> 02:10:03,110 >> [END 재생]