Study Platform

yechan 강의 복습

공부할 과목을 선택하거나 대시보드로 이동하세요

객체지향프로그래밍기초
OOP · Class · Inheritance
게임기획과게임엔진
Unity · Design · GDD
게임스크립트프로그래밍
Scripting · Logic · Events
게임프로그램구조
CPU · Memory · OS · Algorithm
대시보드로 이동 →
Study Dashboard

안녕하세요, yechan 👋

4개 과목의 강의를 복습해요. 과목을 선택해 시작하세요.

💡
객체지향프로그래밍기초 OOP Fundamentals

클래스, 객체, 캡슐화, 상속, 다형성 등 객체지향의 핵심 개념을 다룹니다.

ClassObjectInheritancePolymorphism
🎮
게임기획과게임엔진 Game Design & Engine

게임 기획 문서 작성법과 Unity 등 게임 엔진의 기초 개념을 다룹니다.

GDDUnitySceneGameObject
📜
게임스크립트프로그래밍 Game Script Programming

게임에서 사용되는 스크립트 언어와 이벤트 기반 프로그래밍을 다룹니다.

VariablesFunctionsEventsLogic
🖥️
게임프로그램구조 Game Program Architecture

컴퓨터 구조, 운영체제, 이산수학, 알고리즘 등 프로그래밍의 기초를 다룹니다.

CPUMemoryOSAlgorithm
/ 객체지향프로그래밍기초 / 1주차
3 / 15 주차 완료
객체지향프로그래밍기초 · Week 01 · Orientation

강의 소개 (OT)

객체지향 언어를 배우는 이유, 강의 목표, 그리고 절차지향과 객체지향의 차이.

C++OOP 절차지향객체지향
01

왜 객체지향 언어를 배우는가?

프로그래밍 학습의 목적

🎯
학습 이유
사고력 · 논리 · 소프트웨어 이해
🧩 문제 해결 능력

사고력을 필요로 하는 다양한 문제를 해결하는 방법을 배운다

💡 논리적 사고 훈련

논리적이고 창의적으로 사고하는 훈련을 한다

⚙️ 소프트웨어 원리 이해

소프트웨어의 동작 원리를 이해한다

02

강의 목표 & 평가 방법

이 과목에서 무엇을 배우는가

📋
수업 목표 & 평가
C++ 기초 · 콘솔 프로그램 · 객체지향
📘 목표 1

C++의 기본을 이해한다

💻 목표 2

C++로 콘솔 프로그램을 구현할 수 있다

🏗️ 목표 3

객체 지향 프로그램을 이해한다

📊 평가 방법
20%
출석
40%
중간고사+과제
40%
기말고사+과제
📌 과제 제출 규칙

소스코드(*.cpp, *.h)와 실행결과 캡처파일 제출 · 매주 토요일 23:59까지 · 기한 이후 감점

03

강의 목차

15주 전체 커리큘럼

📅
전체 강의 일정
1주차 ~ 15주차
주차내용주차내용
1주강의 소개9주배열
2주프로그래밍 개요 (데이터, 자료형, 상수와 변수)10주포인터
3주식과 연산자11주포인터와 배열의 완성
4주조건문12주구조체
5주반복문13주파일입출력
6주함수 114주메모리관리
7주함수 215주기말고사
8주중간고사
04

절차지향 vs 객체지향

C와 C++의 차이

⚔️
C vs C++ 비교
두 패러다임의 특징
🔄 절차지향 (C)
  • 1970년대 AT&T 벨연구소에서 Ken Thompson, Dennis Ritchie가 UNIX용으로 개발
  • 고급언어지만 저급언어 특성도 보유 → 매우 효율적
  • 실행 순서 고정 → 코드 순서 변경시 동일 결과 보장 어려움
  • 디버깅이 어려움 · 유지보수 어려움
🏗️ 객체지향 (C++)
  • 1983년경 Bjarne Stroustrup이 C의 장점을 유지하며 약점 보완
  • 코드 재활용성이 높음
  • 구조화 → 오류 수정 쉬움
  • 이식성이 좋고 유연함
  • 단점: 상대적으로 속도가 느림
🏪 자판기 예시로 보는 차이
절차지향 분석
고객은 돈을 자판기에 넣는다
자판기는 돈을 검사하여 제품과 잔돈을 꺼내준다
고객은 잔돈과 제품을 받는다
객체지향 분석
👤 고객 (객체)
돈을 넣는다
잔돈을 받는다
제품을 받는다
🏧 자판기 (객체)
돈을 받는다
돈을 검사한다
제품을 준다
잔돈을 준다
📌 핵심 차이

절차지향은 함수(순서)를 중심으로 설계하고, 객체지향은 객체(데이터+행동)를 중심으로 설계한다. 객체지향은 현실 세계의 사물을 그대로 모델링하는 방식이다.

