1 00:00:07,010 --> 00:00:09,640 [Powered by Google Translate] 함수는 더 큰 프로그램 내에서 사용되는 코드의 섹션 아르 2 00:00:09,640 --> 00:00:11,430 특정 작업을 수행 할 수 있습니다. 3 00:00:11,430 --> 00:00:15,060 또한, 절차, 서브 루틴, 그리고 subprograms로 알려져 있습니다 4 00:00:15,060 --> 00:00:18,320 그들은 정말 프로그램 내에서 단지 미니 프로그램이되기 때문입니다. 5 00:00:18,320 --> 00:00:20,340 당신은 눈치 채지 못할 수도 있지만, 6 00:00:20,340 --> 00:00:24,090 당신은 C로 프로그래밍 한 경우 당신은 가장 확실히 이미 기능을 사용했습니다 7 00:00:24,090 --> 00:00:26,770 당신이 printf를 사용하여 화면에 물건을 쓸 때, 8 00:00:26,770 --> 00:00:29,380 당신은 실제로 printf라는 함수를 사용하고 있습니다. 9 00:00:29,380 --> 00:00:33,760 마찬가지로, GetInt 및 GetString은 CS50 당신을 위해 제공하는 기능입니다. 10 00:00:33,760 --> 00:00:37,750 프로그래머로서, 우리는 여러 가지 이유로 기능을 사용합니다. 11 00:00:37,750 --> 00:00:41,240 >> 화면에 서면 같은 일반적인 작업을 수행 할 기능을 갖는 12 00:00:41,240 --> 00:00:44,480 프로그래밍 할 때와 입력을위한 사용자에게 메시지를 표시하는 것은 우리에게 시간을 절약 할 수 있습니다. 13 00:00:44,480 --> 00:00:47,510 그것은 그 같은 일을하는 코드를 작성하는 필요가 없습니다 14 00:00:47,510 --> 00:00:49,520 그들은 이미 우리를 위해 완료 때문입니다. 15 00:00:49,520 --> 00:00:54,580 우리는 그 기능이 내부적으로 작동하는 방법을 정확하게 이해하는 것이도 필요가 없습니다. 16 00:00:54,580 --> 00:00:58,880 대신, 우리는 우리의 프로그램에서 그들을 사용하거나 호출하는 방법을 알고 있습니다. 17 00:00:58,880 --> 00:01:02,040 그것은 큰 프로그램의 기능을 작성하는 것도 도움이 18 00:01:02,040 --> 00:01:04,330 당신은 다른 사람들을 사용하지 계획하지 않더라도 19 00:01:04,330 --> 00:01:06,830 단지 손에 큰 작업을 나눌 수 있습니다. 20 00:01:06,830 --> 00:01:11,910 당신이 에세이 to 구조를 제공 할 많은 것처럼 이러한 방법으로, 당신은 당신의 코드 구조를 제공 21 00:01:11,910 --> 00:01:15,180 그리고 정말 큰 프로젝트가 여러 사람을 사용 22 00:01:15,180 --> 00:01:16,730 같은 시간에 다른 부분에서 작동하는 23 00:01:16,730 --> 00:01:20,480 한 사람의 작업이 끝나는 곳은 깨끗하고 또 다른 시작 이니까. 24 00:01:20,480 --> 00:01:26,530 >> 함수는 일반적으로 인수 또는 매개 변수로 알려진 1 개 이상 입력, 작업 25 00:01:26,530 --> 00:01:30,520 그런 다음 반환되는 출력 값으로 해당 입력을 변환. 26 00:01:30,520 --> 00:01:34,950 그러나, 모든 입력 인수를 사용하지 않는 기능을 가지고 수도 있습니다 27 00:01:34,950 --> 00:01:36,400 및 출력을 반환하지 않습니다. 28 00:01:36,400 --> 00:01:38,790 좋아요, 충분히 보송 보송 한 것들. 29 00:01:38,790 --> 00:01:41,790 의는 C에서 일부 실제 기능을 살펴 보자 30 00:01:41,790 --> 00:01:45,570 >> 여기, 믿거 나 말거나하는 사각형이라는 기능이 31 00:01:45,570 --> 00:01:47,570 입력의 제곱을 계산합니다. 32 00:01:47,570 --> 00:01:49,490 의 그것의 구문을 해부 보자. 33 00:01:49,490 --> 00:01:51,860 이 함수에 처음 보는 단어, INT, 34 00:01:51,860 --> 00:01:57,460 함수의 반환 유형을 지정, 그, 함수의 출력의 C 유형입니다. 35 00:01:57,460 --> 00:02:00,370 이 기능은 유형 INT와 값을 출력합니다. 36 00:02:00,370 --> 00:02:04,100 당신이 볼 다음 단어는이 경우 사각형 함수의 이름입니다. 37 00:02:04,100 --> 00:02:07,390 적절하게 기능을 명명하는 것은 특히 중요합니다 38 00:02:07,390 --> 00:02:11,260 아마도 함수가 무엇을 가장 눈에 띄는 문서입니다 때문입니다. 39 00:02:11,260 --> 00:02:14,880 그것은이 기능 열려라 참깨 나 booyah 이름을 근사 할 수 있습니다 40 00:02:14,880 --> 00:02:18,340 하지만 그건 우리에게 함수가 한 일에 대해 아무 것도 말해주지 않을 거요. 41 00:02:18,340 --> 00:02:23,470 >> 함수 이름이 함수 인수로 입력을 온 후. 42 00:02:23,470 --> 00:02:26,380 그들은 괄호의 집합 내부에 나열되어 있습니다 43 00:02:26,380 --> 00:02:30,160 자신의 유형 및 함수의 본문 내에서 사용할 수있는 이름을 모두 갖추고 있습니다. 44 00:02:30,160 --> 00:02:34,030 광장은 광장에 단 1 인자, INT 소요 45 00:02:34,030 --> 00:02:36,160 가 내가 이름 x를 제공하기로 결정했습니다. 46 00:02:36,160 --> 00:02:40,760 이 함수의 선언 또는 프로토 타입을 끝납니다. 47 00:02:40,760 --> 00:02:43,320 함수의 나머지 부분을 중괄호로 둘러싸는 48 00:02:43,320 --> 00:02:45,870 , 시작과 함수 몸체의 끝을 나타냅니다 49 00:02:45,870 --> 00:02:48,320 함수 자체의 정의. 50 00:02:48,320 --> 00:02:50,300 광장은 아주 간단 기능입니다. 51 00:02:50,300 --> 00:02:54,100 우리가해야 할 일은 그 자체에 x를 곱이기 때문에 그것은 단, 1 줄 있어요. 52 00:02:54,100 --> 00:02:59,250 단어 리턴 출력 값을 지정하고 함수의 끝을 트리거합니다. 53 00:02:59,250 --> 00:03:03,430 광장 기능을 사용하기 위해, 우리는 적절한 입력을 제공해야합니다 54 00:03:03,430 --> 00:03:05,310 다음 출력을 캡처합니다. 55 00:03:05,310 --> 00:03:08,140 여기, 당신은 그렇게 할 몇 가지 방법을 참조하십시오. 56 00:03:08,140 --> 00:03:13,600 우리는 6 같은 원시 INT에 전달할 수 있습니다, 또는 우리는 같은 변수에 전달할 수 있습니다. 57 00:03:13,600 --> 00:03:15,700 때마다 우리는 공평 전화합니다 58 00:03:15,700 --> 00:03:18,330 우리는 변수에 출력을 캡처 한 다음 인쇄 할 수 있습니다. 59 00:03:18,330 --> 00:03:22,690 그러나, 우리는 변수에 반환 값을 저장하고 인쇄 할 필요가 없습니다. 60 00:03:22,690 --> 00:03:27,090 우리처럼 우리는 printf에 직접 보낼 수 때 광장 10, 61 00:03:27,090 --> 00:03:30,580 하지만 우리는 공평 (10)의 반환 값에 액세스 할 수없는 것을 의미 62 00:03:30,580 --> 00:03:32,230 다른 코드 인치 63 00:03:32,230 --> 00:03:34,890 의 다른 간단한 예를 들어 보자. 64 00:03:34,890 --> 00:03:38,750 >> 이 시간, 우리는 함께 우리가 함수가 어떻게 생겼는지 볼 수는 2 수레를 합계합니다 65 00:03:38,750 --> 00:03:41,220 그 대신 1 2 입력을 가지고 때. 66 00:03:41,220 --> 00:03:43,950 당신이 볼 수 있듯이, 그것은 많은 차이가 있습니다. 67 00:03:43,950 --> 00:03:47,330 우리가해야할 일은, 2 인자, B라는 수레에 추가합니다 68 00:03:47,330 --> 00:03:51,820 첫 번째 인수에서 분리 쉼표를 사용하여 인수 목록, 역부족. 69 00:03:51,820 --> 00:03:55,550 그럼, 광장과 합 기능 이해하​​기 매우 쉬운 70 00:03:55,550 --> 00:03:58,930 그들은 당신이 수학 수업 시간에 본 적이있는 기능에 해당니까. 71 00:03:58,930 --> 00:04:01,610 자, 약간의 차이가 있습니다 기능을 살펴 보도록하겠습니다. 72 00:04:01,610 --> 00:04:04,620 대신 값을 반환, 이건 상태를 수정합니다. 73 00:04:04,620 --> 00:04:07,260 이것은 부작용 것으로 알려져 있습니다. 74 00:04:07,260 --> 00:04:10,750 이 프로그램에서, printf_fudd_style 기능 75 00:04:10,750 --> 00:04:13,410 우리가 전에 무효 보지 못하는 반환 형식이 있습니다. 76 00:04:13,410 --> 00:04:16,730 >> 플레이는 함수가 아무것도 반환하지 않는 그런 말을하는 데 사용됩니다. 77 00:04:16,730 --> 00:04:19,410 유형 무효 대한 변수가 없습니다 78 00:04:19,410 --> 00:04:22,760 당신은 printf_fudd_style 같은 함수에서 무언가를 반환하려고 그렇게하면 79 00:04:22,760 --> 00:04:24,290 컴파일러는 당신 소리 것입니다. 80 00:04:24,290 --> 00:04:29,390 printf_fudd_style 내부, 우리는 함수가 아직 작업을 수행하는 동안 알 81 00:04:29,390 --> 00:04:31,890 즉, WS 모든 R을 전환 82 00:04:31,890 --> 00:04:36,380 함수의 포인트는, 화면에 문자열을 수정 한 다음 인쇄하는 것입니다 83 00:04:36,380 --> 00:04:39,400 프로그램의 상태를 변경하는 대신 결과를 반환. 84 00:04:39,400 --> 00:04:43,700 이 기능을 사용하면, 매우 우리의 광장과 금액 함수를 사용하여 마치 85 00:04:43,700 --> 00:04:46,950 우리는 변수에 결과를 저장하거나 다른 함수에를 통과하지 못한 경우를 제외하고 86 00:04:46,950 --> 00:04:49,520 의 말을 할 결과가 없습니다 때문입니다. 87 00:04:49,520 --> 00:04:53,180 그럼, 우리가 컴파일 및 엘머 퍼드 프로그램을 실행할 때, 88 00:04:53,180 --> 00:04:56,970 그 "당신은 야비한 토끼!"참조 오른쪽으로 변환됩니다 89 00:04:56,970 --> 00:04:58,730 "당신은 wascally wabbit!" 90 00:04:58,730 --> 00:05:02,250 >> 마지막으로, 토론 가치가 1 개 기능이있어 91 00:05:02,250 --> 00:05:06,810 이후 당신은, 당신은 작성한 모든 C 프로그램에서 메인을 사용하고 있습니다. 92 00:05:06,810 --> 00:05:09,450 메인이 훨씬 다른 같은 기능입니다. 93 00:05:09,450 --> 00:05:13,580 그것은 반환 형식, 이름, 인수의 목록, 그리고 몸 있어요. 94 00:05:13,580 --> 00:05:16,110 메인의 반환 유형은 항상 정수입니다 95 00:05:16,110 --> 00:05:19,120 이 정수는이 종료 될 때 프로그램의 상태를 통신하는 데 사용됩니다. 96 00:05:19,120 --> 00:05:23,360 >> 이 성공적으로 실행습니까, 아니면 오류로 인해 조기 마감 한거죠? 97 00:05:23,360 --> 00:05:26,390 제로로 돌아, 성공적인 실행을 나타냅니다 98 00:05:26,390 --> 00:05:29,510 및 0이 아닌 값을 반환하면 오류를 나타냅니다. 99 00:05:29,510 --> 00:05:31,950 당신이 작성할 프로그램의 종류에 따라, 100 00:05:31,950 --> 00:05:34,960 다른 오류에 대해 서로 다른 코드를 반환하는 것은 도움이 될 수 있습니다 101 00:05:34,960 --> 00:05:37,210 나중에 프로그램을 사용하는 사람들을위한. 102 00:05:37,210 --> 00:05:40,220 전원 인수가 좀 더 복잡합니다. 103 00:05:40,220 --> 00:05:42,150 >> 인수 목록도 비어있을 수 있습니다 104 00:05:42,150 --> 00:05:45,330 있는 우리는 괄호 사이에 빈 공간을 작성하여 표시 105 00:05:45,330 --> 00:05:50,220 정수 및 문자 * s의 배열 :하거나 목록 2 인자를 가질 수 있습니다. 106 00:05:50,220 --> 00:05:52,820 프로그램을 사용하고자 할 때 다음이 사용됩니다 107 00:05:52,820 --> 00:05:56,490 프로그램이 호출 될 때 인수는 명​​령 줄에서에서 통과 시켰습니다. 108 00:05:56,490 --> 00:05:59,690 INT 인수는 일반적으로 argc라고합니다 109 00:05:59,690 --> 00:06:03,300 그리고 변수는 argv로 알려진 숯불 * 배열의 동일한 길이입니다. 110 00:06:03,300 --> 00:06:07,080 변수는 argv는 프로그램에 전달 된 명령 줄 인수를 포함하고 있습니다. 111 00:06:07,080 --> 00:06:11,440 또 다른 한마디로, 우리는 더 자세히이 변수를 사용하는 방법에 대해 얘기하자. 112 00:06:11,440 --> 00:06:15,220 지금, 당신은 주요 두 방법을 선언 자유롭​​게 할 수 있습니다. 113 00:06:15,220 --> 00:06:19,410 나는 일반적으로 더 인수, 가능한 경우에, 짧은쪽으로 흘러 쓰기를 선택합니다. 114 00:06:19,410 --> 00:06:22,230 >> 이제 함수를 작성하는 방법을 알고, 115 00:06:22,230 --> 00:06:25,030 당신은 더 크고 더 복잡한 프로그램을 개발하는 길에 잘하고 있습니다. 116 00:06:25,030 --> 00:06:29,740 내 이름은 네이트 Hardison입니다. 이 CS50입니다.