9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.

Slides:



Advertisements
Similar presentations
제6장 조건문.
Advertisements

Activation Records & Recursion
슬라이드 1~21까지는 각자 복습! 슬라이드 22부터는 수업시간에 복습
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
C++ Espresso 제2장 제어문과 함수.
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 1-1 C 언어의 개론적 이야기 프로그래밍 언어란 무엇인가? 컴파일이란 무엇인가? 사람과 컴파일러가 이해할 수 있는 약속된 형태의 언어 C 언어도 프로그래밍 언어 중 하나이다. 컴파일이란 무엇인가? 프로그래밍.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
쉽게 풀어쓴 C언어 Express 제8장 함수 C Express.
C 프로그래밍.
쉽게 풀어쓴 C언어 Express 제8장 함수 C Express.
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 1 강원대학교 컴퓨터과학전공 문양세.
2007 1학기 10 함수 활용.
C 6장. 함수 #include <stdio.h> int main(void) { int num;
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
쉽게 풀어쓴 C언어 Express 제8장 함수 C Express Slide 1 (of 26)
C 10장. 함수의 활용 #include <stdio.h> int main(void) { int num;
제5장 제어명령
6장. printf와 scanf 함수에 대한 고찰
쉽게 풀어쓴 C언어 Express 제9장 함수와 변수 C Express.
누구나 즐기는 C언어 콘서트 제4장 수식과 연산자.
Part 08 함수 ©우균, 창병모 이 슬라이드는 부산대학교 우균이 작성하였습니다. 오류나 수정할 사항 있으면 연락 주세요.
-Part3- 제5장 전처리기와 파일 분할 컴파일
7. while 문의 흐름 제어.
연산자 대입 연산자 산술 연산자 관계 연산자 논리 연산자 비트 연산자 콤마 연산자 축약 연산자 sizeof 연산자
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
컴퓨터 프로그래밍 기초 - 2nd : scanf(), printf() 와 연산자 -
7장 배열 배열의 정의 배열의 초기화 1차원 배열 2차원 및 다차원 배열 문자 배열 배열과 구조.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express.
Chapter 13 변수 범위.
5주차: Functions in C.
4장 제어문 선택문: if 문, if – else 문, switch 문
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
개정판 누구나 즐기는 C언어 콘서트 제6장 반복문 출처: pixabay.
Chapter 10 함수 기본.
C언어 프로그래밍의 이해 Ch13. 선행처리기와 주석문.
제 6장 함수 Hello!! C 언어 강성호 김학배 최우영.
자전거를 배우려면 안장에 올라가 페달을 밟아라.
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 년 봄학기
함수와 변수 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
제어문 & 반복문 C스터디 2주차.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 09. C언어의 핵심! 함수!
CHAP 2:순환.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
게임프로그래밍 I - 1차원 배열 - 공주대학교 게임디자인학과 박 찬 교수 2011년 4월 25일.
프로그래밍 기초와 실습 Chapter 11 Recursion.
Chapter 11. 배열과 포인터.
실습과제 1(조건문, ) 표준입력으로 수축기 혈압을 입력 받아 그에 따른 적당한 표현을 화면에 출력하는 프로그램을 if-else 문을 이용하여 작성.
#1 배열 활용 #include int main(void) { int i; int grade[5]; grade[0] = 10; grade[1] = 20; grade[2] = 30; grade[3] = 40; grade[4] = 50; for(i=0;i.
-Part2- 제1장 1차원 배열이란 무엇인가.
6장 반복제어문 for 문 while 문 do while 문 기타 제어문.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
-Part1- 제7장 반복문이란 무엇인가.
18장. 다차원 배열 그리고 포인터.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express Slide 1 (of 25)
뇌를 자극하는 C 프로그래밍.
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express Slide 1 (of 28)
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
-Part2- 제2장 다차원 배열이란 무엇인가.
반복문의 기능 반복문 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 while문
어서와 C언어는 처음이지 제16장.
17장. 포인터의 포인터.
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
C.
어서와 C언어는 처음이지 제22장.
배열, 포인터, 함수 Review & 과제 1, 2.
프로그래밍 기법 최적화 프로그래밍.
11장. 1차원 배열.
Presentation transcript:

9장. C 언어의 핵심! 함수

9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1

함수를 정의하는 이유 4가지 형태의 함수 9-1 함수의 정의와 선언 모듈화에 의한 프로그램의 질 향상이 가능 9-1 함수의 정의와 선언 함수를 정의하는 이유 모듈화에 의한 프로그램의 질 향상이 가능 유지 보수 및 확장의 용이성 문제 해결의 용이성 : "Divide and Conquer!" 4가지 형태의 함수 전달 인자 有, 반환 값 有 전달 인자 有, 반환 값 無 전달 인자 無, 반환 값 有 전달 인자 無, 반환 값 無

