PowerPoint 프레젠테이션

Similar documents
C 언어 프로그래밊 과제 풀이

PowerPoint 프레젠테이션

Microsoft PowerPoint - Chapter8.pptx

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

슬라이드 1

중간고사

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

금오공대 컴퓨터공학전공 강의자료

C 프로그래밊 개요

Microsoft PowerPoint - chap10-함수의활용.pptx

untitled

PowerPoint 프레젠테이션

untitled

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

쉽게 풀어쓴 C 프로그래밍

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap-03.pptx

설계란 무엇인가?

untitled

11장 포인터

Microsoft PowerPoint - ch07 - 포인터 pm0415

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - Lesson2.pptx

슬라이드 1

Microsoft PowerPoint - chap06-1Array.ppt

슬라이드 1

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

PowerPoint Presentation

Microsoft PowerPoint - chap11-포인터의활용.pptx

OCW_C언어 기초

C 프로그래밊 개요

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint - chap-11.pptx

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - chap12-고급기능.pptx

歯9장.PDF

Microsoft PowerPoint - 제11장 포인터(강의)

OCW_C언어 기초

Infinity(∞) Strategy

PowerPoint 프레젠테이션

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - 7장 배열 pptx

02장.배열과 클래스

Microsoft PowerPoint - 05장(함수) [호환 모드]

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - 제11장 포인터

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap06-2pointer.ppt

ch15

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

<4D F736F F F696E74202D20C1A639C0E520C7D4BCF6BFCDBAAFBCF6>

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - additional01.ppt [호환 모드]

윤성우의 열혈 TCP/IP 소켓 프로그래밍

목차 배열의개요 배열사용하기 다차원배열 배열을이용한문자열다루기 실무응용예제 C 2

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

Microsoft PowerPoint - chap01-C언어개요.pptx

Data Structure

Microsoft PowerPoint - chap-09.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx

윈도우즈프로그래밍(1)

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>

Chapter_06



chap x: G입력

