• 검색 결과가 없습니다.

제06장-함수

N/A
N/A
Protected

Academic year: 2021

Share "제06장-함수"

Copied!
34
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

제 6 장 함

(2)

C 프로그램에서 함수 (function) 의 개념과 종류를 설명할 수 있다 .  함수를 이용하여 간단한 사칙 계산기 프로그램을 개발 학 수 있다 .

(3)

6.1 함수의 기본 구성 6.2 함수의 종류 6.3 함수의 호출 6.4 함수에서 결과 값 되돌려 받기 6.5 라이브러리 함수

제 6 장에서 설명은 ?

(4)

6.1

함수의 기본 구성

☞ 전달되는 어떤 값을 받아서 함수 코드를 수행하며 , 그 결과 값을 반환

(1)

함수는 ?

(2)

함수의 기능은 ?

☞ 특정한 작업을 수행하도록 만들어진 하나의 독립된 프로그램

(5)

[ 사용형식 ]    함수데이터형 함수명 ()   {       /* 함수 본체의 시작점 */ 변수 문장   }       /* 함수 본체의 시작점 */

6.1

함수의 기본 구성

(6)

6.1

함수의 기본 구성

퀴즈 풀어보기

교제 163 쪽 ( 1 번 ~ 5

번 )

(7)

6.2

함수의 종류

 main function

 user defined function

 library function

(8)

① main

함수

- 하나의 프로그램 전체를 통제하는 함수 - 하나의 프로그램 파일에 꼭 하나만 존재해야만 하는 함수 - 이 함수는 다른 함수의 호출 없이 자동으로 실행되는 함수

② 사용자 정의 함수

- 사용자가 필요에 따라 직접 정의하여 사용하는 함수 - 이 함수는 필요한 만큼 정의하여 사용할 수 있음 - 단독으로는 독립된 역할을 못함 - 다른 함수의 호출이 있어야만 실행 - 함수의 원형을 main() 함수 위에 선언해 주어야 하는 함수

③ 라이브러리 함수

- C 언어 컴파일러 자체에서 지원해주는 함수 - 이 함수는 함수의 사용법에 따라 정의해야만 사용이 가능 - 함수의 본체가 정의된 해더파일을 포함시켜야만 사용 가능한 함수

6.2

함수의 종류

(9)

◀6-1.C▶ 메인 함수만으로 프로그래밍한 경우 실행결과 누구신가요 ? 한송이 <Enter> 한송이 님 안녕하세요 . #include <stdio.h> void main() { char irum[20]; printf(" 누구신가요 ? "); scanf("%s", irum); printf("%s 님 안녕하세요 . \n", irum); }

6.2

함수의 종류

(10)

#include <stdio.h>

void who(char name[20]);

void main() { char irum[20]; printf(" 누구신가요 ? "); scanf("%s", irum); who( irum ); }

void who( char name[20] )

{ printf("%s 님 안녕하세요 . \n", name); } ◀6-2.C▶ 사용자정의 함수 who() 를 이용한 경 우 실행결과 누구신가요 ? 한송이 <En-ter> 한송이 님 안녕하세요 .

6.2

함수의 종류

(11)

6.2

함수의 종류

퀴즈 풀어보기

교제 167 쪽 ( 6 번 ~ 14

번 )

(12)

6.3

함수의 호출

사용자 정의 함수와 라이브러리 함수는

다른 함수의 호출이 있어야 그 함수가 동작한다 .

 return

문이 없는 경우

 return

문이 있는 경우

(13)

(1)

리턴 (return) 문이 없는 경우

◀6-3.C▶ 값을 전달하지 않고 호출하는 경우 실행결과 합계 : 30

6.3

함수의 호출

  #include <stdio.h> void add(); void main() { add(); } void add() { int aa=10, bb=20, cc; cc = aa + bb; printf(" 함계 : %d \n", cc); }

(14)

◀6-4.C▶ 값을 전달하면서 호출하는 경우

  #include <stdio.h>

void add(int aa, int bb); void main()

{

int a=10, b=20; add( a, b );

}

void add( int aa, int bb ) { int cc; cc = aa + bb; printf(" 합계 : %d \n", cc); } 실행결과 합계 : 30

6.3

함수의 호출

(15)

(2)

리턴 (return) 문이 있는 경우

◀6-5.C▶ 값을 전달하지 않고 호출하는 경우  #include <stdio.h> int add(); void main() { int sum; sum = add(); printf(" 합계 : %d \n", sum); } int add() { int aa=10, bb=20, cc; cc = aa + bb; return( cc ); } 실행결과

