1 00:00:00,000 --> 00:00:02,747 Winston을 4번 그리는 함수가 있는 2 00:00:02,747 --> 00:00:04,594 프로그램으로 돌아왔습니다 3 00:00:04,594 --> 00:00:08,155 Winston이 인생의 각 시점에 몇살인지 보여주도록 프로그램을 수정하였습니다 4 00:00:08,156 --> 00:00:10,587 왜 그런지 곧 알게 될겁니다 5 00:00:10,587 --> 00:00:14,039 하지만 우선 Winston에 대해서 몇가지 말 해줄 필요가 있습니다 6 00:00:14,039 --> 00:00:16,461 Winston는 도넛 중독자입니다 7 00:00:16,461 --> 00:00:18,437 하루에 3개씩 먹습니다 8 00:00:18,437 --> 00:00:21,783 그렇기 때문에 얼굴이 이렇게 크고 노랑색입니다 9 00:00:21,783 --> 00:00:25,311 그래서 도넛이 얼마나 그에게 나쁜지 경고하기 위해서, 10 00:00:25,311 --> 00:00:28,823 인생의 각 시점에 얼마나 많은 도넛을 먹었는지 보여주도록 11 00:00:28,823 --> 00:00:31,755 전 프래그램을 변경하고 싶습니다 12 00:00:31,755 --> 00:00:35,943 예을 들면 Winston이 두살때 13 00:00:35,943 --> 00:00:41,598 그것은 곧 , 3 X 365 X 2 만큼 먹었다는 겁니다 14 00:00:41,598 --> 00:00:45,873 즉 하루에3개씩, 곱하기 365일, 곱하기 2 살이지요 15 00:00:45,873 --> 00:00:50,330 그리고 헤더밑에 표시 하게습니다. 와!!!! 16 00:00:50,330 --> 00:00:54,435 2천개의 도넛이네요. 2살짜리 에게는 너무나 많은 도넛이에요 17 00:00:54,435 --> 00:01:04,432 14살이 되었을때는 3 X 365 X 14 를 먹겠네요 18 00:01:04,432 --> 00:01:08,556 즉 1만5천개 입니다 19 00:01:08,556 --> 00:01:12,620 계속 계산 할수 있겠지만, 페턴이 보이기 시작하네요 20 00:01:12,620 --> 00:01:16,188 계산을 반복하고 있네요 21 00:01:16,188 --> 00:01:19,956 하나만 변경하겠습니다: 햇수 (즉, 몇 년동안)를 변경하겠습니다 22 00:01:19,956 --> 00:01:22,872 이것처럼 반복되는 코드를 볼때마다 23 00:01:22,872 --> 00:01:28,348 스스로 생각해 봅니다 "흠 이것을 함수로 말들수 있을까?" 24 00:01:28,348 --> 00:01:32,015 그럼요 당연히 만들수 있지요 그럼 지금 해 봅시다 25 00:01:32,015 --> 00:01:34,416 함수를 이쪽에서 선언 해 보겠습니다 26 00:01:34,416 --> 00:01:40,947 calcTotalDonunts = function 이라고 부르겠습니다 27 00:01:40,947 --> 00:01:44,228 햇수 (the number of years)입니다 28 00:01:44,228 --> 00:01:46,492 왜냐하면 계산 할때 마다 변하는 것은 29 00:01:46,492 --> 00:01:49,356 단지 햇수 하나 이기 때문입니다 30 00:01:49,356 --> 00:01:52,878 그리고 안 에서, 계산을 하겠습니다 31 00:01:52,878 --> 00:02:00,720 그리고 변수(variable)에 저장을 합니다 즉 3 X 365 X numYears 32 00:02:00,720 --> 00:02:03,099 좋습니다 이제 함수를 만들었구요 33 00:02:03,099 --> 00:02:09,648 이 식(expression)을 calTotalDounts로 대치하겠습니다 34 00:02:09,648 --> 00:02:12,738 함수을 부르고, 2를 값으로 보내겠습니다 35 00:02:12,738 --> 00:02:16,877 근데 지금 전체 도넛양이 안 보이네요 36 00:02:16,877 --> 00:02:18,742 흠, 무슨일이 일어 났지요? 37 00:02:18,742 --> 00:02:22,266 우리의 함수가 전체 값을 계산 했네요 38 00:02:22,266 --> 00:02:25,940 근데 값을 말 해 주지 않고 있어요 39 00:02:25,940 --> 00:02:29,807 이건 꼭 수업시간에 선생님이 질문에 답하라고 불렀는데 40 00:02:29,807 --> 00:02:31,744 답이 머리에서만 있고 41 00:02:31,744 --> 00:02:34,522 너무 부끄러워 답을 말하지 못하고 있는 것 같네요 42 00:02:34,522 --> 00:02:37,458 과제는 했는데, 선생님이 전혀 몰라주는것과 같아요 43 00:02:37,458 --> 00:02:39,679 함수가 어디서든 불려져서 부른 곳에다가 값을 전달하려면 44 00:02:39,679 --> 00:02:45,170 그 값을 명시적으로 반환하여야 합니다 45 00:02:45,170 --> 00:02:49,369 그래서 값을 반환하려는 함수에서는 return 이라고 쓰고 반환하려는 값을 씁니다 46 00:02:49,369 --> 00:02:51,568 모든 원하는 값을 47 00:02:51,568 --> 00:02:55,138 아마도 그것은 변수 또는 값 또는 식이 될 수도 있는데 48 00:02:55,138 --> 00:02:58,329 여기서 우린 return totalDonuts이라고 하겠습니다. 49 00:02:58,329 --> 00:03:01,540 그럼, 누가 이 함수를 부르던지, 이렇게 닶을 얻을 것입니다 50 00:03:01,540 --> 00:03:04,061 이제 값이 표시 되네요! 51 00:03:04,061 --> 00:03:07,081 그리고 사실 이 함수를 좀더 간단하게 만들 수 있습니다 52 00:03:07,081 --> 00:03:09,451 변수에다 값을 저장 할 필요가 없어요 53 00:03:09,451 --> 00:03:11,531 그냥 여기 식(expression) 전체를 54 00:03:11,531 --> 00:03:15,168 return 에 넣어줘도 됩니다 그러면 한 줄이 간단히 한 줄이 되지요 55 00:03:15,168 --> 00:03:17,166 좋아요, 이제 살펴보지요 56 00:03:17,166 --> 00:03:20,444 각 시점의 전체 도넛의 수를 계산하는 것은 57 00:03:20,444 --> 00:03:23,452 함수를 불러, 햇수(number of year)를 넘겨줍니다 58 00:03:23,452 --> 00:03:28,994 자 봅시다. calcTotalDounuts(25), 59 00:03:28,994 --> 00:03:34,056 위치를 정확하게 해주고, calcTotalDounuts(65) 60 00:03:34,056 --> 00:03:37,931 오케이, 와, 65까지 살게 되면 61 00:03:37,931 --> 00:03:43,396 Winston은 7만개의 도넛을 먹게 되겠네요 엄청 많은 도넛이네요 62 00:03:43,396 --> 00:03:48,111 제 생각에는 Winston이 그때 까지 못 살것 같아요 (웃음) 63 00:03:48,111 --> 00:03:50,331 하지만 우리가 함수를 만든 한 64 00:03:50,331 --> 00:03:52,891 일부분을 수정하는 것도 아주 쉬운 일이지요 65 00:03:52,891 --> 00:03:55,138 만약 Winston이 이걸 보고 66 00:03:55,138 --> 00:03:58,865 와, 이건 너무 많네요. 만약 하루에 하나만 먹으면요? 67 00:03:58,865 --> 00:04:02,852 오케이, 그럼 여기로 가서 숫자 하나만 변경하면 되요 68 00:04:02,852 --> 00:04:04,689 그럼 모든것이 변경되지요 69 00:04:04,689 --> 00:04:07,971 그래서 2만3천개가 됩니다 여전히 많은 양이네요 아마도 Winston이 70 00:04:07,971 --> 00:04:10,773 좋아요, 만약 한주에 하나면 먹으면요? 라고 하면 71 00:04:10,773 --> 00:04:12,477 네, 합리적이네요, 좋아요 72 00:04:12,477 --> 00:04:15,025 그럼 365를 50로 변경하고 73 00:04:15,025 --> 00:04:18,143 왜냐하면 일년에 50주가 있으니깐요 74 00:04:18,143 --> 00:04:22,802 좋아요, 이제 훨씬 낫네요 3천개 도넛, 적당한것 같아요 75 00:04:22,802 --> 00:04:26,751 함수와 반환값으로 76 00:04:26,751 --> 00:04:31,801 코드도 만들수 있고, 한 생명을 살리수도 있네요