제
This presentation is the property of its rightful owner.
Sponsored Links
1 / 46

제 2 장 데이터형과 표준 입출력문 PowerPoint PPT Presentation


  • 150 Views
  • Uploaded on
  • Presentation posted in: General

제 2 장 데이터형과 표준 입출력문. 2.1 상수의 표현 2.2 변수의 표현 2.3 수식과 대입문 2.4 데이터형 2.5 데이터의 형 변환 2.6 표준 입출력 함수 2.7 키보드 입력함수. C 언어에서 데이터는 상수 (constant) 와 변수 (variable) 로 나눈다 . 상수와 변수는 크게 문자형 , 정수형과 실수형의 데이터형을 가진다 . 일반적으로 상수는 프로그램이 실행되기 전에 데이터형과 값을 미리 선언한 후에 실행 중에 그 값이 바뀌어지지 않는다 .

Download Presentation

제 2 장 데이터형과 표준 입출력문

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


2

제2장 데이터형과 표준 입출력문

2.1 상수의 표현

2.2 변수의 표현

2.3 수식과 대입문

2.4 데이터형

2.5 데이터의 형 변환

2.6 표준 입출력 함수

2.7 키보드 입력함수


2

  • C 언어에서 데이터는 상수(constant)와 변수(variable)로 나눈다.

  • 상수와 변수는 크게 문자형, 정수형과 실수형의 데이터형을 가진다.

  • 일반적으로 상수는 프로그램이 실행되기 전에 데이터형과 값을 미리 선언한 후에 실행 중에 그 값이 바뀌어지지 않는다.

  • 반면 변수는 프로그램이 수행되기 전에 데이터형을 미리 선언을 한 후에 프로그램 실행 중에 변수에 값을 대입하여 프로그램이 수행할 수 있도록 허용하는 것을 말한다.


2

2.1 상수의 표현

  • 상수는 프로그램 중에 그 값이 명시되어 변하지 않는 것으로서 문자(character) 상수, 정수형 상수, 실수형 상수, 문자열(character string) 상수가 있다.

  • 실수형 상수에는 십진형 표기와 지수형 표기가 있다.

  • 문자 상수는 ‘A’와 같이 ‘’(작은따옴표)로 묶어서 문자를 표현한다.

  • 문자열 상수는 “ ”(큰따옴표)로 나타내는데, “1234”는 숫자가 아니라 문자열로 다룬다.

  • 변수와 상수는 프로그램 시작부분의 선언부에 선언한다.


2 1 1

2.1.1 문자 상수

  • 문자상수는 아스키(ASCII)코드의 한 문자를 표현을 위해 작은 따옴표로 묶어 나타낸다.

  • 문자 상수는 한 바이트로 표현된다.

    • ① 작은 따옴표로 묶인 문자이다.

      • (예) ‘a’

    • ② 코드 값을 직접 작은 따옴표로 묶어서 표현한다

      • (예) ‘\246’, ‘\x9B’

      • 여기서, ‘\x’, ‘\X’ 16진 표현이다.


2

  • ③ 아스키코드에서 특수문자, 제어문자 영역(0x00~0x19)은 문자상수 표현이 어려우므로 기능코드를 사용하여 문자 상수로 프로그램 중에 표현할 수 있다.

  • 기능 코드들을 escape 문자라 하며 표 2.1과 같다.


2

표 2.1 escape 문자


2 1 2

2.1.2 정수 상수

① 소수점이 없는 수치, 기본형은 signed int이다.

② 부호가 없는 정수 상수인 경우 수치 뒤에 ‘u’, ‘U’의 태그(tag)를 붙인다.

③ 수치의 크기가 int의 한계를 넘으면 자연히 long int로 인식한다.

④ 절대값이 작은 수치에 태그를 붙여 long int로 명시 가능하다.

⑤ unsigned long int형 상수에는 끝에 ‘ul’혹은 ‘UL’을 붙인다.

⑥ 정수표현에서 ‘0’은 8진 표현이고 ‘0x’이나 ‘0X’는 16진 표현이다.


2

표 2.2 정수 상수의 표현


2 1 3

2.1.3 실수 상수

① 기본형은 double형이다.

② float형 상수는 ‘f’혹은 ‘F’의 태그를 사용한다.

③ long double형은 ‘l’나 ‘L’의 태그를 붙인다.

