Blog

[C++] 1. C++ 개요, 환경 구축 및 기초 제어문

Category
Author
Tags
PinOnMain
1 more property
자료형, 제어문, 포인터와 메모리 주소 체계의 이해 및 게임 개발에 필수적인 C++ 핵심 문법 숙달
Table of Content
[1일차: C++ 개요, 환경 구축 및 기초 제어문 강의 대본]

1. C++ 언어 개요 및 게임 개발에서의 역할

슬라이드 1: 강의 오리엔테이션 및 과정 소개

강의 대본:
C++ 프로그래밍 기본 과정 시작.
본 과정의 최종 목표는 언리얼 엔진 기반 게임 개발을 위한 C++ 코어 지식 습득임.
참고 교재는 "Do it! C++ 완전정복"을 활용함.
1일차 학습 목표는 개발 환경 구축부터 기초 문법, 제어문까지의 전반적인 이해와 실습임.
눈으로 보는 것이 아닌, 직접 코드를 타이핑하며 학습을 진행할 것임.

슬라이드 2: C에서 C++로의 진화

강의 대본:
C++의 역사적 배경 설명. 1979년 비야네 스트롭스트룹에 의해 'C with Classes'라는 이름으로 시작됨.
기존 C언어가 가진 하드웨어 직접 제어 능력과 절차지향적 특성을 완벽히 호환함.
여기에 대규모 소프트웨어 개발에 필수적인 객체지향(OOP) 패러다임을 도입하여 확장된 언어임.

슬라이드 3: 다중 패러다임 언어, C++

강의 대본:
C++은 단일 패러다임에 국한되지 않음.
순차적 흐름과 함수 중심의 '절차지향'.
데이터와 기능을 하나로 묶는 '객체지향(클래스)'.
데이터 타입에 얽매이지 않는 '일반화 프로그래밍(템플릿)'.
이 3가지 패러다임을 모두 지원하는 강력한 언어임.

슬라이드 4: 게임 엔진과 C++의 상관관계

