처음으로 배우는 C 프로그래밍 제3부 함수 제 6 장 함수 작성.

Slides:



Advertisements
Similar presentations
03 변수와 자료형 세종대학교 최옥경 교수 참고 : 한빛미디어 뇌를 자극하는 C, INFINITY Perfect C.
Advertisements

기본 자료형 순천향대학교 정보기술공학부 이 상 정. 자료형의 선언 컴퓨터프로그래밍 1 순천향대학교 정보기술공학부 이 상 정 3 자료형 선언 기본 자료형문자형 char 정수형 int 실수형 float double 형없음 void.
조건문, 함수 정대진 ( ) C Programming -3 일차 ITA 8 월 강의.
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
제6장 조건문.
프로그래밍1 및 실습 (C언어) - 3장 기본자료형 (3.6부터 끝까지) -
데이터의 표현과 연산 (1) (Chapter 3)
제 3 장 변수와 자료형.
C++ Tutorial 1 서강대학교 데이터베이스 연구실.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
제 1장 C 언어의 소개.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
쉽게 풀어쓴 C언어 Express 제8장 함수 C Express.
C 프로그래밍.
쉽게 풀어쓴 C언어 Express 제8장 함수 C Express.
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
쉽게 풀어쓴 C언어 Express 제8장 함수 C Express Slide 1 (of 26)
C 10장. 함수의 활용 #include <stdio.h> int main(void) { int num;
쉽게 풀어쓴 C언어 Express 제18장 입출력과 라이브러리 함수 C Express.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
컴퓨터의 기초 제 4강 - 표준 입출력, 함수의 기초 2006년 4월 10일.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
6장. printf와 scanf 함수에 대한 고찰
쉽게 풀어쓴 C언어 Express 제9장 함수와 변수 C Express.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 14. 포인터와 함수에 대한 이해.
Chapter 13 문자 데이터와 문자열 문자 데이터 문자열.
변수와 자료형.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
기초C언어 제3주 C프로그램 구성요소, 변수와 자료형 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
컴퓨터 프로그래밍 기초 - 2nd : scanf(), printf() 와 연산자 -
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
변수와 자료형.
프로그래밍2 및 실습 C언어 기반의 C++ 2.
제 3 장 상수와 변수
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
adopted from KNK C Programming : A Modern Approach
2장 표준 입출력 표준 입출력 함수의 종류 형식화된 입출력 문자 입출력 문자열 입출력.
Chapter 10 함수 기본.
2019년 2월 24일 오후 4시 59분 제2장 표준 입출력 함수
C언어 프로그래밍의 이해 Ch13. 선행처리기와 주석문.
제 6장 함수 Hello!! C 언어 강성호 김학배 최우영.
11장. 1차원 배열 IT응용시스템공학과 김 형 진 교수.
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 05. 상수와 기본 자료형.
함수와 변수 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 09. C언어의 핵심! 함수!
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
게임프로그래밍 I - 1차원 배열 - 공주대학교 게임디자인학과 박 찬 교수 2011년 4월 25일.
Chapter 05. 입출력 함수.
누구나 즐기는 C언어 콘서트 제2장 기초 사항 IT응용시스템공학과 김형진 교수.
-Part1- 제8장 조건문이란 무엇인가 (교재 199페이지 ~ 224페이지)
자바 5.0 프로그래밍.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express Slide 1 (of 25)
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express Slide 1 (of 28)
컴퓨터 프로그램은 여러 기능의 복합체이다. 라이브러리 함수와 사용자 정의 함수
1학기 정리 지난 학기에 배운 내용을 복습해 본다..
C언어 프로그래밍의 이해 Ch03. 기본 자료형, 변수와 상수.
컴퓨터 프로그래밍 기초 #13 : 문자열 Seong-Yun Choi
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
3주차: Control Flow and Others
어서와 C언어는 처음이지 제16장.
17장. 포인터의 포인터.
C.
printf("Global Korea\n");
개정판 누구나 즐기는 C언어 콘서트 제3장 변수와 자료형 출처: pixabay.
배열, 포인터, 함수 Review & 과제 1, 2.
3b장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
11장. 1차원 배열.
⊙ 입출력 처리란? data를 입력장치로부터 program 내부로 읽어 들이거나
Presentation transcript:

처음으로 배우는 C 프로그래밍 제3부 함수 제 6 장 함수 작성

