1 / 56

라이브러리 함수를 소개하고 , 라이브러리 함수를 이용한 응용 프로그램에 대해서 설명 [ 학습할 내용 ] 12.1 출력 함수 printf()

12. 라이브러리 함수와 응용. 라이브러리 함수를 소개하고 , 라이브러리 함수를 이용한 응용 프로그램에 대해서 설명 [ 학습할 내용 ] 12.1 출력 함수 printf() 12.2 입력 함수 scanf() 12.3 문자와 문자열 관련 함수 12.4 수학 계산 함수 ( 헤더 파일 <math.h>) [ 추가 문법 ] 12.5 화면과 커서의 제어 12.6 날짜와 시간 관련 함수 ( 헤더 파일 <time.h>)

ciel
Download Presentation

라이브러리 함수를 소개하고 , 라이브러리 함수를 이용한 응용 프로그램에 대해서 설명 [ 학습할 내용 ] 12.1 출력 함수 printf()

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 12. 라이브러리 함수와 응용 라이브러리 함수를 소개하고, 라이브러리 함수를 이용한 응용 프로그램에 대해서 설명 [학습할 내용] 12.1 출력 함수 printf() 12.2 입력 함수 scanf() 12.3 문자와 문자열 관련 함수 12.4 수학 계산 함수 (헤더 파일 <math.h>) [추가 문법] 12.5 화면과 커서의 제어 12.6 날짜와 시간 관련 함수(헤더 파일 <time.h>) 12.7 임의의 숫자 난수(헤더 파일 <stdlib.h>) [단원정리]

  2. 라이브러리 함수란? C 언어에는 프로그래머가 쉽게 이용할 수 있는 다양한 기능의 라이브러리(library) 함수들이 있다. 라이브러리 함수를 이용하기 위해서는 해당 함수의 원형과 함수 정의가 포함되어 있는 헤더 파일을 #include문을 사용하여 불러와야 한다. 예로 출력 함수 printf()나 입력 함수 scanf()를 사용하기 위해 #include <stdio.h>를 사용하는 것 그러므로 프로그래머는 이용하려는 라이브러리 함수의 정의가 어떤 헤더 파일에 포함되어 있는지를 확인하여 사용.

  3. 12.1 출력 함수 printf() 함수 printf()는 출력을 담당하는 함수이며 확장 문자를 포함하여 숫자, 문자, 문자열 외에 주소(포인터)를 형식에 맞게 출력한다. 정수형과 실수형 데이터에 대한 형식 지정자 %d와 %f에 대해서는 6.8(출력될 데이터의 자릿수 맞추기)을 참고.

  4. 문자열의 자릿수 맞추기 문자열을 출력할 때 형식 지정자 %s를 사용

  5. 진법 및 포인터 주소의 출력

  6. 12.2 입력 함수 scanf() 데이터를 키보드로 입력 받을 경우에 사용하는 입력 함수인 scanf() 함수 scanf()는 printf()와는 달리 입력할 변수 앞에 주소 연산자인 '&'를 사용한다. 함수 printf()에서는 형식 지정자 외에 '\'를 함께 사용하는 확장 문자(예로 \n)를 사용할 수 있지만 scanf()는 형식 지정자 외에 다른 문자나 문자열을 사용할 수 없다.

  7. 문자열 입력(문자형 배열) 입력할 문자열에 공백(white space)이 없어야 한다. (함수 gets()사용) 숫자를 입력 받을 때와는 달리 주소 연산자 '&'를 사용하지 않는다. char형 배열의 크기는 입력할 문자 개수보다 1개 더 크게 잡아주어야 한다. 입력할 문자열이 한글이라면 char형 배열의 크기는 최소한 (한글개수×2)+1로 한다.

  8. 입력할 문자열의 개수를 지정하여 입력 받는 프로그램

  9. [참고] 문자열 입력 함수 gets() 함수 gets()는 Enter키를 누르기 전까지 공백이 포함된 문자열을 입력 받을 수 있다.

  10. 문자열 입력(문자형 포인터) 다음 예제에서 포인터 변수 str의 크기는 20이므로 최대 19자까지 입력 받을 수 있다. 함수 malloc() 은 변수에 동적으로 메모리를 할당하는 함수로서 헤더파일 <stdlib.h>를 필요로 하고, 동적으로 할당된 메모리를 해제하는 경우에는 함수 free() 를 사용한다(18.2.1).

  11. [참고] 함수 scanf()를 사용할 때 발생되는 예상외의 문제와 해결 문제 : scanf()를 여러 번 사용할 때 입력이 이루어지지 않는 경우가 발생 원인 : 함수 scanf()는 라인-버퍼형식으로 값을 입력 받기 때문에 데이터를 입력한 다음에는 반드시 Enter키를 쳐야 함. 그러나 이때 Enter키 역시 하나의 문자이므로 버퍼(buffer)에 남아있을 수 있으므로 위와 같은 현상이 나타날 수 있다. 해결 : 버퍼에 남아있는 내용을 비워주는 함수 fflush()를 사용. 사용방법 : 함수 scanf() 이전에 사용하거나 scanf() 사이에 사용.

  12. 12.3 문자와 문자열 관련 함수 문자와 문자열을 처리하는 라이브러리 함수와 사용방법을 소개. 문자는 char형 변수에 저장할 수 있지만 문자열을 변수에 저장하려면 char형 배열이나 포인터를 이용한다. 문자열에 대한 자세한 내용은 13.5(배열과 문자열)와 14.3(포인터와 배열)에서 설명하고 이곳에서는 라이브러리 함수에 초점을 두고 설명

  13. 12.3.1 문자 분류 함수 (헤더 파일 <ctype.h>) 각각의 함수들은 조건을 만족할 때(참) 1 또는 0이 아닌 값을 반환하고, 만족하지 않으면(거짓)에는 0을 반환한다. 조건식에서 0은 거짓(false)을, 0이 아닌 숫자는 참(ture)을 의미함. (다음 장 계속)

  14. 문자 분류 함수 (헤더 파일 <ctype.h>) 각각의 함수들은 조건을 만족할 때(참) 1 또는 0이 아닌 값을 반환하고, 만족하지 않으면(거짓)에는 0을 반환한다. 조건식에서 0은 거짓(false)을, 0이 아닌 숫자는 참(ture)을 의미함.

  15. 데이터가 문자인지 숫자인지를 판별하는 함수(isalpha, isdigit)

  16. 12.3.2 변환 함수(헤더파일 <stdlib.h>) itoa() : inter to ascii, ltoa() : long to ascii 의미 정수형 숫자를 2진수, 8진수, 10진수 또는 16진수의 문자열로 변환

  17. 숫자를 2진수 또는 16진수 문자열로 변환하는 함수(itoa, ltoa)

  18. 문자열을 숫자로 변환하는 함수 I 앞의 경우와 반대로 문자열을 숫자로 변환. 변환할 숫자의 데이터 형은 실수형 또는 정수형으로 변환할 수 있다. atof()는 ascii to float를 의미

  19. 문자열을 숫자로 변환하는 함수 II 다음의 함수들도 문자열을 숫자로 변환하는 함수이나 특정 진법으로 표현된 문자열을 정수로 변환한다. 즉, 앞에서의 itoa()와 반대의 기능을 하는 함수

  20. 12.3.3 문자열 처리와 검색 함수(헤더 파일 <string.h>) 문자열 처리에 관련된 함수들은 문자열을 연결, 비교, 그리고 문자열 중에서 특정 문자나 문자열을 검색하는 기능을 한다. 문자열 처리 함수들의 이름 대부분은 str로 시작하며 이는 string의 약어로서 문자열을 의미한다.

  21. 문자열을 비교하는 함수

  22. 문자열을 복사하거나 문자열의 길이를 계산하는 함수

  23. 복사할 문자열의 길이만큼 정확히 복사(strncpy)

  24. 문자나 문자열을 검색

  25. 문자열을 검색하는 함수(strstr, strpbrk)

  26. 문자들이 연속하는 길이를 계산(strspn, strcspn)

  27. 12.4 수학 계산 함수 (헤더 파일 <math.h>) 이들 함수들을 사용하려면 헤더파일 <math.h>를 필요로 한다. [표]의 함수 인자 중에서 n은 int형을, x와 y는double형을 의미한다. 다음 장 계속

  28. 12.4 수학 계산 함수 (헤더 파일 <math.h>) 이들 함수들을 사용하려면 헤더파일 <math.h>를 필요로 한다. [표 3]의 함수 인자 중에서 n은 int형을, x와 y는double형을 의미한다.

  29. 정수형 변환 함수

  30. 절댓값 변환 함수 정수와 실수 데이터에 대해 절댓값(absolute value)으로 변환

  31. 지수, 로그 함수

  32. 나눗셈, 나머지 함수

  33. 삼각 함수

  34. 라디안과 각도의 변환 삼각 함수의 인자들은 모두 라디안(radian)을 사용하므로 각도(degree)를 인자로 사용하고 싶다면 다음과 같은 변환 공식을 이용. 다음 공식에서 PI는 원주율 상수를 의미

  35. sin()과 cos()

  36. [추가 문법] 12.5 화면과 커서의 제어 Visual C++나 Turbo C/C++에서 실행된 C 프로그램의 결과는 텍스트 방식의 화면에 출력된다. 따라서 출력할 내용들이 많다면 결과를 확인하기 위해 화면 스크롤을 이용해야 한다. 화면의 제어는 화면에 나타난 모든 내용들을 지우는 것을 말하고, 커서의 제어는 화면에서 커서의 위치를 조절하여 출력할 내용의 위치를 제어

  37. 12.5.1 화면 지우기

  38. 구구단 전체 출력과 화면 제어

  39. 12.5.2 커서의 위치 제어 프로그램이 실행된 텍스트 화면의 크기는 대개 가로 80자, 세로 24자 정도의 크기로 나타난다. 이와 같은 화면 안에서 커서의 위치를 제어하면 출력할 내용의 위치를 조절할 수 있다. 커서의 위치를 제어하는 함수 gotoxy()의 원형은 다음과 같으며 void형이므로 반환 값은 없다. 그러나 함수 gotoxy() 는 Turbo C/C++에만 정의되어 있으므로 Visual C++ 의 경우에는 사용자 정의함수로 만들어 사용해야 한다.

  40. 커서의 위치를 지정한 구구단 출력(Visual C++)

  41. 커서의 위치를 지정한 구구단 출력(Turbo C/C++)

  42. 12.6 날짜와 시간 관련 함수(헤더 파일 <time.h>)

  43. 12.6.1 현재의 날짜와 시간을 출력 시간과 날짜를 하나로 묶어서 문자열로 처리하는 방법

  44. 날짜와 시간을 단위 요소별로 구분하여 출력하는 방법 함수 localtime()은 tm이라는 하는 구조체 포인터인데 구조체 tm은 헤더파일 <time.h>에 다음과 같이 정의되어 있다. 위의 구조체 멤버를 이용하면 날짜에 대해서는 년・월・일로 그리고 시간에 대해서는 시・분・초 단위로 구분할 수 있으므로 프로그래머가 원하는 형식대로 분리하여 사용할 수 있다.

  45. 12.6.2 시간 차이의 계산 시간 차이를 계산하는 방법은 프로그램에서 어떤 동작을 시작하기 직전에 현재의 시간을 저장(A)하고, 동작이 완료된 직후에 현재 시간을 저장(B)하여 다음과 같이 계산한다. 소요 시간 = 종료 시간(B) - 시작 시간(A) 시작 시간과 종료 시간을 확인하는데 있어서 사용할 수 있는 함수로는 time()과 clock()을 사용할 수 있다.

  46. 함수 time()과 clock()의 비교 C 언어에서 시간을 나타내는 방법 달력 시간(calendar time) : 시계 개념으로 함수 time()을 사용 (단위 : 초) 프로세서 시간(processor time) : 함수 clock()을 사용하는데 어떤 프로세서가 작동하고 있는 동안에 얼마의 시간이 흘렀는지를 계산(단위 : 1/1000초) 함수 clock()이 프로세서 시간을 반환하는데 있어서 컴퓨터와 운영체제마다 달라지므로 clock tick 값으로 나누어주어야 하는데 이때 CLK_TCK(또는 CLOCKS_PER_SEC)라는 상수를 사용한다.

  47. 함수 time()과 clock()의 비교 함수 time()에 대한 시간 차이를 계산할 때 함수 difftime()을 사용한다.

  48. 12.6.3 시간을 지연시키는 함수 시간을 지연시키는 함수 : 함수 Sleep() 와 함수 delay() : 이들 함수의 인자로는 1/1000초 단위의 정수가 사용됩니다. 따라서 5초간 지연시키고자 한다면 Sleep(5000)또는 delay(5000)과 같이 사용. 함수 Sleep()은 Visual C++에서만 사용이 가능하며 헤더 파일 <windows.h>가 필요함. 함수 delay()는 Turbo C(Turbo C++제외)에서만 사용이 가능한 함수로써 헤더 파일 <dos.h>가 필요함.

  49. 함수 kbhit()과 연속적인 현재 시간 표시 시간을 처리하는 함수와는 다른 개념의 함수이지만 유용하게 사용할 수 있는 kbhit()라는 함수. 함수의 인자가 없으며, 키보드 상의 어떤 키를 누르면 0이 아닌 값을, 누르지 않은 상태라면 0값을 반환하는 함수로 헤더 파일 <conio.h>를 필요로 함. 프로그램의 실행 중에 아무 키를 누르기 전까지만 프로그램을 반복시키고자 한다면 반복문 while과 함께 다음과 같이 사용할 수 있습니다. while(!kbhit()) { 반복할 프로그램 }

  50. 12.7 임의의 숫자 난수(헤더 파일 <stdlib.h>) 게임 프로그램에서는 임의의 경우나 상황을 만들기 위해 난수(random number)를 이용한다. 난수란 특정한 배열 순서나 규칙을 가지지 않는, 연속적인 임의의 수를 말한다. 난수는 주로 컴퓨터를 이용한 모의실험(simulation)에 사용되는데 컴퓨터가 생성한 난수는 엄밀한 의미에서 예측이 가능하고, 복사할 수 있기 때문에 모조(pseudo) 난수라 한다. 난수를 생성하는 라이브러리 함수 rand()

More Related