④ 십진형 표기와 지수형 표기가 있다.


2

표 2.3 실수 상수의 표현


2 1 4

2.1.4 문자열 상수

문자열상수(character string constant)는 일련의 문자들의 모임을 말하며, 다음과 같이 표현된다.

① 문자열은 “”(큰따옴표)로 표현한다.

② 문자열은 아스키 문자들의 끝에 널(Null) 문자가 첨가된다. 예를 들어 “abc"는 3개의 문자와 문자열의 알리는 널 문자를 포함하므로 실제 크기는 4바이트이다.

③ “"는 문자열의 길이가 0인 널 스트링(null string)이다. 실제 문자열의 크기는 1바이트이다.


2

표 2.4 여러 가지 상수의 예


2

2.2 변수의 표현

2.2.1 변수의 선언

  • 프로그램 상의 명령문이 실행됨에 따라 값이 바뀔 수 있는 것을 변수(variable)라 한다.

  • 변수는 항상 프로그램의 본문이 실행되기 전에 정의를 한 후 사용해야 한다.

  • 변수 선언은 변수를 위한 기억공간을 할당하고 변수명과 변수가 가질 데이터형을 지정하는 것을 말한다.


2

변수를 정의하는 방법

  • 문법

    • 데이터형 변수명[=초기값], [ 변수명[=초기값] ...] ;

  • 변수 정의는 변수가 가질 데이터형과 변수명을 위한 식별자를 지정한다.

  • 변수에 초기값을 지정하려면 ‘=’다음에 초기값이나 수식을 쓴다.

  • 데이터형이 같은 변수들을 연속적으로 한꺼번에 정의할 수 있다.


2

변수명이나 상수명, 함수명 등으로 사용하는 식별자를 지정하는 규칙

① 첫 문자는 영문자로 시작해야 된다.

② 변수명의 길이는 31자까지 유효하다.

③ 언더바(_)는 변수명의 일부로 사용할 수 있으며 첫 글자에도 올 수 있다.

④ 키워드(if, int, for, do....)는 변수명으로 사용할 수 없다.

⑤ 대문자와 소문자는 다른 문자로 구분한다.


2

표 2.5 변수명의 바른 예와 틀린 예


2

변수명을 붙일 때 신경쓰자

① 좋지 않은 예

int i, j;

char a, b, c;

char *n, *q, *r;

float x, y z;

② 좋은 예

char *CurrentDirectory;

int TotalFileNumber;

③ 함수 예

int Factorial(int n)

{

if( n==0)

return 1;

else

return (Factorial(n-1)*n);

}


2

변수명을 붙일 때 신경쓰자(계속)

④ 접두사

접두사와 접미사를 사용하는 것은 의미를 명확하게 하고 또한 프로그램의 일관성을 부여할 수 있다.

PutImage, SetColor, GetCurrenFileName, ....

⑤ 기타

■ 의미가 어렵거나 분명하지 않은 단어는 사용을 되도록 피하도록 한다.

HandleCalculation, ProcessData, ...

■ 루틴이 하는 일을 모두 설명할 수 있어야 한다. 루틴 이름과 관련이 없는 연산들은 그 루틴에 포함되어서는 안된다.


2

변수명을 붙일 때 신경쓰자(계속)

■ 루틴명의 길이는 최적의 평균 길이는 9~15자이다. 그러나 평균적으로 현실적인 이름은 15~20자가 적당하다.

■ 이름짓기를 위한 규칙을 정한다. 특히 여러 사람이 프로그래밍 프로젝트에 참가할 경우 이름짓기에 관한 규칙을 제정해야 한다.

=> 프로그램의 표준화 및 일관성


2 2 2

2.2.2 변수의 초기화

  • 선언한 변수는 프로그램 실행도중에 수식에 따라 값이 변할 수 있다.

  • 처음에 변수를 미리 초기화하여 사용할 수도 있다.


2

예제 2.6 다음 프로그램은 문자 변수를 선언하고, 계산하는 프로그램이다. 실행 결과를 분석하시오.

#include <stdio.h>

#include <conio.h>

void main(void)

{

char c ='y';

int i, a=97;

printf(" %c \n",c);

printf(" %d \n",c);

printf(" %d \n",'A'+'C');

printf(" %c %c \n",c,c+1);

printf("%c\n",a);

for(i=a;i<=122;i++)

printf("%c",i);

}


