윈도우즈프로그래밍#3

LeeMir, 11 March 2021

언어 구조


어휘 구조
  • 어휘

    • 프로그램을 구성하고 있는 기본 소자
    • 토큰(token)이라 부름
    • 문법적으로 의미있는 최소 단위
  • 토큰의 종류

    • 특수형태
    • 지정어 : abstract, asn, …, while
    • 연산자 : +, =, *, /, …, »
    • 구분자 : , : . () {} []
    • 일반형태
      • 명칭(변수 이름) : sum, stk, ptr, …
      • 리터럴(상수) : 526, 5.53, 5.97e24, ‘c’, “string”
  • 지정어(keyword)

    • 프로그래밍 언어 설계시에 그 기능과 용도가 이미 정의되어 있는 단어
    • 변수 이름으로 사용하면 안됨
  • 명칭

    • 명칭의 의미

      • 자료의 항목(변수, 상수, 배열, 클래스, 메소드, 레이블)을 식별하기 위하여 붙이는 이름
    • 명칭의 형태

      • 문자로 시작(통상 메소드는 대문자로 시작)
      • 대소문자 구분
      • ’@’기호 붙이면 지정어를 명칭으로 사용 가능
        • ex) int @int = 10
      • 띄어쓰기 불가
      • 한글도 사용 가능
      • ex) int 변수 = 10;
  • 자바 문자 집합(character set)

    • 유니코드(Unicode)
    • 문자 표현 : 16 Bit
    • 세계 모든 언어 표현
    • static readonly double π = 3.1415926535897
  • @ 기호(at sign)

    • 지정어와 함께 사용할 때 지정어와 구분

    • 일반 명칭과 함께 사용할 때 동일한 명칭으로 인식

      • int @int = 10; // O (int != @int)

        int i, @i; // X (i = @i)

  • 리터럴

    • 자신의 표기법이 곧 자신의 값이 되는 상수

    • 종류

      • 정수형 상수 : 10진수, 16진수
      • 실수형 상수 : 고정소수점, 부동소수점
      • 부울 상수 : true, false
      • 문자 상수
      • 스트링 상수
      • 객체 참조 리터럴 : nul
    • 정수형 상수

      • 10진수와 16진수(0x)가 있음
      • C#에서는 8진수를 지원하지 않음
      • int형(default) : 32비트, long형 : 64비트 (접미어 -L, -I를 붙여야함)
        • 65535L : long형 숫자 상수 65535
    • 실수형 상수

      • 지수(exponent) 부분의 유무에 따라
        • 고정소수점 수 : 1.414, 3.1415924, 0.00001
        • 부동소수점 수 : 1.1414e01, 0.1414E1, 5E-5f
      • 용도에 따라
        • float(32 bit), double (64 bit) : 과학 연산
        • decimal(128 bit) : 회계 연산
      • 정밀도(precision)에 따라
        • float 형 : 접미어 -f, -F
        • double 형 : default, 접미어 -d, -D
        • decimal 형 : 접미어 -m, -M
    • 부울형 상수

      • binary value
      • false, true(절대 정수값 0과 1로 상호 변환되지 않음)
    • 문자 상수

      • 단일 인용부호(single quote) 사이에 표현

        • ex) ‘a’, ‘A’
      • escape sequence : 특수한 문자를 표현

        • \’ : single quote

          \” : double quote

          \0 : null

          \b : backspace

          \f : form feed

          \n : new line

          \r : carriage return

          \t : horizontal tab

    • 스트링 상수

      • 이중 인용부호(double quote) 사이에 표현된 스트링

      • System.String 클래스의 객체로 취급

      • 축어적 스트링 상수(verbatim string literal)

        • 스트링 상수 내에 이스케이프 문자열 표현

        • ’@’ 기호와 함께 스트링 상수 기술(이스케이프 문자열 무시)

          • string a = “hello\t world”; // hello world

            string b = “hello \\t world”; // hello \t world

            string c = @”hello \t world”; // hello \t world

    • 객체 참조 리터럴 (object reference)

      • 널 (null)
      • 아무 객체도 가리키지 않는 상태
      • 부적당하거나 객체를 생성할 수 없는 경우 사용
      • 초기화에 사용
  • 주석

    • 프로그램을 설명하기 위한 문장
      • 프로그램의 실행에는 무관
      • 프로그램 유지보수에 중요
    • 주석의 종류
      • // comment
        • //부터 새로운 줄 전까지 주석으로 간주
        • ex) int size = 100; //size는 100으로 초기화
      • /* comment */
        • /*와 다음 */ 사이의 모든 문자들은 주석으로 간주
        • 주석문 안에서 또 다른 주석이 포함될 수 없음
      • /// comment
        • /// 다음의 문자들은 주석으로 간주
        • C# 프로그램에 대한 웹 보고서를 작성하는데 사용하는 방법
        • XML 태그를 이용하여 기술
        • 컴파일 시에 /doc 옵션을 사용하여 XML 문서 생성