객체지향프로그래밍기초 · Week 02

C++ 시작하기

프로그래밍 언어의 개념, Visual Studio 프로젝트 생성, 기본 프로그램 구조와 오류 처리.

컴파일러main() coutnamespace디버깅
01

프로그래밍 언어

사람과 컴퓨터의 대화 수단

🔄
소스코드 → 실행파일 변환 과정
컴파일 · 링크 · 빌드

컴퓨터는 0과 1로 된 기계어만 이해하고, 사람은 기계어를 이해하기 힘들다. 그래서 사람은 이해하기 쉬운 프로그래밍 언어로 작성하고, 컴파일러가 기계어로 번역한다.

소스파일
파일명.cpp
사람이 작성한 코드
→ compile →
목적파일
파일명.obj
기계어로 번역됨
→ link →
실행파일
파일명.exe
라이브러리와 결합
📌 빌드(Build)란?

코딩 → 컴파일 → 링크 → 실행파일 생성의 전체 과정을 빌드라고 한다. Visual Studio에서 Ctrl + Shift + B로 빌드, Ctrl + F5로 실행(디버그 없이 시작).

02

Visual Studio 프로젝트

통합 개발 환경(IDE) 사용법

🛠️
프로젝트 생성 순서
콘솔 앱 · C++ · Windows
STEP 1
새 프로젝트
콘솔 앱 선택 (C++/Windows/콘솔)
STEP 2
프로젝트 구성
프로젝트 이름과 저장 위치 설정
STEP 3
소스 파일 추가
소스 파일 폴더 → 우클릭 → 추가 → 새 항목
STEP 4
빌드 & 실행
Ctrl+Shift+B → Ctrl+F5
⌨️ 주요 단축키
Ctrl+Shift+B빌드(컴파일)
Ctrl+F5디버그 없이 실행
F5디버깅 시작
F9중단점 설정/해제
F10한 줄씩 실행
Shift+F5디버깅 종료
🐛 Debug vs Release 모드
DEBUG 모드
디버깅 정보 포함 → 파일 크기 크고 실행 느림. 개발 중에 사용.
RELEASE 모드
코드 최적화 → 파일 크기 작고 빠름. 배포용.
03

프로그램 기본 구조

Hello World 해부하기

📝
C++ 프로그램의 구성 요소
전처리기 · main() · cout · namespace
// myfirst.cpp – 메시지를 출력하는 프로그램 #include <iostream> // 전처리기 지시자 using namespace std; // std:: 접두어 생략 int main() // 프로그램 시작점 { // 함수 시작 cout << "Hello World!\n"; // 출력문 (;로 마무리) cout << "C++ 세상에 온 것을 환영합니다."; return 0; // 함수 종료 } // 함수 끝
#include <iostream>

전처리기 지시자. 컴파일 전에 iostream 파일 내용을 프로그램에 추가하도록 지시. C++의 입출력 기능(cout, cin)이 여기 정의됨.

int main()

프로그램이 처음 시작될 때 호출되는 함수. {로 시작해서 }로 끝남. 문장은 위→아래 순서로 실행.

cout << "출력내용"

화면에 출력하는 객체. << 연산자로 데이터를 전달. endl 또는 \n으로 줄바꿈.

using namespace std;

C++ 표준 라이브러리는 std 네임스페이스에 있음. 이 선언으로 std::cout 대신 cout만 써도 됨.

🔤 제어 문자열 (Escape Sequence)
문자의미문자의미
\n줄바꿈 (개행)\t탭 문자
\\역슬래시\'작은따옴표
\"큰따옴표
📌 프로그램 작성 규칙

① 한 행에 하나의 구문  ② 세미콜론(;)은 절대 빠트리지 말 것  ③ 중괄호 {} 각각 별도 행  ④ 함수 내부는 들여쓰기

04

오류와 디버깅

버그를 찾고 고치는 방법

🐞
프로그램 오류의 종류
컴파일 오류 · 런타임 오류 · 로직 오류
① 컴파일 오류

프로그램의 문법적 오류. 컴파일 자체가 안 됨. 예: 세미콜론 누락, 괄호 불일치

cout << "hello" ← ; 없음!
② 런타임 오류

문법은 맞지만 실행 중 오류 발생. 예: 메모리 참조 오류, 배열 범위 초과

③ 로직 오류

컴파일·실행은 되지만 원하는 결과가 나오지 않는 경우. 가장 찾기 어려움

🔍 디버깅 방법 3가지
① 중단점(Break Point)
F9로 설정. 특정 줄에서 실행을 멈추고 변수값 확인
② 코드 이동
F10(한 줄씩), F11(프로시저 단위), F5(다음 중단점까지)
③ Watch 창
변수의 현재 값을 실시간으로 확인. Debug 모드에서만 동작
객체지향프로그래밍기초 · Week 03

