1 / 30

기타 자료형 (data type) 상수 강제 데이터 형 변환 C 언어에서 함수의 사용 프로그램의 모듈화 함수 개념 함수 작성법 표준함수 ( 내장 함수 ) 사용법

내용. 기타 자료형 (data type) 상수 강제 데이터 형 변환 C 언어에서 함수의 사용 프로그램의 모듈화 함수 개념 함수 작성법 표준함수 ( 내장 함수 ) 사용법. 여러 가지 데이터 형. 기존 int, float, char 이외 다음과 같은 데이터 형이 있다 . --------------------------------------------------------- 자료형 설명 요구되는 메모리 범위

fred
Download Presentation

기타 자료형 (data type) 상수 강제 데이터 형 변환 C 언어에서 함수의 사용 프로그램의 모듈화 함수 개념 함수 작성법 표준함수 ( 내장 함수 ) 사용법

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. 내용 • 기타 자료형(data type) • 상수 • 강제 데이터 형 변환 • C언어에서 함수의 사용 • 프로그램의 모듈화 • 함수 개념 • 함수 작성법 • 표준함수(내장 함수) 사용법 C Program-I Review

  2. 여러 가지 데이터 형 • 기존 int, float, char 이외 다음과 같은 데이터 형이 있다. --------------------------------------------------------- 자료형 설명 요구되는 메모리 범위 --------------------------------------------------------- int 정수 4 byte -2147483648 ~ 2147483647 또는 2byte -32,768 ~ 32,767 char 문자 1 byte -128 ~ 127 long 큰 정수 4 byte -2147483648 ~ 2147483647 float 실수 4 byte 3.4E-38 ~ 3.4E+38 double 배정도 실수 8 byte 1.7E-308 ~ 1.7E+308 ---------------------------------------------------------short 2byte 정수 unsigned 정수형(int, long, char) 에서 음수를 제외하여 양수의 범위를 2배로 늘인 데이터 형 C Program-I Review

  3. 데이터 형 및 변수 초기화 예제 • 변수 선언 예 unsigned int count; -> 0 ~ 4,294,967,295 범위의 정수 -> 또는 0 ~ 65,535 (16비트 운영체제) unsigned num; -> unsigned int 와 동일 short int a; -> 2byte형 정수 short b; -> short int와 동일 long c; -> 4byte 형 정수 unsigned long d; -> 4byte 양수형 정수(0 - 4,294,967,295) double f; -> 배정도 실수 • 변수 선언과 동시에 초기화도 가능 int a=0; long b=0, c=1; C Program-I Review

  4. printf(), scanf()의 기타 데이터형 처리 • printf(), scanf()에서 사용되는 각종 변환자 • %c : character 형 • %d : 십진 정수형(int) • %ld: 십진 정수형(long) • %f : 부동 소수점(float) • %lf : 배정도실수(double) • %u : unsigned int 형, %lu : unsigned long 형 • %o : 8진 정수형(int) • %x : 16진 정수형(int), %X : 16진 정수(대문자) C Program-I Review

  5. 예제(2n구하기-> int, long, unsigned) #include <stdio.h> int main(void) { int num, result=1, i; printf(“\n Input num:”); scanf(“%d”, &num); for (i=1; i <= num; i++) result *= 2; printf(“\n Result = %d”, result); return 0; } #include <stdio.h> int main(void) { unsigned long num, result=1; int i; printf(“\n Input num:”); scanf(“%lu”, &num); for (i=1; i <= num; i++) result *= 2; printf(“\n Result = %lu”, result); return 0; } C Program-I Review

  6. 상수의 사용 • 프로그램 내에서 변하지 않는 값을 가짐 • 종류 : 정수 상수, 실수 상수, 문자 상수, 문자열 상수 • 정수상수(십진) 1 234 205 23955 999999 • 정수상수(8진) : 앞에 ‘0’를 붙인다. 01 0345 077777 • 정수상수(16진) : 앞에 ‘0X’또는 ‘0x’를 붙인다. 0X 0X1 0x78f 0x7AB 0Xabc C Program-I Review

  7. 상수의 사용(계속) • 정수상수(unsigned/long) : 숫자 뒤에 ‘L’또는 ‘U’를 붙인다. 5000U 123456789L 012345L 0xFFFFFFFUL • 실수상수 0. 1. 1.2 100.3 .1234 2E-2 0.004e-3 .1234e-4 • 문자상수 'a‘ 'b‘ 'c' • 문자열 상수 "a " "ab" "this is" "123456" C Program-I Review

  8. 기호 상수 • 숫자를 의미 있는 이름으로 대체 • 형식 : #define name 상수 • 사용은 일반 변수와 동일하게 사용 • 관례적으로 대문자로 많이 사용. • 예제 #define TAX_RATE 0.23 #define PI 3.141593 #define TRUE 1 #define FALSE 0 #define FRIEND "Kil-dong" C Program-I Review

  9. 예제(반지름 면적 구하기) #include <stdio.h> #define PI 3.14159 int main(void) { float rad, area; printf("Radius = ? "); scanf("%f", &rad ); area = PI * rad * rad; printf(“\n Area = %f", area); return 0; } C Program-I Review

  10. 데이터 형 변환 • Cast 연산자 • 강제로 데이터 형을 변환하는 일종의 연산자 • 형식: (데이터형) 변수 • 예제 float f; f=100.2; printf(“%d”, (int) f); /*강제로 실수형으로 변환 */ C Program-I Review

  11. 예제 #include <stdio.h> int main(void) { int i=1, num, sum=0; float ave; do { scanf("%d", &num ); sum += num; i++; } while(num !=0); ave = (float) sum/(i-1); printf(“\n Sum = %d Ave = %f”, sum, ave); return 0; } C Program-I Review

  12. 실습 예제(중첩 제어문) • 1부터 100 사이의 모든 소수(prime number)를 출력하는 프로그램 작성 • 구구단 1단에서 9단까지 전부를 출력하는 프로그램을 작성하시오. C Program-I Review

  13. Module 1 Module 2 Module 3 Module 4 Module 5 Module 6 프로그램의 모듈화 • 수 천, 수 만 라인의 대규모 프로그램을 하나의 단위로 모두 구현하기는 불가능하다. • 즉 프로그램을 쉽게 다룰 수 있고 개별적으로 구현 가능한 단위(모듈)로 나누어 작성한다. • 프로그램 모듈화(조립식 설계) • 프로그램을 여러 개의 모듈들로 분리 • 어느 하나의 모듈이 작성되기 전에 전체 프로그램의 설계가 가능함 C Program-I Review

  14. taxes( ) net_pay( ) gross_pay() output() C 언어의 모듈화 • 모듈화의 장점 • 코드의 재사용성이 높다. • 판독성이 높아진다. • 오류 수정이 쉽다. • 여러 프로그래머들의 협동작업이 가능하다. • C 언어에서는 각 모듈을 함수 형태로 구현한다. C Program-I Review

  15. 여러 개의 함수를 가진 프로그램 • 함수(Function)은 C 프로그램을 만드는 모듈이다. • 현재까지 프로그램 예제들은 오직 main() 함수만 포함하고 있었다.(main도 하나의 함수이다) • 일반적인 C 프로그램은 여러 개의 함수로 구성된다. • 예) int main(void) { … func1(); i = func2(); return 0; } void func1(void) { …….. } int func2(void) { …….. } C Program-I Review

  16. 함수의 호출 순서 • 하나의 프로그램에는 하나의 main() 함수가 존재한다. • 항상 main() 함수부터 시작하고, main()함수에서 끝난다. • 다른 함수를 호출하면 그 호출된 함수를 수행 • 호출된 함수의 수행이 끝나면, 다시 원래 함수(호출하였던)의 다음 문장으로 복귀 void func1(void) { printf(“like “); } void func2(void) { printf(“program“); func3(); } void func3(void) { printf(“ !!!!“); } #include <stdio.h> int main(void) { printf(“\n I “); func1(); printf(“ C “); func2(); return 0; } C Program-I Review

  17. First Number Second Number a * b Result 함수의 인수(입력) 및 리턴 값(출력) • 함수의 인수 전달 및 리턴 값 • 호출하는 문장은 호출되는 함수에게 인수(함수의 입력)를 전달할 수 있다. • 호출되는 함수(피함수)는 자신을 호출한 문장에게 값을 리턴(함수의 출력)할 수 있다. -> 함수의 수행 결과가 이 리턴 값으로 치환된다. • 참고: 인수를 매개변수라고도 부른다. • 함수의 예 ……. num = mul(2,3); ……... int mul(int a, int b) { int c; c = a * b; return c; } C Program-I Review

  18. 함수의 구성 • 함수 선언문 • 변수 선언과 흡사하게 앞으로 이 함수를 사용할 것임을 알려주는 역할 • mul() 함수의 호출 • 함수의 인수(입력)로 i, j 값을 넘겨줌 • 함수의 리턴 값을 k에 대입 • 함수 몸체(정의) • a <- main()의 i 값(10) • b <- main()의 j 값(20) • c 값을 함수의 수행 결과로 리턴, 결국 main()의 k에는 200이 대입된다. #include <stdio.h> int mul(int , int ); int main(void) { int i=10, j=20, k; k = mul(i, j); printf(“\n k = %d”, k); return 0; } int mul(int a, int b) { int c; c = a * b; return c; } C Program-I Review

  19. 함수의 사용법(1) • 함수 선언문(함수 원형(prototype)) • 변수와 동일하게 앞으로 이런 함수를 사용할 것임을 알려줌 • int mul(int, int); • int mul(int a, int b); 라고 선언해도 됨(변수 명까지 써도 상관 없음) • void 라는 특수 데이터 형은 리턴 값이나 인수가 없음을 나타냄 • 예) void test1(int, int); -> 두개의 int형 인수를 전달 받으나, 리턴값은 없음 int test2(void) -> int형 값은 리턴하나, 인수는 없음. • 함수 리턴 값의 데이터 형(data type) • 함수의 이름(변수의 이름과 동일한 규칙으로 작성) • 첫번째 인수(입력)의 데이터 형 • 두번째 인수의 데이터 형 C Program-I Review

  20. 함수의 사용법(2) • 함수의 정의 부분(몸체) • main() 함수와 동일하게 변수 선언 및, 연산, 제어 등을 수행할 수 있다. • 참고: 하나의 함수 내에서 선언된 변수는 그 함수 내에서만 유효하다. • void 형이 아닌 함수의 경우에는 return 문을 사용하여 함수의 결과 값을 리턴 해야 한다. • return a; 또는 return(a); • C 언어에서는 오직 하나의 값만 리턴 할 수 있다. • main() 도 하나의 함수이다. • main() 함수는 운영체제(명령행 라인)로부터 인수를 넘겨 받을 수 있다. (나중에 배울 것임) • main() 함수의 리턴 형이 int로 선언되었으므로, main() 함수의 끝에 return 0; 수행한다.(이 값도 운영체제로 전달됨) C Program-I Review

  21. 함수 작성 예(두수의 평균값) #include <stdio.h> float ave(int a, int b); int main(void) { int i, j; float ret; scanf(“%d %d”, &i, &j); ret = ave(i, j); printf(“\n ret = %f”, ret); return 0; } float ave(int a, int b) { float c; c = a+b/2.0; return c; } C Program-I Review

  22. 함수 작성 예(소수 검사) #include <stdio.h> int is_prime(int a); int main(void) { int i; float ret; for(i=1; i<=100; i++) { if(is_prime(i)) printf(“ %d”, i); } return 0; } int is_prime(int a) { int isprime=1, b; for(b=2; b<a; b++) { if(a%b==0) isprime=0; } return isprime; } C Program-I Review

  23. 실습 예제 • 앞의 예와 같이 두개의 정수를 인수로 받아 그 중 큰 값을 리턴하는 int max(int a, int b) 함수를 작성하고, 그 결과(main() 함수에서 호출하여)를 보여라 • 앞의 예와 같이 두개의 정수를 인수로 받아 ab를 구하는 int power(int a, int b) 함수를 작성하고, 그 결과(main() 함수에서 호출하여)를 보여라 C Program-I Review

  24. 표준 함수 • 사용자 정의 함수 • 사용자가 필요에 의해 직접 작성하여 활용하는 함수 • 앞장에서 작성한 모든 함수들은 사용자 정의 함수이다. • 표준 함수 • 국제적으로 정해진 표준에 근거하여, C 컴파일러 제작회사에서 미리 만들어 제공하는 함수 • 내장 함수 또는 라이브러리(library) 함수라고도 한다. • C 언어에는 사용 빈도가 높은 함수들을 표준으로 정의하여 어떤 컴파일러 회사에서도 동일하게 제공한다. • 우리가 사용했던 scanf(), printf()도 표준함수에 해당된다. • 사용자는 표준함수의 기능이 어떻게 구현되어 있는지 알 필요 없이 함수 사용법(인수, 리턴 형)에 맞추어 사용하면 된다. C Program-I Review

  25. 표준 함수 사용법 • 사용하고자 하는 표준 함수의 원형(선언문)이 들어 있는 헤더 파일(xxx.h)을 #include 문을 사용하여 프로그램 내에 삽입한다. • 인수와 리턴 형에 맞게 그 표준 함수를 호출한다. • 예 #include <stdio.h> int main(void) { …….. …….. printf(“\Welcome to C world!!); } 헤더 파일 표준함수 호출 C Program-I Review

  26. 표준 함수 종류 • 자세한 함수 사용법은 TC, Visual-C 등의 도움말이나 C 관련 도서를 참조하기 바람. C Program-I Review

  27. 표준함수 사용 시 참조 사항 • 표준함수를 사용하기 위해서는 헤더파일(xxx.h)과 라이브러리 파일이 제대로 설정되어 있어야 한다. • TC의 경우 • TC에 설정된 include 디렉토리와 lib 디렉토리에 각각의 헤더파일과 라이브러리 파일이 존재해야 함. • include 디렉토리 : 모든 표준 헤더 파일(함수 선언문)이 존재 • lib 디렉토리 : 실제 각종 표준 함수의 코드(몸체)가 바이너리 형태로 존재 • Visual-C 등에서는 설치과정에서 디렉토리 등이 제대로 설정되어 있으므로 신경 쓸 필요없음. C Program-I Review

  28. 표준함수 사용 예 printf() 함수 호출 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int i; srand((unsigned)time(0)); for( i=1; i<=10; i++) printf(“ %d”, rand()); for( i=1; i<=10; i++) printf(“ %d”, rand()%100); return 0; } rand (), srand () 함수 호출 time() 함수 호출 rand ()을 위한 초기화, 현재 시스템 시간을 이용하여 난수를 발생시킬때 마다 서로 다른 랜덤 패턴이 발생하도록 함. 0 ~ RAND_MAX(32767) 사이의 난수를 10개 발생 0 ~ 99 사이의 난수를 10개 발생 C Program-I Review

  29. 실습 예제 • 숫자 맞추기 게임 • 앞의 난수 발생 예를 참조하여 0~99 사이의 난수를 하나 발생시켜 사용자가 알아 맞추도록 하시오. • 사용자가 입력한 수가 틀릴 때 마다 난수로 발생시킨 값이 입력한 수보다 큰지 작은지 알려주시오. • 사용자가 맞추었을 경우, 총 몇 번 만에 맞추었는지 알려주시오. • 가위, 바위, 보 게임 • 1,2,3 중의 하나를 난수로 발생시켜 컴퓨터의 (1:가위 2:바위 3:보)를 하나 정하시오. • 사용자에게 (1:가위 2:바위 3:보) 중의 하나를 입력 받아 승패를 출력하시오. • 사용자가 0을 입력할 때까지 위의 과정을 되풀이 하시오. • 즉 (0:종료 1:가위 2:바위 3:보) 를 입력 받도록 구성할 것 • 총 승패 통계도 함께 출력하시오. C Program-I Review

  30. 함수의 장점(복습) • 코드의 재 사용성이 높아진다. • 기존의 작성했던 함수 등을 다시 가져와서 사용하거나, 조금 수정해서 사용할 수 있다. • 판독성이 높아진다. • main() 함수에 모든 코드를 넣지않고, 전체 코드를 여러 개의 함수로 분리함으로써 판독성이 높아짐. • 오류 수정이 쉬워진다. • 각 함수 별로 디버깅이 가능해짐 • 협동 작업이 가능해진다. • 전체 프로그램을 여러 개의 모듈(함수들)로 분리하여 각각의 프로그래머가 각 모듈을 구현할 수 있다. • 코드가 적어진다. • 매번 같은 내용의 코드가 빈번히 사용할 경우, 그 코드를 여러 번 작성할 필요 없이 함수로 구현하여, 필요할 때마다 호출함. C Program-I Review

More Related