제 1 절 함수 정의와 선언 함수 함수의 정의 : 함수 헤더와 함수 몸체로 구성 데이터를 전달 받아 적당한 연산을 수행한 후 결과를 반환 main() 함수 내에서 사용자 정의 함수 호출 예 헤 maxnum = find_max(firstnum, secnum); find_max() 함수는 호출되는 함수(called function) main() 함수는 호출하는 함수(calling function) float find_max(float, float); 인자로 부동소수점 수 두개를 받아 부동소수점 수를 반환하는 find_max() 함수의 프로토타입 함수의 정의 : 함수 헤더와 함수 몸체로 구성 함수 헤더(function header)는 함수에 의해 반환되는 값의 데이터 형, 함수의 이름, 요구되는 인자들의 개수, 순서, 데이터 형을 명시

제 1 절 함수 정의와 선언 float find_max(float x, float y) : x, y를 형식 인자라 함 int max_it(float x, float y) max_it(float x, float y) : 반환 값의 형이 생략되면 정수를 반환한다고 가정 void display(int x, double y) : void는 반환하는 값이 없을 때 쓰임 double print_message(void) : void는 전달되는 인자가 없을 때에도 쓰임 함수 몸체(function body)는 전달된 인자를 이용하여 적당한 연산을 수행한 후 많아야 하나의 값을 반환. 열림 중괄호({)로 시작, 변수 선언, 유효한 C문장들, 반환문, 닫힘 중괄호(})로 끝남

제 1 절 함수 정의와 선언 함수의 선언: 함수 프로토타입 find_max() 함수의 완전한 정의 float find_max(float x, float y) /* 함수 헤더 */ { /* 함수 몸체의 시작 */ float maxnum; /* 변수 선언 */ if (x >= y) maxnum = x; /* 최대값을 찾는 문장 */ else maxnum = y; return (maxnum); /* 반환문 */ } /* 함수 몸체의 끝, 함수 정의의 끝 */ 함수의 선언: 함수 프로토타입 함수는 호출되기전에 반드시 선언되어야 한다 printf()나 scanf() 함수를 쓰기 위해서 #include <stdio.h> 선언

제 1 절 함수 정의와 선언 함수의 호출 함수 프로토타입 형태 return-data-type function-name(list of argument data type); float find_max(float, float); float roi(int, char, char, double); void display(double, double); 함수의 호출 maxnum = find_max(firstnum, secnum); firstnum, secnum은 실인자라고 불리고 함수 호출시 형식인자인 x, y로 복사되어 함수 내에서 사용된다 함수 내에서 x, y를 변경하여도 firstnum, secnum은 변경되지 않는다

제 2 절 표준 라이브러리 함수 C언어는 입출력, 수학, 문자열 등을 다루는 미리 프로그램된 함수들의 집합을 제공 표준 라이브러리 함수를 사용하기 전에 알아야 할 사항 함수가 하는 일, 예: 제곱근을 구한다 함수 이름, 예: sqrt 요구되는 인자들: double형의 제곱근을 구하고자 하는 수 반환되는 데이터 형: double형 함수가 선언된 헤더 파일: math.h

제 2 절 표준 라이브러리 함수 입출력 라이브러리 함수 헤더 파일: stdio.h, stdio는 standard input/output의 약자 getchar() 함수 한 문자를 입력받는다. 프로토타입: int getchar(void); in_char = getchar(); scanf(“%c”, &in_char); 과 동일 연속적으로 문자열을 입력받을 때 유용 putchar() 함수 한 문자를 출력한다 프로토타입: void putchar(int); putchar(‘a’); printf(“%c”, ‘a’); 와 동일

제 2 절 표준 라이브러리 함수 수학 라이브러리 함수 헤더 파일: math.h int abs(int n); 정수 n의 절대값을 반환한다 double pow(double x, double y); x의 y승을 반환한다 double sin(double r); r 라디안의 사인값을 반환한다 double sqrt(double n); n의 제곱근을 반환한다. n이 음수인 경우는 0을 반환한다 수식도 값을 가지므로 함수의 인자로 쓰일 수 있다 n = pow(5, p * q); n = sqrt(p * q) + pow(p + q, 2); n = sqrt(abs(theta));

