6주차: Functions in C and Others

Slides:



Advertisements
Similar presentations
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
Advertisements

쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
C 프로그래밍.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
컴퓨터 프로그래밍 기초 [Final] 기말고사
-Part2- 제3장 포인터란 무엇인가.
C 6장. 함수 #include <stdio.h> int main(void) { int num;
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
쉽게 풀어쓴 C언어 Express 제9장 함수와 변수 C Express.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
제 3장. C보다 나은 C++ II.
10주차: Structures and Others
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
C 프로그래밍.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
프로그래밍실습 제 11 강.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
2주차: 변수, 수식, Control Flow.
Chapter 13 변수 범위.
쉽게 풀어쓴 C언어 Express 제9장 함수와 변수 C Express Slide 1 (of 33)
14장. 포인터와 함수에 대한 이해.
11장. 1차원 배열.
5주차: Functions in C.
13. 연산자 오버로딩.
C 2장. C 프로그램 시작하기 #include <stdio.h> int main(void) { int num;
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
JA A V W. 03.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
어서와 C언어는 처음이지 제14장.
27장. 모듈화 프로그래밍.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
제 6장 함수 Hello!! C 언어 강성호 김학배 최우영.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
19. 함수 포인터와 void 포인터.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
연산자 (Operator).
함수와 변수 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
제어문 & 반복문 C스터디 2주차.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
Chapter 11. 배열과 포인터.
김선균 컴퓨터 프로그래밍 기초 - 7th : 함수 - 김선균
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
8주차: Strings, Arrays and Pointers
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
Chapter 08. 함수.
Fucntion 요약.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
제 6 장 함수(functions).
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express Slide 1 (of 25)
7주차: Functions and Arrays
C언어 프로그래밍의 이해 Ch03. 기본 자료형, 변수와 상수.
반복문의 기능 반복문 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 while문
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
Summary of Pointers and Arrays
Numerical Analysis Programming using NRs
Static과 const 선언 조 병 규 한 국 교 통 대 학 교 SQ Lab..
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
3주차: Control Flow and Others
1. 지역변수와 전역변수 2. auto, register 3. static,extern 4. 도움말 사용법
C.
수업 내용 수업 목표 강의 내용 강의 계획서 교과서 및 참고도서 평가 방법 수강생의 학습 방법 제안 강의자료 사이트
Pointers summary.
함수 정의, void 자료형 함수 원형선언 함수 호출 변수 영역 규칙 재귀 함수
Presentation transcript:

6주차: Functions in C and Others

함수의 수행 과정 main 함수 ... 함수 A를 호출 함수 A

함수 정의의 예 -int: 함수의 return value type -int x, int n: 함수의 인자(parameter) int xPOWn(int x, int n) { int i, retval = 1; for(i = 1; i <= n; i++){ retval *= x; } return retval; -int: 함수의 return value type -int x, int n: 함수의 인자(parameter) xn을 계산하는 함수 return retval;: 계산 결과를 return하는 statement

함수 호출의 예 -앞장의 함수 정의 부분과 이 장의 프로그램은 모두 한 파일에 들어 있다. #include<stdio.h> int xPOWn(int, int); int main(void) { printf(“x^n = %d\n“, xPOWn(3, 7)); return 0; } -앞장의 함수 정의 부분과 이 장의 프로그램은 모두 한 파일에 들어 있다. -xPOWn(3, 7): x = 3, n = 7로 함수를 호출

The void -어떤 값을 return하지 않는 함수는 void type이다. #include<stdio.h> void print_hello(void) { printf(“Hello World!\n”); } int main(void) print_hello(); return 0; -어떤 값을 return하지 않는 함수는 void type이다. -인자를 받지 않는 함수를 정의할 때에는 인자가 들어갈 자리에 void를 쓴다. -함수의 정의는 함수의 선언의 역할도 동시에 한다.

함수의 수행 종료 함수는 두 가지 경우에 그 수행을 종료하고 자신을 호출했던 부분으로 되돌아간다. return statement를 만났을 때 함수를 다 수행했을 때 함수의 정의대로 다 수행하고 }를 만났을 때

The return Statement return; return expression; void 함수인 경우

return Statement의 예 -return statement는 여러 개 있을 수도 있다. #include<stdio.h> int absolute_val(int a) { if(a < 0) return –a; else return a; } int main(void) printf(“%d”, absolute_val(-7)); return 0; -return statement는 여러 개 있을 수도 있다. -unary operator -: -7은 연산자 –와 정수상수 7로 이루어진 expression이다.

#include<stdio.h> 파일이름 #include<stdio.h> stdio.h를 프로그램에 삽입한다. stdio.h에는 printf(), scanf 함수를 비롯한 여러 기본 함수들의 선언이 되어 있다.

int main(void) main은 C 프로그램의 본체가 되는 함수이다. 프로그램은 항상 main 함수에서 시작해서 main 함수에서 끝난다.

