제 6 장 함수(functions).

Slides:



Advertisements
Similar presentations
1.1 구조체란 1.2 중첩 구조체 1.3 구조체와 배열 1.4 구조체와 포인터 1.5 구조체와 함수 1.6 공용체와 열거형.
Advertisements

1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
1 구조체 윤 홍 란 컴퓨터 프로그래밍 2 구조체 정의  구조체란 ? o 서로 다른 형의 변수들을 하나로 묶어주는 mechanism. (cf. 배열 : 같은 형의 변수들을 하나로 묶어주는 mechanism) o 예 : 카드의.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
제 9 장 포인터.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
Report #5 - due: 4/13 다음 10*5의 희소 행렬 A, B를 고려하라.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
C 프로그래밍 I.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
제 9 장 구조체와 공용체.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
컴퓨터 프로그래밍 기초 [Final] 기말고사
자료 구조: Chapter 3 (2)구조체, 포인터
개정판 누구나 즐기는 C언어 콘서트 제9장 포인터 출처: pixabay.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
10장 함수.
5장. 참조 타입.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
프로그래밍실습 제 11 강.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
C++ Espresso 제12장 템플릿.
6주차: Functions in C and Others
23장. 구조체와 사용자 정의 자료형 2.
14장. 포인터와 함수에 대한 이해.
14. 예외처리.
11장. 1차원 배열.
처음으로 배우는 C 프로그래밍 제4부 복합 데이터 형 제 8 장 배열, 주소, 포인터.
C#.
13. 연산자 오버로딩.
Method & library.
JA A V W. 03.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
어서와 C언어는 처음이지 제14장.
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
19. 함수 포인터와 void 포인터.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
포인터 1차원 배열과 포인터 2차원 배열과 포인터 문자열 배열과 포인터 포인터 배열
10장 부프로그램 구현 순천향대학교 컴퓨터공학과 하 상 호.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
8주차: Strings, Arrays and Pointers
5장 선택제어문 if 선택문 switch-case 선택문 다양한 프로그램 작성 조건 연산자.
Chapter 08. 함수.
Fucntion 요약.
12. 상속 : 고급.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
함수(Function) ◈ 함수의 개념 및 사용 이유 ◈ 함수 정의, 호출 및 선언 ◈ 지역변수와 전역변수 ◈ return 문
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
7주차: Functions and Arrays
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
Summary of Pointers and Arrays
16장. 변수, 연산자, 사용자 정의 함수 변수 배열과 객체 연산자 함수.
Numerical Analysis Programming using NRs
Chapter 11 구조체.
Static과 const 선언 조 병 규 한 국 교 통 대 학 교 SQ Lab..
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
1. 지역변수와 전역변수 2. auto, register 3. static,extern 4. 도움말 사용법
Pointers summary.
7 생성자 함수.
함수 정의, void 자료형 함수 원형선언 함수 호출 변수 영역 규칙 재귀 함수
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

제 6 장 함수(functions)

목 차 함수의 구조 매개 변수 전달 방법 함수 포인터와 배열 재귀 함수

함수의 구조(1) 함수란? 독립된 작업을 수행하는 코드로 된 모듈, 실행 블록 모든 C 함수는 순환(recursive) 형 모든 함수는 동등한 위치 함수의 종류 ① 시스템 라이브러리 함수(system library function) ② 사용자 정의 함수(user-defined function) 함수의 구성 함수 선언, 함수 정의, 함수 호출

함수의 구조(2) 함수의 선언과 정의 함수의 선언 함수 원형 (function prototype) 선언 실제 실행 소스코드 부분은 없음 함수 반환 자료형과 함수명, 호출시 필요한 매개변수 자료형과 매개변수만 선언 자료형, 함수명, 함수의 매개변수들을 지정 형식 기억클래스 자료형 함수명(매개변수 리스트); 예 int  max(int score, int num); // 반환값이 정수형 void print_result(); // 반환값이 없음(void)

함수의 구조(3) 함수의 선언과 정의(계속) 함수의 정의 선언한 함수의 실행 소스-코드를 실제 구현 끝에 ’;‘을 붙이지 않음 값 반환형과 비반환형 함수로 구분 return 수식; 문의 유무로 구분 반환 함수면 함수명에 반환값이 실려 반환되거나 함수의 자료형을 포인터를 이용하여 사용 형식 기억클래스 자료형 함수명(형식매개변수 리스트)         형식매개변수 선언문;       {            함수 또는 내부변수 선언 ;            실행문 ;            [return [변수나 수식];]        }

함수의 구조(4) 함수의 선언과 정의(계속) 함수의 호출 void형 함수 ANSI 표준에 준하는 것 값을 반환하지 않는 함수형 대표적으로 main() 함수 함수의 호출 실 매개변수가 복사에 의해 피호출 함수의 형식 매개변수로 전달 형식 함수명(실매개변수-리스트);

