#Day 2.

1) 변수와 상수에 대하여

 

1. 변수란 무엇일까?

  • 값을 담아두는 박스와 같은 개념
  • 변수는 하나의 값만 가질 수 있음
  • 변수는 변할 수 있음. (변하는 수라서 변수)
  • 담는 물건에 따라 박스 사이즈가 변하듯이 변수 내용에 따라 자료형을 맞게 사용해야함.

 

주로 쓰는 자료형

  • 정수형
  1.  char -> 1byte 값의 범위 ( -128 ~ +127)
  2.  int -> 4byte 값의 범위 ( -2,147,483,648 ~ + 2,147,483,647)
  • 실수형
  1. double -> 8byte 값의 범위 ( +- 3.4 x 10^-37 ~ +- x 10 ^ 38)

 

  • 이러한 자료형 이외에도 float, long 등 여러가지가 있지만 주로쓰는 세가지를 소개했습니다.
  • 여기서 여러분들이 들 만한 의문점이 엥? 그러면 다 8byte double 사용하면 되는 것 아닌가 라고 생각 할 수 있는데, 효율적인 메모리 사용을 위해서 값에 맞추어서 자료형을 사용하는 것이 좋습니다.

 

2. 변수를 어떻게 쓰지?

  • 우리가 변수를 사용하기 위해서는 코드에 이 변수를 사용해야 한다고 알려줘야 하는데 이러한 일을 "선언" 이라고 합니다.
  • int khlug;

     

  • 이 코드는 어떤 것을 의미할까요? 눈치가 빠르신 분은 맞추셨을겁니다. int 라는 자료형을 가진 khlug 라는 변수를 선언하라 는 것 입니다. 여기서 khlug를 변수명이라고 합니다. 즉, 변수의 이름이죠.
  • 상기 말한 것 과 같이 khlug에는 -2,147,483,648 ~ + 2,147,483,647의 값이 들어갈 수 있습니다.
  •  하지만 우리는 박스를 만들었지만, 박스안에 담길 내용물은 아직 넣지 않았습니다. 이제 내용물을 넣어봅시다.
  • khlug = 419;

     

  •  그러면 khlug라는 변수(박스) 에 419라는 값(내용물) 이 담기게 됩니다.
  • (주의할 점 -> 모든 변수는 선언을 한 후 사용해야 합니다. 위와 같은 코드도 int khlug; 같은 선언을 하지 않으면 오류가 나게 됩니다.)
  • (또한 몇몇의 예외를 제외하고 코드의 끝에는 세미콜론을 붙혀주어야 합니다.)

 

3. 상수란 무엇일까?

  • 위의 변수는 항상 변할 수 있는 수라고 "변수" 라는 이름을 사용한다면, 상시 변하지 않는 값은 "상수"라고 합니다.
  • const int khlug;
    khlug = 419;

     

  • 위와 같이 const 라는 값을 선언 해 놓을 시에는, 변수처럼 값을 자유롭게 변경 불가능 합니다. 

 

2) printf와 scanf

 

1. printf

  • printf는 print format 의 약자인데.. 그냥 화면에 자신이 친 문자를 뿌려준다! 라고 생각하시면 됩니다.
  • #include <stdio.h>
    int main()
    {
      printf(“안녕, 세상아! \n”);
      return 0;
    }

     

  • 지난강의에 사용했던 Hello World 소스입니다. Hello World를 안녕, 세상아! 라고 바꾸었습니다.
  • 출력값은 안녕, 세상아! 라고 출력이 됩니다.
  • 그럼 아래와같이 적으면 어떻게 출력이 될까요?
  • #include <stdio.h>
    int main()
    {
      int khlug;
      khlug = 419;
      int year;
      year = 2016
      printf(“쿠러그는 학관 %d 호에 위치하며 올해는 %d 년입니다. \n”, khlug, year);
      return 0;
    }

     

  • 당연히 모르시죠! 왜냐하면 제가 %d를 안가르쳐 줬거든요. 이러한 %d는 "서식문자" 라고 하는데, printf 문 등의 문자열 관련 큰따옴표 내로 들어가서, 큰따옴표 이후 쉼표를 적은 후 그 다음에 오는 변수 순서대로 %d 부분에 대입을 시킵니다.
  • 그렇다면 저 코드를 실행 시켰을때는 이렇게 나오겠죠
  • 쿠러그는 학관 419 호에 위치하며 올해는 2016 년입니다.
  • 처음 %d에는 khlug가, 다음 %d 는 year이 대입되었네요.

 

서식문자 출력
%c 문자하나
%d 부호있는 10진 정수
%f 부호있는 10진 실수
%s 문자열
%% %기호 출력

 

  • 이 외에도 여러가지가 있지만, 자주쓰는5가지를 정리했습니다.

 

2.scanf

  • printf가 print + format 이었다면 당연히 scanf는 scan + format 이겠지요?
  • scanf는 무엇인가를 "입력" 받는 함수입니다. 정확하게 이해하기 위해서는 고급개념이 필요하지만, 예제 위주로 가겠습니다.
  • #include <stdio.h>
    int main()
    {
      int year;
      scanf("%d", &year);
      printf(“지금은 %d 년 입니다", year);
      return 0;
    }

     

  • 와 같이 사용할 경우, 10진 정수값을 입력시키면 (%d 는 10진 출력값을 의미하기에) , year에 그 값이 들어간다 라고 생각하시면 됩니다.
  • 2016을 입력할 경우, 지금은 2016 년 입니다. 라는 출력값이 나오게 됩니다.

3) 이스케이프 시퀀스

 

코드 내에서의 "특수문자" 라고 생각해주시면 됩니다. 즉, 특수한 일을 하는 문자입니다.

 

이스케이프 시퀀스 기능
\n 개행
\\ 역슬래시 출력
\" 큰따옴표 출력
\r 캐리지 리턴

 

 

  • 이스케이프 시퀀스는 이 4개 이외에도 여러가지 있지만, 자주 쓰는 4가지를 소개했습니다.
  • 그중에서 \n은 가장 많이 쓰인다고 해도 과언이 아닌데요, 예전에 썼던 helloworld C 소스를 가져와 보겠습니다.
  • #include <stdio.h>
    int main()
    {
      printf(“Hello World \n”);
      return 0;
    }

     

  • 이곳에서 "Hello World \n"의 \n이 이스케이프 시퀀스입니다.
  • 개행, 즉 새로운 줄을 만든다고 하는데요. 그냥 한 줄을 띄어준다 라고 생각하시면 편합니다.
  • 저 소스에서 \n 을 빼고 실행해서 결과값을 서로 비교해 봅시다. 

 

  • 숙제
  • 정보를 물어보고, 그 물어본 값을 출력시키는 프로그램을 만들어 봅시다.