C, C++

언리얼 엔진을 배우기 위한 C++ 기초 과정 Day1

제이Lee 2022. 8. 13. 17:19

2022년 8월 13일 토요일.

오늘부터 매주 토요일 12시부터 6시까지 학원에서 언리얼 엔진을 배우기 위해 공부를 시작했다.

나는 이미 6년차 개발자로 근무 중이지만, 

Delphi라는 남들이 잘 쓰지않는 언어를 주언어로 일을 하고 있다.

물론 c++을 모르는 건 아니다.

입사를 c++ 개발자로 했기 때문에 어느정도 기초부터 중급~상급의 실력은 가지고 있다.

 

오늘은 학원 첫 수업이라 

초보자들을 위한 c++ 기초부터 강의를 시작하시나 보다.

나는 그냥 이 시간에 아무것도 안하고 있기는 좀 그렇고 해서,

모던 c++에 대해서는 잘 모르기 때문에,

STL문이나 Regex 같은 내가 잘 모르는 분야를 쉬엄쉬엄 공부하면서

블로그에 글도 써보려 한다.

 

교육 과정은 3개월은 c++, 남은 3개월은 언리얼 엔진에 대해 배우는 6개월 교육 과정이다.

오늘부터 수업중 VS에 코딩한 내용을 블로그에 기록하고,

중간 중간 수업 외에 혼자 코딩한 부분에 대해 주석을 통해 설명해보려 한다.

 

아마 3개월은 기초과정이기에..

어느정도 C++을 아는 사람이라면 다 아는 내용일거다.

그래도 이렇게 다시 기초부터 배우니깐 오랜만에 공부하는 느낌이 나서 좋은 것 같다.

 

여담으로 대부분 나이가 엄청 어린것 같다..

나도 이제 늙었구나..

그럼 오늘 학습한 내용에 대해 얘기해보겠다.

 

-----------------------------------------------------------------------------------------------------------

 

#include <iostream>
#include <regex>
#include <string>
#include <vector>

using namespace std;