데이터 처리

변수와 메모리, 다양한 자료형, 문자와 ASCII 코드, 표준 입출력(cin/cout).

변수int/float/char ASCIIcinconst
01

변수와 메모리

정보를 저장하는 방법

💾
변수 선언과 메모리 할당
위치 · 종류 · 값

정보를 저장하려면 프로그램은 3가지를 알아야 한다: (1) 어디에 저장(메모리 위치)되는가, (2) 어떤 종류(자료형)의 정보인가, (3) 어떤 값이 저장되는가. 이 세 가지를 지정하는 것이 변수 선언이다.

int count; // 정수형 변수 선언 → 메모리 4바이트 할당 count = 5; // 값 5를 저장 &count; // count가 저장된 메모리 주소 char ch = 'A'; // 문자형 변수, 선언과 동시에 초기화 double rnum = 3.14;
📛 변수 이름 규칙
✅ 유효한 이름
result   Hong_gil_dong _p_g_    Year2017 kor_score_
❌ 무효한 이름
1996Birth_year ← 숫자로 시작 Gil-dong ← - 사용 불가 Doctor Kim ← 공백 불가 double ← 키워드 Dollor# ← # 사용 불가
📌 네이밍 관례

두 단어 조합: 밑줄 사용 my_apple 또는 카멜케이스 myAppleOrange

02

자료형 (Data Type)

데이터의 종류와 메모리 크기

📊
C++ 기본 자료형 총정리
정수형 · 실수형 · 문자형 · bool
분류자료형크기범위
정수형 short 2 byte -32,768 ~ 32,767
int 4 byte -2,147,483,648 ~ 2,147,483,647
long 4 or 8 byte 최소 32bit
실수형 float 4 byte 1.2e-38 ~ 3.4e38
double 8 byte 2.2e-308 ~ 1.8e308
문자형 char 1 byte -128 ~ 127
부울형 bool 1 byte true / false
⚠️ 정수 오버플로우

short 최대값(32767)에 1을 더하면 -32768로 순환된다. 자료형의 표현 범위를 벗어나면 예상치 못한 결과가 발생!

short count = 32767; count = count + 1; // → -32768!
📐 signed vs unsigned

signed: 양수+음수 표현 (기본값)
unsigned: 양수만 → 최대값 2배

short: -32768 ~ 32767 unsigned short: 0 ~ 65535
🔢 데이터 표현 (2진수)

컴퓨터는 2진수(0과 1)로 모든 데이터를 저장한다.