6.3

함수의 호출

(16)

◀6-6.C▶ 값을 전달하면서 호출하는 경우

  #include <stdio.h> int add(int aa, int bb); void main() { int sum; int a=10, b=20; sum = add( a ,b ); printf(“ 합계 : %d \n", sum); }

int add( int aa, int bb ) { int cc; cc = aa + bb; return(cc); } 실행결과 합계 : 30

6.3

함수의 호출

(17)

6.3

함수의 호출

퀴즈 풀어보기

교제 173 쪽 ( 15 번 ~

17

번 )

(18)

6.4

함수에서 결과 값 되돌려 받기

 1

개의 결과 값 되돌려 받기

 여러 개의 결과 값 되돌려 받기

(19)

(1)

한 개의 결과 값 되돌려 받기

◀6-7.C▶

#include <stdio.h> int add(int a, int b); void main() { int hab; hab = add( 1, 100 ); printf(" 합계 : %d \n", hab); }

int add( int a, int b ) { int c=0, n; for(n=a; n<=b; n++) c = c + a; return( c ); } 실행결과 합계 : 5050

6.4

함수에서 결과 값 되돌려 받기

(20)

여러 개의 결과 값을 되돌려 받기 위해서는 함수의 인자를 포인터 (pointer) 형으로 사용한다 . 그 이유는 리턴 (return) 문을 이용하면 , 하나의 결과 값만 되돌려 받기 때문이다 .

(2)

여러 개의 결과 값 되돌려 받기

6.4

함수에서 결과 값 되돌려 받기

(21)

◀6-8.C▶

#include <stdio.h>

void abc(int *x, int *y); void main()

{

int a=100, b=200;

printf(" 호출 전 : a=%d b=%d \n", a, b); abc( &a, &b );

printf(" 호출 후 : a=%d b=%d \n", a, b); }

void abc( int *x, int *y ) { *x = 300; *y = 500; } 실행결과 호출하기 전 : a=100 b=200 호출한 후 : a=300 b=500

6.4

함수에서 결과 값 되돌려 받기

(22)

6.4

함수에서 결과 값 되돌려 받기

퀴즈 풀어보기

교제 177 쪽 ( 18 번 ~

20

번 )

(23)

함수의 원형을 가지고 있는 헤더파일을 포함시켜야만

사용 가능한 함수이다 .

6.5

라이브러리 함수

 문자 (character) 처리 라이브러리 함수

 문자열 (string) 처리 라이브러리 함수

 데이터 변환 라이브러리 함수

수학관련 함수 등

(24)

- 문자 처리 함수에는 문자의 종류를 구분하기 위한 is_ 형 함수가 있 다 . - 그리고 문자를 변환하기 위한 to_ 형 함수가 정의되어 있다 . - 문자처리 라이브러리함수를 이용할 때에는 ctype.h 해더파일을 포함시켜야 한다 .

(1)

문자 처리 함수

함수 설명  isalnum(c)    isalpha(c)  isdigit(c)  islower(c)  isupper(c)  tolower(c)  toupper(c)  c 가 영문자 .(A ~ Z, a ~ z) 이거나 숫자 (0 ~ 9) 이면 결과는 1( 참 ) 이다 .  c 가 영문자 (A ~ Z, a ~ z) 이면 결과는 1( 참 ) 이다 .  c 가 숫자 (0 ~ 9) 이면 1( 참 ) 이다 .  c 가 소문자 (a ~ z) 이면 1( 참 ) 이다 .  c 가 대문자 (A ~ Z) 이면 1( 참 ) 이다 . 문자 c 를 소문자로 변환시킨다 . 문자 c 를 대문자로 변환기킨다 .

6.5

라이브러리 함수

(25)

◀6-9.C▶   #include <stdio.h> #include <ctype.h> void main() { int n; char ch; for(n='a'; n<='z'; n++){ if( islower(n) ){ ch = toupper(n); printf("%c", ch); } } } 실행결과 ABCDEFGHIJKLMNOPQRSTUVWXYZ

6.5

라이브러리 함수

(26)