2

2.3 수식과 대입문

  • 변수명에 값을 기억시키는 방법

    • 변수 선언시 초기값을 지정하는 방법

    • 대입문에 의한 방법

    • 입력함수에 의한 방법

  • 대입문에 의한 방법은 상수, 변수, 함수로 구성된 연산의 수식을 미리 지정한 변수에 대입하는 것을 말한다.

  • 예)

    • y=x+1;

    • 변수 x가 갖고 있는 값에 1을 더해서 그 결과를 y에 대입하라는 의미이다.

    • ‘=’은 대입연산자이다.


2

예제 2.8 다음은 대입문을 변형하여 프로그램 한 예이다. 프로그램을 분석하시오.

#include <stdio.h>

#include <conio.h>

void main(void)

{

int i, j, k;

i=j=k=10;

printf("i = %d, j = %d, k = %d\n",i, j, k);

k = (i=20) + (j=40); /* 대입문 변형 */

printf("i = %d, j = %d, k = %d\n",i, j, k);

}


2 4 data type

2.4 데이터 형(data type)

  • C언어에서 제공하는 기본데이터형

    • 정수형

    • 실수형(부동소수점형, 浮動小數点形)

    • 문자형

  • 각 데이터형은 그 표현 범위가 제한되어 있으며 컴파일러에 따라서 제한 범위가 다를 수도 있다.


2 4 1

2.4.1 정수 데이터형

  • 정수는 2byte로 표현되는 signed int형을 기본으로 한다.

  • int 보다 큰 범위의 정수를 다루기 위한 signed long int형도 있다.

  • long으로 간단히 표현할 수 있다.

  • 음수가 사용되지 않는 카운터와 같은 데이터에서는 unsigned int형을 사용한다.


2

표 2.6 정수(int)형의 표현 범위(Visual C++ 기준)


2 4 2

2.4.2 문자 데이터형


2 4 3

2.4.3 실수 데이터형

  • 실수는 float, double, long double형이 있으며 기본형은 double형이다.

  • float형은 전체 32bit로 구성되어 있으며, 부호 1비트 지수 8비트, 가수 23비트의 3부분으로 구분된다.

  • float형의 정확도는 10진수의 7.2자리로 표현하며 수치의 크기는 10+38까지 나타낸다.

  • float형에서 지수부와 가수부를 확장한 double형과 long double형이 있다.


Ieee 754 float

IEEE 754에 정의된 float형의 내부표현

표 2.8 부동소수점(float)형의 표현 범위


2

예제 2.9 컴파일러가 제공하는 변수의 크기를 알아보는 프로그램이다.

#include <stdio.h>

void main()

{

int n;

char c;

long p;

float f;

double d;

printf("%d \n", sizeof(char));

printf("%d \n", sizeof(int));

printf("%d \n", sizeof(long));

printf("%d \n", sizeof(float));

printf("%d \n", sizeof(double));

}


2

2.5 데이터 형 변환

  • 데이터의 형 변환

    • 자동 형 변환

    • 강제 형 변환

  • 자동 형 변환

    • 대입 연산시 우측의 수식 결과값을 좌측의 데이터형으로 변환하여 배정할 때 발생

    • 산술 연산시 두 오퍼랜드의 데이터의 형이 다른 경우에 발생

    • 데이터형이 큰 쪽으로 변환

  • 강제 형 변환

    • cast 변환 :

      • (형) 수식;

      • (형) 변수;


2

예제 2.11 자동 형 변환과 강제 형 변환

#include <stdio.h>

void main(void)

{

char a='A';

int b=20, c, d=50, e=30;

float f;

c=a+b; /* 자동 형변환 */

f=(float)d+(float)e; /* 강제 형변환 */

printf("c=%d \n", c);

printf("f=%f \n", f);

}


2

2.6 표준 입출력 함수

  • 입력 : 데이터를 컴퓨터 내부에 기억시키는 것

  • 출력 : 내부에 기억된 내용을 컴퓨터 외부에 나타내는 것

  • C언어에서 표준 입출력 함수 : printf, scanf

  • 표준 입출력 함수기 있는 헤더 파일

    • #include <stdio.h>

  • 헤더 파일 : 함수의 프로토 타입을 정의해 두고, 인수의 개수와 형(type)을 검사하여 프로그램의 안정성을 보장한다.