1 bit
0 또는 1
전기 스위치 ON/OFF
1 byte = 8 bit
2⁸ = 256
256가지 값 표현
int = 4 byte = 32 bit
2³²
약 42억 가지 값
🔒 기호상수 (const & #define)
#define (전처리기)
#define PI 3.141592 #define TAX_RATE 0.15 // ; 없음! 컴파일 전 단순 치환
const (C++ 권장)
const int MONTH = 12; const double pi = 3.1415; // 선언 후 값 변경 불가! pi = 1.44; ← 컴파일 오류
03

문자와 ASCII 코드

컴퓨터가 문자를 저장하는 방법

🔤
ASCII 코드 체계
문자 → 정수로 대응

컴퓨터는 문자를 그대로 저장할 수 없다. 각 문자를 정수(숫자)로 대응해서 저장하는데, 이 대응 표가 ASCII 코드다.

문자 범위10진수설명
0 ~ 948 ~ 57숫자 문자
A ~ Z65 ~ 90영문 대문자
a ~ z97 ~ 122영문 소문자
char ch = 'A'; cout << ch; // 출력: A cout << (int)ch; // 출력: 65 (ASCII 코드값) // 문자에 숫자 연산 가능! ch = 'a'; ch = ch + 1; // 'a'(97) + 1 = 'b'(98) cout << ch; // 출력: b // 대문자 ↔ 소문자 차이 = 32 'A' = 65, 'a' = 97 // 97 - 65 = 32 // 숫자 0과 문자 '0'의 차이 int n = 0; // 정수 0 char c = '0'; // 문자 '0', ASCII 48
📌 대소문자 변환 공식

대문자 → 소문자: 소문자 = 대문자 + 32  |  소문자 → 대문자: 대문자 = 소문자 - 32

04

표준 입출력

cout으로 출력, cin으로 입력

⌨️
cin과 cout 사용법
키보드 입력과 화면 출력
📤 cout (출력)
// 체이닝 가능 cout << "당근: " << carrot << "개" << endl; // 실수 출력 형식 지정 cout << fixed; // 고정 소수점 cout.precision(2); // 소수점 2자리
📥 cin (입력)
int x; cin >> x; // 키보드 → x cout << x << endl; // 여러 변수 동시 입력 cin >> x >> y >> z;
💻 두 정수 입력받아 합 출력 예제
#include <iostream> using namespace std; int main() { int num1, num2; cout << "첫번째 정수 입력 : "; cin >> num1; cout << "두번째 정수 입력 : "; cin >> num2; cout << "두 정수의 합 : " << num1 + num2 << endl; return 0; }
🔒  4주차 조건문 — 업데이트 대기 중
🔒  5주차 반복문 — 업데이트 대기 중
🔒  6주차 함수1 — 업데이트 대기 중
/ 게임기획과게임엔진
업데이트 예정
게임기획과게임엔진 · Game Design & Engine

게임기획과게임엔진

게임 기획부터 엔진 사용법까지. 강의 내용이 업데이트되면 여기에 추가됩니다.

GDDUnitySceneGameObject
🔒  1주차 게임 기획 개요 — 업데이트 대기 중
🔒  2주차 GDD 작성법 — 업데이트 대기 중
🔒  3주차 Unity 엔진 기초 — 업데이트 대기 중
🔒  4주차 씬 & 오브젝트 — 업데이트 대기 중
/ 게임스크립트프로그래밍 / 1주차
2 / 15 주차 완료
게임스크립트프로그래밍 · Week 01 · Game Start!

파이썬의 세계로

파이썬 기초부터 2D 게임 제작까지 — 환경 설치, 첫 코드 작성, print() 함수 완전 정복.

PythonVS Code Hello Worldprint()
01

왜 파이썬(Python)인가?

이 과목의 목표와 파이썬을 선택한 이유

🎯
강의 목표
파이썬 기초 → 2D 게임 제작
🧩 단순 문법 암기 NO

문법만 외우는 코딩은 지루함. 내 손으로 캐릭터를 직접 움직이는 것이 핵심

🎮 게임 제작 YES

15주 뒤에는 나만의 게임을 친구에게 보여줄 수 있는 실력을 갖춤

📊 평가 기준
출석 20% 중간 40% 기말 40%

수업 참여도 — 가점

🐍
파이썬을 선택한 이유
직관적 문법 · 세계 1위 · Pygame
📖 직관적인 문법

영어 문장을 읽듯이 자연스럽게 읽힘. 초보자도 빠르게 이해 가능

🌍 세계 1위 언어

전 세계에서 가장 인기 있고 활용 범위가 넓은 언어 (IEEE Spectrum 기준)

🎮 Pygame 라이브러리

파이썬으로 2D 게임을 쉽게 만들 수 있도록 그래픽, 사운드 기능을 모아놓은 강력한 도구

📌 강좌 로드맵
STEP 1
환경 설정
파이썬 · VS Code
설치
STEP 2
파이썬 기초
조건문 · 반복문
함수 · 자료구조
STEP 3
OOP
클래스 · 모듈
STEP 4
응용
Pygame으로
게임 제작
02

개발 환경 설정

파이썬 설치 → VS Code 설치 → 파이썬 확장팩

⚙️
STEP 1 · 파이썬 설치
python.org → Windows 설치 → PATH 등록
1
python.org 접속
공식 홈페이지
Downloads 탭
2
Windows 64-bit 다운
최신 안정 버전
3.x.x 권장
3
⚠️ PATH 체크
설치 전 반드시
체크박스 확인
4
Install Now
Setup was
successful ✓
🚨 별 다섯 개 주의! — Add Python.exe to PATH

설치 창 하단의 "Add Python.exe to PATH" 체크박스를 반드시 체크해야 함.
빠트리면 터미널에서 python 명령어를 인식하지 못함. 재설치 필요.

설치 확인 방법: 윈도우 키 + Rcmd 입력 → 터미널에서 아래 명령 실행

> python --version
# Python 3.x.x 출력되면 성공!
💻
STEP 2 · VS Code 설치 & 세팅
code.visualstudio.com → 확장팩 설치

메모장 코딩은 가독성이 떨어져 개발이 힘듦. VS Code는 코드를 예쁘게 분석해주는 전문 편집기임.

📁 파일 탐색기

왼쪽 영역: 생성한 파일 목록을 관리

✏️ 에디터

가운데 영역: 실제 코드를 입력하는 공간

⌨️ 터미널

하단 영역: 실행 결과 출력 Ctrl + `

📌 필수! 파이썬 확장팩 설치

Extensions 메뉴 → Python 검색 → Microsoft 공식 확장팩 설치
이 기능이 있어야 코드 자동 완성이 가능하고 VS Code가 .py 파일을 완벽히 이해함

03

첫 번째 코드 — Hello World

프로그래밍의 전통적인 첫 걸음

▶️
Hello World 실행하기
main.py 파일 생성 → 코드 작성 → 실행

탐색기 빈 공간 우클릭 → [새 파일] → 파일 이름: main.py
확장자 .py를 반드시 붙여야 파이썬 파일로 인식함!

print("Hello World")

오른쪽 상단 ▷ 버튼 또는 Ctrl + F5로 실행 → 하단 터미널에 Hello World 출력 확인!

⌨️ 코드 입력

print 명령어를 .py 파일에 작성

🔄 번역기 작동

실행 시 파이썬 인터프리터(번역기)가 작동

🖥️ 하드웨어 명령

컴퓨터에게 '화면에 글자 띄워'라고 지시

⚠️ 자주 하는 실수 (에러 맛보기)
대소문자 구분

Print()print()
파이썬은 대소문자에 매우 민감함

괄호 및 따옴표

괄호 ( ) 나 따옴표 " " 의 짝이 안 맞으면 SyntaxError 발생

💡 "에러를 두려워하지 말 것"

빨간 글씨(Error)는 컴퓨터가 주는 성장의 힌트임. SyntaxError는 문법 오류라는 뜻.
개발자는 에러를 고치며(디버깅) 진정한 프로그래머로 성장함!

04

print() 함수 파헤치기

게임 대화창·로그에 가장 많이 쓰이는 기본 출력 함수

📤
출력의 모든 것
문자열 · 숫자 · 연산 · 여러 개 동시 출력

문자열(String) 출력 — 따옴표로 감싸야 함

print("안녕") # 큰따옴표 OK
print('반가워') # 작은따옴표 OK

숫자(Number) 출력 — 따옴표 없이 입력

print(100)
print(3.14)
# "100"은 숫자가 아닌 '글자 모양의 숫자'!

연산 결과 출력

print(10 + 20) # 결과: 30
print("10 + 20") # 결과: 10 + 20

여러 개 동시 출력 — 콤마(,) 사용

print("내 나이는", 20, "살 입니다")
# 자동으로 사이에 공백 추가됨
📌 이번 주 과제 (Mission)

자기소개 프로그램 만들기 — print()를 사용하여 이름, 취미, 각오를 각각 출력 (3줄 이상)
실행 화면 캡처 후 LMS에 업로드!

Week 02
데이터 저장소 — 변수와 자료형
게임스크립트프로그래밍 · Week 02 · Variables & Data Types

데이터 저장소 만들기

변수(Variable)와 자료형(Data Type) — 캐릭터의 정보를 컴퓨터에 저장하고 기억시키는 법.

Variableint · float · str 연산자input()형 변환
01

변수(Variable)란?

데이터를 담는 상자 — 컴퓨터 메모리에 공간 확보

📦
변수가 필요한 이유
게임 HP · 점수 · 캐릭터명 저장
❓ 왜 필요한가?
  • 내 캐릭터 HP가 100이라고 가정
  • 몬스터에게 맞아 HP가 90으로 변경
  • 컴퓨터는 어디에 적어두지 않으면 금방 까먹음
  • 데이터를 저장해야 계속 꺼내 쓸 수 있음!
📌 변수의 정체

변수는 데이터를 담는 '그릇' 또는 '상자'임.
상자에 이름을 붙여주고, 그 안에 물건(데이터)을 넣는 것과 같음.
이 상자를 통해 컴퓨터 메모리에 공간을 확보함.

변수 만들기 (선언과 할당)

# 문법: 변수이름 = 데이터
hp = 100     # 'hp'라는 상자를 만들고 100을 넣음
name = "전설의용사"
level = 1

print(hp) # 100
print(name) # 전설의용사
⚠️ 수학의 등호(=)와 다르다!

수학에서 =는 "같다"는 뜻 (1 + 1 = 2)
파이썬에서 ="오른쪽 값을 왼쪽 상자에 저장한다"는 뜻
"같다"는 나중에 배우는 ==를 사용함!

🏷️
변수 이름 짓는 규칙 (Naming)
개발자들의 약속
✅ 사용 가능 문자

영어, 숫자, 밑줄(_)만 가능
(한글도 되지만 비추천)

❌ 숫자로 시작 금지

1hp → 불가능
hp1 → 가능

❌ 띄어쓰기 금지

max hp → 불가능
max_hp → 가능

소문자 사용

변수 이름은 소문자로 쓰는 게 관례

스네이크 표기법

여러 단어는 밑줄(_)로 연결
monster_attack_power

의미 명확화

a, b 보다 score, damage처럼 이름만 봐도 알 수 있게!

⚠️ 예약어(Reserved Word) 주의

파이썬이 이미 사용하는 단어는 변수로 쓸 수 없음!
print, if, while, for, class
VS Code에서 색깔이 다르게 표시됨 → 색깔 보고 피하면 됨!

02

자료형(Data Type)의 세계

상자의 종류가 다르면 취급도 달라진다!

🗂️
3가지 핵심 자료형
int · float · str
🔢 정수형 (int)

Integer의 줄임말. 소수점 없는 숫자
개수를 세거나 순서를 매길 때 사용

level = 1
hp = 1000
money = -500
🔣 실수형 (float)

Floating point의 줄임말. 소수점 있는 숫자
세밀한 계산이나 좌표를 다룰 때

speed = 3.5
accuracy = 98.5
pi = 3.14
💬 문자열 (str)

String의 줄임말. 글자들의 집합
반드시 따옴표로 감싸야 함!

job = 'Magician'
msg = 'Game Over'

자료형 확인 방법: type() 함수로 언제든 확인 가능!

print(type(hp)) # <class 'int'>
print(type(name)) # <class 'str'>
🔄
변수 값 변경 & 누적 연산
업데이트 · += · -=

값 변경 (덮어쓰기) — 마지막에 넣은 값만 기억

hp = 100
hp = 50
print(hp) # 50 출력

누적 연산 — 줄여쓰기 기술

# 아이템 먹어서 점수 +10
score = score + 10
# 줄여서 쓰면:
score += 10

# 몬스터에게 피격 -5
hp -= 5
03

연산자

숫자 계산부터 문자열 조합까지

🧮
숫자 연산자
+ - * / // % **
연산자기능예시결과
+더하기10 + 515
-빼기20 - 713
*곱하기 (별표!)4 * 312
/나누기10 / 25.0
//몫 (소수점 버림)7 // 23
%나머지7 % 21
**거듭제곱2 ** 38
💡 % 의 활용 — 홀수/짝수 판별

number % 2 == 0 → 짝수  |  number % 2 == 1 → 홀수
게임에서 특정 주기마다 이벤트 발생 등 매우 자주 사용됨!

🔗
문자열 연산
더하기(이어붙이기) · 곱하기(반복)
➕ 문자열 더하기 (Concatenation)

문자는 더하면 이어짐. 게임 대사 조합에 유용!

"Level" + "Up"
# "LevelUp"

"용사" + "님이 접속했습니다."
✖️ 문자열 곱하기 (Repetition)

문자에 숫자를 곱하면 그만큼 반복. 파이썬만의 매력!

"ㅋ" * 5
# "ㅋㅋㅋㅋㅋ"

"!" * 3 # 공격 효과 "!!!"
⚠️ 숫자와 문자는 더하기 불가! (TypeError)
print("레벨: " + 10) # 에러 발생!
# 문자는 문자끼리, 숫자는 숫자끼리!

해결법 — 형 변환(Casting):
str(10)"10" (숫자를 문자로)  |  int("100")100 (문자를 숫자로)

print("레벨: " + str(10)) # "레벨: 10" ✓
04

사용자 입력 & 주석

input() 함수와 코드에 메모 남기기

⌨️
input() 함수
플레이어에게 직접 값을 입력받기

게임 시작 시 플레이어 이름을 정할 때 필수!

name = input("이름 입력: ")
print("안녕하세요, " + name + "님!")
⚠️ input의 함정 — 무조건 문자열!

입력받은 '20'은 숫자 20이 아니라 글자 "20"임!

age = input("나이: ") # 20 입력
print(age + 1) # 에러!! "20" + 1 불가

# 해결: int()로 즉시 변환!
age = int(input("나이 입력: "))
print(age + 1) # 이제 잘 됨 ✓

주석(Comment) — 샵(#) 기호로 코드에 메모 남기기

# 이 변수는 보스 몬스터의 체력임
boss_hp = 9999

# "나중에 이 코드를 볼 미래의 나를 위한 친절한 메모"
🎮
[실습] 캐릭터 스탯 창 만들기
변수 · 연산 · 출력 종합 실습

배운 것을 모두 사용해서 캐릭터 정보를 저장하고 공격력을 계산해보자!

# 1. 캐릭터 정보 변수 생성
name = "아서스"
level = 50
str_stat = 80  # 힘(STR)
dex_stat = 65  # 민첩(DEX)

# 2. 공격력 공식: Damage = (STR × 2) + (DEX × 0.5)
damage = (str_stat * 2) + (dex_stat * 0.5)

# 3. 결과 출력
print("캐릭터 이름:", name)
print("현재 공격력:", damage)
# 결과: 캐릭터 이름: 아서스
# 결과: 현재 공격력: 192.5
📌 2주차 과제 (Mission) — 나만의 아이템 강화 시뮬레이터

아이템 이름/수치를 변수로 저장 → 강화 시 수치 +1 되게 계산 → "X검이 +1 강화되어 +2가 됨!" 출력
다음 주 수업 전까지 제출!

🔒  3주차 조건문 (if / elif / else) — 업데이트 대기 중
🔒  4주차 반복문 (for / while) — 업데이트 대기 중
🔒  5주차 함수 — 업데이트 대기 중
/ 게임프로그램구조 / 2주차
2 / 13 주차 완료
게임프로그램구조 · Week 01 · Orientation

강의 소개 (OT)

과목 목표, 게임 프로그래머에게 필요한 기초, 그리고 한 학기 강의 전체 목차.

컴퓨터 구조운영체제 이산수학알고리즘
01

과목 소개 & 학습 목표

이 과목이 무엇을 다루는가

🎯
과목 소개
게임 프로그래밍 기초 지식 학습
📌 과목 대상

게임 제작에 관심을 가지고 있는 학생을 대상으로 게임 프로그래밍 분야에서 필요한 지식 학습을 위해 개설된 과목

🎓 학습 목표

프로그래머로서 갖추어야 할 기초 사항인 컴퓨터 구조, 운영체제, 이산수학, 알고리즘 등의 기본 개념 이해

📊 평가 기준
20%
출석
35%
중간고사
35%
기말고사
10%
과제
02

왜 배워야 하는가?

게임 프로그래머에게 기초가 중요한 이유

🧱
기초가 튼튼해야 한다
좋은 게임 프로그래머가 되려면?

프로그래밍 언어와 기술은 수시로 생기고 없어지지만, 기초는 변하지 않아요.

❌ 틀린 생각

프로그래밍 언어를 잘하고 스킬만 잘 익히면 된다

✅ 올바른 방향

기초가 튼튼해야 한다 — 공부하는 방법과 문제해결을 위한 논리적 사고를 익히는 것이 중요

🎮 게임의 기초는 무엇인가?
수학 / 물리 컴퓨터 구조 자료구조 알고리즘 운영체제 네트워크
🖥️
컴퓨터 구조를 배워야 하는 이유
성능 · 비용 · 용량
🔍 이유 1

개발자 PC에서는 작동하는데 사용자 PC에서는 안 되는 경우 → 프로그램 오류가 아닌 컴퓨터 환경 차이 문제. 해결하려면 컴퓨터 구조 이해 필수

💰 이유 2

"내 프로그램 실행에 어느 정도 성능/용량이 필요한가? 비용은?" → 개발자가 결정해야 할 핵심 과제. 성능 / 비용 / 용량을 고려한 개발이 중요

💡 핵심 메시지

소스 코드만 입력하는 개발자가 아니라, 컴퓨터를 이해하고 이에 맞는 프로그래밍을 할 수 있는 개발자가 되어야 한다.

⚙️
운영체제 & 이산수학을 배워야 하는 이유
자원 관리와 논리적 사고
🗂️ 운영체제
  • 프로그램 실행에는 자원(메모리, I/O, CPU)이 필요
  • 부품들이 알아서 동작하지 않음
  • 운영체제 = 개발자가 필요로 하는 자원이 잘 작동되도록 하는 근원적인 프로그램
📐 이산수학
  • 수학적 지식보다 수학적 사고가 중요
  • 컴퓨터의 모든 명령어는 0과 1로 구성된 로직 & 알고리즘
  • 수학을 통해 얻는 논리적 사고가 핵심
03

한 학기 강의 목차

전체 15주 커리큘럼

📋
전체 강의 일정
1주차 ~ 15주차
전반기
주차주제
01Orientation ✓
02컴퓨터 구조 ✓
03데이터의 표현 (정수)
04데이터의 표현 (실수)
05인공지능 기초
06머신러닝
07딥러닝과 생성형 AI
08중간고사
후반기
주차주제
09집합론
10논리와 부울대수
11행렬과 벡터
12확률의 기초
13그래프와 트리
14복습
15기말고사
📚 참고도서
  • 혼자 공부하는 컴퓨터 구조+운영체제 — 한빛미디어
  • 프로그래밍 관점에서 바라보는 컴퓨터 구조 — 연두에디션
  • 알기쉬운 운영체제론 — 연두에디션
  • 컴퓨팅 사고력을 키우는 이산수학 — 한빛아카데미
Week 02
컴퓨터 구조
게임프로그램구조 · Week 02 · Computer Architecture

컴퓨터 구조

컴퓨터가 정보를 이해하고 명령어를 실행하는 방법 — CPU, 메모리, 버스의 역할과 동작 원리.

CPUALU · 레지스터 · CU RAM · 캐시버스 (BUS)명령어 실행
01

컴퓨터가 이해하는 정보

데이터와 명령어 — 모든 건 0과 1로 표현된다

💾
데이터 vs 명령어
컴퓨터가 처리하는 두 가지 정보

컴퓨터는 0과 1만 이해해요. 우리가 작성한 코드는 컴파일러를 통해 이진수로 변환되어 실행됩니다.

💾 데이터 (Data)
  • 숫자, 문자, 이미지, 동영상 등
  • 정적인 정보 — 명령어를 위한 재료
  • 예: 'Hello World'
⚡ 명령어 (Instruction)
  • 컴퓨터를 실질적으로 움직임
  • 동적인 정보 — 데이터를 가공하는 동작
  • 예: 1과 2를 더하라
프로그래밍 언어 C++ / Python 컴파일러 변환 기계어 (이진수) 실행 결과 Hello World ✓
02

CPU (중앙처리장치)

컴퓨터의 두뇌 — ALU, 레지스터, 제어장치

🧠
CPU 내부 구조
세 가지 핵심 모듈

CPU는 메모리에 저장된 명령어를 읽고 → 해석하고 → 실행하는 컴퓨터의 핵심 부품이에요.

CPU ALU 산술/논리 연산 +−×÷ AND OR XOR 레지스터 PC IR MAR MBR CPU 내부 임시 저장소 Internal Bus 제어장치 (Control Unit) 명령어 해석 → 제어신호 발생 → 각 장치에 명령 주소버스 데이터버스 제어버스
🔢 ALU

실제 계산 담당. 산술(+−×÷)과 논리(AND OR XOR NOT) 연산 수행

📋 레지스터
  • PC : 다음 명령어 주소
  • IR : 현재 실행 명령어
  • MAR : 메모리 주소
  • MBR : 메모리 데이터
🎛️ 제어장치 (CU)

모든 명령의 출발점. 명령어 해석 후 ALU·메모리·I/O에 제어신호 전송

💡 논리연산이 산술연산보다 빠른 이유

4 * 2 → 메모리에서 CPU로 데이터 로드 후 연산
4 << 1 → 레지스터 내에서 비트 이동만 수행 (훨씬 빠름)

4    = 0000 0100
4<<1 = 0000 1000 → 8
03

메모리

ROM · RAM · 캐시 — 데이터를 저장하는 방법

🗄️
메모리 종류 비교
ROM / RAM / 캐시
종류전원 OFF 시읽기/쓰기용도
ROM데이터 유지읽기 전용부팅 펌웨어 등
RAM데이터 소멸읽기 + 쓰기현재 실행 중인 프로그램/데이터
캐시데이터 소멸자동 관리CPU ↔ RAM 속도 차이 완충
캐시 메모리와 지역성 원칙
왜 캐시가 빠른가?

캐시는 지역성의 원칙을 활용해요. 한 번 쓴 데이터 근처가 또 쓰일 가능성이 높다는 원리입니다.

⏱️ 시간적 지역성

한 번 사용한 데이터는 곧 다시 사용될 가능성이 높다

a = a + 1;
a = a * 10; // a 반복 사용
📐 공간적 지역성

사용된 데이터 근처 영역이 다시 사용될 가능성이 높다

for (i=0; i<10; i++)
  myArray[i]++; // 연속 접근
📌 2D 배열 최적화 팁

메모리는 행-우선(row-major)으로 저장됨 → 열 순서보다 행 순서 접근이 캐시 히트율이 높아 빠르다!

04

버스 (BUS)

부품 간 데이터를 주고받는 통로

🚌
버스의 세 종류
데이터 · 주소 · 제어 버스
📦 데이터 버스

실제 데이터(값)가 이동하는 경로. CPU ↔ 메모리 ↔ I/O 장치

📍 주소 버스

CPU가 읽고 싶은 메모리 주소가 이동하는 경로. 단방향

🎛️ 제어 버스

읽기/쓰기 신호, 인터럽트, 클럭 신호 등 제어 명령이 이동

05

명령어 실행 과정

CPU가 명령어를 어떻게 처리하는가

⚙️
Fetch → Decode → Execute → Write Back
명령어 실행 사이클
STEP 1
Fetch
메모리에서
명령어 읽기
STEP 2
Decode
CU가
명령어 해석
STEP 3
Execute
ALU가
연산 수행
STEP 4
Write Back
결과를
메모리/레지스터에 저장

예시: 더하라, 3번지와 4번지를

CU → 메모리에 메모리읽기 신호 전송
메모리 1번지 명령어 → 레지스터에 저장
CU 해석: "3번지(120)와 4번지(100) 데이터가 필요"
데이터 읽기 → 각각 다른 레지스터에 저장
ALU 연산: 120 + 100 = 220
CU → 메모리에 메모리쓰기 신호 + 220 저장 ✓
🔒  3주차 데이터의 표현 (정수) — 업데이트 대기 중
🔒  4주차 데이터의 표현 (실수) — 업데이트 대기 중
🔒  5주차 인공지능 기초 — 업데이트 대기 중