1. while 반복문을 사용하여 십진수를 입력하면 그것을 ASCII 값으로 하는 문자를 출력하는 프로그램을 작성하라. (단, 끝날때는 999를 입력한다고 하자.)

/* while 반복문을 사용하여 십진수를 입력하면
 * 그것을 ASCII 값으로 하는 문자를 출력하는 프로그램을 작성하라.
 * (단, 끝날때는 999를 입력한다고 하자.) */

#include <stdio.h>

int main(void)
{
 int digit;
 printf("숫자를 입력해주세요. (종료시엔 999 입력) : ");  
 scanf("%d",&digit);            /* 십진수 입력 */
 
 while(digit != 999){           /* 999가 입력되지 않았을 경우는 연산, 999 입력시 종료 */
  putchar(digit);            /* 십진수에 해당하는 문자열 출력 */
  putchar('\n');            /* 개행 */
  printf("숫자를 입력해주세요. (종료시엔 999 입력) : ");
  scanf("%d",&digit);           /* 새로운 십진수 입력 */
 }
 return 0;
}


2. 자료의 개수를 입력하고, 그 개수 만큼의 자료를 입력하면 합과 평균을 구하는 프로그램을 작성하라.

/* 자료의 개수를 입력하고, 그 개수 만큼의 자료를 입력하면 합과 평균을 구하는 프로그램을 작성하라. */

#include <stdio.h>

int main(void)
{
 int data;    /* 자료의 개수 */
 double sum;    /* 자료들의 합 */
 double average;   /* 자료들의 평균 */
 
 int i;
 double j;    /* 자료 입력 */

 sum = 0.0;    /* 합의 초기화 */

 printf("자료의 개수를 입력하세요: ");  /* 자료의 개수를 입력 */
 scanf("%d",&data);       /* data에 저장 */

 for(i=1; i<=data;i++){      /* 자료 개수만큼 반복 */
  scanf("%lf",&j);      /* 자료의 값 입력 */
  sum += j;        /* 자료의 값을 더함 */
 }
 average = sum/(double)data;     /* 평균 값을 계산 */

 printf("합은 %f 입니다.\n", sum);   /* 합 출력 */
 printf("평균은 %.2f 입니다.\n", average); /* 평균 출력 */
 
 return 0;
}

invalid-file

과제 제출 VC++ 프로젝트 파일

by Joe & Soohy 2007. 1. 8. 00:00

중간고사 익일 10시 30분 창조관 447호

12p 부터 시작

test1.c                                   test2.c
------                                   ------
int a;                                     extern int a;                      ..... test1.c, test2.c 공유
static int b;                            static int b;                        ..... 독립적인 저장공간 사용
main()                                   func()
{                                          {
...                                         ...
   func();                               }
...
}

사용자 삽입 이미지


사용자 삽입 이미지
사용자 삽입 이미지

<- 직접 재귀 함수

                                                  간접 재귀 함수 ->







하노이의 탑
#include <stdio.h>

void hanoi(int n, char a, char b, char c);

int main(void)
{
 /* 3개의 원반을 옮기는 하노이 탑 문제 */
 /*초기막대 a, 작업막대 b, 목표막대 c */
 return 0;
}

void hanoi(int n, char a, char b, char c)
{
 if (n<1)
  printf("invalid number of discs\n");
 else if ( n==1 )
  printf("원반 %d : %c ==> %c\n", n, a, c);
 else {
  hanoi(n-1, a, c, b);
  printf("원반 %d : %c ==> %c\n", n, a, c);
  hanoi(n-1, b, a, c);
 }
}


==== 실습시간 ====
1. nCr 구하기
#include <stdio.h>

double factorial(int k);

int main(void)
{
 int a, b;
 double c;

 printf("nCr을 구해봅시다!\n");
 printf("n의 값을 입력하세요 : ");
 scanf("%d",&a);
 printf("r의 값을 입력하세요(n값보다 작게) : ");
 scanf("%d",&b);

 c=factorial(a)/(factorial(b)*factorial(a-b));
 printf("결과는 %g 입니다.",c);

 return 0;
}

double factorial(int k)
{
 int i;
 double j;
 j=1.0;

 for(i=1;i<=k;i++)
  j *= i;
 return(j);
}

또는

#include <stdio.h>

double factorial(int k);

int main(void)
{
 int a, b;
 double c;

 printf("nCr을 구해봅시다!\n");
 printf("n의 값을 입력하세요 : ");
 scanf("%d",&a);
 printf("r의 값을 입력하세요(n값보다 작게) : ");
 scanf("%d",&b);

 c=factorial(a)/(factorial(b)*factorial(a-b));
 printf("결과는 %g 입니다.",c);

 return 0;
}

double factorial(int k)
{
 int i;
 double j;
 j=1.0;

 for(i=k;i>=1;i--)
  j *= i;
 return(j);
}

p139 (5.3.2)
#include <stdio.h>

사용자 삽입 이미지

void print_star(int k, int n);

int main(void)
{
 int a,b;

 scanf("%d",&a);
 for(b=1;b<=a;b++)
  print_star(b,b);
 
 return 0;
}

void print_star(int k, int n)
{
 int i,j;

 for(i=1;i<=k;i++)
  putchar(' ');
 for(j=1;j<=n;j++)
  putchar('*');
 putchar('\n');
}

p.139 연습문제 5.3.2.b

사용자 삽입 이미지

#include <stdio.h>

void print_star(int k, int n);

int main(void)
{
 int a,b;

 scanf("%d",&a);
 for(b=1;b<=a;b++)
  print_star(a-b,2*b-1);

 return 0;
}

void print_star(int k, int n)
{
 int i,j;

 for(i=1;i<=k;i++)
  putchar(' ');
 for(j=1;j<=n;j++)
  putchar('*');
 putchar('\n');
}

by Joe & Soohy 2007. 1. 4. 09:44


#include <stdio.h>
사용자 삽입 이미지

#define N 10

int main(void)
{
 int a,b,c;

 for(a=1; a<=N; a++){
  for(b=N-a;b>0;b--)
   putchar(' ');
  for(c=0;c<a;c++)
   putchar('*');
  putchar('\n');
 }
 return 0;
}


5장 함수



[함수] 어떠한 일을 수행하는 프로그램의 부분
- 문제 해결 방법
   문제를 여러개의 작은 문제로 나누고 작은 문제를 해결하는 함수들을 작성: 모듈화
   이 함수들을 사용하여 문제를 해결
   함수의 반복 사용(재사용) 가능

- C 프로그램은
  하나 이상의 함수로 구성
  main 함수를 반드시 포함하며, main 함수부터 실행함
  함수는 인수를 받아서 함수의 프로그램을 실행하고 실행 결과를 반환값으로 돌려줌


[함수 소개]
void welcome(void)
리턴값이 없다  이름 welcome  인수값이 없다

예)
사용자 삽입 이미지

#include <stdio.h>

int add(int a, int b);   /* 함수 add()의 원형 선언 */

int main(void)
{
 int sum;

 printf("begin main\n");
 sum = add(10, 20);    /* 함수 add() 호출 */
 printf("sum = %d\n", sum);
 return 0;

}

int add(int a, int b) /* 함수 add()의 정의 */
{
 printf("welcome! fuction add\n");
 return a + b;   /*함수의 계산결과를 반환 */
}


예제

사용자 삽입 이미지

#include <stdio.h>

void char_print(char a, int b);

int main(void)
{
 char_print('*',10);
 char_print('-',5);
 return 0;
}

void char_print(char a, int b)
{
 int i;

 for(i=0; i<b; i++)
  putchar(a);
 putchar('\n');
}


[함수 원형 선언과 함수 호출]
- 함수 원형(prototype) 선언
  함수를 사용하기 전에 함수의 반환값과 매개변수들의 자료형을 선언하는 것
    void print_char(char, int) 또는
    void print_char(char c, int n);
  하뭇 호출할때에 잘못 사용하는 것을 컴파일러가 알 수 있도록 함

- 함수의 호출
  함수에게 인수값을 제공하여 함수를 실행시키고 결과를 반환 받음
    함수(인수값1, 인수값2, ...)
  호출하는 함수는 앞에 함수 원형 선언 또는 함수 정의가 있어야 함

사용자 삽입 이미지

#include <stdio.h>

사용자 삽입 이미지

#include <math.h>
#define N 20

int main(void)
{
 int a,b;
 double c,d,f;
 d = 1.0;
 f = 1.0;

 for(a=1; a<=N; a++)
 {
  c = 1.0;
  for(b=a; b>=1; b--)
   c = c * b;
  d = 1.0/(double)c;
  f = f+d ;
 }
 printf("%.15g\n", f);
 printf("%.15g\n", exp(1.0));
 return 0;
}

by Joe & Soohy 2007. 1. 3. 09:38

숙제 - 조교한테 E-mail로 낼 것

1. while 반복문을 사용하여 십진수를 입력하면 그것을 ASCII 값으로 하는 문자를 출력하는 프로그램을 작성하라. (단, 끝날때는 999를 입력한다고 하자.)

2. 자료의 개수를 입력하고, 그 개수 만큼의 자료를 입력하면 합과 평균을 구하는 프로그램을 작성하라.

작성한 프로그램 파일 폴더 통째로 Zip 저장해서 일요일까지 제출
──────────────────────────────────────────────────

[while문]
- while (조건식) ....조건식이 참인 동안
     문장                 문장 반복 실행

- white (조건식){
     문장
     문장
     ...
     }

- 예) 음수 또는 0이 입력될 때까지의 입력된 정수의 합을 계산
   sum = 0;                          /* 합의 초기 값 */
   scanf("%d",&number);      /* 정수 입력 */
   while (number > 0){
   sum = sum + number;
   scanf("%d",&number);      /* 다시 정수 입력 */
   }

[반복 제어 변수] ... 반복문에서 루프를 도는 횟수를 제어하겠다.
- 예) 1부터 10까지의 정수의 합 계산
   sum = 1 + 2 + 3 + ... + 10
     ↓
   sum = 0;
   sum = sum + 1;
   sum = sum + 2;              i는 1~10에 대해서 다음 문장 반복수행
    ...                               sum = sum + i
   sum = sum + 10;
     ↓                               변수 i가 반복제어변수
   sum = 0;                        합의 초기값은 0
   i = 1;                             초기화
   while (i <= 10){              검사
   sum = sum + i;
   i = i + 1;                         갱신
   }                                  ※ 반복제어변수
                                           - 반복할 때마다 값이 변화
                                           - 변수 값에 따라서 반복수행 여부결정

예) 1~20까지의 합 구하기

#include <stdio.h>

int main(void)
{
 int sum, i;
 sum = 0;
 i = 1;

 while (i<=20){
  sum = sum + i;
  i = i + 1;
 }

 printf("%d",sum);
 return 0;
}

== sum ==
210
=========

예) 실수 r의 n제곱을 계산 (n은 정수)
  - 곱의 초기값 = 1 (곱셈 항등원)
  - 반복제어: n을 초기값에서 시작하여 반복할 때마다 1씩 감소시켜서 
                  n이 0이 될 때까지 반복하면 n의 초기값 횟수만큼 반복 수행

[for문]
- for문
  for(수식1; 수식2; 수식3)             .... 수식2가 참인동안 반복
       문장
- 반복제어변수를 사용하는 경우에 적합
  수식1: 초기화
  수식2: 조건식
  수식3: 갱신
- 예) N번 반복 실행
  1. for(i=1;i<=N;i=i+1)                  .... 1부터 N까지
      문장
  2. for(i=0; i<N; i=i+1)                 .... 0부터 N-1까지
      문장

- 예) 1부터 10까지의 정수의 합 계산
  for (i=1; i<=10; i=i+1)
       sum = sum + i;

- 예) 

수열 an = 2an-1 – 1 (a1=3) a10 구하기

   a = 3;
   for (i=2; i<=10; i=i+1)
        a = 2*a - 1;

- 예)
 

Fibonacci수열 Fn = Fn-2 + Fn-1 (F1=0, F2=1) F20 구하기

    a = 0; b = 1;

사용자 삽입 이미지

    for (i=3; i <=20; i=i+1){
        c = a + b;
        a = b;
        b = c;
    }


==== 프로그래밍 ====
#include <stdio.h>

int main(void)
{
 int a, b, c, d, i;
 a = 0; b= 1;

 printf("항 번호를 입력하시오: ");
 scanf("%d",&d);

 for(i=3; i<=d; i=i+1){
  c = a + b;
  a = b;
  b = c;
 }
 
 printf("결과값은 %d 이다\n",c);

 return 0;
}
=== run ===
항 번호를 입력하시오: 20
결과값은 4101 이다
===========


[무한 루프와 공문]
- 무한루프
   반복조건이 항상 참인 반복문

   for (  ;  ;  )             .... 수식2가 생략되면 참(true)으로 간주함
   문장

   while(1)                 .... 조건식 1은 참(true)이다
   문장

   무한 루프인 반복문은 내부에서 반복문을 종료할 수 있어야 함
    -> break

- 공문(null statement): ; 만으로 이루어진 아무 동작도 하지 않는 문장
   while(조건식);

   while(조건식)      -> 무한루프 발생 가능
   ;

[반복문 설계]
- 반복 자료 입력을 종료 시키는 방법
  입력 자료 수를 먼저 입력하여 이 횟수 만큼 반봅 입력
  정상적으로 사용되지 않는 자료(보초)를 마지막에 잆력
  입력 함수의 파일 끝(EOF) 반환 기능 이용 (Ctrl-Z 또는 Ctrl-D 입력)

- EOF를 만날 때 까지 정수를 입력하여 평균 계산

사용자 삽입 이미지

== 프로그램 ==
#include <stdio.h>

int main(void)
{
 int count, sum, number;

 count = 0;
 sum = 0;

 while(scanf("%d",&number) != EOF){
  sum = sum + number;
  count = count + 1;
 }
 
 printf("The number of inputs = %d\n", count);
 
 if(count >0)
  printf("average = %f\n", (double)sum/count);
 
 return 0;
}
== run ==
1(enter)
2(enter)
3(enter)
4(enter)
5(enter)
^Z (ctrl+Z)
The number of inputs = 5
average = 3.000000
=========

예) 네제곱표 만들기
 #include <stdio.h>
  main()
  {
      int a;
      for(a=1; a<=13; a=a+2)
           printf("%d %d \n", a, a*a*a*a);
   }
문제점: 각 열이 나란하게 출력되지 않음 -> 해결책: 출력의 각 필드 폭(자릿수)을 일정하게 함


[잘못된 입력 처리하기]
- scanf()함수의 반환 값
   scanf() 함수는 성공적으로 입력된 변수의 개수를 반환함

- 정수가 아닌 입력에 대해서 반복 종료 (프로그램 종료)
  while ( scanf("%d", &number) = 1){
  sum = sum + number;
  count = count + 1;
  }
  반복문에서 EOF를 1로 바꾸면 파일 끝뿐만 아니라 정수가 아닌 입력에 대해서도 반복을 종료함

- 정수가 아닌 입력을 무시하고 계속 입력
  scanf("%*s")를 사용
하면 잘못된 입력을 무시하고 다음 자료 입력 (프로그램 계속 돈다)
   while ( (n =scanf("%d",&number) ) != EOF){
   if ( n == 1){
      sum = sum + number;
      count = count + 1;
   } else
      scanf("%*s);
   }


[형식지정 출력]
- 필드 폭과 정렬: 출력 공간의 크기 (우정렬, 좌정렬, 필드폭보다 크면 글자가 잘림)

- printf 함수의 형식지정자

사용자 삽입 이미지


== 화씨 섭씨 계산 프로그램 ==

#include <stdio.h>

int main(void)
{
 int f;
 float c;

 printf("%4s %6s\n", "화씨", "섭씨");
 
 for(f=0; f<=100; f=f+5){
  c=(f-32.0)*5.0/9.0;
  printf("%4d %6.1f\n", f, c);
 }

 return 0;
}
== run ==

사용자 삽입 이미지

========

[증감 연산자]
- 증감 연산자
   증가 연산자: i++        <- i = i + 1
   감소 연산자: i--        <- i = i - 1

- 증감 연산 수식의 값
   사전증감: ++i, --i는 먼저 증감 -> 증감이후의 값을 사용
   사후증감: i++, i--는 나중에 증감 -> 증감이전의 값을 사용
   예) i = 5;
        a = ++i;      ---------> i++; a = i;
        결과: i=6, a=6

        i = 5;
        a = 1++       ---------> a=i; i++;
        결과: i=6, a=5


[복합 치환 연산자]
- 복합 치환 연산자
   var op = 수식 (변수 연산자 = 수식)          <- var = var op 수식
     op: 산술연산자(+ - * / %), 비트연산자(11장)

- 예)  치환연산자 사용                      복합치환연산자 사용
         a = a + 2                                a += 2
         count = count - 1                    count -= 1
         sum = sum + j                         sum += j
         d = d / 12                               d /= 12
         n = n * (k+1)                           n *= k+1      .... 괄호 불필요

예) 다음과 같은 수열의 20항까지 출력, 20항까지의 합 출력
      1  2  4  7  11  16  ...

사용자 삽입 이미지

숙제 - 조교한테 E-mail로 낼 것

1. while 반복문을 사용하여 십진수를 입력하면 그것을 ASCII 값으로 하는 문자를 출력하는 프로그램을 작성하라. (단, 끝날때는 999를 입력한다고 하자.)

2. 자료의 개수를 입력하고, 그 개수 만큼의 자료를 입력하면 합과 평균을 구하는 프로그램을 작성하라.

작성한 프로그램 파일 폴더 통째로 Zip 저장해서 일요일까지 제출

[do - while문]
- do=while문
  do
     문장                   ..... 조건에 관계없이 문장이 적어도 한번은 실행됨
  while (조건식)
;       ..... 세미콜론(;)으로 끝남에 주의

  do {
      문장;
      문장;
      ...
      } while (조건식);

- 예) 정상적인 메뉴 입력이 들어올 때까지 반복 입력
   do {
        printf("menu select (1-5): ");    /* 입력 안내문 */
        scanf("%d", &menu);              /* 문자 입력 */
   } while (menu < 1 }} menu > 5);
   printf("you choose menu %d\n", menu);


[중첩된 반복문] .. 반복문이 여러개 중첩
- 예) 다음과 같은 구구단 표 출력
  for (a = 2; a <= 9; a++) {
      for (b = 1; b <= 9; b++)
           printf("%dΧ%d = %2d   ", a, b, a*b);
      printf("\n");
  }

[p125 디버깅]
디버깅: error는 없는데 값이 이상할 경우, 어느 부분에서 잘못 되었는지 딱 집어서 확인해볼 수 있는 툴
=> 선언했던 변수가 어떤 값을 갖는지를 확인

== 프로그램 ==
#include <stdio.h>

void main()
{
 int a, inc, i, sum;
 
 sum = 0; a = 1; inc = 1;

 for(i=0; i <= 20; i++)
 {
  printf("%d   ", a);
  sum += a;
  a += inc;
  inc++;
 }

 printf("\n 수열 합 = %d\n", sum);
}

디버깅 할때에는 에러가 없어야 된다.

해당줄에 손을 클릭하면 왼쪽에 이 생긴다.

F5키를 누르면 디버그 모드로 들어가고,
F10키를 누르면 한 줄씩 내려가고,
왼쪽 하단 창을 내려보면 값을 볼 수 있다.
오른쪽 하단 창에 name에 변수를 넣으면 해당 변수의 값을 볼 수 있다.

뒤에 cmd창에 실행 값이 실시간으로 등장한다.

