NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    C, C++ 1. C, C++ 기초 학습.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. C#(씨샾)이나 Java(자바) 또는 Python(파이썬) 및 웹 관련된 언어들은 홈페이지에서 초보자 학습 형태로 많이 다루었습니다. 물론, OOP나 AOP, 디자인 패턴등과 같은 개발자가 알면 좋은 내용들도 포함하고 있죠^^; 이 게시판의 C#이나 자바 학습 내용도 있으니 한번씩 읽어보시면 좋겠습니다. 제가 일하는 산업군은 제조쪽인데요. 서버는 자바고 클라이언트는 C#입니다. 그렇다보니 C나 C++을 할일이 그리 많지는 않아요. 자~ 여러분들도 개발하기 위한 도구를 하나 준비해야 합니다. 아래 링크에서 비주얼 스튜디오 커뮤니티로 다운로드 받은 후 설치하세요.

    [ Visual Studio 다운로드 ]

     

    실행하면 아래와 같은 프로그램이 열립니다. 새 프로젝트 만들기를 선택하세요.

    jx1oGYh.png

     

     

    C++ 콘솔 앱을 선택하세요. 그리고, 프로젝트 이름은 "MyCPP"로 해줍니다.

    TZPvQN1.png

     

     

    아래와 같이 "Hello World!"를 출력해주는 콘솔 프로그램이 자동으로 생성됩니다.

    // MyCPP.cpp : 이 파일에는 'main' 함수가 포함됩니다. 거기서 프로그램 실행이 시작되고 종료됩니다.
    //
    
    #include <iostream>
    
    int main()
    {
        std::cout << "Hello World!\n";
    }
    
    // 프로그램 실행: <Ctrl+F5> 또는 [디버그] > [디버깅하지 않고 시작] 메뉴
    // 프로그램 디버그: <F5> 키 또는 [디버그] > [디버깅 시작] 메뉴
    
    // 시작을 위한 팁: 
    //   1. [솔루션 탐색기] 창을 사용하여 파일을 추가/관리합니다.
    //   2. [팀 탐색기] 창을 사용하여 소스 제어에 연결합니다.
    //   3. [출력] 창을 사용하여 빌드 출력 및 기타 메시지를 확인합니다.
    //   4. [오류 목록] 창을 사용하여 오류를 봅니다.
    //   5. [프로젝트] > [새 항목 추가]로 이동하여 새 코드 파일을 만들거나, [프로젝트] > [기존 항목 추가]로 이동하여 기존 코드 파일을 프로젝트에 추가합니다.
    //   6. 나중에 이 프로젝트를 다시 열려면 [파일] > [열기] > [프로젝트]로 이동하고 .sln 파일을 선택합니다.

     

    F5를 눌러서 실행 해보세요. 콘솔창에 Hello World!가 출력되죠?

    Maw0RZa.png

     

     

    새로운 언어를 가장 빠르게 배우는 방법은 그 언어로 직접 프로그램을 작성 해보는겁니다. 물론, 개발자라면 말이죠. 비개발자분들은 학원을 다니는게 가장 좋습니다^^; 아무튼, 뭔가 만들만한 학습용 프로젝트를 기획하고 인터넷을 찾아보면서 만드는겁니다. 많은 시행착오가 있겠지만, 디버깅 능력도 향상 시킬겸 일단 해보는거죠~ 코드의 첫줄에 선언해주는 인클루드(include)는 잠시 나중에 알아보고, int main() 함수에 대해 알아보도록 하겠습니다. 매인(main)은 주 프로그램의 시작을 나타내는 스페셜 함수입니다. 사용자가 만드는 다른 함수들과는 다르다는 의미입니다. C언어에서 파생된 모든 언어(C#, Java, C++...)들이 매인 함수를 시작 함수로 사용합니다.

     

    main 함수는 프로그램이 시작될 때 자동으로 호출되고, 대부분 이 함수가 다른 함수를 호출하면서 프로그램이 진행됩니다. 지금 당장 이해가 안되더라도 시작은 무조건 main함수를 선언하는 것으로부터 출발한다는걸 기억하세요! 두번째줄에 있는 "cout(씨아웃)"은 C의 printf와 같은 출력 함수입니다. printf보다 성능은 느리지만, 여러가지 편리한 기능을 가지고 있는데요. 출력할 내용이 문자인지 정수 또는 소수인지 자동으로 처리해줍니다. 이외에도 진법 처리나 시프트 연산자 처리등등... C의 printf와 다릅니다. C 문법으로 변경해보면 아래와 같은데요. 결과는 동일합니다.

    #include <stdio.h>
    
    int main()
    {
        printf("Hello World!\n");
    }

     

    아래와 같이 인크루드에 cstdio를 사용해도 됩니다.

    #include <cstdio>
    
    int main()
    {
        printf("Hello World!\n");
    }

     

    결과는 동일하죠?

    5irr7Zk.png

     

     

    주 진입점인 main 함수는 다른 함수들을 호출하여 프로그램을 작성합니다. 프로그램 내에 있는 함수를 호출할수도 있고, 라이브러리에 있는 함수를 호출할수도 있습니다. 라이브러리는 여러개가 있는데, 그중에서 우리가 사용하는 printf, cout 함수는 cstdio, stdio.h, iostream에 있습니다. 이 3가지의 차이점을 다 알 필요는 없지만~ 그래도, 어느정도 대략적인 내용을 숙지하고 있어야 합니다. 참고로, C++은 C의 모든 함수를 사용할 수 있지만, 반대로 C가 C++의 함수를 사용하는건 불가능합니다.

     

    cstdio는 "C STandarD Input and Output"의 약자로 C언어의 표준 입출력을 담당하는 라이브러리입니다. cstdio와 stdio.h는 기능상 차이점이 없습니다. stdio.h는 Global Namespace를 사용하고, cstdio는 Std Namespace를 사용합니다. 현재는 대부분 stdio.h를 사용하고 있고, C++은 iostream을 사용합니다. 여러분들은 iostream을 사용하면 됩니다. 여러가지 이유가 있지만, cstdio보다 iostream이 더 안전하기 때문입니다. iostream은 컴파일러가 I/O되는 개체의 타입을 static하게 알 수 있습니다. 그러나, cstdio는 % 토큰을 사용해서 다이나믹하게 타입을 알아냅니다. 특수 기호를 토큰으로 사용한다는건, 입력 문자열과 혼동될 수 있으며 예상하지 못한 에러를 발생시킵니다. iostream은 기존 코드를 변경하지 않고 유저가 정의한 타입을 I/O할 수 있습니다. 또한, 상속이 가능해서 직접 stream을 정의할 수 있습니다. printf는 가변 인자 함수이고, 다른 타입으로 정의할수도 없습니다.

     

    참고로, 함수(Function)는 데이타를 주고 받을 수 있습니다. 여기에서 main 함수는 인자(Parameter)가 없는 함수이고, printf는 인자가 있는 함수입니다. 함수를 정의할 때 인자가 없더라도 괄호는 반드시 추가해야 합니다. 규칙이니 그냥 외워야 합니다. 그리고, 중괄호({})는 문장들을 묶어서 하나의 덩어리(복합문 또는 블록)로 만들어 주는 역할을 합니다. 파스칼이나 VB의 begin ~ end와 같은 역할입니다. 아래는 파라메터가 있는 함수입니다.

    printf("Hello World!\n");

     

    파라메터 값은 아래와 같죠^^

    Hello World!\n

     

    마지막으로 인자로 넘긴 \n에 대해서 알아보고 마치도록 하겠습니다. \n은 줄바꿈을 나타낸건데요. 이것도 하나의 문자로 처리됩니다. 이런 문자를 이스케이프(Escape) 문자라고 하는데 출력의 양식을 정해주는 역할을 합니다. 양식이란 문자가 아닌 특수한 기능을 말합니다. 예를 들어 \t는 탭을 수행하고, \b는 백스페이스를 처리합니다. 그렇다면 \표시를 화면에 출력하려면 어떻게 해야 할까요? \\와 같이 입력하면 됩니다. 이스케이프는 C로부터 파생된 모든 언어들이 공통적으로 사용하니 그냥 외우면 됩니다. 그래서, C를 할줄알면 C#이나 Java를 금방 배웁니다. 기본적인 것들이 비슷하니까요^^;

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.