9-1 함수의 정의와 선언 전달 인자와 반환 값, 둘 다 있는 함수 그림 9-2 int Add(int i, int j) { 9-1 함수의 정의와 선언 전달 인자와 반환 값, 둘 다 있는 함수 int Add(int i, int j) { int result = i+j; return result; } 그림 9-2

9-1 함수의 정의와 선언 함수 호출 과정의 이해 그림 9-3 #include <stdio.h> 9-1 함수의 정의와 선언 함수 호출 과정의 이해 #include <stdio.h> int Add(int i, int j) { int result = i + j; return result; } int main(void) int d; d = Add(3, 4); printf("%d \n", d); return 0; 그림 9-3

9-1 함수의 정의와 선언 다양한 형태의 함수 void Result_Print(int val) { 9-1 함수의 정의와 선언 다양한 형태의 함수 void Result_Print(int val) { printf("덧셈에 대한 결과 : %d \n", val); printf("****** END ******** \n"); } int Input(void) { int input; scanf("%d", &input); return input; } void Intro(void) { printf("****** START ****** \n"); printf("두개의 정수 입력 : "); }

9-1 함수의 정의와 선언 함수 선언의 필요성 컴파일러의 특성상, 함수는 호출되기 전에 정의되어야 한다. 그림 9-4

9-1 함수의 정의와 선언 함수 선언의 의미 이후에 정의될 함수에 대한 정보 제공 9-1 함수의 정의와 선언 함수 선언의 의미 이후에 정의될 함수에 대한 정보 제공 func_add.c, large_number.c 그림 9-5

9-2 변수의 범위(scope) 변수의 특성에 따른 분류 지역 변수(Local Variable) 중 괄호 내에 선언되는 변수 전역 변수(Global Variable) 함수 내에 선언되지 않는 변수 정적 변수(Static Variable) 함수 내부, 외부 모두 선언 가능 레지스터 변수(Register Variable) 선언에 제한이 많이 따름

9-2 변수의 범위(scope) 지역 변수의 접근 범위 지역 변수는 선언 된 함수 내에서만 접근 가능 범위 1 범위 2 int fct_one(void) { int one=0;    return 0; }   int fct_two(void) int two=0; 범위 1 범위 2

9-2 변수의 범위(scope) 지역 변수의 메모리상 존재 기간 1단계 그림 9-7 int fct_one(void) { int one=10; return 0; } int fct_two(void) int one=20; int two=30; int main(void) int val=10; fct_one(); fct_two(); 1단계 그림 9-7

9-2 변수의 범위(scope) 지역 변수의 메모리상 존재 기간 2단계 3단계 그림 9-8 그림 9-9

9-2 변수의 범위(scope) 지역 변수의 메모리상 존재 기간 4단계 그림 9-10

9-2 변수의 범위(scope) 또 다른 형태의 지역 변수 while, for, if와 같은 문장에 의해 형성 되는 지역 내에서 선언되는 변수 예제 local_val1.c, local_val3.c 그림 9-11 그림 9-12

9-2 변수의 범위(scope) 지역 변수의 또 다른 특성 경우에 따라서 지역 변수는 다른 지역 변수를 가리기도 한다. 경우에 따라서 지역 변수는 다른 지역 변수를 가리기도 한다. /* local_val2.c */ #include <stdio.h>   int main(void) { int val=0; if(1) //무조건 true val+=10; printf("%d", val); } return 0; 그림 9-14

9-2 변수의 범위(scope) 지역 변수와 매개 변수 매개 변수도 지역 변수의 일종이다. 그림 9-15 int fction (int a, int b) { a+=10; b+=20 return a+b; } 그림 9-15

9-2 변수의 범위(scope) 전역 변수 전역 변수의 또 다른 특징 프로그램 어디에서나 접근이 가능한 변수 특정 영역(함수, 반복문...)에 속하지 않는다. 프로그램이 종료될 때까지 존재 예제 glo_val1.c 전역 변수의 또 다른 특징 같은 이름의 지역 변수에 의해서 가려지기도 한다. glo_val2.c

9-2 변수의 범위(scope) static 변수 보다 빠르게! register 변수 함수 내부 및 외부에 선언 가능하다. 한번만 초기화된다 : 전역 변수의 특징 함수 내부에서 선언될 경우 함수 내에서만 접근이 가능하다 : 지역 변수의 특징 예제 static_val.c 보다 빠르게! register 변수 int main(void) { int a ; register int b; // 레지스터 변수 b 선언 . . . . .

/* static_val.c */ #include <stdio.h> void fct(void); int main(void) { int i; for(i=0; i<5; i++) fct(); return 0; } void fct(void) int val=0; // static int val=0; val++; printf("%d ",val);

9-3 재귀 함수 재귀 함수의 기본적 이해 자기 자신을 다시 호출하는 형태의 함수 /* recursive_basic.c */ 9-3 재귀 함수 재귀 함수의 기본적 이해 자기 자신을 다시 호출하는 형태의 함수 /* recursive_basic.c */ #include <stdio.h>   void Recursive(void) { printf("Recursive Call! \n"); // Recursive(); } int main(void) Recursive(); return 0;

9-3 재귀 함수 탈출 조건의 필요성 무한 재귀 호출을 피하기 위해서 그림 9-16

9-3 재귀 함수 탈출 조건의 이해 예제 recursive_basic2.c 참조 그림 9-17

/* recursive_basic2.c */ #include <stdio.h> void Recursive(int n) { printf("Recursive Call! \n"); if(n==1) return; Recursive(n-1); } int main(void) int a=2; Recursive(a); return 0;

9-3 재귀 함수 재귀 함수 Design 사례 팩토리얼(factorial) 계산을 위한 알고리즘 그림 9-18 그림 9-19

9-3 재귀 함수 재귀 함수 Design 사례 알고리즘을 코드로 옮기기 위한 pseudo code와 C 코드 9-3 재귀 함수 재귀 함수 Design 사례 알고리즘을 코드로 옮기기 위한 pseudo code와 C 코드 예제 rec_facto.c // 시작 조건 : n은 0 이상이다. 시작(START) : f(n) 호출 1. 만약에 n이 0이면 1을 반환 2. 그렇지 않다면 n  f(n-1)을 반환. 끝(END) int f(int n) { if (n==0) return 1; else return n*f(n-1); }