by Joe & Soohy 2007. 1. 2. 09:57
사용자 삽입 이미지
1년동안 수고하셨습니다.
의권이형도요~ 사회생활 잘 하세요~ ^^*
by Joe & Soohy 2006. 12. 31. 14:11

어제 이어서...
[난수 생성 함수]
- 난수 생성 함수
  함수를 호출할 때마다 임의의 숫자를 생성하여 반환하는 함수
  임의의 데이터를 필요로 할 때에 유용
- 난수생성함수 rand()
  #include <stdlib.h>
   ...
   i = rand();                       .... 0부터 RAND_MAX 사이의 임의의 정수 반환
                                             (RAND_MAX는 32767 또는 더 큰 정수로 디폴트)
   i = rand() % N + 1 .....  1부터 N사이의 정수 난수 생성
   d = (double)rand() / (RAND_MAX + 1)    ... 0과 1사이의 실수 난수 생성
- 난수생성 초기화 함수 srand()
   #include <stdlib.h>
   #include <time.h>
    ...
   srand(seed)       ..... 난수생성함수 seed 값 지정
   srand(time(NULL))  .... 현재시간을 seed 값으로 사용

   예제
   #include <stdio.h>
   #include <stdlib.h>
   #include <time.h>

   int main(void)
   {
      int a,b,c;
      double x,y,z;
     
      srand(time(NULL));

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

      a = 1 + rand() % 100;
      b = 1 + rand() % 100;
      c = 1 + rand() % 100;
      printf("%d %d %d\n", a,b,c);

      x = (double)rand() / (RAND_MAX + 1);
      y = (double)rand() / (RAND_MAX + 1);
      z = (double)rand() / (RAND_MAX + 1);
      printf("%g %g %g\n", x,y,z);

      return 0;
    }
==== run ====
14478 16323 23275
91 49 35
0.501465 0.452911 0.260132
=============
※ 실행시킬때마다 늘 새로운 값이 나오는 것을 확인하였다.
=====================================================


4. 제어문: 인위적으로 프로그램을 내가 컨트롤 하겠다.
    선택문: if문, if-else문, switch문
    반복문: while문, for문, do-while문
    연산자: 관계 연산자와 논리 연산자, 증감 연산자, 복합치환연산자, 컴마연산자
    분기문: break, continue, goto

[문장과 실행 순서]
- 문장
   단문: 수식 한 줄 (한 줄의 소스코드, 명령문)
   제어문: 프로그램의 실행순서를 제어
   복합문: 단문들을 여러개로 묶은 단위. 문법적으로는 한 문장으로 취급({ }로 묶음)
- 문장의 실행순서
   기본적으로 순차적으로 수행 (위에서 아래로, 좌에서 우로)
   제어문을 사용하면 순차적인 흐름을 바꿀수도 있다. (선택실행 또는 반복실행 가능)

[if 문]
- if (조건식)  ....조건식이 참일때만
  문장               문장을 실행 (거짓일때는 문장을 생략하고 넘어감)

- 복합문을 사용한 if문 ....조건식이 단문이 아니라면 { }로 묶어서 복합문으로 사용
   if (조건식) {
   문장
   문장
    ...
   }

[관계 연산자]
- 조건식과 연산자
   조건식은 대개 값들의 비교로 이루어짐
   값의 비교에 관계 연산자논리 연산자가 주로 사용됨

- 관계 연산자
   연산자      의미                  예
   >             크다                  x > 100
   <             작다                  y < 0
   >=            크거나 같다       a >= b
   <=            작거나 같다       a <= 500.0
   ==            같다                  c == 'y'
   !=             같지 않다           c != EOF (cf. End of File)

[C언어에서의 참, 거짓]
- C언어에서의 참, 거짓
  nonzero 수식   -> 참
  zero 수식        -> 거짓
  ※ 0이면 거짓, 이외에는 무슨 값이든 참

- 관계 연산 수식의 값
   참이면 1
   거짓이면 0

   printf("%d %d \n", 100 > 50, 100 < 50);

- 조건식으로 임의의 수식을 사용할 수 있음
   1. if (a)                         .... a가 0이 아니면 (참이면)
      printf("nonzero\n");    .... 출력
   2. if (a = 5)                    .... 수식 a = 5 의 값은 5이므로 항상 참
      printf("a is five\n");    .... (잘못된 예: =는 ==으로 고쳐야 함)
   수정. if (a == 5)
      printf("a is five\n");

[논리 연산자]
- 논리 연산자
   연산자       의미
   &&            논리곱(AND) - 두 피연산자가 모두 참일 때 결과가 참이다.
   ||             논리합(OR) - 두 피연산자 중 한 개 이상이 참일 때 결과가 참이다.
    !              부정(NOT) - 피연산자의 참, 거짓 값의 반대 결과를 제공한다.

- 연산자 우선 순위 (외워라..)
   1. 괄호
   2. 단항연산자
   3. 곱셈, 나눗셈
   4. 덧셈, 뺄셈
   5. 관계연산자   >  >=  <  <=
   6. 동등연산자   ==  !=
   7. 논리곱         &&
   8. 논리합         ||
   9. 치환연산자

예제
  a가 0이상, 100미만이다.                      a>=0 && a<100
  a가 0미만이거나 100이상이다.              a<0 || a>=100
  x.y.z 중이서 x가 가장 작은 수이다.       z <= y && x <= z
  a와 b의 합이 c와 d의 차보다 작다         a + b < c - d

  if ( a >= 0 && a < 100)
  print("a is between 0 and 100\n");

예제2: 문자 c가 영문자가 아니면 에러메시지 출력
  if( ! ( c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z') )
  printf("c is not alphabet\n");
      또는
  if( ! ( c >= 'A' && c <= 'Z') && ! (c >= 'a' && x <= 'z') )
  printf("c is not alphabet\n");

[논리 연산의 단축평가]
  나머지 수식의 결과에 관계없이 연산 결과를 알 수 있을 때에 나머지 수식의 평가를 하지 않는다.

   수식1 && 수식2    -> 수식1이 거짓이면 (수식2에 관계없이) 연산결과가 거짓
   수식1 || 수식2     -> 수식1이 참이면 (수식2에 관계없이) 연산 결과가 참

    if (a! = 0 && b / a >10)  --> a가 0이 아닐때만 b/a >10을 계산한다.

[if - else 문]
- if (조건식)
  문장1     .... 참일 때 수행
  else
  문장2     .... 거짓일 때 수행

- y를 x로 나눈 몫을 출력
  if(x==0)
     printf("0으로 나눌 수 없습니다.\n);
  else
     printf("몫 = %d\n", y/x);

[조건 연산자]
- 조건 연산자: ? :        .... 조건식이 참이냐?
   조건식 ? 수식1 : 수식2      .... 참이면 수식1 선택, 거짓이면 수식2 선택
   3항 연산자: 피연산자가 3개
   조건식: 참    -> 수식값 = 수식1
   조건식: 거짓 -> 수식값 = 수식2

- 두 수의 a, b의 최대값을 max에 저장
   1. max = (a > b)? a : b;
   2. (a>b)?(max = a) : (max = b);   .... 뒤의 두 관호는 반드시 필요함
   3. if (a > b)
         max = a;
       else
         max = b;
※ 조건식을 주고 if-else로 바꾸거나 반대인 경우 모두 할 수 있어야 한다.

예제: 연도를 입력 받아서 평년과 윤년을 판단하는 프로그램
       (윤년: 4로 나누어지고 100으로 나누어지지 않는 연도 / 400으로 나누어지는 연도)

#include <stdio.h>

int main(void)
{
   int year;
   int isleep;

   printf("연도는 ? ");
   scanf("%d",&year);
   isleep = (year%4==0 && year%100 !=0) || (year % 400 == 0);
   if(isleep)
      printf("%d년은 윤년입니다. \n", year);
   else
      printf("%d년은 평년입니다. \n", year);
}
=== run ===
연도는 ? 2006(enter)
2006년은 평년입니다.
===========
연도는 ? 2004(enter)
2004년은 윤년입니다.
===========

[중첩된 if문]
- 중첩된 if문
   if와 else의 목표문으로 if 또는 if-else문을 사용한 것

- 예) 변수 a, b의 부호에 따라서 다음 표와 같이 출력
   a       b       출력
   a>=0  b>=0  Group1
   a>=0  b<0    Group2
   a<0    b>=0  Group3
   a<0    b<0    Group4

   if (a >= 0) {
      if ( b >= 0) printf("Group1\n");
      else printf("Group2\n);
   } else {
      if ( b >= 0) printf("Group3\n");
      else printf("Group4\n");
   }

[중첩된 if문 - 다단계 if문]
- 다단계 if문
  if (조건식)
     문장1
  else if (조건식2)
     문장2
      ......
  else if (조건식n)
     문장n
  else
     문장 n+1

예제: 점수에 따른 등급 부여
        (A: 90점 이상, B: 80점 이상, C: 70점대, D: 60점대, F: 60점 미만)

int score    /*점수*/
int grade    /*등급*/
   ...
if(score >= 90) grade = 'A';
else if(score >= 80) grade = 'B';
else if(score >= 70) grade = 'C';
else if(score >= 60) grade = 'D';
else grade ='F';

프로그램으로 만들기
-------------------

#include <stdio.h>

int main(void)
{
 int score;
 char grade;

 printf("점수를 입력하시오 ex)최대값 100 :");
 scanf("%d",&score);

 if (score >= 90) grade = 'A';
 else if (score >= 80) grade = 'B';
 else if (score >= 70) grade = 'C';
 else if (score >= 60) grade = 'D';
 else grade = 'F';

 printf("당신의 학점은 %c 입니다.",grade);

 return 0;
}
=== run ===
점수를 입력하시오 ex) 최대값 100 :0(enter)
당신의 학점은 F 입니다.
===========

[switch 문]
- switch (정수식)   .... 정수식의 값에 따라 선택 실행
  {
      case 값1 : 문장1; ...
                      break;                .... break: switch문 종료 / break가 없으면 다음 문장 실행
      case 값2 : 문장2; ...
                      break;
            .....
      case 값n : 문장n; ...
                      break;
      default : 문장 n+1; ...
   }

   정수식 값에 해당하는 case의 문장부터 실행
   해당하는 case가 없으면 default의 문장부터 실행

예제: 점수에 따른 등급부여

switch(score / 10)
{
    case 10:                  ..... break가 없으므로 다음 문장을 실행
    case 9: grade = 'A'; break;
    case 8: grade = 'B'; break;
    case 7: grade = 'C'; break;
    case 6: grade = 'D'; break;
    default: grade = 'F';   ..... 밑에 아무것도 없기에 break를 안써도 됨
}
※ break를 하나도 안썼다면, 모든 학점은 F다.

프로그램으로 만들기
-------------------
#include <stdio.h>

int main(void)
{
 int score;
 char grade;

 printf("점수를 입력하세요 :");
 scanf("%d",&score);

 switch (score/10)
 {
 case 10:
 case 9: grade = 'A';
  break;
 case 8: grade = 'B';
  break;
 case 7: grade = 'C';
  break;
 case 6: grade = 'D';
  break;
 default: grade = 'F';
 }

 printf("학점은 %c 입니다.\n", grade);
 return 0;
}
=== run ===
점수를 입력하세요 :79(enter)
학점은 C 입니다.
===========

더 배워보기

switch(ch)                  -> 문자로 지정하면..
{
    case 'A': .....           -> '  ' 붙여야 인식
    case 'B': .....
}

예제: 소득에 따른 세금 계산

사용자 삽입 이미지



실습시간
문제 1
 
srand 함수와 time 함수를 사용하여 rand함수의 seed 값을 지정하고 1에서 10사이의 정수 난수 5개를 생성하여 출력하는 프로그램을 작성하시오. 프로그램을 여러 실행하여 결과를 비교해 보시오


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
 int a,b,c,d,e;

 srand(time(NULL));

 a = 1 + rand()%10;
 b = 1 + rand()%10;
 c = 1 + rand()%10;
 d = 1 + rand()%10;
 e = 1 + rand()%10;

 printf("%d %d %d %d %d", a,b,c,d,e);

 return 0;
}

사용자 삽입 이미지

#include <stdio.h>
#include <math.h>

int main(void)
{
 int a,b,c,d;
 double x,y,z;

 printf("계수 a를 입력하세요(단, a는 0이 아님) :");
 scanf("%d",&a);
 printf("계수 b를 입력하세요 :");
 scanf("%d",&b);
 printf("계수 c를 입력하세요 :");
 scanf("%d",&c);

 d=b*b-4*a*c;

  if(d>0)
  {
   x=(-b+sqrt(d))/(2*a);
   y=(-b-sqrt(d))/(2*a);
   printf("근은 %f와 %f 이다.",x,y);
  }
  else if(d<0)
  {
   x=-(b/(2*a));
   z=+(sqrt(-d)/(2*a));
   y=-(b/(2*a));
   printf("근은 %f+%fi와 %f-%fi이다.", x,z,y,z);
  }
  else
  {
   y=-b/(2*a);
   x=y;
   printf("근 x와 y는 각각 %f, %f 이다.", x,y);
  }
 return 0;
}

by Joe & Soohy 2006. 12. 29. 09:52

입출력문과 라이브러리 함수

[라이브러리 함수]
- 라이브러리: 미리 작성된 함수들을 모아놓은 것
- ANCI-C에서는 : C언어 문법 + 표준 라이브러리 함수를 정의
- 표준 라이브러리 함수의 종류
   입출력 함수     ->    #include <stdio.h>
   수학 함수        ->    #include <math.h>
   문자열 및 문자함수   .... 문자를 복사시키고...뭐 기타등등 #include <string.h>
   동적 메모리 관리 함수 .... 필요한 양의 메모리를 동적으로 할당 ...#include <mem.h>
   기타 함수

[출력함수 printf()]
#include <stdio.h>
main()
{
     int a = 10;
     float x = 5.5;
     printf("a is %d and x is %f. \n, a, x);
}

- 제어문자열
  1. 출력할 문자열
  2. 출력 인수에 대한 형식 지정자

[출력함수 형식 지정자]
- 정수 형식 지정자
   형식지정자            출력 형식                                            출력 예
   %d                      10진수(부호있는 정수)                           -32536
   %u                      10진수(부호없는 정수)                            33000                ....int unsigned x;
   %o                      8진수                                                   100350               .... 옥탈 -> o
   %x                      16진수(소문자 a~f 사용)                         12fe                   .... heXa decimal -> x
   %X                      16진수(대문자 A~F 사용)                       12FE
   %ld                      long 자료형                                                                 .... long d
   %hd                     short 자료형                                                                .... short d
   ※ int가 32비트인 겨우에 short 자료형은 %hd, %hu를 사용함

- 실수형식 지정자
   형식지정자            출력 형식                                            출력 예
   %f                       보통의 실수 표기(지수없음)                    123.456000     ....float, double 출력
   %e                      과학용 표기 (소문자 e사용)                    1.23456e+02
   %E                      과학용 표기 (대문자 E사용)                    1.23456E+02
   %g                      %e와 %f 중 더 짧은 표기
   %G                      %E와 %f 중 더 짧은 표기

-  문자/문자열 형식 지정자
   형식지정자            출력 형식                                            출력 예
   %c                      문자                                                    a                   .... character
   %s                      문자열                                                 korea             .... string
   %%                     문자 %를 출력                                      %

사용자 삽입 이미지

1번
#include <stdio.h>

main()
{
 printf("%o %x\n", 500, 500);
}
===결과값===
764 1f4
============

2번
#include <stdio.h>
main()
{
 double r = 123.45678;
 double s = 12340000.0;
 printf("%f %e %g\n", r,r,r);
 printf("%f %e %g\n", s,s,s);
}
====결과값====
123.456780 1.2345678e+002 123.457
12340000.000000 1.234000e+007 1.234e+007
==============

3번
#include <stdio.h>
main()
{
 printf("%s and 100%%","C language");
}
=== 결과값 ===
C language and 100%
==============

4번
#include <stdio.h>
main()
{
 char c = 'A';
 printf("%c의 코드: 10진수 %d, 8진수 %o, 16진수 %x", c,c,c);
}
===결과값===
A의 코드: 10진수 65, 8진수 101, 16진수 241fe4
============

연습문제1
다음 두 출력문의 결과값을 비교하시오.
printf("%c %d \n", 'c','c');
printf("%c %d \n", 67, 67);
------------------
#include <stdio.h>
main()
{
 printf("%c %d \n", 'C','C');
 printf("%c %d \n", 67, 67);
}
====결과값====
C 67
C 67
==============

[입력함수 scanf()]
#include <stdio.h>
main()
{
      int a;
      float f;
      scanf("%d %f", &a, &f);                /* 입력 */
      printf("%d %f \n", a, f);               /* 입력 변수를 출력 */
}

[입력함수 형식 지정자]
- scanf() 형식 지정자
   형식지정자            입력자료형                   입력 형식                        출력 예
   %d                      정수                             10진수                           -123
   %u                      부호없는 정수                10진수                            30000
   %o                      부호없는 정수                8진수                             644
   %x                      부호없는 정수                16진수                            5f5a, 5F5A
   %ld                     long 자료형
   %hd                    double 자료형
   %f, %e                실수(float)                     임의의 실수 표기              1.23, 3.1e-2
  %lf, %le          실수(double)            임의의 실수 표기
   %c                      문자
   %s                      문자열

[라인버퍼 방식 입력]
- 라인버퍼 방식 입력
   키보드에서 [Enter]가 입력될때에 줄 단위로 버퍼에 저장됨
   scanf()함수는 버퍼에서 입력받음
   입력 12   3.4[enter]  567  a[enter]
   버퍼 12  3.4 \n 567 a \n
   scanf(   .......   )     .... 4개를 입력주면 12 3.4 567 a 가 인풋으로 들어가지만, 2개를 입력주면 12 3.4만 인풋. 나머지는 소멸된다.

 - 예제
   1. 형식지정자 사이에 공백이 없어도 무방(숫자만 해당)
       scanf("%d%f%lf", &i, &f, &d);    ....문제는 없으나..
       scanf("%d %f %lf", &i, &f, &d);  ....권장함
   2. (예외) 문자입력              .....입력 a b 인 경우에
       scanf("%c %c, &x, &y);  .....x = 'a', y = 'b' 입력
       scanf("%c%c, &x, &y);  ..... x = 'a', y = ' ' 입력
   3. 제어문자열에 특별한 경우가 아니면 다른 문자 사용하지 않음
       scanf("%d\n",&a); (x)     ....잘못된 예
       scanf("%d : %f", &i, &f);   .... 정수와 실수 사이에 입력    ex) 5 : 12.2 --> 키보드로 입력을 똑같이 해줘라.

[문자 입출력]
- 문자입출력
   getchar()       한 문자를 입력하여 반환
   putchar(ch)   문자 ch를 출력

   char ch;            ....... int ch;를 사용하는 것이 더 일반적임
   ch = getchar();   ....... 라인 버퍼 방식 입력 사용
   putchar(ch);

- getche() 함수   ... 표준 함수가 아니고 일부 PC용 컴파일러 함수
   PC용 컴파일러에서 제공하는 함수
   문자를 입력한 즉시 프로그램에 입력 됨    ....getchar는 입력을 받으면 라인버퍼안에 저장이 되고 이를 뽑아오는 것이고, getche는 입력을 하는 즉시 반영되고 명령어의 역할은 끝이 난다.
   #include <conio.h>
   ....
   ch = getche();     ....즉시입력, 버퍼를 거치지 않는다.

연습문제2
(1) 다음 프로그램을 키보드 입력: ab, abcd, a에 대해 실행해 보시오.
#include <stdio.h>
main()
{
 int c;
 c=getchar();
 putchar(c);
 c=getchar();
 putchar(c);
}
== 결과값 ==
ab[enter]
ab
============
abcd[enter]
ab
============
a[enter]
a
============
a b[enter]
a
============

<getche 써보기>
#include <conio.h>
main()
{
 int c;
 c=getche();
}
=== 결과 ===
c[enter] 하는 순간,
cPress any key to continue ...라고 나온다
============

<같이 써보기>
#include <conio.h>
#include <stdio.h>

main()
{
 int c;
 c=getche();
 putchar(c);
}
== 결과 ==
c[enter] 하는 순간,
ccPress any key to continue ...라고 나온다
==========

[표준입출력 방향 전환] ...파일로 입력하고 파일에다 출력 (텍스트 파일: .txt)
- 표준입출력의 방향전환(redirection)
   표준 입력과 표준 출력 장치를 변경하는 것
       표준입력 방향전환: 표준입력을 키보드 대신에 파일로 변경
       표준출력 방향전환: 포준출력을 화면 대신에 파일로 변경
   DOS 또는 UNIX/Linux에서 제공되는 기능
       C> program < infine            ..... 표준입력 방향전환(infile)
       C> program > outline          ..... 표준출력 방향전환(outfile)
       C> program < infile >outfile  ..... 표준입출력 방향전환(infile, outfile)
- 방향전환 기능을 사용하면
  파일에 저장된 내용으로부터 입력을 받고
  출력을 파일에 저장할 수 있음

※ 실행파일 저장되는 장소: project > settings > debug 탭

사용자 삽입 이미지

#include <stdio.h>
main()
{
 int x, y, z;     
 scanf("%d %d %d", &x, &y, &z);
 printf("Sum is %d\n", x + y + z);
}

사용자 삽입 이미지

사용자 삽입 이미지

[수학용 라이브러리 함수]
- 수학 라이브러리 함수
   #include <math.h>

   삼각함수:                 sin(x), cos(x), tan(x)
   역삼각함수:              asin(x), acos(x), atan(x), atan2(y.x)
   쌍곡선함수:              sinh(x), cosh(x), tanh(x)
   지수/로그함수:         exp(x), log(x), log10(x), pow(x,y)
   기타함수:                 fabs(x), sqrt(x), ceil(x), floor(x), fmod(x,y)
                                 x를 넘는 가장 큰 정수(ceil), x를 넘지 않는 가장 큰 정수(floor), fmod(실수에 대한 나머지 연산 가능), 루트(sqrt)
   대부분의 수학 함수는 double 자료형을 사용함. (output이 double이다!!)
   삼각함수의 각도는 radian 단위

   scanf에서 %lf을 써도 printf에서는 %f를 쓴다!

[난수 생성 함수]
- 난수(random number) 생성 함수
   함수를 호출할 때마다 임의의 숫자를 생성하여 반환하는 함수
   임의의 데이터를 필요로 할 때에 유용
- 난수생성함수 rand()
   #include <stdlib.h>
   i = rand();                 .... 0부터 RAND_MAX사이의 임의의 정수 반환 (RAND_MAX는 32767또는 더 큰 정수로 정의)
   i = rand() % N + 1      .... 1부터 N사이의 정수 난수 생성
   d = (double)rand() / (RAND_MAX + 1)     .... 0과 1사이의 실수 난수 생성

- 난수생성 초기화 함수 srand()    .... 계속 다른 숫자로 만들어주기 위해...
  #include <stdlib.h>
  #include <time.h>
  srand(seed)       ..... 난수생성함수 seed값 지정
  srand(time(NULL)) ... 현재시간을 seed 값으로 사용

사용자 삽입 이미지
1번
#include <stdio.h>

main()
{
 int a, b, c, d, e;
 printf("년월일시를 입력해주세요. ex)2006/12/25 10:10\n");
 scanf("%d/%d/%d %d:%d",&a,&b,&c,&d,&e);
 printf("%d년 %d월 %d일 %d시 %d분", a,b,c,d,e);

}


2번
#include <stdio.h>
#include <math.h>

int main(void)
{
 int a,b,c,d;
 double e;
 
 printf("좌표1을 입력하세요 ex) (2,2)일경우 2,2로 입력 : ",a,b);
 scanf("%d,%d",&a,&b);
 
 printf("좌표2을 입력하세요 ex) (2,2)일경우 2,2로 입력 : ",c,d);
 scanf("%d,%d",&c,&d);

 e=sqrt(pow((a-c),2)+pow((b-d),2));
 printf("두 좌표간의 거리는 %f 입니다.\n",e);
 return 0;
}

3번
#include <stdio.h>
#include <math.h>

int main(void)
{
 float p,q;
 int y;

 printf("연산자 p의 값을 입력하세요 :");
 scanf("%f",&p);
 printf("연산자 q의 값을 입력하세요 :");
 scanf("%f",&q);

 y = floor(p)+ceil(q-1);
 printf("결과는 %d 입니다.",y);
 return 0;
}


by Joe & Soohy 2006. 12. 28. 09:57

2장 C언어의 기초

[식별자]
- 식별자 : 변수, 함수, 상수와 같은 프로그램 구성 요소의 이름
- 식별자 생성규칙
   규칙: 영문자, 숫자, 밑줄문자로 구성, 숫자로 시작하지 않음
   옮은 예: sum, x2000, tax_rate1, Table
   잘못된 예: 4th(숫자로 시작안됨), "x"("로 시작), tax-rate(-안됨), id@host(@안됨)
- ANSI 표준은 31자까지 구별, 일부 컴파일러는 8자까지 구별
   tax_rate1과 tax_rate2는 일부 컴파일러에서는 같은 식별자로 인식(9자라서 뒤에 숫자부분은 짤림)
- 권장사항
   의미를 알 수 있게 부여할 것
   두 단어를 결합한 식별자는 밑줄문자 또는 대문자로 구분함

[예약어]
- 예약어: C언어에서 특별한 용도로 미리 예약된 이름, 키워드, 식별자로 사용 불가능
- 예약어의 예
   자료형: char short int long unsigned float double struct union typedef enum void const signed
   제어문: if else switch case default for while do break continue goto return
   기억장소: auto register static extern volatile
   연산자: sizeof
- 일부 컴파일러에서 사용하는 예약어
  ada, fortran pascal asm
  entry near far huge

[자료형]
- 자료형: 정수, 실수, 문자
   cf) 정수 1과 실수 1의 컴퓨터 내부 표현은 다르다. 문자는 컴퓨터 내부에서 정수로 표현된다.
- C언어의 기본 자료형
  int         정수
  char      문자
  float      실수(보통 정밀도) - 4byte - 32bit
  double  실수(2배 정밀도)   - 8byte - 64bit
  ex) double x;    ... 64bit까지 표현 가능한 실수로 표현
        char c;      .... 문자 변수

[자료형의 표현범위]
- int 자료형
  컴퓨터와 컴파일러에 따라서 16bit 또는 32bit로 표현됨 (우리가 쓰는 컴퓨터는 보통 32bit이다)
  16bit 정수: -32,768(2^15) ~ 32,767(2^15-1)
  32bit 정수: -2,147,483,648(2^31) ~ 2,147,483,647(2^31-1)
- float, double 자료형(실수 표현)
                                 유효숫자        지수범위                   ※ 유효숫자 x 10^지수
  float(32-bit 실수)          6자리          -38 ~ 38
  double(64-bit 실수)      15자리         -308 ~ 308
-char 자료형 (책 409p - ASCII Code; 대문자 A: 65, 소문자 a: 97)
  문자는 8-bit 표기   cf)한글은 16bit
  char 자료형은 8bit 정수 표기에 사용가능
  8 bit 정수: -128 ~ 127

[자료형 수정자]
- 자료형 수정자(modifier)
  자료형 앞에 붙여서 자료형의 표현 범위를 변경
  long int                 긴 정수(32-bit)    ...20년전 컴파일러에는 유용. 16bit 컴퓨터에서 표현이 안되면...
  short int                짧은 정수(16-bit) ... 요즘 컴퓨터는 디폴드가 32bit이기 때문에 적은 자료형 표현에 good
  unsigned int          부호 없는 정수 -> 양수의 표현 범위 2배 증가
  unsigned long int   부호 없는 긴 정수(32-bit)
  unsigned short int  부호 없는 짧은 정수(16-bit)

  자료형 수정자와 함께 사용하는 int는 생략 가능
  long int a;   =   long a;
- unsigned 정수의 표현 범위
  16bit unsigned
  32bit unsigned

사용자 삽입 이미지
연습문제1
현재 자신의 PC가 지원하는 int, char, long, short, float, double 자료형의 크기가 몇 바이트인지 확인해보는 프로그래밍을 해보시오
hint.: sigeof() 함수를 이용하시오

#include <stdio.h>

int main(void)
{
 printf("Size of int is %d \n",sizeof(int));
 printf("Size of char is %d \n",sizeof(char));
 printf("Size of long is %d \n",sizeof(long));
 printf("Size of short is %d \n",sizeof(short));
 printf("Size of float is %d \n",sizeof(float));
 printf("Size of double is %d \n",sizeof(double));
 return 0;
}

====== 결과 값 ======
Size of int is 4
Size of char is 1
Size of long is 4
Size of short is 2
Size of float is 4
Size of double is 8
Press any key to continue
====================

[상수]
- 상수(constant): 편하지 않는 명시적인 자료
- 정수상수: 12   056(8진수)   0x4f(16진수)
- 실수상수: 3.14   1.0    1.5e5
- 문자상수: 'A'    '1'(문자 1이 되면 ASCII값을 같는다)    '\n'    '@'    '한'(한글은 2byte라서 쓰면 안된다)
- 문자열상수: "Korea"    "대한민국"    "한"
   cf) 컴파일러가 "KOREA"를 저장할때  'K''O''R'"E''A''\0' 이렇게 들어간다.

