powerpoint 프레젠테이션 - withcs · -1을리턴 한다.) 마찬가지로....

36
C 전처리기와 C 라이브러리 16 1 Section 1 Section 2 Section 3 C 전처리기 C 라이브러리 함수 , 매크로

Upload: others

Post on 08-Jul-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

C 전처리기와 C 라이브러리

16

1

Section 1Section 2Section 3

C 전처리기

C 라이브러리함수 , 매크로

Page 2: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

2

무엇을학습할까요?

C 전처리기

C 라이브러리

문수, 매크로

실전 프로젝트(연습문제 풀이, 총 7 문제)

Page 3: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

3

기초다지기

#include <stdio.h>#include “c:\\work\\c\\userHeaderFile.h”#define PAI 3.14

Page 4: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

사용하기를 원하는 전처리기 정의가 들어 있는 헤더 파일을 작성하라.01

4

프로그래밍 연습 문제 p911

Page 5: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

두 수의 조화평균은 두 수의 역수를 취하고,

두 역수의 평균을 구한 후,

다시 그 결과의 역수를 취하여 얻는다.

#define 지시자를 사용하여 이 연산을 수행하는 매크로 함수를 정의하라.

그 매크로를 테스트하는 간단한 프로그램을 작성하라.

프로그래밍 연습 문제

02

5

p911

Page 6: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

프로그래밍 연습 소스 02

6

Page 7: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

프로그래밍 연습 소스 02

7

Page 8: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

프로그래밍 연습 문제

03 극좌표계는 어떤 벡터를 크기와, x축에서 그 벡터까지 시계 반대 방향으로

잰 각도로 나타낸다.

같은 벡터를 직각좌표계에서는 x 성분과 y 성분으로 나타낸다

(그림 16.3 참조). 어떤 벡터의 크기와 각도(단위는 ̊ 단위)를 읽고,

x 성분과 y 성분으로 표시하는 프로그램을 작성하라.

관련 표현식은 다음과 같다.

x = r cos A

y = r sin A

극좌표 값들을 가지는 구조체를 취하고, 직각좌표계의 값들을 가지는 구조체

를 리턴하는 변환 함수를 작성하라.

(원한다면 그러한 구조체들을 가리키는 포인터를 사용해도 좋다.)

8

p911

Page 9: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

프로그래밍 연습 소스 03

9

Page 10: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

프로그래밍 연습 소스 03

10

Page 11: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

프로그래밍 연습 소스 03

11

Page 12: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

프로그래밍 연습 소스 03

12

Page 13: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

ANSI 라이브러리는 다음과 같은 서술의 clock() 함수를 제공한다.

#include <time.h>

clock_t clock(void);

여기서, clock_t는 time.h에 정의되어 있는 데이터형이다.

이 함수는 시스템에 종속적인 단위로 주어지는 프로세서 시각을 리턴한다.

(이 함수는 프로세서 시각을 사용할 수 없거나 나타낼 수 없으면 -1을 리턴

한다.)

마찬가지로 time.h에 정의되어 있는 CLOCKS_PER_SEC는,

초당 프로세서 시각 단위의 개수이다.

프로그래밍 연습 문제

04

13

번에 있는 설명을 참조하라.

p912

Page 14: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

그러므로 clock()의 두 리턴값의 차를 CLOCKS_PER_SEC로 나누면,

두 호출 사이에 경과된 시간을 초 단위로 알 수 있다.

나누기 전에 그 값들을 double형으로 캐스트하면

, 1초 미만의 값도 얻을 수 있다.

원하는 만큼의 시간 지연을 나타내는 double형 전달인자를 취하고,

그 시간이 경과할 때까지 루프를 실행하는 함수를 작성하라.

그 함수를 테스트하는 간단한 프로그램을 작성하라.

프로그래밍 연습 문제

04

14

번에 있는 설명을 참조하라.

p912

Page 15: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

프로그래밍 연습 소스 04

15

Page 16: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

프로그래밍 연습 소스 04