2 6 1 printf

2.6.1 printf

  • printf 함수는 화면에 문자열이나 변수 값을 일정한 형식으로 출력하는 함수이다.

  • 형식

    • printf("형식지정 문자열", 변수1, 변수2, 변수3,...);

    • 예)

      • printf("%5d", a);


2 9 printf

표 2.9 printf 형식지정 문자열


2 10 printf

표 2.10 printf 정리기호


2 12 printf

예제 2.12 printf예

#include <stdio.h>

void main() {

int i=100, j;

j = &i;

printf("%d\n",123);

printf("%5d\n",345);

printf("%05d\n",345);

printf("%13u\n",4239109949);

printf("%0d\n",567);

printf("%05x\n",507);

printf("%5x\n",507);

printf("%#5x\n",507);

printf("%6o\n",507);

printf("%#6o\n",507);

printf("%0x\n",507);

printf("%-5d\n",678);

printf("%6.1f\n",789.38);

printf("%10.1e\n",789.38);

printf("%7.1f\n",789.45);

printf("%p\n",&i);

printf("%20s\n","abcdefg789.45");

}


2 6 2 scanf

2.6.2 scanf

  • scanf 함수는 키보드로부터 데이터를 직접 입력하는 기능을 가진 함수

  • 형식

    • scanf("형식지정 문자열", 변수1, 변수2, 변수3,........);

    • 예)

      • scanf("%d", &a);


2 11 scanf

표 2.11 scanf 형식지정 문자열


2 13 scanf

예제 2.13 scanf예

#include <stdio.h>

void main( void )

{

int i, result;

float fp;

char c, s[81];

printf( "정수 실수 문자 문자열을 입력하시오\n");

result = scanf( "%d %f %c %s",&i,&fp,&c,s );

printf( "\n입력된 데이터의 개수 = %d\n",result);

printf( "입력결과 : %d %f %c %s\n",i,fp,c,s);

}


2 14 scanf

예제 2.14 scanf예

#include <stdio.h>

void main(void)

{

int a;

float b; /* 정수, 실수, 문자형 선언 */

char c;

printf(" input(integer)==>");

scanf("%d",&a); /* 정수입력 */

printf("\n input(float)==>");

scanf("%f",&b); /* 실수입력 */

printf(" a = %d, b = %f\n", a, b); /* 출력 */

}


2

2.7 키보드 입력 함수

  • 키보드로부터 한 문자 또는 문자열을 입력받고 이를 출력하는 함수들이다.

  • getchar()함수 : 한 문자를 입력

  • putchar()함수 : 한 문자를 출력

  • gets()와 puts()는 문자열을 입력 또는 출력


2

  • int getchar( );

    • 키보드로 하나의 문자를 입력하는 함수

    • 리턴값은 키보드의 읽은 문자

    • 화일 종료시 EOF 반환

  • int putchar( );

    • 화면에 하나의 문자를 출력하는 함수

    • 오류시 EOF 반환

  • int *gets(char *str );

    • 키보드로 1행을 읽어서 str에 저장

    • 리턴값 : str내용 반환

    • 파일 종료나 오류시에 NULL 반환

  • int puts(char *str );

    • 화면에 한 행을 출력하고, 출력 행을 바꾼다.

    • 정상 처리시 : 0이 아닌 값 반환

    • 오류시 : EOF 반환


2 20 getchar putchar

예제 2.20 getchar, putchar를 이용한 한 문자 입출력.

#include <stdio.h>

void main(void)

{

char c;

c = getchar(); /* 키보드에서 한 문자 입력 */

putchar(); /* 화면에 한 문자 출력 */

}


2 21 get s puts

예제 2.21 gets, puts를 이용한 문자열 입출력.

#include <stdio.h>

void main(void)

{

char c[100];

gets(c); /* 키보드에서 문자열 입력 */

puts(c); /* 화면에 문자열 출력 */

}


2

예제 2.23 소문자로 입력된 문자를 대문자로 출력하는 프로그램

#include <stdio.h>

void main(void)

{

char c;

printf("소문자 한 개를 입력하시오\n“);

c=getchar();

c= c - 32; /* 소문자를 대문자로 변환 */

putchar(c);

putchar('\n');

}


  • Login