[정수 상수]
- 정수 상수
  10진수: 1~9로 시작하여 표현
  8진수: 0으로 시작하여 표현
  16진수: 0x 또는 0X로 시작하여 표현
  정수 상수는 기본적으로 int형으로 표현됨
  정수 상수가 int형 표현 범위를 넘어서면 컴파일러 판단에 의해서 unsigned 또는 long 형으로 표현됨
- 정수형 지정 접미사 U,L
   1234           int형 정수
   1234L         long형 정수
   40000U       unsigned형 정수
   40000UL     unsigned long형 정수

[실수 상수]
- 실수 상수
   소수점을 포함한 숫자
   3.14
   1.0    =   1.
   0.12   =    .12
  
   과학용 표기법
   6.2e3(=6.2x10^3)  =   6.2E3
   4e-2(=4x10^-2)
 
   실수 상수는 기본적으로 double형으로 표현됨

- float형 지정 접미사 F
   6.2       .....double형 실수
   6.2F     ..... float형 실수

[문자 상수]☆★
- 문자상수: 영문자, 숫자, 특수문자를 작은 따옴표('  ')로 묶어서 표시
- ASCII코드
  문자에 대응되는 정수값을 정한 미국 표준 코드
  ASCII코드는 8-bit 정수로 표현
  ASCII코드의 순서는 숫자와 알파벳 순서와 같음
  '0'과 0은 다르다.    '0'은 정수 48과 같음

연습문제2
하나의 문자를 입력받아 그 문자의 ASCII 코드를 출력하는 프로그램을 작성해 보시오.
hint: scanf()를 이용하여 문자를 입력 받으시오

#include <stdio.h>

int main(void)
{
 char ch;
 printf("ASCII코드로 변환할 문자를 입력해주세요 : ");
 scanf("%c",&ch);
 printf("%c의 ASCII 코드는 %d 이다.\n",ch,ch);
 return 0;
}

======= 결과 값 ========
ASCII코드로 변환할 문자를 입력해주세요 : a
a의 ASCII 코드는 97이다.
Press any key to continue
=======================

[백슬래시 코드]
- 백슬래시 코드 (탈출순서 표시)
  제어용 문자와 문자 표현에 특수한 용도로 사용되는 문자는 backslash(\)와 함께 나타냄   ex)'\n' '\t'
  컴퓨터 내부적으로는 한 문자로 표현됨
- 화면에 출력되지 않는 제어용 문자
  \n      new line: 개행문자(다음줄로)
  \r       줄 처음으로
  \t       tab
  \b      backspace
  \0      null문자(정수 0에 대응되는 문자)
- C언어에서 특수한 용도로 사용되는 문자
  \"      큰 따옴표"
  \'      작은 따옴표'
  \\    backslash \
- 8, 16진수 코드값 표기
  \101  8진수 코드로 표현된 문자(10진수 65 'A')
  \x42  16진수 코드로 표현된 문자(10진수 66 'B')

연습문제3
백슬래쉬 코드와 printf()함수를 이용하여 Mr Kim said " a \ is a backslach."를 출력하는 프로그래밍을 해보시오.

#include <stdio.h>

int main(void)
{
 printf("Mr Kim said \" a \\ is a backslash.\"\n");
 return 0;
}
======= 결과 값 =======
Mr Kim said " a \ is a backslach."
Press any key to continue
======================

[문자열 상수]
- 문자열 상수: 연속된 문자들은 큰 따옴표로("  ")로 묶어서 표시
   ex) "Korea"
- 문자열의 표현: 문자열은 컴퓨터 내부에서 null 문자로 끝나는 연속적인 문자들로 표현
   ex) "Korea" -> 'K''o''r''e''a''\0'
- 주의사항
   "a"는 'a''\0'으로 구성되므로 'a'와 같지 않음
   null 문자열 ""은 '\0'만으로 구성되는 문자열임

[기호 상수]
- 기호상수
  상수에 부여한 이름
  #define을 사용하여 기호상수 정의
  여러 번 사용하는 상수나 값이 바뀔 수 있는 상수에 대해서 유용함

[변수] : 메모리 할당이다!
- 값을 저장할 수 있는, 이름이 부여된 기억장소
- 변수의 선언
   변수를 사용하기 전에 반드시 변수의 자료형을 선언해야 함.
   int p;
   float a, b, c;    ..... 여러 개의 같은 자료형의 변수 선언
   변수를 선언하면 변수의 메모리 공간이 확보됨
   변수 선언 위치: 함수의 시작 부분(다른 위치는 나중에 다룸)
   int main(void)
   {
       변수선언
       프로그램 실행문
    }
   (cf) C++ 언어에서는 변수를 사용하기 전에만 변수 선언을 하면 됨

[변수의 초기화]
- 변수는 초기값을 지정한 다음에 사용해야 함
   int a;
   ...
   b = a;  (X) .... a의 값이 정의되지 않았으므로 잘못

- 실행문에서 초기화
   int a;
   ...
   a = 25;

- 변수의 초기화 선언
   int a = 25;
   float data, sum = 0.0, average;     ...sum만 초기화(권장하지 않음: data와 average에 대한 초기화를 안하고 까먹을 수도 있다.)

[주석]
- 주석(comment)
   /* 코딩과는 관련없고 개발자가 이해하기 쉽도록 남기는 글 */    ..../*   */로 둘러쌓인 부분
   설명문으로서 컴파일러에 의해서 무시됨
   프로그램 저작권, 수정이력, 동작 설명 등의 문서화 용도로 사용
   ex)
   /* hello.c
   * 내용: 자료를 순서대로 나열한다.
   * ver 0.0: 03/6/10 작성자: 홍길동
   */
   int sum;    /* 자료들의 합 */
   int max;    /* 최대값 */
- C++ 주석
  // C++ comment                     ...// 부터 시작하여 줄 끝까지가 주석
  ex) int sum;    //자료들의 합

[수식]
- 수식: 상수, 변수, 함수 호출 또는 이들과 연산자와의 조합
  10          ... 상수
  x            ... 변수
  sin(x)     ... 함수호출     -> x는 라디안 값.  적용전에 #include <math.h>(?)를 헤더에 넣어야 함
  x + 10*y  ...  이들과 연산자와의 조합
- 수식의 값
  대부분의 수식은 값을 가짐, (예외) 반환 값이 없는 함수 호출
  수식의 연산들은 정해진 순서대로 수행하며 수식의 최종 연산 결과가 수식의 값이 됨

[치환문]
- 치환문
   c = a + 10;        ... 오른쪽 수식의 값을 왼쪽 변수에 저장  ('='이 중요)
- 치환 연산자 '='
   C언어에서는 =도 연산자로 취급
   =을 치환연산자 또는 배정 연산자라고 함
   =는 수학적 등호가 아님
   k = 5;
   k = k+1;      .....k에 6이 저장됨
- 치환 수식
   치환 수식: 치환 연산자를 포함한 수식
   왼쪽 변수에 저장되는 값이 치환 수식의 값이다.
   k = 10 + 5;    .....k 값에 15가 저장됨

[연산자]
- 연산자
   변수, 상수, 함수 호출 값(피연산자: 연산의 대상)에 대해서 연산을 수행하여 결과를 제공
   연산은 기본적으로 같은 자료형에 대해서 수행함
       정수들 간의 연산 결과 --> 정수
       실수들 간의 연산 결과 --> 실수
- 산술연산자
   + 덧셈
   - 뺄셈
   * 곱셈
   / 나눗셈        ..... 11/4 = 2         11.0/4.0 = 2.75
   % 나머지       ..... 11%4 = 3
   나머지 연산은 정수에 대해서만 사용 가능

[연산 우선순위와 결합성]
- 연산 우선 순위
  수식에 두 종류 이상의 연산자가 포함되어 있을 때에 연산을 평가하는 순서
   ex) a + b * c  ....b * c 우선 계산
- 결합성
   같은 우선 순위의 연산자에 대한 연산 실행 순서
   좌결합성: 앞(왼쪽)에서 부터              ....a+b-c  -> (a+b)-c
   우결합성: 뒤(오른쪽)에서 부터           .... a = b = c ->a = (b = c)
주요 연산자의 우선순위와 결합성
우선순위    연산자     결합성
     1          괄호()      좌
     2           단항 -        우
     3          * / %       좌
     4           +  -         좌
     5             =             우

[여러가지 수식과 다중 치환문]
pow(a,b) = a^b
- (예) 수학식에 대한 C언어 수식
    b^2-4ac ------> b*b-4.0*a*c
    2x + 1/2 y - 1/z^2  ----> 2.0*x + y/2.0 - 1.0 / (z*z)
- 다중치환문
   x = y = 5     ---> y= 5  ---> x = 5  ---> x, y에 5 저장

[자료형 변환]
- 자료형 자동 변환
   1.0 + 2 -> 1.0 + 2.0 = 3.0     ..... 자료형을 같도록 한 후에 연산 수행
- 수식에서의 자료형 변환
   먼저 작은 정수는 보통 정수로 형 변환
   char, short                               -> int
   unsigned char, unsignedshort    -> unsigned
- 이항 연산의 피연산자는 둘 중 큰 자료형으로 변한됨
   int < unsugned < long < unsigned long < float < double
   ex) s/i+f /d -> i / i + f /d = i+f/d ->i + d/d = i+d -> d+d=d  ====> 결과치가 double로 나온다.
        (s: short, i: int, f:float, d:double)

사용자 삽입 이미지


[형 변환 연산자]
- 수식의 값의 자료형을 명시적으로 변환하는 연산자
   (double)num
   (double)(a+b*c)
- 형 변환 연산자(type)은 단항연산자 우선순위
   (double) a/4 -> ((double)a) /4     ....형 변환 후 나눗셈
   (double)(a/4)                             .... 나눗셈 후 형 변환


사용자 삽입 이미지
1번
#include <stdio.h>
int main(void)
{
 float a,b;
 printf("C = 5/9*(F-32)\n");
 printf("화씨 온도를 입력하세요 : ");
 scanf("%f",&a);
 b = 5.0/9.0*(a-32);
 printf("환산된 섭씨 온도는 %f 입니다. \n",b);
 return 0;
}

