윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 09. C언어의 핵심! 함수!

Slides:



Advertisements
Similar presentations
비즈쿨 - 정 성 욱 - - 금오공고 비즈쿨 - 정 성 욱 1. 나는 각 단원들의 활동들에 성실하게 참여 하겠습니다. 우리의 다짐 2. 나는 나와 전체의 발전을 위해 각 멘토들의 지도에 순종하겠습니다. 3. 나는 각 단원들을 숙지함으로써 비즈니스 마인드를 함양하고 자신의.
Advertisements

노인복지론 담당교수 : 최 병태 교수님 학과 : 보건복지경영학과 학번 : 이름 : 김 태인 날짜 :
조건문, 함수 정대진 ( ) C Programming -3 일차 ITA 8 월 강의.
G202G202 G201G201.
데이터의 표현과 연산 (1) (Chapter 3)
미국경제의 신용위기가 한국경제에 미치는 영향
9장 가로채기(Interrupt) Slide 1 (of 15).
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
3교회 주일예배
C 프로그래밍.
C 6장. 함수 #include <stdio.h> int main(void) { int num;
Department of Computer Engineering
C 10장. 함수의 활용 #include <stdio.h> int main(void) { int num;
C 11장. 포인터의 활용 #include <stdio.h> int main(void) { int num;
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
6장. printf와 scanf 함수에 대한 고찰
누구나 즐기는 C언어 콘서트 제4장 수식과 연산자.
Part 08 함수 ©우균, 창병모 이 슬라이드는 부산대학교 우균이 작성하였습니다. 오류나 수정할 사항 있으면 연락 주세요.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 14. 포인터와 함수에 대한 이해.
Department of Computer Engineering
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
컴퓨터 프로그래밍 기초 - 2nd : scanf(), printf() 와 연산자 -
18장. 헤더 파일과 구현 파일 01_ 헤더 파일과 구현 파일의 사용.
Chapter 06. 선택문.
Chapter 13 변수 범위.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
주일예배 은혜의 원천 4교회 2016 Antioch.
WAP Java Seminar
자전거를 배우려면 안장에 올라가 페달을 밟아라.
칼빈의 생애와 개혁자로의 변모 사학과 김종식.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 05. 상수와 기본 자료형.
함수와 변수 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
제어문 & 반복문 C스터디 2주차.
국제의료관광 관련 법, 제도.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 프로그램 제2,3장 간단한 C 프로그램 김 문 기.
처음으로 배우는 C 프로그래밍 제3부 함수 제 6 장 함수 작성.
Chapter 11. 배열과 포인터.
Chapter 05. 입출력 함수.
자바 5.0 프로그래밍.
실습과제 1(조건문, ) 표준입력으로 수축기 혈압을 입력 받아 그에 따른 적당한 표현을 화면에 출력하는 프로그램을 if-else 문을 이용하여 작성.
C89(C++03) 프로그래밍 (Part 2) 7 배열 8 변수 범위 9 포인터 10 유도 자료형.
남아메리카 선교 김수정, 이하정 전희진, 장성경.
고객님! 장수시대 필수 상품 준비하셨나요? 간 병 보 험 무배당 무배당 상품특징!! ~3등급 2 구분
누구나 즐기는 C언어 콘서트 제2장 기초 사항 IT응용시스템공학과 김형진 교수.
Department of Computer Engineering
『 친구들과 함께 만들고 싶은 푸드』 공모전 주제 힐링 2018 KWC 요리시연부문.
-Part1- 제7장 반복문이란 무엇인가.
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 26. 매크로와 선행처리기.
기술 진화와 진보.
CHAPTER 9-1 한국의 사회복지정책 - 사회보험제도 -
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express Slide 1 (of 25)
뇌를 자극하는 C 프로그래밍.
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
반복문의 기능 반복문 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 while문
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
원천 6교회 12월 20일 주일 예배.
어서와 C언어는 처음이지 제16장.
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
C.
printf("Global Korea\n");
Chapter 2. 경영분석을 위한 재무제표 재무제표의 공시.
Chapter 09. 배열.
어서와 C언어는 처음이지 제22장.
전향력(코리올리힘) 발표자 : 정웅현.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 17. 포인터의 포인터.
경찰학 세미나 제 5 강 경찰관직무집행법 2조 5호의 의미 신라대학교 법경찰학부 김순석.
적정기술 사례 대한민국 연료비 40% 감소 G-saver 적정기술 1호 (축열난방기) 내부 평균온도 열원이 오래 보존
Presentation transcript:

윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 09. C언어의 핵심! 함수!

윤성우의 열혈 C 프로그래밍 Chapter 09-1. 함수를 정의하고 선언하기 윤성우 저 열혈강의 C 프로그래밍 개정판