프로그램의실행화면 주석 (comment) 두수의합 : 300 /* 두개의숫자의합을계산하는프로그램 */ 주석은코드를설명하는글입니다. 주석 3 가지방법의주석 주석의예 /* 한줄로된주석 */ /* 저자 : 홍길동날짜 : 2013.

Microsoft PowerPoint - chap04-연산자.pptx

, ( ),, ( ), 3, int kor[5]; int eng[5]; int Microsoft Windows 4 (ANSI C2 ) int kor[5] 20 # define #define SIZE 20 int a[10]; char c[10]; float

PowerPoint Template

Microsoft PowerPoint - 2주차-1차시 (강의자료) ch01 - C Programming 기초 (part 2)

PowerPoint Presentation

2015 개정교육과정에따른정보과평가기준개발연구 연구책임자 공동연구자 연구협력관

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

17장 클래스와 메소드

설계란 무엇인가?

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \


C 프로그램의 기본

본 강의에 들어가기 전

Microsoft PowerPoint - chap06-5 [호환 모드]

Infinity(∞) Strategy

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

Microsoft Word - FunctionCall

4. 1 포인터와 1 차원배열 4. 2 포인터와 2 차원배열 4. 3 포인터배열 4. 4 포인터와문자그리고포인터와문자열

Microsoft PowerPoint - chap05.ppt

PowerPoint Template

Transcription:

Chapter 08 함수

01 함수의개요 02 함수사용하기 03 함수와배열 04 재귀함수

함수의필요성을인식한다. 함수를정의, 선언, 호출하는방법을알아본다. 배열을함수의인자로전달하는방법과사용시장점을알아본다. 재귀호출로해결할수있는문제의특징과해결방법을알아본다.

1.1 함수의정의와기능 함수 (function) 특별한기능을수행하는것 여러가지함수의예 Page 4

1.2 함수사용의장점 함수를이용할때프로그램의실행흐름 Page 5

1.2 함수사용의장점 1~10 을더하는프로그램 반복문사용 int i, sum = 0; for(i = 1; i < 11; i+ +) sum += i; 함수사용 int sum = 0; sum = Summation(1, 10); 잘설계된함수의장점 반복적으로실행해야할내용을함수로만들어필요할때마다호출해서사용 프로그램이모듈화되므로읽기쉽고, 디버깅과편집이수월 프로그램의기능과구조를한눈에알아볼수있음. 다른프로그램에서재사용할수있음. Page 6

2.1 시스템라이브러리함수와사용자정의함수 시스템라이브러리함수 자주사용하는유용한함수를사용자가바로이용할수있게 C 시스템에미리 만들어놓은것 사용자정의함수 사용자자신이원하는기능을직접만든함수 Page 7

2.2 함수의정의 사용자정의함수 Page 8

2.2 함수의정의 함수의정의형태 [ 함수의정의 ] ❸ 반환되는자료형 ❶ 함수명 (❷ 입력 ) { ❹ 기능 ( 하는일 ); ❸ return 반환값 ; } [ 함수의예 ] int SumTwo (int a, int b) { int result; result = a + b; return result; } 1 함수명 : 식별자작성규칙에따라명명 2 입력 : 인자의자료형과개수를순서대로작성 3 반환값 : 함수가입력을받아기능을수행한후에반환되는결과값 4 기능 : 함수를통해사용자가구현하려는내용대부분을여기에기록 Page 9

2.2 함수의정의 MultiTwo( ) 함수 정수 2 개 (a, b) 를입력받아곱한결과를 result 에저장하고그값을반환 int MutiTwo(int a, int b) { int result; result = a * b; return result; } int MutiTwo(int a, int b) { return a * b; } Page 10

2.2 함수의정의 Big( ) 함수 정수 2 개 (a, b) 를입력받아두수중에서큰수를출력 int Big(int a, int b) { if (a > b) return a; else return b; } Page 11

2.3 함수의선언 함수의선언 함수원형 (prototype) 이라고도함. 사용자정의함수에무엇이있는지알려주며, 함수를정의하기전에선언 [ 선언형태 ] 반환되는자료형함수명 ( 매개변수들 ); [ 선언의예 ] int SumTwo(int a, int b); 구체적인인자명을기록하지않고인자의자료형과개수만나타내도됨. int Sum (int, int); Page 12

2.4 함수의호출 함수의호출 함수가정의된형태에맞추어입력과출력을고려하여함수를사용 함수호출의예 int x = 10, y = 20, value; value = SumTwo(x, y); Page 13

2.4 함수의호출 01 #include <stdio.h> 02 03 int SumTwo(int a, int b); // 함수선언 04 05 int main(void) 06 { 07 int x = 10, y = 5; 08 int value; 09 10 value = SumTwo(x, y); // 함수호출 11 12 printf(" 두수의합 : %d\n", value); 13 14 return 0; 15 } 16 17 int SumTwo(int a, int b) // 함수정의 18 { 19 int result; 20 result = a + b; 21 return result; 22 } Page 14

2.4 함수의호출 01 #include <stdio.h> 02 03 float Average(float x, float y); // 함수선언 04 05 int main(void) 06 { 07 float num1, num2, result; 08 printf(" 실수 2개를입력하세요 : "); 09 scanf("%f %f", &num1, &num2); 10 11 result = Average(num1, num2); // 함수호출 12 13 printf(" 두실수의평균 : %f\n", result); 14 15 return 0; 16 } 17 18 float Average(float x, float y) // 함수정의 19 { 20 float z; 21 z = (x + y) / 2; 22 return z; 23 } Page 15

2.4 함수의호출 시작값과종료값을입력하면그사이의값을모두더하는함수 int Integral(int start, int end) { int sum = 0, i; for(i = start; i <= end; i++) sum += i; return sum; } Page 16

2.4 함수의호출 01 #include <stdio.h> 02 03 int Integral(int start, int end); // 함수선언 04 05 int main(void) 06 { 07 int result = 0, i; 08 09 printf(" 함수를사용하지않고합을구함 \n"); 10 for(i = 1; i <= 10; i++) 11 result += i; 12 13 printf("1부터 10까지합은 %d다.\n", result); 14 15 result = 0; // result 값을다시 0으로초기화함 16 17 for(i = 7; i <= 17; i++) 18 result += i; 19 20 printf("7부터 17까지합은 %d다.\n", result); 21 printf("*************************************\n"); 22 printf(" 함수를사용하여합을구함 \n"); 23 printf("1부터 10까지합은 %d다.\n", Integral(1, 10)); 24 printf("7부터 17까지합은 %d다.\n", Integral(7, 17)); Page 17

2.4 함수의호출 25 26 return 0; 27 } 28 29 int Integral(int start, int end) // 함수정의 30 { 31 int sum = 0, i; 32 for(i = start; i <= end; i++) 33 sum += i; 34 return sum; 35 } Page 18

2.4 함수의호출 시작값부터 1 씩증가시키며종료값까지의값을구하는일반적인함수 int Integral(int start, int end, int index) { int sum = 0, i; for(i = start; i <= end; i += index) sum += i; return sum; } 세번째인자로시작값과종료값사이의간격을정해주는요소를추가하면 다양한형태의합을구할수있음. Integral(1, 10, 2); Integral(2, 10, 2); Integral(3, 10, 3); // 1부터 10까지홀수의합 // 1부터 10까지짝수의합 // 1부터 10까지 3의배수의합 Page 19

2.4 함수의호출 01 #include <stdio.h> 02 03 int SumTwo(int a, int b) // 함수정의 04 { 05 int result; 06 result = a + b; 07 08 return result; 09 } 10 11 int main(void) 12 { 13 int x = 10, y = 5; 14 int value; 15 16 value = SumTwo(x, y); // 함수호출 17 18 printf(" 두수의합 : %d\n", value); 19 20 return 0; 21 } Page 20

2.4 함수의호출 01 #include <stdio.h> 02 03 void upper_case(char ch); 04 int main(void) 05 { 06 char ch1, ch2; 07 while((ch1 = getchar( ))!= EOF) { 08 upper_case(ch1); 09 } 10 return 0; 11 } 12 13 void upper_case(char ch) 14 { 15 char res; 16 if(ch > = 'a' && ch <= 'z') 17 res = ch-32; 18 else 19 res = ch; 20 putchar(res); 21 } Page 21

2.4 함수의호출 사용자정의헤더파일을만들고프로그래밍하는방법 사용자가만든함수의선언은일반적으로사용자가만든헤더파일에포함 Page 22

2.4 함수의호출 test.c 파일 01 #include "myheader.h" // 헤더파일을프로그램에포함한다. 02 03 int main(void) 04 { 05 int x = 10, y = 5; 06 int value; 07 08 value = SumTwo(x, y); // 함수호출 09 10 printf(" 두수의합 : %d\n", value); 11 12 return 0; 13 } 14 15 int SumTwo(int a, int b) 16 { 17 int result; 18 result = a + b; 19 20 return result; 21 } myheader.h 파일 01 #include <stdio.h> 02 int SumTwo(int a, int b); Page 23

2.4 함수의호출 1 test.c 파일이만들어진상태에서 [File]-[New]-[File] 메뉴를선택 [New File] 대화상자가나타나면 ❶ [Visual C++] 를선택하고 ❷ [Header File(.h)] 을선택한뒤 ❸ <Open> 을클릭 Page 24

2.4 함수의호출 2 헤더파일을작성할수있는소스작성창이나타나면 myheader.h 파일내용입력 Page 25

2.4 함수의호출 3 저장하기위해 [File]-[Save Header1.h] 를선택 [Save File As] 대화상자에서 ❶ 파일이름에 myheader 를입력하고 ❷ test.c 파 일이있는폴더를선택한후 ❸ <Save> 클릭하면 myheader.h 파일이만들어짐. Page 26

3.1 함수와배열 함수와배열 1 차원배열 int a[ ] = {10, 5, 15, 20, 30}; 모든원소의합을반복문으로작성 int i, sum = 0; for(i = 0; i < 5; i+ +) sum += i; 배열의원소를모두더하는기능을하는함수인 SumArray( ) int SumArray(int Array[], int Size) { ❶ 배열 ❷ 원소개수 int1, result = 0; for(i = 0; i < Size; i ++) ❸ 내용 result += Array[i]; } return result; ❹ 반환값 Page 27

3.1 함수와배열 SumArray( ) 함수 1 배열 : 배열명은가인자이기때문에식별자작성규칙에따라임의로작성 int SumArray(int Array[4], ) // 이경우는배열의원소개수가 4개인 { // 배열만인자로사용될수있다. } 2 원소개수 : 일반적으로배열명에는빈대괄호 [ ] 를사용하고실제배열의원 소개수는두번째인자로표시 ( 변수 Size 는배열의원소개수를나타냄 ) 3 내용 : 인자로사용된배열과원소개수를이용하여필요한기능을작성 4 반환값 : 함수에서계산된결과값을반환 Page 28

3.1 함수와배열 배열을인자로사용하는함수의호출 배열이인자인함수를호출할때배열부분에배열명만넣음. int main( ) { Int Sum, a[] = {10, 5, 15, 25, 7}; Sum = SumArray(a, 5); // 함수호출 } return 0; Page 29

3.1 함수와배열 01 #include <stdio.h> 02 03 int SumArray(int Array[ ], int Size); // 함수정의 04 05 int main(void) 06 { 07 int a[ ] = {10, 5, 15, 25, 7}; 08 int Sum; 09 Sum = SumArray(a, 5); // 함수호출 10 printf(" 배열원소의합 : %d\n", Sum); 11 return 0; 12 } 13 14 int SumArray(int Array[ ], int Size) // 함수정의 15 { 16 int result = 0, i; 17 for(i = 0; i < Size; i + +) 18 result += Array[i]; 19 20 return result; 21 } Page 30

4.1 재귀함수 재귀호출 (recursion) 함수에서그함수를다시호출하는것 데이터 N 개로이뤄진문제가 N-1 개문제를해결하면간단하게해결될때사용 N! 수식표현 N! = N * (N-1) * (N-2) * (N-3) * 1 N! = N * (N-1)! (N-1)! = (N-1) * (N-2)! Page 31

4.1 재귀함수 factorial( ) 함수 함수에서자기자신을다시호출 int factorial(int n) { return n * factorial(n-1); } 종료조건을결정해야무한히반복하지않음. int factorial(int n) { if(n <= 1) return 1; else return n * factorial(n-1); } // 종료조건 Page 32

4.1 재귀함수 01 #include <stdio.h> 02 03 int factorial(int n); 04 int main(void) 05 { 06 int fact_num; 07 fact_num = factorial(10); 08 09 printf("10 팩토리얼 : %d\n", fact_num); 10 11 return 0; 12 } 13 14 int factorial(int n) 15 { 16 if(n <= 1) 17 return(1); 18 else 19 return(n * factorial(n-1)); 20 } Page 33

4.1 재귀함수 01 #include <stdio.h> 02 03 int sum(int a); 04 int main(void) 05 { 06 int input, s = 0; 07 printf(" 양의정수를입력하세요 : "); 08 scanf("%d", &input); 09 10 s = sum(input); 11 printf(" 재귀함수를이용한 1 부터 %d 까지합 : %d\n", input, s); 12 return 0; 13 } 14 15 int sum(int a) 16 { 17 if(a <= 1) 18 return 1; 19 else 20 return a + sum(a-1); 21 } Page 34

감사합니다. C 로시작하는컴퓨터프로그래밍개정 3 판