16

Page 17: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

int형 원소들을 가지는 배열의 이름, 배열의 크기,

선택할 원소 개수를 세 개의 전달인자로 사용하는 함수를 작성하라.

그 함수는 지시된 개수만큼의 원소들을 배열에서 무작위로 선택하여

출력한다.

배열 원소들은 한 번 이상 선택될 수 없다.

(이것으로 로또복권 추첨이나 배심원단 선정을 시뮬레이션 할 수 있다.)

또한, 사용하는 컴파일러가 ‘12장: 저장 클래스, 연계, 메모리 관리’에서

설명했던 time()이나 이와 비슷한 함수를 사용할 수 있다면, 그 결과를

srand()와 함께 사용하여, rand() 난수 발생기를 초기화하라.

간단한 프로그램을 작성하여 함수를 테스트하라.

프로그래밍 연습 문제

05

17

p912witch를 사용하여 연습

04

를 다시 작성하라.

Page 18: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

프로그래밍 연습 소스 05

18

Page 19: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

프로그래밍 연습 소스 05

19

Page 20: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

프로그래밍 연습 소스 05

20

Page 21: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

프로그래밍 연습 소스 05

21

Page 22: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

double형의 배열 대신에 struct names형의 원소들을 가지는 배열을

사용하도록 리스트 16.15를 수정하라.

더 적은 원소 개수를 사용하고, 적당한 이름들을 사용하여

그 배열을 명시적으로 초기화하라.

프로그래밍 연습 문제

06

22

06p912

Page 23: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

23

프로그래밍 연습 소스 06

Page 24: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

24

프로그래밍 연습 소스 06

Page 25: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

25

프로그래밍 연습 소스 06

Page 26: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

26

프로그래밍 연습 소스 06

Page 27: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

다음은 가변 전달인자 함수를 사용하는 프로그램의 일부분이다.

#include <stdio.h>

#include <stdlib.h>

#include <stdarg.h>

void show_array(const double ar[], int n);

double * new_d_array(int n, ...);

int main(void)

{

..........

return 0;

}

프로그래밍 연습 문제

07

27

p912

Page 28: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

new_d_array() 함수는 하나의 int형 전달인자와,

가변 개수의 double형 전달인자들을 사용한다.

이 함수는 malloc()에 의해 할당된 메모리 블록을 가리키는 포인터를\

리턴한다.

int형 전달인자는 동적 배열에 들어 있는 원소들의 개수를 나타낸다.

double형 값들은 그 원소들을 초기화하는 데 사용된다.

첫 번째 값이 첫 번째 원소에, 두 번째 값이 두 번째 원소에 대입된다.

나머지 값들도 이런 식으로 대입된다.

show_array()와 new_d_array() 함수에 대한 코드를 작성하여,

이 프로그램을 완성하라.

프로그래밍 연습 문제

07

28

p912

Page 29: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

29

프로그래밍 연습 소스 07, C99 표준의 va_copy() 제공하지 않음(건너뜀)

Page 30: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

30

프로그래밍 연습 소스 07, C99 표준의 va_copy() 제공하지 않음(건너뜀)

Page 31: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

31

프로그래밍 연습 소스 07, C99 표준의 va_copy() 제공하지 않음(건너뜀)

Page 32: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

32

프로그래밍 연습 소스 07, C99 표준의 va_copy() 제공하지 않음(건너뜀)

Page 33: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

33

프로그래밍 연습 소스 07, C99 표준의 va_copy() 제공하지 않음(건너뜀)

Page 34: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

KeyPoint 핵심개념

#include <stdio.h>#include “c:\\work\\c\\userHeaderFile.h”#define PAI 3.14

Page 35: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

다음 강의 내용

제 17장 고급 데이터 표현, 연습문제

이번학습에이어!

Page 36: PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로. time.h에정의되어있는CLOCKS_PER_SEC는, 초당프로세서시각단위의개수이다. 프로그래밍연습문제

Thank you !

36