함수를 만드는 이유 윤성우의 열혈 C 프로그래밍 다수의 작은 단위 함수를 만들어서 프로그램을 작성하면 큰 문제를 작게 쪼개서 해결하는 효과를 얻을 수 있다. 그러나 함수를 만드는 이유 및 이점은 이보다 훨씬 다양하다. main 함수를 포함하여 함수의 크기는 작을수록 좋다. 무조건 작다고 좋은 것은 아니지만, 불필요하게 큰 함수가 만들어지지 않도록 주의해야 한다. 하나의 함수는 하나의 일만 담당하도록 디자인 되어야 한다. 물론 하나의 일이라는 것은 매우 주관적인 기준이다. 그러나 이러한 주관적 기준 역시 프로그래밍에 대한 경험이 쌓이면 매우 명확한 기준이 된다.

함수의 입력과 출력: printf 함수도 반환을 합니다. 윤성우의 열혈 C 프로그래밍 함수의 입력과 출력: printf 함수도 반환을 합니다. printf 함수도 사실상 값을 반환한다. 다만 반환값이 필요 없어서 반환되는 값을 저장하지 않았을 뿐이다. printf 함수는 출력된 문자열의 길이를 반환한다. 실행결과 함수가 값을 반환하면 반환된 값이 함수의 호출문을 대체한다고 생각하면 된다. 예를 들어서 아래의 printf 함수 호출문이 6을 반환한다면, num1=printf(“12345\n”); 함수의 호출결과는 다음과 같이 되어 대입연산이 진행된다. num1=6;

함수의 구분 윤성우의 열혈 C 프로그래밍 전달인자와 반환 값의 유무에 따른 함수의 구분! 유형 1: 전달인자 있고, 반환 값 있다! 전달인자(○), 반환 값(○) 유형 2: 전달인자 있고, 반환 값 없다! 전달인자(○), 반환 값() 유형 3: 전달인자 없고, 반환 값 있다! 전달인자(), 반환 값(○) 유형 4: 전달인자 없고, 반환 값 없다! 전달인자(), 반환 값() 전달인자와 반환 값의 유무에 따른 함수의 구분!

전달인자 반환 값 모두 있는 경우 윤성우의 열혈 C 프로그래밍 실행결과 전달인자는 int형 정수 둘이며, 이 둘을 이용한 덧셈을 진행한다. 덧셈결과는 반환이 되며, 따라서 반환형도 int형으로 선언한다. 마지막으로 함수의 이름은 Add라 하자! 덧셈이 선 진행되고 그 결과가 반환됨 함수호출이 완료되면 호출한 위치로 이동해서 실행을 이어간다. 실행결과

윤성우의 열혈 C 프로그래밍 전달인자나 반환 값이 존재하지 않는 경우

윤성우의 열혈 C 프로그래밍 4가지 함수 유형을 조합한 예제 실행결과

값을 반환하지 않는 return 윤성우의 열혈 C 프로그래밍

함수의 정의와 그에 따른 원형의 선언 윤성우의 열혈 C 프로그래밍 컴파일이 위에서 아래로 진행이 되기 때문에 함수의 배치순서는 중요하다. 컴파일 되지 않은 함수는 호출이 불가능하다. 이후에 등장하는 함수에 대한 정보를 컴파일러에게 제공해서 이후에 등장하는 함수의 호출문장이 컴파일 가능하게 도울 수 있다. 이렇게 제공되는 함수의 정보를 가리켜 ‘함수의 선언’이라 한다. int Increment(int n); // 함수의 선언 int Increment(int); // 위와 동일한 함수선언, 매개변수 이름 생략 가능

다양한 종류의 함수 정의1 윤성우의 열혈 C 프로그래밍 실행결과 중간에도 얼마든지 return문이 올 수 있다. 위의 두 문장한 NumberCompare 함수호출 이후 왼쪽과 같이 된다.

다양한 종류의 함수 정의2 윤성우의 열혈 C 프로그래밍 실행결과 GetAbsoValue 함수호출 이후 이 예제에서 보이듯이 함수의 호출문장은 어디에든 놓일 수 있다. 실행결과

Chapter 09-2. 변수의 존재기간과 접근범위 1: 지역변수 윤성우의 열혈 C 프로그래밍 Chapter 09-2. 변수의 존재기간과 접근범위 1: 지역변수 윤성우 저 열혈강의 C 프로그래밍 개정판

함수 내에만 존재 및 접근 가능한 지역변수 윤성우의 열혈 C 프로그래밍 실행결과 함수 내에 선언되는 변수를 가리켜 지역변수라 한다. 지역변수는 선언된 이후로부터 함수 내에서만 접근이 가능하다. 한 지역(함수) 내에 동일한 이름의 변수 선언 불가능하다. 다른 지역에 동일한 이름의 변수 선언 가능하다. 해당 지역을 빠져나가면 지역변수는 소멸된다. 그리고 호출될 때마다 새롭게 할당된다. 실행결과

윤성우의 열혈 C 프로그래밍 메모리 공간의 할당과 소멸 관찰하기