C에서의 인자의 전달 함수 호출의 예 각 인자에 해당하는 수식의 값이 계산되어서 함수의 인자로 전달된다. xPOWn(3, 7) 3, 7: 수식 각 인자에 해당하는 수식의 값이 계산되어서 함수의 인자로 전달된다. call-by-value

Call-by-Value(1/2) - 인자로 정수 n을 받아서 1부터 n까지의 합을 구하는 함수 #include<stdio.h> int compute_sum(int n) { int sum = 0; for(; n > 0; --n) sum += n; return sum; } – 뒷 장과 연결됨. - 인자로 정수 n을 받아서 1부터 n까지의 합을 구하는 함수

Call-by-Value(2/2) int main(void) { int n = 3, sum; printf(“%d\n”, n); sum = compute_sum(n); printf(“%d\n”, sum); return 0; } -함수 compute_n()의 인자인 n과 main 함수에서 사용되는 n은 별개의 객체들이다. -이 프로그램의 결과는 3 6 이다.

Comments 주석문 프로그램에 설명을 달 때 사용된다. /* */로 둘러싸인 부분은 프로그램에 전혀 영향을 주지 않는다.

The Scope Rule(1/2) block: {}로 싸인 부분을 block이라고 한다. 함수의 정의도 block이다. #include<stdio.h> void main(void) { int a = 2; printf(“%d\n”, a); /* 2가 찍힌다. */ int a = 5; printf(“%d\n”, a); /* 5가 찍힌다. */ } printf(“%d\n”, ++a); /* 3이 찍힌다. */ block: {}로 싸인 부분을 block이라고 한다. 함수의 정의도 block이다. 변수의 선언은 block의 앞부분에 있어야 한다.

The Scope Rule(2/2) -포함된 block은 자신을 포함한 block의 변수들을 접근할 수 있다. #include<stdio.h> void main(void) { int a = 2; printf(“%d\n”, a); /* 2가 찍힌다. */ printf(“%d\n”, a); /* 2가 찍힌다. */ } printf(“%d\n”, ++a); /* 3이 찍힌다. */ -포함된 block은 자신을 포함한 block의 변수들을 접근할 수 있다.

Storage Classes C의 모든 변수와 함수는 type과 storage class를 가진다. 저장되는 장소 주기억장치(RAM), 레지스터(register) auto, extern, register, static

C 프로그램의 구성 외부 영역(global) 함수 A main함수 함수 B 함수 K 함수L

The auto Class block 내부에 선언된 변수 함수 내부에 선언된 변수 Local variables block이 수행될 때 메모리에 영역이 잡히고 block의 수행이 끝나면 없어진다. 자신이 선언된 block에서만 존재한다.

auto Class Example -내부 block의 a는 내부 block의 수행이 끝나면서 없어진다. auto #include<stdio.h> void main(void) { int a = 2; printf(“%d\n”, a); /* 2가 찍힌다. */ int a = 5; printf(“%d\n”, a); /* 5가 찍힌다. */ } printf(“%d\n”, ++a); /* 3이 찍힌다. */ -내부 block의 a는 내부 block의 수행이 끝나면서 없어진다. auto

The extern Storage Class block 외부에 선언된 변수는 extern 변수이다. 함수는 모두 extern storage class 프로그램이 수행되기 시작할 때 메모리에 영역이 잡히고 프로그램이 종료할 때 없어진다. 프로그램의 모든 영역에서 접근할 수 있다.

Extern Class Example (1) #include<stdio.h> int a=1, b=2, c=3; /* extern variables */ int f(void); int main(void) { printf(“%3d\n”, f()); /* 12가 찍힌다. */ printf(“%3d%3d%3d\n”, a, b, c); /* 4 2 3이 찍힌다. */ return 0; } int f(void) { int b, c; a = b = c = 4; return (a + b + c); }

Extern Class Example (2) #include<stdio.h> int a=1, b=2, c=3; /* external variables */ int f(void); int main(void) { printf(“%3d\n”, f()); /* 12가 찍힌다. */ printf(“%3d%3d%3d\n”, a, b, c); /* 4 2 3이 찍힌다. */ return 0; File1.c int f(void) { int b, c; a = b = c = 4; return (a + b + c); } File2.c extern int a;

Static Storage Class (1) void f(void) { static int count = 0; ++count; if(count % 2 ==0) …. else ….. } -Block 에 재진입시에 변수값이 유지되도록 해준다. -함수 f()에서만 접근 가능

Static Storage Class (2) #include<stdio.h> static int a=1, b=2, c=3; /* static external variables */ int f(void); int main(void) { printf(“%3d\n”, f()); /* 12가 찍힌다. */ printf(“%3d%3d%3d\n”, a, b, c); /* 4 2 3이 찍힌다. */ return 0; File1.c int f(void) { int b, c; a = b = c = 4; return (a + b + c); } File2.c extern int a; error

교재에서 강의와 연관된 부분 5장 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.10, 5.11