제 2 절 표준 라이브러리 함수 문자열 라이브러리 함수 헤더 파일: string.h strcat(string1, string2); string1과 string2를 연결 strchr(string, character); string에서 character가 처음 나타나는 위치를 반환 strcmp(string1, string2); string1과 string2를 비교 strcpy(string1, string2); string1에 string2를 복사 strlen(string); string의 길이를 반환

제 2 절 표준 라이브러리 함수 그 밖의 루틴들 ctype.h에 선언된 유용한 함수들 isalpha(character); character가 알파벳이면 참, 아니면 거짓을 반환 isupper(character); character가 대문자이면 참, 아니면 거짓을 반환 islower(character); character가 소문자이면 참, 아니면 거짓을 반환 isdigit(character); character가 숫자이면 참, 아니면 거짓을 반환 toupper(character); character가 소문자이면 대문자를, 아니면 변경되지 않은 character를 반환 tolower(character); character가 대문자이면 소문자를, 아니면 변경되지 않은 character를 반환

제 3 절 변수 유효 범위 변수 유효 범위 프로그램 내에서 변수가 유효한 공간, 즉 변수가 사용될 수 있는 위치를 정의 지역 유효 범위 함수 몸체 내에서 선언문에 의해 선언된 변수가 갖는 유효 범위 지역 변수 선언된 함수 내에서만 사용 가능 같은 이름의 변수는 서로 다른 함수에서 사용 가능 전역 유효 범위 함수 밖에서 선언된 변수가 갖는 유효 범위 전역 변수, 외부 변수 변수가 선언된 위치 아래에 있는 모든 함수에서 사용 가능