지역변수는 외부에 선언된 동일한 이름의 변수를 가린다. 윤성우의 열혈 C 프로그래밍 다양한 형태의 지역변수 for문의 중괄호 내에 선언된 변수도 지역변수이다. 그리고 이 지역변수는 for문의 중괄호를 빠져나가면 소멸된다. 따라서 for문의 반복횟수만큼 지역변수가 할당되고 소멸된다. 지역변수는 외부에 선언된 동일한 이름의 변수를 가린다. 실행결과 if문 내에 선언된 변수 num이 main 함수의 변수 num을 가린다. 주석처리 후 실행결과

지역변수의 일종인 매개변수 윤성우의 열혈 C 프로그래밍 지역변수 매개변수 . . . . 매개변수는 일종의 지역변수이다. . . . . 매개변수는 일종의 지역변수이다. 매개변수도 선언된 함수 내에서만 접근이 가능하다. 선언된 함수가 반환을 하면, 지역변수와 마찬가지로 매개변수도 소멸된다.

Chapter 09-3. 전역변수, static 변수, register 변수 윤성우의 열혈 C 프로그래밍 Chapter 09-3. 전역변수, static 변수, register 변수 윤성우 저 열혈강의 C 프로그래밍 개정판

전역변수의 이해와 선언방법 윤성우의 열혈 C 프로그래밍 실행결과 실행결과 전역변수는 함수 외부에 선언된다. 프로그램의 시작과 동시에 메모리 공간에 할당되어 종료 시까지 존재한다. 별도의 값으로 초기화하지 않으면 0으로 초기화된다. 프로그램 전체 영역 어디서든 접근이 가능하다. 실행결과 지역변수의 이름이 전역변수의 이름을 가린다. 실행결과

G0~G9의 전역변수와 함수와의 접근관계의 예시 윤성우의 열혈 C 프로그래밍 전역변수! 많이 써도 되는가? G0~G9의 전역변수와 함수와의 접근관계의 예시 전역변수! 많이 쓰면 좋지 않다. 전역변수의 변경은 전체 프로그램의 변경으로 이어질 수 있으며 전역변수에 의존적인 코드는 프로그램 전체 영역에서 찾아야 한다. 어디서든 접근이 가능한 변수이므로...

지역변수에 static 선언을 추가한 static 변수 윤성우의 열혈 C 프로그래밍 지역변수에 static 선언을 추가한 static 변수 선언된 함수 내에서만 접근이 가능하다. (지역변수 특성) 딱 1회 초기화되고 프로그램 종료 시까지 메모리 공간에 존재한다. (전역변수 특성) 실행결과 “난 사실 전역변수랑 성격이 같아. 초기화하지 않으면 전역변수처럼 0으로 초기화되고, 프로그램 시작과 동시에 할당 및 초기화되어서 프로그램이 종료될 때까지 메모리 공간에 남아있지! 그럼 왜 이 위치에 선언되었냐고? 그건 접근의 범위를 SimpleFunc로 제한하기 위해서야!” static 지역변수의 발언! 프로그램이 실행되면 static 지역변수는 해당 함수에 존재하지 않는다.

static 지역변수는 좀 써도 되나요? 윤성우의 열혈 C 프로그래밍 √ 전역변수가 필요한 이유 중 하나는 다음과 같다. 선언된 변수가 함수를 빠져나가도 계속해서 메모리 공간에 존재할 필요가 있다. √ 함수를 빠져나가도 계속해서 메모리 공간에 존재해야 하는 변수를 선언하는 방법은 다음 두 가지이다. 전역변수, static 지역 변수 √ static 지역변수는 접근의 범위가 전역변수보다 훨씬 좁기 때문에 훨씬 안정적이다. static 지역변수를 사용하여 전역변수의 선언을 최소화하자.

보다 빠르게! register 변수 윤성우의 열혈 C 프로그래밍 register 변수 선언의 의미 그리고 레지스터는 CPU 내부에 존재하는, 때문에 접근이 가장 빠른 메모리 장치이다. “이 변수는 내가 빈번히 사용하거든, 그래서 접근이 가장 빠른 레지스터에 저장하는 것이 성능향상에 도움이 될 거야” register 변수 선언의 의미

윤성우의 열혈 C 프로그래밍 Chapter 09-4. 재귀함수에 대한 이해 윤성우 저 열혈강의 C 프로그래밍 개정판

재귀함수의 기본적인 이해 윤성우의 열혈 C 프로그래밍 자기자신을 재호출하는 형태로 정의된 함수를 가리켜 재귀함수라 한다. 재귀함수 호출의 이해!

윤성우의 열혈 C 프로그래밍 탈출조건이 존재하는 재귀함수의 예 호출순서의 역순으로 반환이 이뤄진다. 실행결과

재귀함수의 디자인 사례 윤성우의 열혈 C 프로그래밍 n x f(n-1) . . . . n>=1 에 대한 코드 구현 팩토리얼에 대한 수학적 표현 n x f(n-1) . . . . n>=1 에 대한 코드 구현 f(n)=1 에 대한 코드 구현

팩토리얼 함수의 예 윤성우의 열혈 C 프로그래밍 실행결과

Chapter 09가 끝났습니다. 질문 있으신지요?