- 문자열을 처리하는 데 필요한 함수들이 정의되어 있다 . - 포함시켜야 할 해더파일은 string.h 이다 .   함수 설명 strlen(s) strcpy(s1, s2) strcat(s1, s2) strcmp(s1, s2)   문자열 s 의 길이를 구해준다 . 문자열 s1 에 문자열 s2 를 복사시킨다 . 문자열 s1 의 뒤에 문자열 s2 를 연결한 다 . 문자열 s1 과 s2 의 값을 비교한다 . 이때 s1>s2 이면 양수 값을 , s1<s2 이면 음수 값을 , s1==s2 이면 0 값을 반환한 다 .

(2)

문자열 처리 함수

6.5

라이브러리 함수

(27)

◀6-10▶

#include <stdio.h>

#include <string.h>

void main() {

char s1[20]="abcde", s2[20] ="ABC"; printf("(1) %s \n", s1 ); strcpy(s1, s2); printf("(2) %s \n", s1); strcat(s1, s2); printf("(3) %s \n", s1);; } 실행결과 (1) abcde (2) ABC

6.5

라이브러리 함수

(28)

- 문자열 데이터를 숫자로 변환하는 함수들이 정의되어 있다 . - 포함시켜야 할 해더화일은 stdlib.h 이다 .     함수 설명  atoi(s)  atol(s)  atof(s) 문자열 s 를 int 형으로 변환시킨다 . 문자열 s 를 long int 형으로 변환시킨다 . 문자열 s 를 double 형으로 변환시킨다 .

(3)

데이터 변환 함수

6.5

라이브러리 함수

(29)

◀6-11.C▶ #include <stdio.h> #include <stdlib.h> void main() { int a; double b; char s[20]="123.456"; printf("s=%s \n", s); a=atoi(s); printf("a=%d \n", a); b=atof(s); printf("b=%f \n", b); } 실행결과 s = 123.456 a = 123 d = 123.456000

6.5

라이브러리 함수

(30)

- 수학 상수 및 함수를 처리해주는 함수들이 정의되어 있다 .

- 포함시켜야 할 해더화일은 math.h 이다 .     

(4)

수학관련 함수

(31)

함수 설명  exp(x)  sqrt(x)  pow(x,y)  sin(x)  cos(x)  tan(x)  acos(x)  asin(x)  atan(x)  sinh(x)  cosh(x)  tanh(x)  fabs(x)  fmod(x,y)  log(x)  log10(x) e(=2.718) 의 자승을 구합니다 . x 의 제곱근을 구합니다 . x 의 y 승을 구합니다 . sine 값을 구합니다 . cosine 값을 구합니다 . tangent 값을 구합니다 . arccosine 값을 구합니다 . arcsine 값을 구합니다 . arctangent 값을 구합니다 . hyperbolic sine 값을 구합니다 . hyperbolic cosine 값을 구합니다 . hyperbolic tangent 값을 구합니다 . x 의 절대치 값을 구합니다 . x/y 의 나머지를 구합니다 . 자연 로그 값을 구합니다 .

6.5

라이브러리 함수

(32)

◀6-12.C▶ #include <stdio.h> #include <math.h> void main() { printf("2 의 3 승은 %f \n", pow(2.0, 3.0) ); printf("2 의 제곱근은 %f \n", sqrt(2.0) ); printf("e 의 3 승은 %f \n", exp(3.0) ); } 실행결과 2 의 3 승은 8.000000 2 의 제곱근은 1.414214 e의 3 승은 20.085537

6.5

라이브러리 함수

(33)

6.5

라이브러리 함수

퀴즈 풀어보기

교제 183 쪽 ( 21 번 ~

25

번 )

(34)

제 6 장

참조

관련 문서

이때 함수의 그래프가 모든 사분면을 지나려면 그래프는.

포인터 new의 값을 포인터 temp가 가리키고 있는 마지막 노드의 링크에 저장하여, 리스트의 마지막 노드가 노드 new를 가리키게 한다..

서로 다른 클래스 객체들 사이의 대입 상속 관계인 객체와 포인터의 관계 가상 함수.. 가상

생성자와 소멸자의 호출 순서 디폴트 생성자와 디폴트 소멸자 멤버 초기화. 멤버

부울 함수의 간소화.

함수에 사칙 연산과 합성 연산을 적용하는 방법을

③ 함수 &gt; 프로그래밍 &gt; 숫자형 팔레트에서 곱하기 함수를 블록 다이어그램에 두고 화씨온도 터미널과 반복 터미널을 입력으로 연결하고 이 함수의 춗력을 C_F

기함수는 x에서의 함수값과 –x에서의 함수값의 부호가 반대 à 원점에 대칭.. 2차 함수의 그래프와