데이터 다루기 in C#

JS·2023년 1월 6일
0

C#

목록 보기
5/9

1. 문제 해결을 위한 핵심

  • 문제 해결을 위한 핵심은 데이터가 있다
  • 이슈를 해결하기 위해 어떤 데이터가 필요한지 생각하다보면 자연스럽게 풀리곤 한다

2. 객체(Object)

  • C#은 객체지향 프로그래밍 언어(Object Oriented Programming)로서 객체들 간의 유기적인 상호작용을 통한 로직을 구성하는 프로그래밍 언어이다
  • 메모리를 사용하기 위해서는 데이터의 주소와 크기를 알아야 한다
    • 이 말을 다시 해석하면 메모리에 데이터를 저장하려면 주소와 크기가 필요하다라는 의미
  • 프로그래밍 언어에서는 이를 쉽게 사용하기 위하여 객체시스템을 지원한다
  • 객체란 데이터가 저장된 영역을 의미한다
  • 객체를 선언할 때는 타입과 식별자를 기입한다
  • 선언하는 방법은 타입(type) 이름(identifier);
    • 예로 byte(type) kyoungilAcademy(identifier); 바이트 타입이 경일아카데미 객체를 생성한다
  • 도서관에 경영/경제 카테고리의 ‘사업을 한다는건’이라는 책이 들어오게 된다면 사서가 카테고리와 이름을 보고 해당 도서관의 시스템에 따라 책장에 정리를 한다. 카테고리는 타입을, 책 제목은 이름을 의미한다

3. 이진수(Binary number)

  • 컴퓨터는 비트(Bit)를 사용하며, 비트는 2가지의 의미만 담을 수 있기에 이진법을 사용한다
  • 따라서 우리가 주로 사용하는 십진수를 이진수로, 이진수를 십진수로 자유자재로 바꿀 수 있어야 한다
  • 이진법에 대한 영상자료가 있다
  • 이진수는 기본적으로 양수로 표현되며, 음수를 이진수로 표현하기 위해서는 2의 보수법을 사용해야 한다
    • MSB(Most Significant Bit)를 부호 비트로 사용해 0이면 양수, 1이면 음수로 취급한다
    • 2의 보수에 대한 영상 자료

4. 타입(Type)

  • 타입은 데이터를 저장하기 위해 메모리를 얼마나 사용할 것인지, 데이터의 종류는 무엇인지 지정하는 것이다
  • 프로그래밍 언어마다 종류가 다르며, C#의 경우 이런 타입들이 존재한다

5. 식별자(Identifier)

  • 객체를 사용하면 컴파일러가 알아서 주소를 관리하고 크기를 명시할 수 있기 때문에 프로그래머는 어떤 데이터인지 잘 나타내도록 명명해야 한다
  • 이러한 이름을 식별자라고 하며 특수한 의미를 지니는 키워드(Keyword)를 제외하고 일련의 규칙에 맞춰 작성할 수 있다
  • 읽고 관리하기 쉬운 코드를 작성하기 위한 일종의 코딩 스타일 규약으로서 코딩 컨벤션(Coding Convention)이 존재한다

6. 정수 타입

  • 정수를 표현하는 타입으로는 byte, short, int, long이 있다
  • 각각 크기가 다르며 byte의 경우 1바이트, short의 경우 2 바이트, int의 경우 4바이트, long의 경우 8바이트 이다 참고 자료
  • 가장 많이 쓰이는 타입은 int이며 객체를 선언할 때 정수를 기입하면 자동적으로 int타입으로 선언된다

  • 이 경우 0916은 기본적으로 int타입으로 선언된다

7. 실수 타입

  • 실수를 표현할 수 있는 타입에는 float, double 등이 있다. 실수의 경우 정수와는 다르게 IEEE 754 라는 표준을 사용하여 표현한다
  • 지수부와 가수부로 표현하기 때문에 부동소수점(Floating-Point) 타입이라고도 한다
  • 무수히 많은 소수점 이하 숫자 표현은 불가능하므로 일정 수준까지만 표현하기로 확정했다. 때문에 범위상 가까운 숫자로 인식하는데 이러한 이유로 컴퓨터의 실수 표현은 부정확하다고 한다

8. 리터럴(Literal)

소스 코드 중 값을 나타내는 문자를 리터럴이라고 한다
리터럴도 객체와 마찬가지로 타입이 있다
객체의 타입과 리터럴의 타입이 맞지 않으면 오류가 발생하게 된다

  • 이 경우 컴파일 오류가 발생하는 것을 볼 수 있다. 바이트는 255까지의 수를 표현할 수 있는데 표현 범위를 넘어선 int 값을 선언하려 했기 때문이다
  • 이러한 경우를 오버플로우(Overflow)라고 한다
    • 오버플로우란 공간 부족으로 인한 오류라 할 수 있는데, 표현할 수 있는 가장 큰 숫자보다 더 큰 숫자를 산출하는 계산을 수행했을 때 일어난다

  • sbyte는 -128까지를 표현할 수 있는데 거기서 -1을 더하니 오버플로우가 발생하여 127로 변한 모습이다

8. 연산자(Operators)

  • 프로그래밍 언어에는 산술, 비교 등 여러 가지 연산자가 있다
  • 연산자끼리는 우선 순위가 있고 결합 방법도 있다
  • 각 연산자마다 필요한 피연산자 개수와 타입이 다르다

9. 타입 변환(Type Conversion)

  • 타입을 정확하게 사용하는 것은 안전하고 강건한 프로그램을 작성하는 기본이 된다
  • 때에 따라서 데이터의 타입을 바꿔주어야 할 때가 있는데 이를 타입 변환이라 한다
  • 암시적 변환(Implicit Conversion)
    • 변환이 항상 가능하고, 데이터의 손실이 일어나지 않는 경우이다
    • 보통 작은 숫자 타입의 데이터를 큰 숫자 타입의 객체에 저장하는 경우이다

  • 암시적 변환이 불가능할 경우 컴파일 오류가 발생한다

  • 이 경우 컴파일 오류가 발생하는 것을 볼 수 있다. 바이트는 255까지의 수를 표현할 수 있는데 표현 범위를 넘어선 int 값을 선언하려 했기 때문이다
  • 암시적 변환이 가능한 경우는 이 링크에서 확인할 수 있다
  • 명시적 변환(Explicit Conversion)
    • 암시적 변환이 불가능한 경우 캐스트 연산자를 사용하여 명시적 변환을 할 수 있는데 이를 캐스팅(Casting)이라고도 한다

  • 소수를 표현하면 기본적으로 double타입으로 선언되는데, 이를 캐스팅하여 올바르게 작성해준 모습이다
  • 명시적 변환에도 규칙이 있으며 내가 원하는대로 바꿀 수 있는것이 아니다
  • 명시적 변환이 가능한 경우는 이 링크에서 확인할 수 있다
profile
게임 프로그래머 지망생

0개의 댓글