자료형, 제어문, 포인터와 메모리 주소 체계의 이해 및 게임 개발에 필수적인 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)을 활용한 프로그램 논리 흐름 제어.
◦
작성한 코드와 개념들을 복습할 것.
Related Posts
Search