강의 대본:
언리얼 엔진과 같은 대형 게임 엔진이 C++을 고집하는 이유 설명.
대규모 물리 연산과 고해상도 렌더링을 처리하기 위한 압도적인 실행 속도 제공.
타 언어(C#, Java 등)에 있는 가비지 컬렉터(GC)가 없음.
가비지 컬렉터의 자동 개입으로 인한 예기치 못한 프레임 드랍(끊김 현상)을 원천 차단함.
개발자가 직접 메모리의 할당과 해제를 100% 통제함.

2. 개발 환경 구축 및 프로젝트 생성

슬라이드 5: 통합 개발 환경(IDE) 개요

강의 대본:
코드를 작성하고 실행하기 위한 도구, 통합 개발 환경(IDE) 소개.
소스 코드 편집기, 코드를 번역하는 컴파일러, 오류를 찾는 디버거가 하나로 통합된 프로그램임.
본 과정에서는 업계 표준인 Microsoft Visual Studio 2022를 사용함.

슬라이드 6: Visual Studio 2022 설치 가이드

강의 대본:
(실습 진행) Visual Studio Installer 실행.
설치 항목 중 'C++를 사용한 데스크톱 개발', 워크로드를 반드시 체크해야 함.
해당 항목을 체크해야 C++ 코드를 기계어로 번역하는 MSVC 컴파일러가 설치됨.
설치 완료까지 대기 및 개별 오류 점검.

슬라이드 7: 솔루션과 프로젝트의 이해

강의 대본:
Visual Studio 실행 후 '빈 프로젝트' 생성.
프로젝트(Project)와 솔루션(Solution)의 차이점 숙지.
프로젝트는 하나의 최종 실행 파일(.exe)을 생성하는 단위임.
솔루션은 이러한 프로젝트 여러 개를 묶어서 관리하는 큰 보관함 역할임.

슬라이드 8: 소스 파일 생성 및 환경 설정

강의 대본:
화면 우측 '솔루션 탐색기' 확인.
[소스 파일] 폴더 우클릭 -> [새 항목 추가] -> C++ 파일 선택.
파일명은 main.cpp로 지정.
확장자 .cpp는 C Plus Plus를 의미하며, 우리가 코드를 작성할 실제 작업 공간임.

3. C++ 빌드 파이프라인의 이해 및 Hello World

슬라이드 9: C++ 빌드 파이프라인 심화

강의 대본:
작성한 텍스트 코드가 실제 실행 프로그램이 되는 과정인 '빌드 파이프라인' 설명.
1단계 전처리(Preprocessing): #include 같은 지시문을 먼저 처리하여 코드를 준비함.
2단계 컴파일(Compiling): 인간의 코드를 컴퓨터가 아는 기계어(오브젝트 파일, .obj)로 번역함.
3단계 링크(Linking): 여러 오브젝트 파일과 외부 라이브러리를 하나로 연결해 최종 실행 파일(.exe)을 생성함.

슬라이드 10: 프로그램의 시작, main 함수

강의 대본:
운영체제(OS)가 C++ 프로그램을 실행할 때 무조건 가장 먼저 찾는 곳이 main 함수임.
int main() 구문을 작성하고 중괄호 { } 영역 내부에 코드를 작성함.
코드 마지막의 return 0;은 운영체제에게 프로그램이 에러 없이 정상적으로 종료되었음을 보고하는 신호임.

슬라이드 11: 화면 출력과 키보드 입력 (iostream)

강의 대본:
화면에 글자를 띄우고 입력을 받으려면 코드 최상단에 #include <iostream>을 적어야 함.
C++ 표준 기능들은 std::라는 네임스페이스(소속) 안에 들어있음.
큰 프로젝트에서 이름 충돌을 막기 위한 안전장치임.
매번 std::를 치기 번거로우므로 using namespace std;를 선언하여 기본 소속으로 지정함.

슬라이드 12: 콘솔 입출력 연산자 (cout, cin)

강의 대본:
데이터의 흐름(스트림) 방향성 이해.
cout << : 데이터를 모니터(콘솔) 방향으로 밀어내어 출력.
cin >> : 키보드로 입력받은 데이터를 변수 방향으로 밀어넣어 저장.
실습: 기본 텍스트 출력 및 빌드(Ctrl + F5) 진행.

4. 데이터 타입과 변수, 메모리 기초

슬라이드 13: 변수(Variable)와 메모리

강의 대본:
변수는 데이터를 임시로 저장하기 위해 컴퓨터의 RAM(메모리)에 공간을 할당받는 것임.
자료형 변수명; 형태로 선언함.
변수 이름은 용도를 직관적으로 알 수 있게 짓고, 숫자로 시작할 수 없다는 규칙을 준수해야 함.

슬라이드 14: C++ 기본 자료형(Data Types)

강의 대본:
데이터의 종류에 따라 메모리 그릇의 크기와 형태를 다르게 써야 함.
정수는 int (4바이트), 실수는 float (4바이트) 또는 double (8바이트) 사용.
문자는 char (1바이트), 참/거짓 논리값은 bool (1바이트) 사용.
float형 변수에 값을 넣을 때는 숫자 뒤에 f를 붙여 명시함.

슬라이드 15: 변수 초기화와 쓰레기값

강의 대본:
변수를 선언만 하면 메모리 공간만 할당될 뿐, 내부는 비워지지 않음.
이전 프로그램이 쓰다 남긴 데이터의 흔적인 '쓰레기값(Garbage Value)'이 들어있음.
이를 그대로 연산에 사용하면 치명적인 버그가 발생하므로, 변수 선언과 동시에 값을 할당하는 '초기화'를 습관화해야 함.
#include <iostream> using namespace std; int main() { int hp = 100; // 정수형 초기화 float speed = 5.5f; // 실수형 초기화 (f 주의) bool isDead = false; // 논리형 초기화 cout << "체력: " << hp << ", 속도: " << speed << endl; return 0; }
C++
복사

5. 기초 제어문 (조건문과 반복문)

슬라이드 16: 제어문 개요

강의 대본:
프로그램은 기본적으로 위에서 아래로 순차적으로 실행됨.
특정 상황에 따라 다른 행동을 하거나(분기), 같은 행동을 여러 번 수행(반복)하도록 흐름을 통제하는 것이 제어문임.

슬라이드 17: 조건문 (if, else if, else)

강의 대본:
if 문은 괄호 안의 조건이 참(true)일 때만 내부 블록을 실행함.
조건이 여러 개일 경우 else if, 모든 조건이 거짓일 경우 else로 처리함.
(실습) 체력 수치에 따른 캐릭터 생존/사망 판별 로직 작성.

슬라이드 18: 조건문 (switch ~ case)

강의 대본:
변수의 '명확한 정수 값'에 따라 분기할 때는 switch 문이 효율적임.
주로 캐릭터의 상태(대기, 걷기, 공격 등)를 나눌 때 사용함.
case 블록 마지막에 break;를 적지 않으면 아래 코드까지 전부 실행되므로 주의해야 함.

슬라이드 19: 반복문 (while)

강의 대본:
while 문은 조건이 참인 '동안' 무한히 내부 코드를 반복 실행함.
반복을 종료할 수 있는 탈출 조건(break)이나, 조건식을 거짓으로 만드는 연산이 내부에 반드시 포함되어야 함. 그렇지 않으면 프로그램이 멈추는 무한 루프에 빠짐.

슬라이드 20: 반복문 (for)

강의 대본:
for 문은 반복 횟수가 명확할 때 사용함.
for (초기식; 조건식; 증감식) 구조를 가짐.
continue; 키워드를 사용하면 현재 반복 회차의 남은 코드를 무시하고 다음 회차로 건너뛸 수 있음.

6. 1일차 종합 실습 및 요약

슬라이드 21: [종합 실습] 텍스트 RPG 전투 로직 구현

강의 대본:
오늘 배운 변수 선언, 입출력, while 반복문, if 조건문을 모두 결합하여 실제 작동하는 미니 전투 시스템을 구현함.
몬스터의 체력이 0보다 큰 동안(while), 플레이어의 입력에 따라 공격 또는 도망 처리를 분기(if)하는 구조임.
아래 코드를 직접 타이핑하고 실행하며 로직의 흐름을 파악할 것.
#include <iostream> using namespace std; int main() { int monsterHp = 100; int damage = 30; int choice = 0; cout << "야생의 몬스터 등장!" << endl; while (monsterHp > 0) { cout << "\n몬스터 HP: " << monsterHp << "\n행동(1:공격, 2:도망): "; cin >> choice; if (choice == 1) { monsterHp -= damage; cout << "공격 적중! (" << damage << " 데미지)" << endl; } else if (choice == 2) { cout << "도망쳤습니다." << endl; break; } else { cout << "잘못된 입력입니다." << endl; } } if (monsterHp <= 0) cout << "전투 승리!" << endl; return 0; }
C++
복사

슬라이드 22: Day 1 핵심 요약

강의 대본:
1일차 학습 내용 최종 정리.
C++ 빌드 3단계(전처리, 컴파일, 링크) 숙지.
자료형에 맞는 메모리 할당 및 쓰레기값 방지를 위한 변수 초기화의 중요성.
제어문(if, switch, while, for)을 활용한 프로그램 논리 흐름 제어.
작성한 코드와 개념들을 복습할 것.
Search