자료형
  • 자료형의 의미

    • 자료 객체가 갖는 형으로 구조 및 개념, 값의 범위, 연산 등을 정의
  • 자료형의 종류

    • 값형 : 숫자형(정수형, 실수형), 문자형, 논리형, 열거형, 구조체형
    • 참조형 : 클래스형, 인터페이스형, 델리게이트형, 배열형
  • 값형

    • 정수형
      • 부호 있는 정수형(signed) : byte, int, long
      • 부호 없는 정수형(unsigned) : ubyte, uint, ulong
    • 실수형
      • 실수의 표현 방법과 실수 연산은 IEEE 754 표준을 따름
      • 실수형의 종류
        • 부동 소수점
          • float(32비트), double(64비트)
        • 10진 자료형(decimal)
          • 고도의 정밀도를 요하는 계산에 이용(회계나 금융관련 계산)
          • 28 유효 자릿수
          • 효율성이 떨어짐(구조체로 접근하기 때문)
    • 문자형
      • 16비트 유니코드(Unicode)를 사용
    • 부울형
      • true와 false 중 하나의 값만을 가지는 자료형
      • 숫자 값을 가질 수 없음
      • 다른 자료형으로 변환 불가
    • 자료형에 대한 초기값
      • 기본적으로 대부분의 선언된 변수가 컴파일러에 의해 묵시적으로 갖게 되는 초기 값으로 0을 가짐
      • char형은 Null문자가 초기 값, boolean형은 false가 초기 값임
    • 열거형(enum)
      • 서로 관련 있는 상수들의 모음을 심볼릭한 명칭의 집합으로 정의한 것
      • 기호상수
        • 집합의 원소로 기술된 명칭
      • 순서값
        • 집합에 명시된 순서에 따라 0부터 부여된 값
        • 정수형으로 교환하여 사용할 수 있다
  • 참조형

    • 배열

      • 배열형의 의미

        • 같은 형의 여러 개의 값을 저장하는데 사용하는 자료형
        • 순서가 있는 원소들의 모임
      • 배열을 사용하기 위한 과정

        • 배열 선언

          • 배열이름, 차원, 그리고 원소의 형 등을 명시

          • int[] vector; // 1차원 배열

            short[,] matrix; // 2차원 배열

            object[] myArray;

            int[] initArray = {0,1,2,3,4,5}; // 선언과 함께 초기값 부여

        • 배열 객체 생성

          • new 연산자를 통해서 동적으로 생성

          • 배열의 객체를 생성함으로써 배열 이름은 특정 배열 객체를 가리킴

          • vector = new int[100];

            matrix = new short[10,100];

            myArray = new Point[3];

        • 배열에 값 저장

          • 배열의 인덱스는 0부터 시작
          • Length 프로퍼티 통한 배열의 길이 접근(vector.Length)
          • 인덱스 범위 초과 : IndexOutOfRangeException 발생
      • 배열의 배열

        • 배열의 원소가 다시 배열이 되는 배열
        • 다차원 배열과 구분
        • 각 원소에 해당하는 배열이 서로 다른 크기를 가질 수 있다.
          • int[][] arrayOfArray;
    • 스트링형

      • 스트링형의 의미

        • 문자열을 표현하기 위해 사용하는 자료형
        • System.String 클래스형과 동일한 자료형
      • StringBuilder 클래스

        • 효율적으로 스트링을 다루기 위한 클래스

        • 객체에 저장된 내용을 임의로 변경 가능

        • 스트링 중간에 삽입, 추가시키는 다양한 메소드 제공