int main()
{
    string str("Mobile1=ABCDEFGGGG");
    // str에서 regex()안의 내용을 ""로 바꿔주는 함수다.
    string str2 = regex_replace(str, regex("Mobile1="), ""); // Mobile1 부분에 정규식을 넣으면 좀더 깊이있게 바꿔줄 수 있다.
    cout << str2 << endl; // 결과로는 "ABCDEFGGGG"가 나온다. 
    smatch m; // smatch reger에서 사용하는 조건에 대한 값을 받는 변수?
    if (regex_search(str, m, regex("ABCDEF")))  // str에서 regex()안에 내용이 포함되어 있으면 True Return
        cout << "Find" << endl;                 // 여기도 regex()안에 정규식을 사용하면 좀 더 깊이있게 serch할 수 있다.
    else
        cout << "Not Find" << endl;

    int num = 100;
    int num2 = 300;

    int sum = num + num2;
    cout << sum << endl;

    int nTestNum[] = {1,2,3,4,5};
    vector<int> vi(&nTestNum[0], &nTestNum[5]);
    vector<int>::iterator iter;
    for (iter = vi.begin(); iter != vi.end(); iter++) {
        cout << *iter << endl;
    }
    // 내가 하고 싶었던건 str의 [0] 부터 접근하는 vertor를 만들고 싶었는데..
    // 이건 vertor[0] = str, vertor[1] = str2 이런식으로 들어가는 것 같다.
    // 이건 다음 시간에 한 번 방법이 있는지 찾아봐야겠다.
    vector<string> vi2{ str, str2 };
    vector<string>::iterator iterStr;
    for (iterStr = vi2.begin(); iterStr != vi2.end(); iterStr++) {
        cout << *iterStr << endl;
    }
    
    printf("\nnum : %d, num2 : %d\n", num, num2);
    printf("num + num2 = %d\n", num + num2);
    printf("num - num2 = %d\n", num - num2);
    printf("num * num2 = %d\n", num * num2);
    printf("num / num2 = %d\n", num / num2); // 이 경우에 값이 0이 나오는데, 그 이유는 정수를 정수로 나누기 때문이다.
                                             // 현업에서 이거 모르면 정말 어이 없이 실수하거나 윗분들한테 엄청 까일 수 있다..조심하자.
    float fNum = 100, fNum2 = 300;
    printf("\nfNum : %f, fNum2 : %f\n", fNum, fNum2);
    printf("num / num2 = %f\n", fNum / fNum2); // 이렇게 바꿔주면 원하던 결과 값을 출력해낼 수 있다. 실수형을 실수형으로 나눴기 때문이다.
                                               // 그리고 실수형을 출력하기 위해서는 %d가 아니고 %f로 바꾸면 된다. 
                                               // 추가로 %.3f 이런식으로 원하는 소수점 자리까지도 표시할 수 있다.
    // 연산자 우선순위에 대해 알아보자.
    cout << "\n" << "연산자 우선순위에 대해 알아보자." << endl;
    printf("num + num2 * num = %d\n", num + num2 * num); // 값이 30100이 나온다. 당연한거지만, +보다는 *가 먼저다.
    // 40000을 출력하고 싶다면
    cout << "40000을 출력하고 싶다면" << endl;
    printf("(num + num2) * num = %d\n", (num + num2) * num); // 이런식으로 괄호를 쳐주면 된다.

    // 대입연산자에 대해 알아보자.
    // nNumber1을 5로 만들어보자. nNumber = 5는 금지.
    cout << "\n"  << "대입연산자에 대해 알아보자." << endl;
    cout << "nNumber1을 5로 만들어보자. nNumber = 5는 금지." << endl;
    int nNumber1 = 0;
    nNumber1 += 5; // nNumber++은 nNumber를 1만큼 증가시키는 건데,
                   // ++은 +=1과 같다. 때문에 +=5를 하면 nNumber1 = nNumber1 + 5랑 같다. 결국 5가 나온다.
                   // *=, -=, /=도 같은 방법으로 이용 가능하다.
    cout << nNumber1 << endl;
    nNumber1 = 2;
    nNumber1 *= 5;
    cout << nNumber1 << endl;
    nNumber1 = 5;
    nNumber1 -= 3;
    nNumber1 =- 2;   // 이렇게 하면 nNumber1 = -2; 이렇게 해석된다. 조심하자.
    cout << nNumber1 << endl;
    
    nNumber1 = 0;
    for (int i = 0; i < 7; i++) {
        nNumber1++;
    }
    cout << nNumber1 << endl;
    cout << endl;
    cout << "비교연산자에 대해 알아보자." << endl;
    if (nNumber1 == 0)
        cout << "nNumber1은 0이다." << endl;
    else
        cout << "nNumber1은 0이 아니다." << endl;
    // 14세 미만 일 경우 "14세 미만입니다"를 출력
    // 20세 초과일 경우 "20세 초과입니다"를 출력
    int age;
    while (true) {
        cout << "age 입력 : ";
        cin >> age;
        if (age == 0)
            break;
        if (age < 14)
            cout << "14세 미만입니다." << endl;
        else
            cout << "14세 미만이 아닙니다." << endl;

        if (age <= 14)
            cout << "14세 이하입니다." << endl;
        else
            cout << "14세 이하가 아닙니다." << endl;

        if (age > 20)
            cout << "20세 초과입니다." << endl;
        else
            cout << "20세 초과가 아닙니다." << endl;

        if (age >= 20)
            cout << "20세 이상입니다." << endl;
        else
            cout << "20세 이상이 아닙니다." << endl;
    }
}           

 

 

-- 실행 결과.

---------------------------------------------------------------------------------------

이 뒤에 논리연산자에 대해서도 배웠는데, 

6시간 동안 강의 들으려니 피곤해서 그냥 간단하게 글로 정리하겠다.

// 논리연산자. && == and / || == or / ! == not
// true == 1, false == 0

이것만 알면 된다. 사용법은..인터넷에서 찾아보자.

 

강의 초반엔 딱히 올릴 만한게 없어서

별로 쓸게 없을 것 같다.

뭔가 새로운걸 배우거나 강의가 점점 진행될수록

더 높은 퀄리티의 글을 쓸 수 있게 되지 않을까 싶다.

 

오늘의 학습 끝.         

댓글에 질문 같은 것도 받습니다..

답해드릴 수 있는건 답해드리겠습니다!

감사합니다.