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

Slides:



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

ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
C 프로그래밍.
누구나 즐기는 C언어 콘서트 제7장 함수.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
컴퓨터 프로그래밍 기초 [Final] 기말고사
-Part2- 제3장 포인터란 무엇인가.
개정판 누구나 즐기는 C언어 콘서트 제8장 함수 출처: pixabay.
6장. printf와 scanf 함수에 대한 고찰
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
누구나 즐기는 C언어 콘서트 제4장 수식과 연산자.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
연산자 대입 연산자 산술 연산자 관계 연산자 논리 연산자 비트 연산자 콤마 연산자 축약 연산자 sizeof 연산자
10장 함수.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
C 프로그래밍.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
26. 매크로와 전처리기.
6주차: Functions in C and Others
23장. 구조체와 사용자 정의 자료형 2.
6장. printf와 scanf 함수에 대한 고찰
쉽게 풀어쓴 C언어 Express 제9장 함수와 변수 C Express.
쉽게 풀어쓴 C언어 Express 제9장 함수와 변수 C Express Slide 1 (of 33)
14장. 포인터와 함수에 대한 이해.
11장. 1차원 배열.
Method & library.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
어서와 C언어는 처음이지 제14장.
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
27장. 모듈화 프로그래밍.
제 6장 함수 Hello!! C 언어 강성호 김학배 최우영.
자전거를 배우려면 안장에 올라가 페달을 밟아라.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
7장. 다양한 형태의 반복문. 7장. 다양한 형태의 반복문 7-1 반복문이란? 반복문의 기능 세 가지 형태의 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 7-1 반복문이란? 반복문의 기능 특정 영역을 특정 조건이 만족하는 동안에 반복.
19. 함수 포인터와 void 포인터.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
자료구조 세미나 발표 주제: 자료구조 기초 - 1회 차: 자료구조의 정의, 기초 지식 (함수, 포인터, 레퍼런스)
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 09. C언어의 핵심! 함수!
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
김선균 컴퓨터 프로그래밍 기초 - 7th : 함수 - 김선균
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
실습과제 1(조건문, ) 표준입력으로 수축기 혈압을 입력 받아 그에 따른 적당한 표현을 화면에 출력하는 프로그램을 if-else 문을 이용하여 작성.
Chapter 08. 함수.
6장 반복제어문 for 문 while 문 do while 문 기타 제어문.
Fucntion 요약.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
-Part1- 제7장 반복문이란 무엇인가.
함수(Function) ◈ 함수의 개념 및 사용 이유 ◈ 함수 정의, 호출 및 선언 ◈ 지역변수와 전역변수 ◈ return 문
7장 함수(Function).
7주차: Functions and Arrays
7장. 다양한 형태의 반복문. 7장. 다양한 형태의 반복문 7-1 반복문이란? 반복문의 기능 세 가지 형태의 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 7-1 반복문이란? 반복문의 기능 특정 영역을 특정 조건이 만족하는 동안에 반복.
Lecture 4 C 프로그램 구성의 기본 C 프로그램에서 이름짓기 C 프로그램에서 이름 충돌/이름 재사용.
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
반복문의 기능 반복문 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 while문
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
1. 지역변수와 전역변수 2. auto, register 3. static,extern 4. 도움말 사용법
수업 내용 수업 목표 강의 내용 강의 계획서 교과서 및 참고도서 평가 방법 수강생의 학습 방법 제안 강의자료 사이트
13. 포인터와 배열! 함께 이해하기.
함수 정의, void 자료형 함수 원형선언 함수 호출 변수 영역 규칙 재귀 함수
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
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); }