함수의 구조(5) 함수의 변수와 매개변수 먼저 각 변수가 프로그램 중의 어떤 범위에서 유효한가를 고려 지역변수와 전역변수 cf. 기억장치 클래스 참조 내부변수와 외부변수 실 매개변수(actual parameter) 호출 시 ( )속에 변수명 또는 값을 표기 형식 매개변수(formal parameter) 피호출 함수의 ( )속에 있는 변수

함수의 구조(6) 함수의 변수와 매개변수(계속) 함수 및 매개변수 선언/정의 규칙 실 매개변수형과 형식매개변수형은 동일 실 매개변수와 형식매개변수 개수는 항상 같아야 함 실 매개변수는 콤마(,)로 분리, 이 ‘,’는 콤마 연산자가 아님 실 매개변수의 식의 값은 함수 호출 시  형이 변환됨 float형의 실 매개변수는 double형으로 변환 char형이나 short형의 실 매개변수는 int형으로 변환 변수에 함수명을 사용하면 그 함수명은 번지로 변환 형식 매개 변수쪽에서 그 함수의 포인터로 선언 실 매개변수용 배열명은 배열의 최초 요소 번지로 변환

C의 매개변수 전달 방법(1) (1) 값에 의한 방법(Call by Value) 가장 일반적인 매개변수 전달 방법 호출시 실 매개변수의 실제값을 형식 매개변수에 전달 형식 매개변수 값을 실 매개변수로 되돌릴 수는 없음 호출 함수의 원래 값은 피호출 함수에 의해 영향을 받지 않음 함수 사이의 효율을 극대화 실 매개변수 자료형은 형식 매개변수 자료형과 일치 char의 실 매개변수가 호출된 함수로 전달 시 int으로, float은 double형으로 형 변환

매개변수 전달 방법(2) 값에 의한 방법(Call by Value)(계속) 예 void exchange (int a, int b) {.... } void main() {         int a, b; ....       exchange (a, b); }

값에 의한 방법(Call by Value) 실예 main() { int x, y, z, p; …………… p = func(x, y, z); ⇒ 실매개변수 printf("p==>%d", p); } int func(a, b, c); ⇒ 형식매개변수

매개변수 전달 방법(3) 포인터를 사용하여 매개변수를 전달 : 변수의 주소 전달 : 실매개변수 주소 ⇒ 형식 매개변수 (2) 참조(주소)에 의한 방법(Call by Reference(Location)) 포인터를 사용하여 매개변수를 전달 : 변수의 주소 전달 : 실매개변수 주소 ⇒ 형식 매개변수 2개 이상의 반환값이 필요한 경우 유용 자료가 배열인 경우 사용 예 void exchange (int *a, int *b) {.... } void main() {         int a, b; ....       exchange (&a, &b); }

참조(주소)에 의한 방법-실례 main() { int x, y, z, p; func(&x, &y, &z, &p); ⇒ 실매개변수 printf("p==>%d", p); } void func(a, b, c, d) ⇒ 형식매개변수 int *a, *b, *c, *d; *d = *a+*b+*c;

함수 포인터와 배열(1) 함수 포인터 여러 개의 함수들 중 필요한 함수들만 선택 사용 형식 예 type (*func-name)(type parm1...type parmN); 예 int sum1(int a, int b); int sum2(int a, int b); void main() {     int (*func)(int a, int b);     int a, b, c; ....      func=sum1;     c=func(a, b);     ....     func=sum2; ....}

함수 포인터와 배열(2) 함수 포인터 배열 함수 포인터와 쓰임새는 거의 비슷 포인터에 배열이 들어 있음 함수 포인터` int (*func)(int a, int b); int (*func[2])(int a, int b); 의미는 func()로 사용 가능 함수가 2종 있다는 의미

함수 포인터와 배열(3) 함수 포인터 배열(계속) 예 int sum1(int a, int b); void main() {        int (*func[2])(int a, int b); ....        func[0]=sum1;          func[1]=sum2;          c=func[0](a, b);

재귀 함수(1-1) 재귀 함수 (Recursion Function) 변수값만 계속 바뀌고 함수는 자기 자신을 계속 반복해서 호출 반복문을 이용하여 해결 가능 반복 제어 구조에 의해 제어 시스템에 많은 부담 호출될 때 마다 변수와 매개변수를 위한 메모리 공간을 계속적으로 할당 반복문을 이용하여 프로그램을 작성하는 것을 추천 대표문제 하노이 탑, 팩토리얼 계산 등

재귀 함수(1-1) 순환 : 재귀 호출(recursion call) 가능. ⓐ 직접순환(direct recursion) : 자신 함수 호출 ⓑ 간접순환(indirect recursion) : 타 함수 호출/ 타 함수에서 자신 호출 call- call-

재귀 함수(2) 재귀 함수 (계속) 팩토리얼 예 int factory(int n) { if(n<=1) return 1;  else           return (n*factory(n-1)); }