제 3 절 변수 유효 범위 int firstnum; /* 전역 변수 */ void valfun(void) { int secnum; /* 지역 변수 */ secnum = 30; firstnum = 40; } void main(void) { firstnum = 10; secnum = 20; valfun(); 전역 변수 firstnum, valfun() 함수의 지역 변수 secnum, main() 함수의 지역 변수 secnum 3개의 변수에 대한 저장 공간이 생성된다

제 3 절 변수 유효 범위 전역 변수의 잘못된 사용 함수에 인자를 전달하지 않고 모든 변수를 전역 변수로 만들어 함수에서 사용하도록 하는 것은 가능하나 이것은 함수가 서로 독립적이게 하는 특성을 무시하는 것 전역 변수의 무분별한 사용은 프로그램이 커질수록 프로그램은 엉망이 되며 오류를 추적하기 매우 어려워짐 여러 함수가 데이터를 공유할 때는 효율적

제 4 절 변수 기억 장소 부류 기억 장소 부류 변수가 어디에서 얼마나 오랫동안 유지되는가를 결정 auto, static, extern, register 등 4개의 기억 장소 부류가 존재 기억 장소 부류 지정 시 변수의 데이터 형 앞에 기술 auto int num; static int miles; register int dist; extern int price; 지역 변수 기억 장소 부류 지역 변수의 기억 장소 부류는 auto, static, register 중의 하나가 될 수 있다

제 4 절 변수 기억 장소 부류 기억 장소 부류가 지정되지 않으면 자동으로 auto 기억 장소부류가 할당 static 기억 장소 부류를 갖는 변수는 함수가 비록 제어를 반환했을 지라도 이전 값을 유지, 번역시에 생성되고 초기화되며 실행 시에는 초기화되지 않는다 void foo(void) { static int n = 3; /* static을 생략하면 호출될 때마다 초기화된다 */ }

제 4 절 변수 기억 장소 부류 전역 변수 기억 장소 부류 register 기억 장소 부류는 auto와 같은 시간 존속을 가지며 CPU내의 register 내에 기억 공간이 할당, auto는 메모리에 할당, register 기억 장소 부류를 갖는 변수에는 번지 연산자 &를 사용할 수 없음 전역 변수 기억 장소 부류 전역 변수는 프로그램이 종료될 때까지 존재 static, extern의 기억 장소 부류를 가질 수 있음 extern 기억 장소 부류를 갖는 전역 변수는 선언된 파일 뿐만 아니라 다른 파일에서도 접근 가능 extern은 새로이 기억 공간을 할당하지 않으며, 단지 이미 존재하는 변수의 범위를 다른 파일로 확장 static은 변수가 다른 파일로 확장되지 못하게 함

제 5 절 주소 전달 값에 의한 호출(call by value) 참조에 의한 호출(call by reference) 함수에게 인자 전달 시, 변수의 값을 그대로 복사하여 전달하는 호출 방식 참조에 의한 호출(call by reference) 함수에게 인자 전달 시, 변수의 주소를 전달함으로써 전달된 변수를 직접 접근할 수 있게 하는 호출 방식 주소의 전달, 저장 그리고 사용 주소 연산자 &: 변수의 주소를 의미 &firstnum: 변수 firstnum의 주소를 의미 &secnum: 변수 secnum의 주소를 의미

제 5 절 주소 전달 포인터(poinger) 변수: 주소를 저장하는 변수 간접 연산자 *: 포인터 변수가 가리키는 메모리 내용 char *in_addr; int *num_pt; 포인터 변수의 크기는 데이터형에 관계없이 같으며 데이터형은 주소 접근 시에 얼마나 많은 메모리를 접근하는가에 필요, 즉 num_pt를 이용하여 메모리 접근 시에 int형 크기 만큼의 메모리 접근이 필요 간접 연산자 *: 포인터 변수가 가리키는 메모리 내용 *in_addr: in_addr이 가리키는 메모리에 있는 값 char ch; char *ch_pt; ch = ‘a’; ch_pt = &ch; /* *ch_pt는 ‘a’이다 */

제 5 절 주소 전달 주소를 전달 받는 함수의 예제 void sortnum(double *num1_addr, double *num2_addr) { double temp; if (*num1_addr > *num2_addr) { temp = *num1_addr; *num1_addr = *num2_addr; *num2_addr = temp; } 함수 호출 시에 num1_addr, num2_addr 변수가 생성되며 이들은 전달된 변수의 주소 값으로 초기화 된다

제 6 절 일반적인 프로그래밍 오류 함수에 틀린 데이터형을 전달: 컴파일러 오류 함수에 틀린 값을 전달: 함수 몸체 시작에서 전달된 모든 값을 찍어 본다 함수 내에 선언된 지역변수가 전역변수의 이름과 같을 때 지역변수의 변경은 전역변수의 변경에 영향을 미치지 못함. 따라서 그 함수에서는 전역변수를 절대로 변경하지 못함 함수의 프로토타입을 생략하는 것 함수 정의시 함수 헤더 마지막에 세미콜론을 찍는 것과 인자의 데이터형을 포함하는 것을 잊는 것

제 7 절 요약 함수 호출은 함수 이름과 괄호 내에 전달되는 데이터들을 기술함으로써 이루어지고 함수는 복사본을 받는다 함수의 정의 return-type function-declarator /* 함수 헤더 */ { /* 함수 몸체 시작 */ declarations; statements; } /* 함수 몸체 끝 */ 기억 부류를 명시하지 않으면 extern이 됨

제 7 절 요약 함수의 반환형은 함수가 반환하는 데이터형을 말한다. 함수는 많아야 return문을 이용해 하나의 값을 반환한다. 함수 프로토타입 data-type function-name(parameter data types); 함수가 호출되기 전에 반드시 선언되어야 한다 호출되는 함수가 호출하는 함수의 위에 정의되어 있다면 추가의 선언은 필요 없다

제 7 절 요약 C언어는 입출력, 수학, 문자열 등의 처리를 위해 미리 프로그램된 라이브러리를 제공한다 모든 변수는 유효 범위를 가지며 그 변수가 사용될 수 있는 곳을 지정한다. 모든 변수는 기억 장소 부류를 가지며 그 변수가 얼마나 오랫동안 유지되는가를 나타낸다. 함수가 변수의 주소를 전달받음으로써 많은 값을 효과적으로 반환할 수 있다

제 8 절 추상화에 대한 소개 추상화(abstraction) 데이터형 추상화 내장된 추상 데이터형 그룹내의 어떤 특정 개체와도 독립적으로 객체 그룹의 일반적인 특징과 성질을 정의 데이터형 추상화 받아들일 수 있는 값들의 범위 이들 값들에 적용될 수 있는 연산자 집합 내장된 추상 데이터형 언어가 제공하는 기본적인 데이터형 C++는 사용자 정의 추상 데이터형을 정의할 수 있도록 class 제공

제 8 절 추상화에 대한 소개 절차 추상화 함수가 간단히 이름과 인자만으로 호출 가능하도록 함수에 이름을 부여하는 것 사용자 정의 함수 작성은 절차 추상화를 만드는 것 함수가 구체적으로 수행하는 내용을 숨김 높은 수준에서 문제 해결 가능