블로그 이미지
하루, 글. 그림. 영상매체. 표현을 도와주는 기기들. 도전 중. 동화다아아
    동화다아아

    카테고리

    분류 전체보기 (176)
    잡담 (1)
    IT 기기-리뷰&뉴스 (7)
    리뷰 - 도서 (1)
    리뷰 - 영상 (0)
    리뷰 - 그림/음악 (1)
    내장형 하드웨어 (163)
    Total
    Today
    Yesterday
    - 객체지향 언어 (C++, 자바...)
     → C 언어는 구조적 프로그램
     → 객체, 절차 등의 분류는 무엇을 타겟으로 작성하는 것으로 나눈다.
     → 즉, 객체지향 언어란 객채에 집중하는 언어이다.
     → 객체지향은 Object Oriented C,  → OOC라 부르며 이것은 객체지향으로 짜는 C라는 말이다.
     → C로도 객체지향의 개념을 가지면 객체 지향을 표현할 수 있으나 이는 많은 시간과 불편함이 따른다.


     → 어셈블리, C 등은 제어를 위해 태어난 언어이다.
     → 사실상 모든 프로그램은 Hardware를 컨트롤 하기 위한 것이나 그 활용의 차이가 있다.
     → 예로 Assembly와 C를 비교해 보면
            A변수가 1000번지에 위치하고 있을 때
            0x64+1을 표현한다면 C의 경우 A = 64+1; 로 표현하면 끝이지만 Assembly의 경우 대략
            mov   eax, 0x64
            inc eax
            mov [1000], eax 의 형식으로 사용해야 한다. 
            이것은 저급언어와 고급언어의 차이, 즉, 사용자(인간) 중심으로 언어가 작성되는 가의 차이이다.

     → RAD(Rapid Application Development) 툴(예, visual basic, delphi...)의 경우 개발 속도와 그래픽에 최적화 되어 있다.
     → 언어는 고급언어로 갈 수록 개발 속도나 개발환경이 편리해 지나 번지를 직접 건드릴 방법이 없어 제어에는 적합하지 않게 된다.
     → 상위 계층은 하위 계층의 개념을 포함한다.

     → 구조적 프로그래밍의 개념을 적용하면 C는 전체가 public이며, 전역에 static을 붙이면 protected가 된다.
     → 언어는 사용 목적에 맞추어 선택해 사용해야 한다. (구조적 프로그램을 작성하거나 H/W 등의 직접적인 접근을 위해서 C를 사용하는 등)

    - C++ 언어 수업 (※ 추천 도서 - C 프로그래머를 위한 C++(한빛 미디어-번역본))
     → C+은 모든 C의 문법을 포함한다.
     → cl은 원래대로 linux는 gcc 대신 g++로 컴파일(g++ -o main main.cpp)
     → g++는 C++의 확장자가 .cpp 외에도 .cc, .c++, .C 등의 여러가지의 확장자가 있으며 모두 컴파 가능하다.
     → 하지만 cl은 .cpp 이외의 확장자를 인식하지 않는다.
     → 이는 cl은 확장자 , gcc는 명령어 기반이기 때문
     → 예제
    #include<stdio.h>

    enum
     Test2
    {
      ZERO,
      ONE
    };
    struct Test
    {
      int A;  
    };

    int main()
    {
      struct Test OBJ1;
      struct Test OBJ2;
      //enum Test2 OBJ3 = 0;
      int OBJ4 = ZERO;

      printf("%d\n", OBJ4);
      printf("Hi!!\n");
      
      return 0;
    }

     → 위의 컴파일을 살펴보면 우선 enum Test2 OBJ3 = 0; 부분이 주석 처리되어 있다. 저 부분의 주석을 풀고 .c와 .cpp로 각각 컴파일해 보면 .c는 정상적으로 .cpp는 컴파일 에러가 나는 것을 확인할 수 있다.
     → enum의 타입은 enum으로 여기에 int형을 대입하면 C++에서는 에러가 발생한다. 반대로 C에서는 에러가 발생하지 않는데 즉, C++이 타입(형)에 대해 엄격하다는 것을 알 수 있다. 
     → 단, 반대로 int형에 enum형을 대입하는 것은 C와 C++ 둘다 가능하다.
     → 또한 union도 enum과 역시 같은 성질을 가진다.
     → C++은 C와는 다르게 struct의 생략이 가능하다. 따라서 구조체에서 typedef가 필요 없다.(사용하지 않아도 struct의 생략이 가능하므로)

    #include<iostream.h>

    int
     main()
    {
      int A = 100;
      float B = 5.1f;
      char C = 97;
      
      cout << "Hi!!\n";
      cout << A << "\n";
      cout << B << "\n";
      cout << C << "\n";

      return 0;
    }
     
     → C++은 stdio.h 대신 iostream.h를 사용한다.
     → printf의 대신으로 cout을 사용한다.
     → 'c'는 콘솔을 의미하며 'out'은 출력 '<<'은 화면으로 보낸다는 뜻으로 즉, 모니터에 출력한다는 의미
     → 또한 cout은 원래 타입이 무엇인지 스스로 판단해서 출력한다.
     → 구구단 작성
    #include<iostream.h>

    int
     main()
    {
      int A = 100;
      float B = 5.1f;
      char C = 97;
      int iCntX;
      int iCntY;
      
      cout << "Hi!!\n";
      cout << A << "\n";
      cout << B << "\n";
      cout << C << "\n";
      cout << "test " << A << " " << B << "\n";
      // 구구단 출력 1~9단
      for(iCntX = 19 >= iCntX; ++iCntX)
      {
        for(iCntY = 19 >= iCntY; ++iCntY)
        {
          //cout << iCntX << "x" << iCntY << " = " << (iCntX*iCntY) << "\n";
          cout << iCntY << "x" << iCntX << = " << (iCntX*iCntY) << " ";
        }
        cout << "\n";
      }
      return 0;
    }

     
     → 출력

     
    - 오버 라이딩
     → 함수가 이름과 시그니쳐(인자)까지 같은 것
    - 오버 로딩
     → 함수 이름이 같고 인자가 다른 것(인자로 구분 - 함수 이름이 같기 때문에 인자의 개수로 기능을 조절할 수 있다.)
    #include<iostream.h>

    void
     Test(int A)
    {
      cout << A << endl;
      return ;
    }
    void Test(int A, int B)
    {
      cout << A << " " << B << endl;
      return ;
    }

    int main()
    {
      Test(100);
      Test(10075);

      return 0;
    }

     → 출력


     → "\n" 대신 endl 을 사용할 수 있다.



    Posted by 동화다아아
    , |

    최근에 달린 댓글

    최근에 받은 트랙백

    글 보관함