2번
#include <stdio.h>
int main(void)
{
 int a,b,c;
 printf("분(minute)을 입력하시오 :");
 scanf("%d",&a);
 b=a/60;
 c=a%60;
 printf("%d분은 %d시간 %d분 입니다.\n",a,b,c);
 return 0;
}

3번
#include <stdio.h>
int main(void)
{
 float a,b,c,d;
 printf("이제부터 실수 a,b,c에 대한 합을 계산합니다.\n");
 printf("먼저 a의 값을 입력해주세요.");
 scanf("%f",&a);
 printf("다음으로 b의 값을 입력해주세요.");
 scanf("%f",&b);
 printf("마지막으로 c의 값을 입력해주세요.");
 scanf("%f",&c);
 d=a+b+c;
 printf("입력하신 실수 %f, %f, %f의 합은 %f입니다.\n",a,b,c,d);
 return 0;
}

by Joe & Soohy 2006. 12. 27. 09:39

교재: C언어 프로그래밍
출판사: 홍를과학출판사
평가기준: 시험 35%, 실습 10%, 출석 5% (중간까지 - 5장까지, max 6장)
강의자료: http://viscom.yonsei.ac.kr/zeroboard/zboard.php?id=lect_6_comp
조교: 최종훈(창조관 252호 / 760-2293/ 공1육-9팔팔7-73오6/ cjhun78@empal.com)

C언어의 장점: 하드웨어를 컨트롤 할 수 있다.

1장. C언어 소개
[C언어 역사]
B언어를 계승하는 언어, 그래서 C언어다.
AT&T의 장비 분사회사: 루슨트 테크놀리지

K&R C언어: 호환성의 문제 발생 > ANSI C언어

[C언어 특징]
이식성: OS가 바뀌어도 소스코드 수정이 필요없음
간결함: 동일한 명령을 소스코드로 작성해도 타 언어보다 간결하고 강력하다
모듈성: 함수를 통한 모듈화가 가능하다 - 많은 사람들이 함께 소스코드르 짜는 것이 가능해졌다.
효율적: low level 프로세싱 가능
작은언어: 적은 수의 키워드를 정의(키워드: C언어에서 고유하게 쓰이는 명형어)
포인터: 메모리를 직접 제어가능(메모리의 중요성 - 데이터를 저장할 수 있는 기본적인 공간이 메모리)
컴파일형 언어: 바이너리 코드 생성 가능(인간이 이해하는 언어(C언어) -> 컴퓨터가 이해하는 언어(바이너리))
cf. 인터프리터 언어: 해석기 -> 해석해서 출력해 줌 : 속도가 느림   ex) 베이직

[간단한 C 프로그램]
#include <stdio.h>    ..... 표준 입출력용 header 파일  (많이 쓰는 함수가 정의)

main()  ...... 반드시 포함
{     .... 프로그램 본체는 {}내에 작성
    printf("Programming in C is easy. \n";  ......출력문
}

- 대소문자 구분
- \n : 개행문자(new line)
- 문장 끝은 semicolon(;)으로 종료
- printf("....")는  출력을 위해서 미리 작성된 프로그램으로서 library 함수라고 함

[C프로그램 개발 과정]
프로그램 개발 과정
텍스트 편집기 -> 원시파일(.c) -> 컴파일러 -> 목적파일(.obj) --- +라이브러리 -->링커 -> 실행파일(.exe)

프로그램 실행
입력 -> 실행파일 -> 출력

[프로그램 작성 및 실행]
프로그램 개발 도구
- 명령어 방식: 개별 명령어를 사용하여 각 단계 수행
                                   DOS                       UNIX
      편집                   edit start.c               % vi start.c
      컴파일&링크        bcc start.c               % cc start.c
      실행                   start                        % a.out

- 통합 개발 환경
      한 프로그램에서 편집, 컴파일, 링크, 실행 기능을 모두 제공

[통합개발환경을 사용한 프로그램 개발]
Visual C++ 프로그램 실행

새 프로젝트 파일 생성
  - [File] - {New] 메뉴 선택
  - Project 탭에서 Win32 Console application 을 선택하고
    Project name: 어쩌구 저쩌구, Location: 프로젝트 생성될 디렉토리 ....그리고 OK 누르면 시작

C 소스코드 만드는 과정
   Files 탭에서 C++ source file을 선택하고
   어쩌구저쩌구 선택해서 file탭에 실행 파일명을 써주고 OK

프로그램 작성시 Ctrl + S를 눌러서 저장
bulid 버튼을 누르면 컴파일과 링킹이 같이 됨
run파일을 누르면 실행

컴파일 & 링크: 탄축키 F7
 0 error(s), 0 warning(s) 라고 나와야 실행이 가능

종료 [file] - [save all] 메뉴 선택


2장 C언어의 기초
[프로그램과 표준 입출력]
- 프로그램: 입력 -> 프로그램(처리) -> 출력
- 표준입출력(standard input and output: stdio)
   표준입력: 키보드 입력
   표준출력: 모니터 또는 터미널로 출력

[출력 프로그램]
int -> 함수의 자료형이 정수형이다.
int를 써주고 마지막에 return 0;을 써주지 않으면 warning이 뜬다.
main() = main(void)
\n -> new line, 즉 enter의 의미다.

[계산을 하는 프로그램]
#include <stdio.h>

int main(void)

{
 int x, y, z;
 x = 500; y=125;
 z = x+y;

 printf("Sum is %d",z);
 return 0;
}

[입력을 포함한 프로그램]
- 변수 값 입력
   scanf("%d", &a);  ....a = (정수입력)   ......베이직의 input = 값 입력의 기능이네~
   scanf("%f", &x); ......x = (실수 입력)  ......float(실수)는 4byte

------------------- &a 에 대해 ----------------
컴파일러 등이 a를 위해 잡아놓은 첫 번째 공간을 &a라고 한다
그 장소에 키보드로 입력받은 값을 &a가 있는 메모리 안에 저장하겠다
주소의 위치를 컴파일러에게 알려주기 위해 &가 붙는다.
----------------------------------------------
#include <stdio.h>

int main(void)

{
 float r,s;
 
 printf("원의 반지름을 입력하세요:");
 scanf("%f",&r);
 s = 3.14159*r*r;
 printf("원의 면적은 %f 입니다. \n",s);
 printf("원의 지름은 %f 입니다. \n",2*r);
 return 0;
}

======== 결과 값 ===========
원의 반지름을 입력하세요: 4
원의 면적은 50.265440 입니다.
원의 지름은 8.000000 입니다.
Press any key to continue
===========================

by Joe & Soohy 2006. 12. 26. 10:19

여가생활로서의 사진촬영

연세대학교 경영정보학과
우리경
이동열
박성조

1. 서 론
모든 가정마다 장롱 안에 고이 간직해 둔 카메라를 본 기억들이 있을 것이다. 과거에 카메라는 집안의 값나가는 물건 중에 하나일 만큼 고가의 물건이었고, 사용하는 데에도 많은 비용과 노력이 필요했다. 언제 쓰일지도 모르는 값비싼 장비를 가정마다 두고 있던 이유는 무엇일까. 아마도 그건 무심코 지나가는 일상이라는 시간 속에서 소중한 무언가를 잡고 싶었던 것이 아닐까. 사진 속에는 행복이 담겨있고, 추억이 녹아있으며, 사랑이 흐른다. 사람의 기억력은 저마다 한계가 있고, 일부는 잊어버린다. 하지만 사진은 항상 그 자리에서 우리를 기다리고, 잃어버린 기억을 다시 되돌려준다. ‘삼국지’라는 소설이 가치가 있는 이유를 세월에 따라 다르게 느껴진다고 말하는 사람이 있는 것처럼 사진도 우리에게 항상 새로운 감성을 보여준다. 기술의 발전은 우리에게 잊히지 않는 가치를 좀 더 쉽고 편하게 다가갈 수 있도록 했다. 과거와 같은 카메라가 있어야만 사진을 찍는 시대를 벗어나 휴대폰, 전자장비에 함께 달려있는 것은 물론이고 심지어 영화에서나 봤을 것 같은 스파이 카메라도 손쉽게 구할 수 있다. 디지털화된 영상, 압축의 기술이 만들어 낸 놀라운 쾌거임이 분명하다. 특히 휴대폰 카메라의 경우 이미 이미지 갈무리 장치(image-capture device)에서 디지털 카메라와 필름 카메라를 제치고 가장 널리 보급된 장치로 올라섰다.
디지털 컨버전스화 휴대화를 통해서 이제 사람들은 언제 어디에서라도 사진을 찍을 수 있고, 편하게 저장하며 다시 돌아볼 수 있게 되어졌다. 필름 카메라를 사용하던 시절 비싼 필름 값 때문에 특별한 날이 아니면 사용하지 않았던 것과는 달리, 이제는 필름에 대한 걱정조차 필요 없다. 저렴한 비용으로 행복이란 가치를 마음껏 담아낼 수 있는 세상을 맞이하게 된 것이다.

2. 사진촬영의 의의
사진 촬영이란 무엇일까. 일반적인 정의를 살펴보면, 찍고자 하는 사물의 상(像)을 렌즈를 통해 감광유제(感光乳劑:필름)에 옮겨 담는 일련의 작업이라고 할 수 있다. 사진촬영 시 필름에 맺힌 상을 잠상(潛像)이라 하는데, 이 잠상은 눈에 보이지 않는다. 잠상은 현상과정을 거쳐 비로소 눈에 보이게 되며, 처리방법에 따라 음화(陰畵:negative picture) 또는 양화(陽畵:positive picture) 어느 쪽으로나 상을 나타낼 수 있다. 이렇게 최종적인 영상을 얻음으로써 실질적인 촬영목적을 다하게 되는데, 폴라로이드와 같은 즉석용 카메라의 경우에는 현상과정이 따로 없기 때문에 촬영행위 자체가 그대로 마무리작업이 된다. 좋은 사진을 얻으려면(촬영의 최후목적) 촬영조건이 완벽해야 하며, 이 완벽한 조건을 갖추기 위해서는 사진가의 정확한 눈과 숙련된 솜씨가 필요하다. 촬영에는 사용 필름에 따라 흑백사진 ·컬러사진 ·적외선사진 등으로, 피사체(被寫體)에 따라 인물사진 ·풍경사진 ·정물사진 ·스포츠사진 ·생태사진 등으로, 장소에 따라 실내사진 ·야외사진 ·수중사진 ·항공사진 등으로 나뉜다. 이런 사진을 찍기 위해서는 바늘과 실의 관계처럼 카메라라는 장비가 함께한다. 카메라의 역사는 기원전 350년전으로 거슬러 올라간다. 아리스토텔레스는 강의 노트에 "어두운 방에 뚫린 작은 구멍으로 들어온 빛이 반대편 벽에 밖의 사물을 비친다"는 기록을 남겼고 서기 1000년경에는 아라비아의 알하젠이 "구멍의 크기에 따라서 영상의 선명도가 달라진다"는 조리개의 기능을 발견하였다. 이러한 원리를 이용하여 그림을 그리는 사생도구로 만들어진 것이 카메라 옵스큐라 (camera obscura) 이다. 카메라 옵스큐라 (camera obscura) 는 이탈리아 어로 "어두운 방"이라는 뜻으로 이후 카메라 옵스큐라에 렌즈가 부착되어 화가들의 사생도구로 애용되었고 이 영상을 그대로 고정시키는 방법에 대한 연구가 화가와 화학자들에 의해 활발히 진행되었다. 은이 빛을 받으면 검게 변한다는 성질을 파악한 영국의 토마스 웨지우드(Thomas Wedgwood)가 1802년 질산은을 이용해 초상화를 만드는 과정을 발표했으나 더 이상 변하지 않게 정착시키는 방법을 찾지 못했다. 1822년 영상을 최초로 정착시키는데 성공한 것으로 알려져 있는 프랑스의 니세포르 니엡스 (Josef Nicephore niepce)는 자신의 사진술을 헬리오그래피 (Heliography) 라고 이름 지었다. 그의 사진 중에서 지금까지 남아있는 가장 오래된 것으로 공인된 사진은 1826년에 건물 옥상에서 찍은 희미한 사진으로 해가 떠서 질 때까지 8시간 동안 장시간 노출이 필요했으므로 사진 속의 그림자가 좌우 양쪽에 모두 있음을 볼 수 있다. 니엡스가 영상을 정착시키는데 성공했다는 소식을 들은 다게르 (Louis Jacques Maude Daguerre) 는 니엡스를 찿아가 공동연구를 위한 조인을 맺었으나 1833년 니엡스가 타계하게 되어 1839년 8월 19일 프랑스 학사원에서 최초의 사진술로 다게르의 다게레오타입 (Daguerreotype) 은판사진법이 공포되었다. 그러나 다게레오타입은 복제가 불가능하다는 단점을 갖고 있었으므로 이 단점을 보완한 칼로타입 (Calotype) 이 1841년 영국에서 탈보트 (William H. Fox Talbot) 에 의해 발표되었다. 이 칼로타입은 종이음화를 이용하여 여러장의 양화를 만들 수 있는 보다 진보된 사진술이었다. 사진술이 공포된지 반세기가 흐른 1888년 9월 29일 광고에 "셔터만 누르세요. 그 다음은 저희가 처리하여 드립니다" 라는 코닥사의 코닥 카메라 1호기 광고 문안이 등장했다. 100장을 찍을 수 있는 최초의 롤필름을 넣은 코닥 카메라로 고객이 찍어온 사진을 만들어주고 새 필름을 넣어 돌려주는 방식은 누구나 사진을 찍을 수 있게 하였다. 그 뒤 1년도 않된 1889년 5월 31일 포토그래픽 져널은 자신이 찍은 사진을 직접 현상할 수 있는 과정을 소개 하고 있다. 이때부터 아마츄어 사진가라는 용어가 생겨나게 되었다. 이후 1935년 코닥사에서는 현재까지도 가장 우수한 컬러 필름으로 사랑받고 있는 코닥크롬 (Kodakchrome) 을 발표하여 새로운 컬러 사진의 세계를 열었다.
앞에서 기술발전에 따른 디지털 카메라의 등장을 잠깐 언급했었다. 사진촬영을 수 많은 사람들의 여가생활로 끌어들인 것은 디지털카메라의 등장이 크다. 국내 디지털 카메라의 산업은 2002년 44만대에서 2004년 125만대로 성장했다. 사용자의 폭이 넓어지면서 서로의 지식과 정보를 공유하는 활동도 활발해졌고, 동호회로 발전하여 현재는 기종별, 회사별, 혹은 비슷한 사진 촬영 취향을 가진 사람들끼리 뭉치기 시작했다.
국내의 초기 디지털카메라 동호회는 ‘디지털 인사이드(이하 DC인사이드)’가 유명하다. 수많은 갤러리의 사진들과, 카메라 관련 정보들 그리고 창의적인 작품들은 디지털 카메라의 매력이 단지 카메라 유저들만을 위한 것이 아니라는 것을 보여주며 일반 대중들의 인터넷 문화 속을 휘젓기 시작했다. 텍스트보다는 이미지에 보이는 감성의 매력을 사람이라면 누구나 느낄 수밖에 없었기 때문이다. 이로 인해서 카메라 시장은 ‘나도 저렇게 찍어보고 싶다,’ 혹은 ‘나는 이렇게 찍으면 더 좋을 것 같다.’라는 생각을 낳으면서 신세대의 필수품이 되었고, 홈페이지나 카페, 그리고 최근의 블로그를 통해 개개인의 추억으로 남겨지기 시작했다. 사진 촬영은 무언가를 찍기 위해서 움직여야하는 활동적인 측면이 강하기 때문에 온라인에서 서로의 사진들을 감상하는 측면에서 벗어나서 ‘오프라인 출사’를 통한 사교와 교육의 장으로 확대되어지고 있다.

3. 사진의 분류
사진은 목적에 따라 응용사진과 순수사진으로 나뉜다. 응용사진이란 실생활에 이용하기 위한 사진으로, 여기에 요구되는 것은 사진의 정보적 가치이다. 아무리 아름답고 감동적인 사진이라도 유용한 정보가 없으면 그 가치를 인정할 수 없다는 것이 응용사진이다. 응용사진은 자료사진과 보도사진 그리고 광고사진으로 나뉜다. 자료사진이란 학문이나 기술 등 전문 분야의 보조적 자료로 쓰이는 사진으로, 일상생활의 정보용으로 쓰이는 사진을 말한다. 여기에는 의학, 생태, 항공, 수중, 마이크로, 고고학. 지리학 등의 인문과학 자료로서의 사진은 물론, 가정에서의 기념사진, 증명사진 등 다양하고 광범위하다. 보도사진이란 신문 잡지 등의 시각적 기사로서의 사진, 즉 사건의 단순 기록적 측면의 사진을 가리키는 말로 자리를 잡아가고 있다. 따라서 보도사진이란 포토저널리즘의 번역어로 이해하면 좋을 것이다. 보도사진에서 중요한 것은 객관성이다. 이것은 촬영자의 주관적 개입을 배재함은 물론이려니와 사건 쪽에 비중을 준다는 뜻을 포함한다. 또한 서술성을 지녀야 한다. 한 장의 사진으로 보도하고자 하는 내용이 무엇이며, 왜 보도해야 하는가를 보여 주어야 하기 때문이다. 그리고 사건은 언제 어느 곳에서부터 일어날지 모르기 때문에 부지런함도 함께 갖추어야 한다. 보도 사진가는 사진가이기 이전에 기자라는 의식부터 지녀야 한다. 즉 보도사진은 사진이기 이전에 기사라는 사실을 염두에 두어 두어야 한다는 말이다. 또 다른 목적의 한 축인 순수사진에 대해서 알아보자. 순수사진은 공리적 목적을 띠지 않은 사진, 자기표현만이 목적인, 소위 예술로서의 사진을 일컫는 말이다. 따라서 ‘순수’란, ‘응용’의 상대 용어로 사용한 말로, 응용사진이 수요자 중심의 사진임에 비해 순수사진은 작가의 생각과 느낌이 작품 제작의 가장 중요한 이슈가 되는 작가 중심의 사진을 가리킨다. 순수사진에는 심상사진, 다큐멘터리 사진, 회화적 사진이 있다. 심상사진이란 그야말로 예술로서의 사진으로 흔히 영어에서 말하는 ‘Serious Photography'를 가리킨다. 진지하게 자기를 표현하는 사진, 느끼고 생각한 바를 충실하게 표현할 뿐 다른 사명이나 목적을 따로 가지고 있지 않은 그야말로 ’진지한‘ 사진을 가리킨다. 기록성을 바탕으로 한 다큐멘터리 사진은 심상사진이 기록성과 무관하게 이루어짐에 비해 인간의 생활 기록을 중심으로 한다. 이 사진은 20세기 들어 사진 적 자각 이후 사진의 주류를 이루고 있는 분야이고, 인생과 사회를 중심테마로 삼는 사진으로, 사람이 살아가는 과정에서 발생하는 모든 문제를 다 포함할 정도로 다루지 못할 것이 없고, 미치지 않는 곳이 없다. 마지막으로 회화적 사진은 작가의 주관적 감성을 담은 것도 아니고, 사회와 인생을 다루는 기록적 사진도 아닌, 사진의 외형성에서 그 심미적 가치를 찾고자 하는 조형적이고 감각적인 사진을 가리킨다.

4. 사진 감상의 방법
사진은 사진가의 어떤 시각이나 사고, 그리고 아마도 뛰어나게 아름다운 풍경이나 요란한 거리의 모습을 보여주기 위해서 찍어 왔다. 기념사진도 닥치는 대로 찍은 것은 아니다. 적어도 ‘어딘가에 다녀왔다.’ 라는 메시지가 거기에 담겨 있는 것이다. 특정한 사진에 어떤 시각이나 생각이 담겨 있는가, 또 어떤 그래픽 요소나 그 시각이나 생각을 보는 사람에게 전달하고 있는가? 사진가가 의도한 것이 무엇인지 알지는 못할지라도 아마 그 사진이 당신에게 있어서 어떤 의미를 갖는 것인지는 알 수 있을 것이다. 사진을 감상하는 요령을 간단히 설명하자면, 우선 사진의 유형을 파악한다. 그 사진이 광고 사진인지, 보도 사진인지, 아니면 취미로 찍은 사진인지 등을 분별 할 필요가 있고, 그것에 따라 사진이 어떤 의도로 해서 찍혀있는 지를 고려해야 한다. 예를 들면, 광고 사진 같은 경우 상품의 정보를 충분히 전달하고 있는가를 말이다. 그 다음 고려 할 것은 이 사진을 통해서 과연 사진사가 강조하려고 하는 것이 무엇인지를 파악해야 할 것이다. 어떻게 그것을 강조하고 있는가? 어떻게 표현하고 있는가? 가장 중요한 부분에는 초점을 정확히 맞춘 반면 다른 부문은 흐릿하게 찍었는가? 등을 살펴보면 된다. 다음으로, 기술적인 문제가 이미지를 돕고 있는가 아니면 방해 하고 있는가를 고려한다. 이는 굉장히 어려운 부분일 수 있으나, 만약 사진이 수정이 되었다면, 자세히 봤을 때, 지나치게 과장돼서 표현 된 부분을 찾을 수 있을 것이다. 또한, 사진이 과연 정서적인 자극을 가지고 있는지도 살펴 볼 필요가 있다. 사진이 슬픔이나 즐거움이나 평화의 느낌을 유발 시키는가? 혹은 피부를 근질거리게 하거나 근육을 긴장시키거나 눈을 뜨게 한다거나, 등의 어떤 자극을 유발 하는지를 살펴 볼 필요가 있다. 마지막으로 사진을 감상하고 비평할 때 주의 할 점은 혼란스러운 말을 피하고, 솔직하고, 명확하게 상대방에게 전달해야 된다는 것이다. 특별히 말로 표현하기 힘들면, 사진에서 어떤 감동을 받았는지, 어떤 점에 주목할 만 했는지, 정직하고, 간단명료하게 언급하면 된다.

5. 카메라의 기본조작
카메라는 빛을 담아내는 기계이다. 때문에 무엇보다도 광량이 중요한 요소이다. 광량을 제어하는 것은 크게 셔터와 조리개를 들 수 있다. 셔터는 그것이 열려 있는 시간의 길이에 의해서 광량을 조절을 한다. 각각의 셔터 속도 수치는 바로 다음 단계의 반(혹은 두 배)의 시간으로 설정되어 있다. 셔터의 종류에는 리프 셔터와 포컬 플레인 셔터로 구분이 되는데 리프 셔터는 모든 셔터 속도에서 플래시 이용이 가능하다는 점과 포컬 플레인 셔터보다 조용하다는 장점이 있지만 작동 원리상 1/500초가 최대 속도인 단점이 있다. 반면 포컬 플레인 셔터는 느린 셔터속도에서는 플래시를 사용 할 수 없는 단점이 있지만 빠른 셔터 속도를 낼 수가 있다. 셔터의 속도로 피사체의 동질감을 표현을 할 수가 있다. 노출을 주는 동안 피사체가 움직이면 흔들리는 상이 나타날 수 있는데 이때 셔터 스피드를 조절을 해 주면은 그 상을 흐르게 또는 정지된 상처럼 보이게 할 수가 있다. 셔터 속도를 빠르게 증가시킨다면 그 상을 정지된 상처럼 보일 것이며, 만일 셔터 속도를 느리게 한다면 그 상은 필름 면에 흐릿하게 흘러간 상처럼 보이게 될 것이다. 조리개(렌즈가 열려 있는 크기)는 필름 면에 도달하는 광선의 양을 조절해 준다. 조리개는 광선을 적게 혹은 많이 받아들이기 위하여 조여지거나 넓혀지거나 할 수 있도록 만들어져있다. 조리개의 크기는 f넘버 혹은 f 스톱으로 표시된다. f스톱 범위에 공통적으로 사용되는 표준화된 수치들은 f1 1.4 2 2.8 4 5.6 8 11 16 31 45 64와 같은 배열이다. 각각의 f스톱은 이전의 반 만큼씩의 광선을 받아들이게 된다. 또한 조리개는 피사계 심도를 조절을 할 수가 있다. 피사계 심도란 사진에서 초점이 맞춰진 지점으로부터, 그 앞뒤로의 선명한 정도를 나타낸다. 즉, 사진에서 초점이 맞춰진 피사체 (사진에선 초점은 유일하게 한 지점에서만 맞추어짐)를 중심으로, 그 앞뒤로 멀어지면 멀어질수록 사진의 피사체들은 조금씩 더 흐려지게 되고, 반대로 가까워지면 가까워질수록 피사체들은 더 선명해진다. 바로 이렇게 흐려지거나 선명해 지는 정도를 그 피사체의 피사계 심도라고 한다. 바로 그 흐려지는 정도가 심할 때 우리는 피사계심도가 얕다고 말하고, 반대일 경우를 피사계심도가 깊다고 말한다. 셔터와 조리개는 동시에 조절이 가능하다. 앞서 보다시피 셔터 스피드를 느리게 할수록, 조리개를 많이 개방할수록 광량을 많이 받는다. 즉, 조리개 값과 셔터 스피드를 조절하면 적절한 광량을 찾아내어 사진을 찍을 수 있게 되는 것이다. 유의해야 할 것은, 조리개를 많이 개방하고 셔터 스피드를 느리게 한다면 광량이 지나치게 많이 들어오는 결과를 가져오게 됨으로 원하는 사진보다 훨씬 밝게 보이는 사진을 얻게 된다. 셔터와 조리개는 서로 상관관계를 가지고 있다. 예를 들어 카메라의 노출계에서 알맞은 셔터 스피드와 조리개 값이 나왔을 때, 한쪽 수치를 한 단계 조정하면 나머지 한쪽 수치는 반대편으로 한 단계 조절을 해야만 한다. 필름에 따라서도 인위적인 광량의 조절이 가능하다. 저감도 필름부터 고감도 필름을 이용한다면 여러 상황 속 에서도 무리 없이 사진을 찍을 수가 있다. 하지만 각 필름마다 입자의 크기가 다르기 때문에 상황에 맞게 사용을 하여야 한다. 저감도 필름으로 갈수록 입자가 고우며 고감도 필름으로 갈수록 입자가 거칠다. 그리고 필름도 조리개와 마찬가지로 한 단계 한 단계가 2배씩 노출이 차이가 난다. 초점은 사진 촬영 시에 원하고자 하는 곳을 선명하게 표현하기 위해서 조절이 필요하다. 뷰 파인더로 들여다보면서 조절 링으로 가장 선명한 때를 찾는 수동조절과, 명암차이 등의 차이를 기계적으로 파악하여 자동으로 잡아주는 자동조절이 있다. 카메라의 기본 조작을 이해하지 못하면 촬영자는 원하는 사진을 얻기가 불가능하다. 반대로 조작을 잘 이해한다면, 자신만의 특별한 기법의 사진을 찍을 수도 있는 것이다. 사진 촬영에 있어서 자신의 카메라를 이해하고 한 몸이 될 수 있는 것은 중요하다.

6. 여가생활로서의 의의
바쁜 사회를 살아가는 현대인들, 눈앞에 이익에 얽매여 있는 나의 이웃들, 그리고 나 자신… 우리는 과연 삶을 어떻게 생각하고 살아가고 있는가? 인생에 있어서 물론 풍요와 넉넉함은 미덕이 될 수도 있다. 그런 풍요와 눈에 보이지 않는 막연한 목표를 위해 맹목적으로 이 시대를 살아가고, 한 번 뿐 인 삶을 의미 없이 그렇게 흘러가는 대로 나 자신을 내버려 둔 다면 이보다 허망한 일이 어디 있을까? 지금 우리에게 필요한 것은 나를 돌아보면서, 여유를 갖고 보다 사람답게 살기 위해 의미 있는 여가 활동을 찾고, 그로 인해 문화 교양을 쌓는 것이라고 할 수 있겠다. 여가란, 사전적인 정의에 따르면, 생계를 위한 필요성이나 의무가 따르지 않고, 스스로의 만족을 얻기 위한 자유로운 활동을 행하는 일이다. 즉, 일상에서 벗어나 심신에 지친 자신을 위로하고, 여유를 갖으며, 재충전을 하는 활동 이라고 할 수 있겠다. 사진촬영은 일상에서 벗어나 자기 자신을 돌아보고, 여유를 갖게 하는 여가 중 하나로서, 누구나 쉽게 접할 수 있으며 이미 널리 보편화 되어 있다. 사진이라는 것은 자신이 원하는 한 순간을 포착해 이미지로 남겨 시간이 지나도 그 순간을 소유, 음미하면서 여유를 즐기고, 과거를 회상하며 자신을 되돌아 볼 수 있게 하는 매개체이다. “사진은 독백이고, 또 하나는 나의 대화이다” 사진은 리얼리티 속에서 발견된 자신의 무의식이 만들어 낸 산물이고 자기의 내적 영상이다. 독일의 현대 사진가 ‘안드레 겔프케’가 한 말이다. 사진은 홀로 네모진 뷰파인더 안에 자기만의 느낌대로, 또 생각대로 셔터를 눌러야 한다. 그 시간만큼은 100% 자기의 주관으로 사물을 보고 영상을 담아낸다. 의지력이 약한 사람이라 할지라도 그 순간만큼은 누구의 의지를 받을 수 없다. 획일화를 추구 하고, 강요하는 현대 사회에 사진을 통해서 자신이 생각하는 것을 표현하고, 표출 할 수 있는 것이다. 현대 문명의 이기 속에 더욱더 친근하게 다가 온 것이 사진이라는 매개체 이다. 핸드폰 카메라, 디지털 카메라는 사진촬영을 더욱더 일상적인 것으로 바꾸어 놓고 있다. 무심코 지나치는 일상을 담고, 그것을 통해 다른 관점에서 느끼고, 생각하며, 자신이 몰랐던 자신의 세계를 발견하고 계발 할 수 있는 계기가 될 수 있을 지도 모른다. 독백처럼 나와 대화하며 무의식의 자기만의 세계를 표현 하고, 그것을 통해 자신을 한 단계 더 업그레이드 시키는 단순이 놀 거리가 아니라, 의미 있는 여가 문화 교육으로서의 콘텐츠가 사진촬영이지 않은가 하고 생각해 본다.


참고 문헌 및 웹사이트
1. 휴대폰 카메라 디카-필카 보급수 추월
2. 삼성 휴대폰, 북미 고화소 카메라폰 시장 선점 (1페이지 카메라폰 자료 사진)
3. 007 스파이 카메라 사진자료
4. 카메라의 역사
5. 니세포로 니엡스의 건물 옥상 사진(1826)
6. 1888년 코닥카메라광고 “셔터만 누르세요 그 다음은 저희가 처리해드립니다”
7. 사진 촬영의 정의 - 네이버 백과사전
8. 'PMA 2004'로 바라보는 2004년 디지털카메라 동향
9. 디시인사이드
10. D50club 클럽
11. 기타 참고 자료
by Joe & Soohy 2006. 12. 21. 05:43
by Joe & Soohy 2006. 12. 10. 15:33
by Joe & Soohy 2006. 12. 10. 14:00
by Joe & Soohy 2006. 12. 10. 13:29
by Joe & Soohy 2006. 12. 10. 13:22

HDLC (High-Level Data Link Control)

HDLC[에이치 디 엘 씨]는 데이터 통신의 OSI 7계층 모델의 제2 계층인 데이터 링크 계층에서 사용되는 전송 프로토콜로서, X.25 패킷 스위칭 네트웍 내에서 사용된다. HDLC에서 데이터는 프레임이라고 불리는 단위로 이루어지며. 프레임은 네트웍을 통해 송신되고, 도착지에서는 성공적으로 도착하였는지를 검증한다. HDLC 프로토콜은 데이터 프레임 내에 데이터 흐름을 제어하고 에러를 보정할 수 있도록 하기 위한 정보를 끼워 넣는다.

HDLC는 OSI라고 불리는 산업계의 통신참조모델 제2 계층 내의 프로토콜 중에서 가장 일반적으로 사용되는 프로토콜 중 하나이다 (제1 계층은 실제적으로 전자신호를 발생시키고 수신하는 등의 작업들이 관련된 상세한 물리 계층이며, 제3 계층은 네트웍에 관한 지식을 가지는데, 이는 데이터를 어디로 전달하고 또 보내야하는지를 나타내는 라우팅 테이블에 대한 접근을 포함한다. 전송할 때, 제3 계층 내의 프로그램은 보통 발신지와 수신지의 네트웍 주소를 포함하고 있는 하나의 프레임을 생성한다). HDLC (제2 계층)는 하나의 새롭고 커다란 프레임에 데이터링크 제어정보를 추가함으로써, 제3 계층 프레임을 캡슐화한다.

HDLC는 1970년대에 메인프레임 컴퓨터 환경의 IBM 대형고객사이트에 의해 광범위하게 사용된 SDLC 프로토콜로부터 발전한 ISO 표준이다. HDLC 내에 있는 본질적인 SDLC의 프로토콜은 NRM (Normal Response Mode) 이라고 알려지고 있다. NRM에서, 보통 메인프레임 컴퓨터가 주 스테이션이되어, 같은 지역내이거나 또는 원거리지역에 있어 전용회선으로 연결되어 있는 보조 스테이션에 데이터를 보낸다.


HDLC의 변종들 역시 X.25 통신 프로토콜을 사용하는 공중네트웍이나, 근거리통신망이나 광역통신망 두 가지 모두에 사용되는 프로토콜인 프레임 릴레이를 위해 사용된다.

HDLC의 X.25 버전에서는 데이터 프레임이 하나의 패킷을 포함한다 (X.25 네트웍은 데이터 패킷이 라우터에 의해 감지되는 네트웍 상황에 의해 결정된 경로를 따라 자신들의 목적지로 이동한 후, 최종목적지에서 원래의 순서대로 재조립된다). HDLC의 X.25 버전은 양단에서 모두 듀플렉스 링크를 통해 통신을 개시할 수 있는 peer-to-peer 통신을 사용한다. HDLC의 이러한 모드를 LAPB라고도 한다.

다음 표에 HDLC의 변종과 용도에 대해 정리하였다.

HDLC의 부분집합들 용 도
NRM (Normal Response Mode) 특히 SDLC를 사용하는 멀티포인트 네트웍
LAP (Link Access Procedure) 초창기의 X.25
LAPB (Link Access Procedure, Balanced) 현재의 X.25
LAPD (Link Access Procedure for the ISDN D channel) ISDN의 D 채널과 프레임 릴레이
LAPM (Link Access Procedure for Modems) 에러교정 모뎀(V.42 라고 표기된)

by Joe & Soohy 2006. 11. 27. 15:58
정통부 '거대조직' 되나 ‥ 사실상 방송위원회 흡수 | 시사 뉴스 2006/10/27 20:38

http://blog.naver.com/hki405/30010231407


정통부 '거대조직' 되나 ‥ 사실상 방송위원회 흡수

[한국경제 2006-10-27 17:46]    
방송과 통신을 아우르는 통합규제기구인 방송통신위원회 설립은 사실상 정통부가 방송위를 흡수한 형태여서 정통부가 공룡화된다는 비판이 제기되고 있다.

참여정부는 출범 후 '작은 정부보다 일 잘하는 정부를 지향한다'는 논리를 내세워 정책 현안이 생겨날 때마다 새로운 부처나 위원회 등을 만들어 내고 있기 때문이다.

국방부 산하에 '국방개혁 2020' 명목으로 방위사업청을,지방균형발전을 모토로 건설교통부 아래 행정중심복합도시건설청을 신설하더니 이번에 방송통신위원회까지 보탠 게 대표적인 사례다.

비록 정부가 최근 국무회의에서 정부조직법개정안을 의결,식품의약품안전청을 없애는 등 중앙행정기관 개수를 기존 47개에서 46개(18부 5처 16청 7위원회)로 1개줄이기로 하고 유명무실한 위원회를 통폐합키로 했으나 여전히 비대하다는 시각이 많다.

참여정부 출범 전인 2002년 말 364개였던 정부 위원회는 지난해 말 현재 381개로 17개가 늘었다.

같은 기간 대통령 소속 위원회는 18개에서 25개로 38.8%,국무총리 소속 위원회는 34개에서 47개로 38.2% 증가했다.

각종 추진단까지 합하면 420여개에 달한다.

이렇다 보니 장차관급에 상당하는 자리도 27개,해당 공무원이 2만6000여명 증가했다.

정무직 자리만 따지면 무려 31개나 증가했다.

규제는 규제대로 늘어났다.

1999년 7124건이던 정부 규제는 지난 2월 말 현재 8053건으로 증가했다.

비대해진 정부조직은 '일 잘하는 정부를 지향한다'는 논리를 무색케 하고 있다.

오히려 부실운영에다 예산만 낭비하고 있다는 비난을 사고 있다.

실제로 기획예산처에 따르면 381개 정부 위원회 중 32개 위원회는 2003년과 2004년 2년 연속 단 한번도 회의를 열지 않았다.

이 가운데 10개 위원회는 지난해 10억원의 예산을 배정받아 국민 혈세를 낭비한 것으로 나타났다.

특히 대통령 소속 및 국무총리 소속 위원회의 올해 예산은 지난해보다 423억원 늘었다.

각종 위원회 정비와 공무원수 증가 억제 등으로 작은 정부를 실현해 국가 재정지출을 줄여가야 한다는 지적이 끊임없이 나오는 까닭이다.

비대한 참여정부의 경쟁력은 국가경쟁력 저하로 고스란히 반영되고 있다.

올해 스위스 국제경영개발원(IMD)이 발표한 국가경쟁력 평가에서 참여정부의 '정부행정효율'은 60개국 가운데 47위에 불과했다.

지난해보다 16단계나 추락했다.

김홍열 기자

'10년 표류' 방.통융합안 나오기까지‥"아예 조직 묶어 버리자"


[한국경제 2006-10-27 17:48]    

"정말입니까? 방송통신융합안이 나왔어요?" 지난 8월 출범한 방송통신융합추진위원회(융추위)가 정보통신부와 방송위원회를 통합하는 방통융합안을 내놓은 27일 관련업계는 믿기지 않는다는 반응을 보였다.

지난 10년간 갑론을박만 했던 난제 중의 난제를 융추위가 60여일 만에 해결했다니 놀랍다는 것.

융추위 민간위원 14명은 난제에 대해 의외로 간단하게 해답을 내놓았다.

융합안이 마련된 것은 지난 25일.정통부와 방송위의 당연직 위원 6명을 뺀 채 마라톤회의를 한 결과 "아예 묶어버리자"는 의견이 도출됐다.

이 안이 이날 밤 만장일치로 채택된 덕분에 27일 전체회의에서도 무난히 최종안으로 채택됐다.

융추위가 마련한 통합안은 정통부와 방송위를 통합하면서도 고유 기능을 최대한 살리는 안이라고 할 수 있다.

정보통신 분야에서 먹거리를 찾아야 하는 정통부의 기능과 방송 독립성을 유지해야 하는 방송위의 역할을 보장하고 있다.

일각에서는 두 조직을 물리적으로 합친 것일 뿐이라는 지적도 있지만 세계적으로 방통융합이 대세란 점을 감안하면 조직통합만한 묘안이 없다는 평가가 지배적이다.

통합안은 정통부의 산업진흥 역할과 방송위의 방송 공익성 역할을 2명의 부위원장(차관급)이 나눠 맡게 돼 있다.

두 부위원장이 대립할 경우에는 위원장이 최종 결정을 내리는 구조다.

인터넷TV(IPTV)와 같은 방통융합 서비스를 둘러싼 갈등이 위원장 직권으로 해소될 수 있는 장점이 있다.

정통부와 방송위의 대립으로 IPTV 논의가 전혀 진척되지 않는 지금에 비하면 의사결정이 빨라지게 된다.

통합안은 또 서비스와 콘텐츠에 관한 정책과 규제를 한 기구에서 관장하게 함으로써 가치사슬을 매끄럽게 하는 의미도 크다.

기술 발달로 방송과 통신의 경계가 갈수록 애매해지고 있어 정책과 규제를 담당하는 기구 통합은 불가피한 측면이 있다.

특히 콘텐츠와 관련해 그동안 문화관광부에 속해 있던 게임을 통합기구에 넣음으로써 진흥정책과 적절한 규제를 동시에 구사할 수 있게 됐다.

정통부와 방송위를 통합키로 한 것은 방송 정책과 통신 정책을 각기 다른 부서에서 관장하게 한 현 구도로는 세계적인 통방융합 흐름에 뒤처지게 된다고 판단했기 때문이다.

미국과 일본은 통방융합시대에 대비해 오래 전에 통신과 방송에 관한 정책 및 규제 기구를 완전히 하나로 통합했다.

싱가포르나 홍콩도 규제기구는 별도로 두면서도 정책 부문은 통합했다.

이탈리아와 호주는 정책은 정책대로,규제는 규제대로 기구를 통합했다.

융추위 통합안은 미국 일본식에 가깝다.

관련 산업계는 융추위 통합안이 산업 발전에 큰 도움이 될 것으로 보고 있다.

그동안 방통융합 관련법이 없어 사업을 제대로 못해온 업체들은 통합안 마련을 계기로 법제화가 조속히 이뤄지길 바라고 있다.

2년여 전에 IPTV 서비스 준비를 마친 KT는 통합안이 최상이라는 반응을 보였다.

KT는 통합이 이뤄지면 방송과 통신을 묶은 다양한 부가서비스를 개발할 수 있고 이에 따른 중소업체의 콘텐츠 개발과 관련 장비 시장이 뒤따를 것으로 예상하고 있다.

하나로텔레콤도 TV포털인 하나TV 사업을 확장해 IPTV 서비스로 전환할 수 있다.

내년부터 본격적으로 화상전화 서비스에 들어갈 SK텔레콤 KTF 등도 휴대폰을 통해 방송 등 관련 콘텐츠를 부가 서비스로 제공할 수 있다.

하지만 통합안이 법제화돼 시행되기까지 적잖은 논란이 일 가능성이 있다.

세부사항을 놓고 정통부와 방송위가 사사건건 이견을 노출할 수도 있고 방송위 직원의 직급과 임금 등에 대한 조정도 갈등을 빚을 수 있다.

또 내년에 대통령 선거 바람이 거세지면서 방통융합 작업이 표류할 가능성도 있다.

고기완 기자

by Joe & Soohy 2006. 11. 25. 18:01
[기자수첩]IPTV '네탓'은 그만

[전자신문 2006-11-16 08:02]    

 IPTV 진입 논쟁이 해를 넘길 분위기다. 벌써 3년째다. 지금도 ‘제3의 법’을주장하는 정보통신부와 ‘반드시 방송법’을 주장하는 방송위원회 간에 한치의 양보도 없다. IPTV 진입 방식 해결이방송통신융합기구 개편보다 더 힘들다는 지적도 있다.

 치열한 초고속인터넷 시장 경쟁에 내몰려 수익 악화에 괴로워하는 통신사업자들은 IPTV를 통해 가치 창출에 나서야 한다.

 KT와 하나로텔레콤 등 통신사업자는 ‘규제만 해결되면’ 즉시 사업을 시작할 수 있다고 말한다. 이 ‘규제’라는 게 언뜻 당국의 진입 규제로 보인다. 하지만 본질은 KBS·MBC·SBS 등 지상파 방송사의 실시간 재전송 여부다.

 지상파 방송 재전송은 신규 매체가 도입될 때마다 핵심 쟁점이었다. 그만큼 킬러 서비스란 얘기다. 위성방송(스카이라이프), 위성DMB(티유미디어)도 이 문제를 극복하지 못해 경영에 어려움을 겪었다.

 그러나 양방향 서비스를 지향하는 IPTV마저 3년 동안 실시간 지상파 재전송에 의지해야 하는지 다시 한번 짚어볼 필요가 있다.

 규제기관의 치열한 철학 경쟁으로 규제가 해결되지 못한다면 사업자 스스로 돌파구를 마련했어야 했다.

 브리티시텔레컴(BT)의 IPTV 관계자는 지난달 서울에서 열린 ITU-T IPTV 국제회의에 참석해 자사의 서비스를 소개했다.

 “오프컴의 규제 때문에 늦어졌다”는 기자의 질문에 그는 “규제기관의 방향을 예측하고 충분히 고려하면서 시작해 늦지 않았다고 생각한다”고 말했다.

 물론 한국과 영국의 통신 규제 환경은 다르다. 영국은 우리보다 먼저 기구를 통합했고, 웬만해선 간섭하지 않는 쪽으로 규제를완화하고 있다. 그렇지만 통신 사업자들이 규제 기관 탓만 해서는 곤란하다. 본의와 다르게 무능한 것으로 비칠 수 있다.

 내년에도 IPTV 규제 환경은 크게 다르지 않을 것으로 보인다. 내년 대선을 앞두고 통합기구 설립조차 불투명한 상황이다. 무작정 기다린다고 해결되지 않는다.

 지금이라도 통신 사업자들은 기득권을 고수하려는 방송 사업자에 적극적인 신호를 보내고 통신과 방송산업의 윈윈 방향을 제시, 돌파구를 스스로 마련해야 한다. 안 되면 없이 가도 그만이다. 시간이 너무 없다.

손재권기자·u미디어팀@전자신문, gjack@

'No.1 IT 포털 ETNEWS' ⓒ 전자신문 & 전자신문인터넷, 무단전재 및 재배포 금지

<전자신문인터넷은 한국온라인신문협회(http://www.kona.or.kr)의 '디지털뉴스 이용규칙'에 따른 저작권을 행사합니다>

by Joe & Soohy 2006. 11. 25. 14:54
유럽 IPTV 가입자, 2010년 1700만 명

[전자신문 2006-11-21 11:38]    

 유럽 IPTV 서비스가 탄력을 받고 있다. 화면이 매끄럽지 못하고 리모컨이 제대로 작동하지 않는 등 일부 불만 사례도 접수되고 있지만 당분간 폭발적인 성장세를 이어갈 것이라는 분석이 지배적이다.

 가트너그룹은 유럽 지역에서만 오는 2010년께 1700만 명이 IPTV를 시청할 것이라고 전망했다.

◇급증하는 가입자=AP에 따르면 홍콩 PCCW는 최근 65만 가입자를 돌파했다. 프랑스도 IPTV 가입자가 올해 초 기준으로160만명을 넘어섰다. 스페인 통신사업자 ‘스페인 텔레포니카’도 30만 가입자를 확보했다고 전했다. 유럽 시장을 겨냥한 신규사업자도 크게 늘고 있다. 독일 도이치텔레콤은 독일·프랑스·헝가리·크로아티아 지역에서 새로 서비스를 시작했으며 스위스‘스위스콤’도 IPTV 서비스를 선보였다. 스위스콤과 도이치텔레콤은 미국 AT&T와 마찬가지로 마이크로소프트 IPTV플랫폼을 기반으로 서비스를 준비 중이다.

◇최대 매력은 ‘스포츠’=기존 케이블TV 가입자를 IPTV로 끌어 들이는 매력은 단연 ‘스포츠’ 콘텐츠였다.전화·텔레비전·인터넷 서비스 등 한꺼번에 3가지 서비스를 받을 수 있는 점과 함께 고선명 디지털 화면을 기반한 콘텐츠를 IPTV서비스 확산의 주요 요인으로 꼽았다. 콘텐츠 중에서도 ‘스포츠’는 IPTV와 궁합이 가장 맞았다. 실시간 중계 서비스를 볼 수있다면 언제든지 IPTV에 가입하겠다는 열광적인 스포츠 팬이 줄을 잇고 있다고 AP는 전했다.

 가트너그룹의 아담 다음 애널리스트는 “시장조사 결과 유럽 케이블TV 가입자의 10∼15%는 지금 당장 IPTV로 바꾸고 싶다는 잠재 고객”이라고 말했다.

◇2010년 1700만 가입자 “거뜬”=물론 걸림돌도 있다. 아직 기술적 문제로 리모컨으로 다른 채널을 선택할 때 일부 화면이잠시 정지하는 현상이 발생한다. 간혹 리모컨 신호를 셋톱박스가 제대로 인지하지 못할 때도 있다. 일부 지역에서는 초고속망 속도가지나치게 느려 가입자의 불만을 사고 있다.

 여기에 인터넷 동영상 업체도 IPTV 서비스의 위협 요소다. 아마존닷컴·아이튠즈(애플컴퓨터)·유투브 등은 동영상을 무한정무료로 내려 받을 수 있어 IPTV 서비스와 충돌이 불가피한 상황이다. 하지만 주요 시장조사 업체는 일부 악재에도 불구하고 유럽IPTV 가입자는 올해 말 330만명, 내년에는 이보다 두 배 정도 성장하며 오는 2010년에는 1700만명까지 늘어날 것으로내다봤다.

강병준기자@전자신문, bjkang@

'No.1 IT 포털 ETNEWS' ⓒ 전자신문 & 전자신문인터넷, 무단전재 및 재배포 금지

<전자신문인터넷은 한국온라인신문협회(http://www.kona.or.kr)의 '디지털뉴스 이용규칙'에 따른 저작권을 행사합니다>

by Joe & Soohy 2006. 11. 25. 14:51
'인터넷TV(IPTV) 도입 방안' 전문가 좌담

[서울경제 2006-11-22 18:57]    


"網구축 기간통신사업자 인센티브 줘야"
"지상파 재전송 제약땐 결국 소비자들만 피해"

▦참석자: 강재원 동국대 신문방송학과 교수, 강태영 연세대 신문방송학과 교수, 이내찬 한성대학교 경제학과 교수, 이상우 정보통신정책연구원(KISDI) 통신방송정책연구실 연구위원, 현대원 서강대학교 신문방송학과 교수

▦사회:강태영 교수

통신방송 융합 서비스 도입 문제가 계속 삐걱거리고 있다. ‘미래의 TV’로 불리는 인터넷TV(IPTV) 서비스가대표적인 사례다. 미국을 비롯한 대다수 선진국에서는 오래 전부터 IPTV 서비스가 시작됐지만 정작 IT 강국이라는 한국에서는이제서야 관련 법규를 만들고 있다. 지난 10월 IPTV 시범사업자가 선정되고, 방통융합의 핵심의제 중 하나인 기구개편 방안도도출됐지만 IPTV 상용화 여부는 여전히 안개 속을 헤매고 있다. 조만간 방통융합위원회로 하나로 합쳐질 정보통신부와 방송위원회가의견을 조정하지 못하고 있기 때문이다.

방송위원회는 IPTV는 방송 서비스이기 때문에 방송법 개정을 통해 도입해야 한다는 입장이다. 반면 정통부는 IPTV를광대역융합 서비스로 규정, 광대역융합서비스법을 제정해 도입해야 한다고 맞서고 있다. 또한 정통부는 방통융합 기구 문제와 관계없이IPTV를 도입해야 한다는 입장인 반면 방송위원회는 방통융합위원회 설치가 우선이라고 주장한다. 방송계와 통신업계는기간통신사업자의 통신망 개방, 시장 진입 규제, 사업권역, 지상파 재전송 문제 등을 놓고 생존권 차원의 대립을 보이고 있다.

이에 따라 일부에서는 내년으로 예정된 IPTV 상용화 자체가 불가능한 것 아니냐는 우려도 나온다. 올해 안에 법제화가이뤄진다 해도 시행령, 시행규칙, 사업자 선정 등의 일정을 감안하면 내년 하반기 이후에나 상용화가 가능하기 때문이다.서울경제신문은 전문가들을 초청, 대표적인 통방융합 서비스인 IPTV 도입 방안에 대한 의견을 들어보는 자리를 마련했다.

▦강태영 교수= IPTV 서비스의 성격과 적용 법률을 놓고 정통부와 방송위원회의 힘겨루기가 계속되고 있습니다. 이보다는난마처럼 얽혀있는 통신업계와 방송업계, 포털업계의 갈등이 더 큰 문제인 것 같습니다. 우선 기간통신사업자의 통신망 개방 문제부터살펴보죠. 케이블TV 업계와 포털 업계는 KT 등 기간통신사업자가 IPTV망을 개방해야 한다고 주장하고 있습니다만….

▦현대원 교수= 망 개방은 공정한 경쟁, 산업 활성화와 연결되는 문제지만 먼저 어느 정도 망이 구축되고 난 후에논의해야 할 성격을 갖고 있습니다. 망을 구축하는데 막대한 투자비가 들기 때문에 기간통신사업자에게 인센티브를 부여하는 한편 정책로드 맵을 갖출 필요가 있습니다. 미국의 경우에도 망 구축에 따른 자연독점을 일정 기간 보장하고 있습니다.

▦강재원 교수= 기간통신사업자의 망 개방 문제는 어디까지가 프리미엄 망인지 여부부터 따져봐야 합니다. 기간통신사업자가프리미엄 망과 일반 망으로 망을 이원화한 후 자사가 제공하는 IPTV만 프리미엄 망을 이용하도록 한다거나 다른 사업자가 프리미엄망을 이용할 경우 특별 과금을 부과하는 것을 금지해야 한다는 것이 망 개방 문제의 핵심입니다. 따라서 망을 어느 정도 구축하고,비즈니스 모델이 윤곽을 나타낸 후에 논의하더라도 늦지 않습니다.

▦이내찬 교수=IPTV의 경우 시장이 성장하면서 공정경쟁 문제가 부각될 가능성이 있는 만큼 우선 서비스는 실시하되 현 시점에서 미래의 상황에 대비하는 논의는 필요하다고 봅니다. 시장의 성장과 공정경쟁은 동전의 양면과도 같습니다.

▦강태영=기간통신사업자의 겸영 문제도 이슈로 거론됩니다. 케이블TV 업계에서는 시장 지배력 전이를 막기 위해 기간통신사업자의 IPTV 사업 진입은 허용하되 자회사로 분리해야 한다고 주장하고 있는데요.

▦현대원= 자회사로 분리한 KT의 스카이라이프나 SK텔레콤의 TU미디어가 지금 어떤 상태에 있는지를 보면 결론은명확합니다. 콘텐츠의 수급, 자본의 안정적 운영 등의 측면에서 봤을 때 IPTV 사업을 자회사 체제로 가게 되면 스스로 족쇄를채우는 것이나 다름없습니다. 소비자의 입장에서 생각하고, 특히 공익이라는 관점에서 봐야 합니다.

▦강재원= 사업자의 지위를 취득하면 누구나 IPTV 사업을 시작할 수 있도록 해야 합니다. 기간통신사업자의 IPTV시장 진입을 막는 것은 문제가 있습니다. 시장 지배력 전이 문제는 나중에 불공정경쟁 규제로 대응하는 것이 맞는 수순입니다.

▦이상우 연구위원= KT의 경우 자본과 망을 갖고 있기 때문에 시장 지배력을 기준으로 거대한 사업자로 부상할 가능성은있습니다. 하지만 IPTV 사업을 시작도 하지 않았는데 시장 지배력 전이를 문제 삼는 것은 바람직하지 않습니다. 자회사 논쟁은신중하게 접근해야 합니다. 기업을 강제로 나누는 것은 효율성을 크게 떨어뜨릴 수 있습니다.

▦현대원= IPTV의 경쟁력은 서비스와 콘텐츠에서 나옵니다. 망을 갖고 있다고 해서 시장을 지배할 것이라고 보기는어렵습니다. IPTV도 결국은 KT가 갖고 있는 망을 함께 이용하는 것이기 때문에 별도로 자회사를 만드는 것은 비효율적입니다.KT와 SKT가 스카이라이프와 TU미디어라는 자회사를 설립한 것은 이용하는 망이 전혀 다르기 때문입니다.

▦이내찬= 미국이나 일본의 사례를 봤을 때 자회사로 분리하는 것은 인위적입니다. 하지만 산업진흥과 규제는 동전의 양면과같습니다. 당근과 채찍이 모두 필요하다는 얘기입니다. 시장 상황을 봐가면서 공정경쟁을 위한 룰을 만들어 시장 지배력 남용 및전이 등에 대해 규제하는 것이 바람직합니다.

▦강태영= IPTV의 경우에도 이동통신처럼 시장점유율을 제한하자는 주장이 있습니다. 일정한 상한선을 두거나 사업권역을규제하자는 것이죠. IPTV의 사업권역과 관련해 정통부는 사업자 자율에 맡기는 전국 사업권역을 주장하는데 반해 방송위원회는 전국77개 지방권역을 유지해야 한다는 입장을 지키고 있습니다.

▦현대원=기본적으로 소비자의 입장에서 IPTV 서비스는 보편적으로 접할 수 있어야 합니다. 전국 어디에 있든 자기가망(사업자)을 고를 수 있어야 합니다. 특정 사업자에게 특정 지역에서만 서비스 하라는 것은 비효율적일 뿐 아니라 국민이 갖고있는 보편적 접근권에도 위배되는 것입니다. 케이블TV는 강한 지역적 기반을 갖고 있습니다. 소비자들은 통신사업자와 지역케이블TV 중 선택할 수 있는 권리를 가지고 있습니다. 다만 시장점유율에 대해서는 엄격한 제한을 둬야 한다고 봅니다. 그래야제2, 제3의 사업자가 뛰어들 수 있습니다.

▦이상우= 시장점유율을 제한하면 소비자는 자신이 원하는 서비스를 받지 못하는 경우도 생기게 됩니다. 시장점유율 제한을주장하는 근거도 따지고 보면 소유의 다원성을 통해 내용의 다양성을 확보하겠다는 것입니다. 다양성이 확보되면 소비자들은 알아서골고루 소비하게 됩니다. 인위적으로 규제할 일이 아니라는 것입니다. IPTV 서비스를 시작도 하기 전에 시장점유율 규제를논의한다면 앞뒤가 뒤바뀐 것이나 마찬가지입니다.

▦이내찬= IPTV사업자와 기존 케이블TV 사업자와의 경쟁에서 누가 시장점유율을 기준으로 우위에 설지는 아무도모릅니다. 다만 어떤 나라, 어느 시장이든 시장지배자의 점유율이 50%를 넘어가면 문제가 발생하기 마련입니다. 유럽연합(EU)도50% 이상은 문제로 간주하고, 40% 이상은 시장을 주의 깊게 봐야 한다고 판단하고 있습니다. 한쪽으로의 쏠림 현상이 없도록균형발전을 유도하는 게 필요합니다.

▦강태영= 지상파 재전송 문제에 대해서도 첨예한 공방이 펼쳐지고 있습니다. 현재 통신업계에서는 IPTV의 실시간 지상파재전송은 국민의 ‘알 권리’에 해당하는 것은 물론 케이블TV 업계와의 공정경쟁을 위해서도 필요하다는 입장입니다. 반면방송업계에서는 IPTV의 본 방송 개시 후 일정기간 지상파 방송의 재전송을 유보해야 한다고 주장하고 있습니다.

▦강재원= 지상파 방송은 일종의 보편적 서비스인 만큼 공익을 위해 최소한 시청자가 무료로 볼 수 있도록 보장해야합니다. 현재 지상파 이동멀티미디어방송(DMB) 등에 서비스되고 있는 지상파 방송 프로그램이 IPTV에도 재전송돼야 합니다.

▦현대원= IPTV를 공적 영역으로 봤을 때 지상파 재전송에 제약을 둔다면 결국 피해는 시청자, 즉 소비자들에게 돌아가게 됩니다. 이는 위성 DMB 사례에서도 이미 입증됐습니다.

▦이상우= 미국에서는 오히려 인기 없는 지상파 방송사의 경우 IPTV에 콘텐츠를 제공하기 위해 먼저 나서기도 합니다.우리도 지상파 방송사의 시장점유율이 조금씩 줄고 있으니까 시간이 지나면 변하리라고 봅니다. 지역 지상파 방송사들은 자신들의방송을 팔아 광고비를 더 많이 받기 위해서도 재전송에 적극 나설 것입니다.

▦이내찬=지상파 재전송은 어떻게 보면 의무이고, 광범위하게 보면 권리입니다. 하지만 방송 매체간 균형발전이 중요하고, 특히 인위적으로 이를 규제하는 것은 부정적인 측면이 있습니다. 중장기적으로 큰 문제는 아닌 것 같습니다.








정리= 정구영기자 gychung@sed.co.kr황정원기자 garden@sed.co.kr

ⓒ 한국아이닷컴, 무단전재 및 재배포 금지
<한국아이닷컴은 한국온라인신문협회(www.kona.or.kr)의 디지털뉴스이용규칙에 따른 저작권을 행사합니다>

by Joe & Soohy 2006. 11. 25. 14:48
[디지털포럼] IPTV 시범사업과 전망

[디지털타임스 2006-11-24 06:11]    

심봉천 디보스 대표이사

디지털TV와 IT기술이 결합하면서 디지털TV 시장에 커다란 변신을 예고하고 있다. 바로 IPTV라는 것이다.

IPTV(Internet Protocol Television)는 초고속인터넷에서 얻을 수 있는 정보를 TV 수상기를 통해 얻는양방향 서비스를 말하는 것으로, 현재 많은 디지털기기들에 산재해 있는 기능을 하나로 통합해 최신 동영상 및 홈쇼핑, 인터넷뱅킹등 사용자 위주의 주문형 디지털 컨버전스를 TV로 실현하는 수단이다. TV의 쌍방향 매체로의 변화는 모든 산업계에 큰 파급효과를예견하고 있으며, 세계는 이미 다양한 분야에서 변화의 가능성을 활짝 열어놓고 있다.

IPTV의 이같은 변화에는 세가지 요건이 필요한데, TV에서 동작시킬 방송이나 인터넷 콘텐츠, 초고속인터넷 인프라, 완벽한 IPTV 수신기 구비 등이다.

IPTV로 TV를 보면 뭐가 좋아지는 걸까. 첫째 기존의 공중파나 케이블, 위성과는 달리 시청자가 자신이 편리한 시간에 자신이보고 싶은 프로그램을 볼 수 있다는 주문형 영상(Real VOD)이라는 장점이 있다. 둘째 방송채널뿐 아니라영화감상ㆍ홈쇼핑ㆍ홈뱅킹ㆍ온라인게임ㆍMP3 등 인터넷이 제공하는 무제한의 콘텐츠 및 부가 서비스를 제공받을 수 있다. 셋째인터넷이 연결된 세계 어디서나 전세계 방송을 지역에 제한없이 실시간으로 시청할 수 있다는 것이다.

IPTV는 기존 TV에 연결해 사용하는 IP셋톱박스형과 일체형 IPTV가 있다. IP셋톱박스형은 기존 아날로그TV로도 이용할 수있으나 해상도나 편리성에 제한이 있으며, 일체형의 경우 인터넷 회선만 있으면 TV를 켜듯 전원만 넣으면 가능해 컴퓨터에 익숙지않은 사람도 리모콘을 조작해 간단히 IPTV를 즐길 수 있고 HDTV와 동시에 고화질 시청이 가능하다.

국내 IPTV는 이달부터 시범사업이 본격 시작됐다. 정보통신부는 통방기술의 기술적 가능성 타진, 다양한 비즈니스 모델, 이용자행태분석, 콘텐츠의 효용성 등을 실질적으로 검증하기 위해 시험사업 진행을 승인했고, 이미 방송위원회와 정통부의 사업승인을 받은각 컨소시엄은 11월 중순부터 대상 가구를 통해 시범서비스를 진행하고 있다. 새로운 성장 비즈니스 모델로 떠오르는 향후 통방융합모델로서 성공적인 시범사업과 함께 새로운 디지털 미디어의 혁신을 주도하게 될 잠재성을 보여주는 시발점이 될 것으로 기대된다.

세계 시장에서의 IPTV 성장세를 고려할 때, 국내의 이같은 사업 진행은 다소 늦은 감마저 드는 것이 사실이다. 시장조사전문기관MRG에 따르면 전세계 IPTV 가입자는 2005년 380만명에서 2008년 2500만명으로 3년 평균 88% 성장할 것으로보고 있다. 특히 유럽의 IPTV 가입자 증가세가 두드러져 2005년 180만명에서 2008년 960만명으로 1000만명에가까운 가입자를 예상하고 있다. 2010년에는 가입자 6300만명으로 12배 이상 늘어날 전망임을 감안하면, 국내IPTV사업자들과 콘텐츠 공급자들은 이제부터 국내 시장을 비롯해 세계 표준에도 적용 가능한 안정적인 사업모델 정착에 골몰해야한다. 또 그동안 국내 규제기관의 관할권에 대한 내분이 합의점을 찾고 있는 지금이 바로 그 적절한 시기로 판단된다.

현재 디보스는 콘텐츠 제휴사인 `다음' 컨소시엄이 서울과 의왕 일부 지역 100가구를 대상으로 서비스를 실시할 예정이며,정통부의 승인을 얻은 여타 사업자도 시범지역 선정 및 서비스 시현을 진행중이다. 이번 시범사업의 성과는 국내 TV시장의 판도를뒤바꾸는 계기가 되는 것과 동시에 일상생활 영위에 필수적인 경제ㆍ쇼핑ㆍ정보ㆍ엔터테인먼트의 많은 요소들이 TV를 중심으로 통합되는새로운 라이프스타일의 도래를 앞당길 수 있는 기회다.

타 국가에 비해 늦은 사업착수와 관련 규제들이 IPTV의 효용성마저 저해시키지는 못할 것으로 여겨진다. 서비스에 대한 소비자편의성과 속도, 수많은 콘텐츠의 향유 가능성을 잠재한 IPTV의 상용화는 단순히 시청각 정보가 전달되는 매체였던 TV가 시대흐름에 맞게 진화하는 현대화의 자연스런 과정이자, 이를 누려야 하는 현대인의 혜택에 대한 권리로 간주된다.

< 모바일로 보는 디지털타임스 3553+NATE/magicⓝ/ez-i >

< Copyrights ⓒ 디지털타임스 & dt.co.kr, 무단 전재 및 재배포 금지 >

by Joe & Soohy 2006. 11. 25. 14:40
요 약
공급 체인(Supply Chain)을 아무리 잘 관리한다 해도 재무 담당 임원이 만족할 만한 수준의 매출과 수익을 올리는 것은 매우 어려운 일이다. 업무 프로세스 중심의 유통 공급망 관리(supply chain management; SCM)가 정보와 제품 흐름에 있어 획기적인 개선을 가져온 것은 이론의 여지가 없지만, 가장 중요한 고객, 특히 소비자를 전체적인 유통 공급망에 포함시키지 않았기 때문에 최적의 성과를 거두지 못하였다. 공급체인 개선에 관한 어플리케이션의 하나인 VMI(vendor managed inventory,판매자관리재고)를 예로 들어보면 이것을 도입하여 일부 기업은 상당한 효과를 거둔 반면 일부는 이렇다할 성과를 거두지 못한 것으로 나타났다. 그 주된 원인은 정보 부족과 각 시스템의 폐쇄성 그리고 업체들간의 협업(collaboration)의 결여 때문이었다.
본 책자에서 소개하는 CPFR(Collaborative Planning Forecasting & Replenishment)은 기존의 패러다임을 탈피하는 최신 비즈니스 모델로서, 서로 유기적으로 연결된 거래업체들 사이에서 SCM의 전반적인 효율성을 극대화시키는 포괄적인 접근방식이다. CPFR은 매출 증가, 조직의 합리화 및 정비, 행정 및 운영상의 효율성 제고, 현금 흐름(cash flow) 개선, ROA(return on assets) 향상을 가능케 하는 효과가 있다.


CPFR의 원리는 무엇인가?

CPFR의 출발점은 카테고리 관리 원칙(category management principles)에 근거하여 거래 파트너간에 특정 시장을 목표로 한 사업계획(market-specific plan)을 공동으로 수립하는 것이다. CPFR이 성공하기 위한 핵심 요소는 거래 파트너들이 업무 프로세스와 사업계획을 공유한다는 합의에 도달하는 것이다. ‘사업계획’이란, 판매될 상품은 무엇이고, 어떻게 상품화할 것이며, 특히 프로모션은 어느 시장을 목표로 얼마 동안 진행될 것인가 등에 관한 기본적인 설명을 말한다. 이 같은 사업계획은 각 社의 기존 시스템을 통해 운영되지만 VAN 등의 기간 통신망을 통해 거래 상대방과 공유가 가능하다.
각 파트너는 일정 범위 내에서 사업계획의 변경이 가능하다. 그러나 해당 범위를 벗어 CPFR을 이용하면 예측치가 사전에 확정되어 출하 계획으로 자동 전환되므로 기존의 일상적인 발주 업무를 피할 수 있다. 또한 CPFR 시스템은 판촉이 시행되어야할 시점과 공급 제약요소 등 목표 달성에 중요한 정보를 포착하여 전체 공급 체인으로부터 상당한 양의 재고를 제거함은 물론 불필요한 잡무를 피할 수 있게 한다.
CPFR은 아직 검증되지 않은 하나의 개념에 불과한 것일까? 그렇지는 않다. CPFR은 비록 제한된 방식이나마 테스트를 거쳤으며 괄목할 만한 성과를 거두었다. 선도 기업들과 솔루션 업체들은 모두 최소의 투자로 상당한 이익을 창출할 수 있는CPFR을 적극 지지해 왔으며, 이것이 프로세스의 표준이 되리라고 강력히 믿고 있다

1.1 CPFR 가이드라인의 구성

● 사업 기회(Business Opportunity) : 이 장에서는 CPFR의 도입을 통해 대고객 서비스를 개선시키고 기술을 효율적으로 사용함으로써 수익률을 향상시키는 동시에 재고관리를 보다 효율적으로 할 수 있는 방안에 대해 설명한다.
● 현행 프로세스(Current Process State) : 이 장에서는 현재 사용되는 세 가지
주요 가치사슬 운영 및 관리 방법에 대해 설명하고, 각각의 특징을 개략적으로 소개하며, CPFR을 도입함으로써 개선시킬 수 있는 업무 프로세스상의 결함들을 지적한다.

● CPFR 도입 후 프로세스(Future Process State) : CPFR 실행의 원칙과 각 실행 단계별 목표가 이 장에서 상세히 소개된다. 또한 어떻게 하면 CPFR이 모든 참가자들에게 이익이 될 수 있는 시너지 효과를 창출할 수 있는가-특히 예측 분야 에서 -에 대해 자세히 설명한다.
● 조직구조의 전환(Organizational implications) : CPFR을 도입하기 위해서 거래 파트너들은 “승/패(win/lose)”의 적대적 관계에서부터 “승/승(win/win)”의 협업관계로 변모해야 한다. 이를 위해선 조직 구조, 기업 가치, 프로세스 및 결과 평가에 있어서 변화가 수반되어야 한다. 이 장은 특정 시장 중심의 사업계획 (market area specific planning)을 CPFR 기반의 고객 중심적 사업계획으로 전환 시키기 위해 필요한 여러 가지 사항들을 약술한다.
● 기술적 측면 고찰(Technical Overview) : CPFR과 연관된 기술이 “최첨단”일 필요는 없다. 즉, 새로운 기술 표준을 창출해야할 필요는 없다는 것이다. 이 장에서는 CPFR을 통해 EAN/UCC, EDI, U.P.C. 등과 같은 기존 국제 표준을 어떻게 협업을 바탕으로 한 사업 관행의 정착을 위한 가이드라인으로 발전시켜 나갈 것인가에 대해 설명한다.

by Joe & Soohy 2006. 11. 20. 12:17
CR(Continuous Replenishment) 개요


가. CR이란 무엇인가?

"전통적인 상품보충방법은 유통업체에서 주문서를 작성하여 거래업체에게 발송함으로써 이루어졌다. CR(지속적상품보충)은 소비자로부터 얻은 재고 및 판매정보를 기초로 하여 상품보충량을 공급업체가 결정하는 방법으로 전통적인 상품보충프로세스를 근본적으로 변화시키는 새로운 시스템이다." (출처: ECR Europe : Efficient Replenishment Techniques)

기업에서 CR을 추진하는 방법에는 크게 두 가지 방법이 있다. 하나는 재고관리의 책임소재를 고려한 방법이고, 다른 하나는 협력업체간에 정보공유의 정도를 고려한 방법이다. 상품공급업체와 유통업체사이에서 발생하는 주문은 상품에 대한 수요를 결정하고, 또한 완벽한 주문이행을 위해서는 상품을 공급하는 업체에게 충분한 정보를 제공하여야 한다. 따라서 CR은 제조업체, 유통업체중 누구에게 주문책임이 있느냐에 따라서 VMI(Vendor Managed Inventory)와 CMI(Co-Managed Inventory)로 나누어 진다.

○ VMI (Vendor Managed Inventory)
제조업체(또는 공급업체, 도매배송센터, 이하에서는 제조업체로 표기하기로 한다)가 상품보충시스템을 관리하는 경우 상품보충시스템이 실행될 때 마다 판매?재고정보가 유통업체에서 제조업체로 전송된다. 이러한 정보는 제조업체의 상품보충시스템에서 미래의 상품수요량 예측을 위한 데이터로 활용되며 또한 제조업체의 생산공정에서는 생산량 조절에도 사용된다.


[ VMI 프로세스 ]

제조업체의 CR시스템에서 계산되는 수요량은 현재와 미래의 생산량 결정을 위한 재고?생산계획 수립에 효과적으로 활용될 수 있다. CR시스템에서 계산되는 수요량에 따라 제조업체는 주문서를 작성하게 된다. 제조업체에서 작성된 상품주문정보는 유통업체로 전송되어 유통업체의 주문처리시스템에 업데이트되게 된다.

○ CMI (Co-Managed Inventory)
CR시스템이 제조업체와 유통업체에서 공동으로 운영될 경우 판매ㆍ재고정보는 CR시스템이 실행될 때마다 유통업체에서 제조업체로 전송된다. 유통업체로부터 전송된 판매?재고정보는 제조업체의 CR시스템에서 상품수요예측을 위한 정보로 활용되며, 생산사이클의 생산량 조절에도 사용된다.

CMI를 거래선간에 추진할 때에는 주문제안서를 제조업체가 작성하고 이를 유통업체가 수정ㆍ확정하게 된다. 즉 CMI는 상품보충에 대한 책임이 유통업체에게 있다는 것이다.



[ CMI 프로세스 ]

by Joe & Soohy 2006. 11. 20. 12:12
VMI(Vendor Management Inventory)와 CRP(Continuous Replenishment Planning) 전략은 고객수요에 대한 유연한 대응과 재고투자비용의 절감을 위해 사용되어 집니다. 또한 공급 리드타임을 수요자의 요구에 맞추기 위해 사용되어지기도 합니다. 일반적으로 유통업자의 경우 소매점 매장과 물류센터에 재고를 보유하는 것을 원하지 않을 것입니다. 이런 경우 재고 보충을 위해 실제 수요정보는 판매점별로 취합되어 구매부서에서 배치단위로 공급자에게 보내지게 됩니다. 하지만 이러한 수요대응이 고객 만족을 얻을 만한 수준이 안되는 경우 또는 채찍효과에 의해 과도한 완충재고을 필요로 하는 경우 이를 개선하기위해서 VMI 또는 CRP가 사용되어 지게 됩니다. VMI는 공급자가 직접 판매자의 매장 재고 또는 물류센터재고를 관리하는 전략을 말하며, CRP는 유통업체들이 EDI연결망을 통해 공급자에게 자신들의 재고수준과 제품 수요량을 통보하고, 공급업체는 이를 근거하여 미래수요를 예측하고 미리 알고 있는 유통업체의 재고의 상한과 하한을 고려하여 재고를 보충량을 결정함으로써 지속적으로 재고를 보충해 주는 것을 말합니다.

사례: 월마트

월마트는 기존의 매장에서 팔린 정보와 수요예측정보, 재고정보에서 발주수량을 자동으로 보충해주는 프로그램을 사용하였다. 제품을 대량 구매하는 고객은 제품의 품절에 민감하고 품절된 물건을 재 주문하는데 있어서 소요되는 시간을 기다려 주지 않았다. 이러한 고객들은 1~2주에 한번씩 쇼핑하기 때문에 경쟁회사에 고객을 빼앗길 우려가 심각했다. VMI시스템의 도입은 매장의 POS(Point of Sales)정보를 EDI시스템을 통해 시간의 유예없이 제조자 측으로 전송하고, 제조자는 이 정보를 이용하여 수요예측프로그램과 보충프로그램을 가동시켜 매장에 재고보충을 실시하였다. 이것에 따라 제조자는 채찍효과에 의한 정보왜곡현상을 제거하고 수요예측과 판매계획, 생산계획의 조정이 가능하게 되었다.

국내에서도 삼성테스코, 현대모비스등이 VMI를 실시하여 성과를 보고있다.
마지막으로 VMI는 JIT와 마찬가지로 재고의 부담을 공급자측에 전가시키고 이득은 수요자측이 가져가는 불균형적인 이득분배시스템이라는 문제점을 안고 있다. VMI를 성공하기 위해서는 협력업체의 적극적인 참여가 중요하며 이를 위해 상호 인정할 만한 이득분배지표의 수립이 무엇보다 필요하다고 하겠다.
by Joe & Soohy 2006. 11. 20. 12:07
CAO(자동발주시스템:Computer Assisted Ordering)개요 | scm2005/06/09 19:43
http://blog.naver.com/zipsol/120013961322

가. CAO란 무엇인가?

"CAO(자동발주시스템 : Computer Assisted Ordering)는 POS를 통해 얻어지는 상품흐름에 대한 정보와 계절적인 요인에 의해 소비자 수요에 영향을 미치는 외부요인에 대한 정보 그리고 실제 재고수준, 상품수령, 안전재고수준에 대한 정보 등을 컴퓨터를 이용하여 통합?분석하여 주문서를 작성하는 시스템을 말한다." (출처: ECR US)

CAO를 기업에서 도입하기 위해서 가장 중요한 요소는 소비자 판매데이터를 활용하는 것이다. 유통업체 매장에서 얻어지는 판매데이터는 소비자가 구매하는 상품에 표시된 EAN/UCC GTIN코드(Global Trade Item Number)를 유통업체 매장의 판매대에서 POS를 통해 판독함으로서 수집된다. 유통업체 매장에서 얻어진 판매데이터는 다른 재고관련 정보와 연계ㆍ결합되어 유통업체에 주5문제안을 하는 데 활용할 수 있다.

주문제안서에 대해 해당 유통업체가 확인 또는 동의를 하면, EANCOM 주문서를 상품 제조업체(또는 공급업체)로 다시 전송하고 이는 다시 제조업체의 주문처리 어플리케이션에 자동적으로 업데이트된다. 이런 시스템이 상품수령시스템과 통합되어 운영되면 과거에 상품을 주문하기 위해 재고량을 일일이 파악하던 노력은 더 이상 할 필요가 없어진다.
CAO를 간단히 표현하면 주문행위를 보다 정확하고 신뢰도가 높게 하는 기술로서 생각할 수 있다. 기업에서 CAO를 추진하기 위해서는 다음의 사항들을 사전에 점검하고 확인하여야 한다.

나. CAO 시행이유

CAO를 통해 "소비자의 요구에 즉각적으로 대응하라"라는 ECR의 기본원칙이 실현가능해진다. CAO를 적용하게 되면 소비자가 선호하는 상품에 대한 파악이 가능해지며, 그 결과 재고관리도 향상시킬 수 있다.
CAO를 시행해야 하는 이유는 다음과 같다.

   ㆍ재고보유량 감소
   ㆍ주문서 작성 및 발송비용 절감
   ㆍ주문서 처리에러 감소
   ㆍ제조업체와 유통업체 간의 분쟁 감소
   ㆍ과다재고를 없애기 위해서 계절마다 시행하는 할인행사 감소
   ㆍ결품을 줄이고 매출액 증대
   ㆍ원활한 상품배송
   ㆍ고객니즈를 맞춤으로써 고객에 대한 신뢰향상
   ㆍ소비자 행동에 대한 데이터베이스 구축
   ㆍ제조업체가 일일 판매실적을 기초로 한 예측치를 통해 생산량조절
by Joe & Soohy 2006. 11. 20. 11:52
[유레카] 승자의 저주 / 김병수
[한겨레 2006-06-14 19:45]    

[한겨레] 고대 에피루스의 피루스 왕은 기원전 279년 로마군과 전투에서 승리했지만, 너무 많은 병사를 잃었다. 그는 “이런 승리를 한번 더 거뒀다간 우리가 망한다”고 했다. ‘피루스의 승리’는 ‘상처뿐인 승리’란 뜻으로 쓰인다.

리처드 탈러는, 경매에서 지나치게 높은 값을 써낸 탓에 이기고도 진 것만 못한 경우를 맞는 일이 있다며, 이를 ‘승자의 저주’라고 불렀다. 본질 가치가 1천만달러인 유전 경매에서, 어떤 기업이 유전 값어치를 과대 평가해 2천만달러에 낙찰받았다고 치자. 그 기업은 입찰에선 승리하지만 큰 손해를 본다.

현실 세계에서도 승자의 저주는 심심찮게 목격된다. 1990년대 초 미국의 에이티앤티(AT&T)는 엔시아르(NCR)란 기업을 인수합병이 발표될 때보다 두 배 넘는 값에 인수했다가 4년간 30억달러 가량 손해봤다. 2000년 영국 정부가 한 아이엠티2000 주파수 경매에선 통신업체들이 과당경쟁 끝에 무려 38조5천억원에 낙찰받았다가 비용부담 때문에 곤욕을 치렀다. 연예인이 입던 옷이야 얼마에 낙찰받건 자신이 좋아하면 그만이나, 기업 세계에선 시장가격보다 비싼 값에 무리하게 낙찰받으면 손해로 귀결될 수밖에 없다. 경영자가 낙관적 직관 아래 움직이거나, 경쟁기업을 제치고 보자는 욕심을 가지면 이런 일이 생기기 쉽다고 한다.

대우건설, 엘지카드 등 매물로 나온 기업들의 값이 애초 매각 계획이 잡혔을 때보다 두배 가까이로 올랐지만 서로 먹겠다고 달려들고 있다. 외환은행도 마찬가지였다. 국민은행은 하나금융지주를 제치고 외환은행을 따냈지만, 6조여원이란 천문학적 대금을 치르게 돼 있다. 금융계에서는 그만한 시너지가 있을지 희의적이다. 승자의 축복은 외환은행을 팔아 4조여원의 이익을 얻을 론스타가 챙기고, 저주는 국민은행이 안는 꼴이 될 수도 있다.

김병수 논설위원 byungsk@hani.co.kr

<< 온라인미디어의 새로운 시작. 인터넷한겨레가 바꿔갑니다. >>

ⓒ 한겨레(http://www.hani.co.kr), 무단전재 및 재배포 금지

<한겨레는 한국온라인신문협회(www.kona.or.kr)의 디지털뉴스이용규칙에 따른 저작권을 행사합니다.>

by Joe & Soohy 2006. 11. 20. 10:57
[광화문]승자의 저주…얻으려면 버려라
[머니투데이 2006-08-03 10:13]    
0

[머니투데이 홍찬선 증권부장]

상식이나 기존의 이론과 다른 일이 벌어질 때 역설(Paradox)이라고 한다. 가치의 역설, 기펜의 역설, 레온티에프의 역설, 절약의 역설 등…. 경제학에선 수없이 많은 역설이 있다. 하지만 역설은 지금까지의 지식으로 설명할 수 없을 때 붙여지는 이름일 뿐, 이론이 발달되면서 점차 사라지게 된다.

물의 사용가치는 다이아몬드보다 훨씬 크지만 다이아몬드 가격이 훨씬 비싼 것에서 유래된 ‘가치의 역설’은 교환가치라는 개념이 도입되면서 해소됐다. 개발도상국은 저축이 미덕이지만 선진국은 소비가 미덕인 역설도 케인즈의 유효수요이론으로 설명됐다.

21세기는 ‘역설의 시대’다. 정보통신기술(IT)의 발달 등으로 사회 변화가 빠르다 보니 어제 익힌 지식으로 설명할 수 없는 현상들이 수없이 등장하는 탓이다. 약한 게(Software) 강한 것(Hardware)보다 더 높은 가치를 갖는다. 눈에 보이는 유형자산(Tangibles)보다 보이지 않는 무형자산(Intangibles)이 기업경쟁력을 좌우한다. 브랜드 파워와 기업의 명성(Reputation) 및 인재(Talent)가 기업의 지속적 성장과 발전을 좌우하는 핵심 요소들이다.

눈에 보이는 것에 정신이 팔리다보면 중요한 것을 놓쳐 일을 그르치는 경우가 적지 않다. 엄청난 수해(水害)를 입은 현장이 TV 화면에서 사라지는 순간 많은 사람들의 인식에 사라지지만 그들의 고통은 없어지는 게 아니다. 눈에 띄는 바퀴벌레 몇 마리를 죽이는 것은 오히려 보이지 않는 바퀴벌레의 번성을 가져오게 마련이다.

위기는 눈에 보이기 시작하면 이미 대응하기 늦은 경우가 많다. 주식이나 부동산 등 자산 가격이 본질가치보다 비정상적으로 급등하거나(자산버블), 가격이 단기간에 급격하게 등락하며(가격변동성확대), 상황을 체크하고 통제할 수 있는 파워타워가 흔들리는(리더십 부재) 등의 위기 신호가 왔을 때 대비책을 마련해야 만시지탄의 후회를 하지 않는다. 교차로에서 신호가 바뀐 것을 보고 뛰면 이미 늦으며, 빨간 신호 때 뛰어야 파란 신호가 바뀌면서 건널 수 있는 것과 마찬가지다.

급하고 중요한 일은 서두르는 것보다 느긋하게 처리하는 게 바람직하다. 아무리 급해도 바늘허리에 실을 매어 쓸 수는 없으며, 벼 이삭이 늦게 편다고 이삭을 강제로 뽑는 것은 농사를 망치는 일이다. 골프공을 멀리 보내려면 세게 치기보다 부드럽게 스윙해야 한다.

자신을 낮출 때 높아지지만, 스스로 공치사하면 응당 받아야 할 존경도 사라진다. 실패를 칭찬해줘야 남보다 앞서는 독특한 혁신을 이룰 수 있지만, 잘 하는 것 10개가 있어도 잘못한 것 하나를 들춰내 뒷다리를 잡으면 조직의 탄력은 줄어들고 경쟁력은 떨어진다.

왕건처럼 송도를 버릴 줄 알아야 고려를 세울 수 있다. 궁예처럼 초심을 잃고 관심법에 집착을 부림으로써 애써 일군 나라를 송두리째 빼앗기는 경우도 수없이 많다. 애니메이션 영화 ‘카’(감독; 존 라세터)에서 주인공인 라이트 맥퀸은 스스로 1등을 버리고 어려움에 처한 경쟁자를 도움으로써 경기에선 졌지만 실제로는 이기는 영웅이 됐다.

버림의 미학을 실천하려면 자신과 신념이 있어야 한다. 작은 실패와 지금의 양보를 감내해야 미래의 큰 선물을 차지할 수 있다. 지금의 승리에 도취하면 ‘승자의 저주(Winners' Curse)에 빠지기 쉽다. 역설의 시대인 21세기에 역설을 정설로 바꿀 수 있는 준비된 사람들이 많아질 때 우리 사회는 과거의 망령에서 벗어나 미래를 향해 힘찬 발걸음을 내디딜 수 있다.

홍찬선증권부장 hcs@

<저작권자 ⓒ '돈이 보이는 리얼타임 뉴스' 머니투데이>

by Joe & Soohy 2006. 11. 20. 10:56
전세계 IP-TV가입자, 2009년 7천만명에 육박
매년 2배씩 증가, 관련 장비매출도 2009년 68억 달러로 급증할듯
김재철기자 mykoreaone@ddaily.co.kr
2006년 11월 13일 14:22:20
방송통신 융합서비스의 총아로 떠오르고 있는 IP-TV 서비스의 2009년 전세계 가입자가 7000만명에 육박할 것이라는 전망이 나왔다.

세계적인 시장조사기관 인포네틱스 리서치(Infonetics Research)가 발표한 시장보고서에 따르면 전 세계 IP-TV 가입자는 2005년에서 2009년 사이에 매년 2배씩 늘어나 2009년에는 6890만명에 이를 것으로 예상된다.

그리고 이러한 가입자 기반은 현재 IP-TV가 직면한 도전 과제들을 대부분 상쇄시키면서 주류 서비스로 부상하도록 만드는 힘이 될 것이라고 보고서는 전망했다.

이러한 가입자 급증에 힘입어 IP-TV 서비스 수익과 서비스사업자의 설비투자비용(CAPEX) 또한 급격히 성장할 전망이다.

보고서는 IP-TV 서비스 제공업체의 매출이 2005년에서 2009년 사이에 연평균 169%씩 성장할 것이며, 장비 매출은 2005년 3억7100 달러에서 2009년 68억 달러로 가히 폭발적 증가를 보일 것이라고 예측했다.

인포네닉스 보고서는 “서비스 제공업체들은 빠르게 증가하는 IP-TV 수요에 대비해 인프라 투자에 집중하고 있다”며, “같은 기간 IP-TV 설비투자 비용도 연평균 41% 성장할 것”이라고 예상했다.

특히 IP-TV 서비스 매출의 상당 부분이 유럽의 사업자들로부터 나올 것으로 예상되는 가운데, 아시아태평양 지역에서도 빠른 성장세가 기대된다. 아태 지역의 IP-TV 가입자 수는 2004년과 2005년 사이에 세 배 이상 증가했으며, DSL의 업그레이드 버전인 VDSL2와 ADSL2, ADSL2+ 가입자도 활발하게 증가하고 있기 때문이다.

한편, 보고서는 전세계 IP셋톱박스 판매 대수도 2006년과 2007년 사이에 세 배에 가까운 증가를 보이는 등 그 수요가 급증할 것으로 전망했다. 보고서는 “전세계 IP 셋톱박스 선두업체인 중국의 유싱 인포텍(Yuxing InfoTech)과 영국의 아미노 커뮤니케이션스(Amino Communications)가 흐름을 주도하고 있다”고 설명했다.

인포네틱스의 브로드밴드 및 IP-TV 담당 수석분석가인 제프 헤이넨은 이번 보고서와 관련해 “IP-TV는 아직 ‘사전점검(kick the tire)’ 단계에 있고, 서비스 사업자들은 광범위하게 서비스를 도입하기 전의 테스트 단계에 있다”면서, “그러나 IP-TV가 주류 시장을 이루게 될 것이라는 데는 이견이 없다”고 못박았다.

제프 헤이넨은 이와 함께 “기술적인 난관은 이미 잘 알려져 있으며, 규제 관련 문제들이 더욱 추측하기 어렵다”고 덧붙였다.

그는 “규제 당국에서는 ‘IP-TV를 어떻게 다루고 규제할 것인가’라는 의문을 갖고 있으며, 콘텐츠 제공업체들은 ‘이 새로운 시장에서 우리가 어떻게 최대한의 이익을 볼 것인가’ 고민한다. 시장 상황은 매우 복잡하고, 규제 당국과 콘텐츠 라이센싱 계약이 어떤 움직임을 보이냐에 따라 IP-TV 시장의 발전 시기는 늦춰지거나 당겨지게 될 것”이라는 입장을 밝혔다.

인포네틱스의 IP-TV 보고서는 핵심업체 분석, 시장규모 예측, IP-TV 서비스 수익전망, 가입자, 콘텐츠와 전송 인프라, 장비(통합된 디지털 헤드엔드 플랫폼, VoD 서버, IP-TV 비디오 엔코더, IP-TV 미들웨어, IP셋톱박스)에 대한 분석을 제공한다.
by Joe & Soohy 2006. 11. 19. 23:40
* 디지털 TV 시장전망
전세계 LCD / PDP TV 시장전망









LCD TV PDP TV

(Unit : USD Million)
Area
2003
2004
2005
2006
전체
유럽
(비율)
전체
유럽
(비율)
전체
유럽
(비율)
전체
유럽
(비율)
LCD TV
3,449
738
(21%)
4,674
1,051
(22%)
6,065
1,213
(20%)
7,781
1,553
(20%)
PDP TV
4,697
1558
(33%)
6,523
2,412
(37%)
8,677
3,526
(41%)
9,983
4,284
(43%)
* 출처: ABI(Allied Business Intelligence)
by Joe & Soohy 2006. 11. 19. 23:33

"LCD TV 수요 2009년 1억대 돌파 전망"

디스플레이 시장조사업체인 디스플레이뱅크는 24일 발표한 '전 세계 중장기 TV 시장 전망' 보고서에서 전 세계 LCD TV 수요가 2009년에는 약 1억250만대로 1억대를 돌파할 것으로 예상된다고 밝혔다.

디스플레이뱅크는 LCD TV 수요가 올해 4천210만대, 내년 6천450만대, 2008년 8천580만대에 달할 것으로 전망했다.

디스플레이뱅크는 "올해 LCD TV 수요가 예상대비 200만대 이상 늘어날 것으로 전망된다"며 "또한 40인치급의 TV 수요가 예상을 훨씬 앞서 초강세를 나타내며 LCD TV 수요 증가에 큰 영향을 줄 것"이라고 분석했다.

특히 삼성전자 LCD 7세대 라인의 원활한 생산능력 확대와 LG필립스LCD의 7.5세대 생산능력 증가 등은 40인치대의 대형 TV 수요를 견인하는 데 큰 역할을 할 것으로 디스플레이뱅크는 내다봤다.

디스플레이뱅크는 그러나 PDP TV 수요는 당초 예상대로 올해 930만대, 내년 1천550만대, 2008년 2천20만대, 2009년 2천530만대에 이어 2010년 3천만대를 넘어설 것으로 전망했다.




디스플레이뱅크는 이 밖에 40인치 이상 대형TV 시장은 올해 약 1천800만대로 전체 TV 중 약 9% 정도를 차지하지만 2010년에는 약7천만대로 전체의 33% 가량에 달할 것으로 내다봤다.

by Joe & Soohy 2006. 11. 19. 23:30
삼성-소니「8세대 LCD」도 손잡나
소니, 미국시장 돌풍에 대형 패널 수요 급증… 양사 추가 투자 긍정적
오동희 기자 ( 디지털타임스 )   2005/10/21
Sony
삼성전자와 소니가 7세대에 이어 8세대 LCD라인에서도 손잡을 가능성이 높아지고 있다.

소니의 LCD TV 브랜드 `브라비아'가 미국 시장에서 선풍적인 인기를 얻으면서 대형 LCD 패널 수요가 급증하고 있기 때문이다.

20일 삼성전자 LCD총괄 이상완 사장은 일본 도쿄 아나호텔에서 기자간담회를 갖고 "소니와의 합작법인 `S-LCD'의 7-1라인이 4월 양산 돌입 후 9월부터 흑자를 내 소니도 크게 고무돼 있다"며 "소니의 새 LCD TV 브랜드인 `브라비아'가 미국에서 큰 성공을 거두고 있어 소니로서는 대규모 추가 LCD 공급이 필요한 상태"라고 밝혔다.

이 사장은 "일단 7-1라인 생산능력을 월 6만장(유리원판 기준)에서 1만 5000장을 추가해 7만5000장 수준으로 증설하는 방안을 놓고 소니와 의견 접근을 봤으며 조만간 결정날 것"이라며 "다만 소니 외에 다른 세트 수요처도 고려해야 하기 때문에 7-2라인의 경우 삼성의 독자투자 방식으로 계속 진행될 계획"이라고 말했다.

그는 "소니가 7-1라인 증설만으로 물량이 부족하면 7-2라인의 일부 물량을 가져 갈 수는 있겠지만 소니가 7-2라인에 추가 투자하는 개념은 아니다"라고 전했다.

이 사장은 "소니가 최근 미국 LCD TV 시장에서 1위로 올라서는 등 LCD TV 사업 추세로 볼 때 더 큰 사이즈의 TV를 필요해 독자적 물량 확보를 위해 투자를 검토할 것이고, 단순한 7-1라인 증설로 끝나지는 않을 것"이라며 "8세대 공동 투자에 대해 양사가 공식적으로 합의한 바는 없으며 현재는 추가 투자에 대해 긍정적으로 생각한다는 수준"이라고 덧붙였다.

그는 "소니와 관계없이 8세대가 예정돼 있지만 시기 등은 시장 상황을 보면서 결정할 것"이라며 "라인 전체에 6조원 가량이 소요되기 때문에 단계적 투자가 이뤄지게 될 것"이라고 설명했다.

이와 함께 삼성전자는 2007년초 유럽지역의 LCD 관세 부과를 앞두고 내년 초에 동유럽 모듈 공장 진출 가능성도 시사했다.

이와 관련, 이 사장은 "그동안은 LCD 해외 제조공장은 중국에 집중돼 있었지만 유럽 지역이 현재 유예하고 있는 LCD 패널의 관세를 5%에서 14% 수준으로 확대할 예정"이라며 "이럴 경우 자재, 물류 부분을 감안해 종합적으로 이점이 있다고 판단되면 유럽으로 가게 될 것"이라고 전했다.

이 사장은 이 밖에 "내년 6월 월드컵이 있기 때문에 시기적으로도 LCD 수요가 잘 연결될 것"이라며 내년 시장은 매우 긍정적이라고 내다봤다.@
by Joe & Soohy 2006. 11. 19. 23:20
| 1 2 3 4 |