본문 바로가기

[게임 개발자를 위한 C++ 문법] 프로그래밍 기초

@iamrain2025. 8. 12. 11:36

Visual Studio Community 세팅

IDE 중 비주얼 스튜디오를 사용한다.

기본 프로젝트 생성 후 컴파일 후 출력에서 성공이라고 빌드 결과가 나오면 된다.

 

컴파일이란, 프로그래밍 언어로 구현된 코드를 컴퓨터 언어로 변환하는 작업을 말한다.

  • 컴파일 단축키 : `Ctrl + F7`
  • 실행 단축키 : `F5`

세상에서 가장 간단한 프로그램

Hello, World 출력

// 헤더. C++ 표준 라이브러리의 입출력 기능 제공
#include <iostream>

using name space std;

int main() // 진입점. 프로그램이 실행될 때 가장 먼저 호출되는 함수로 반드시 존재해야 함
{
    cout << "Hello, World!" << '\n';
    
    return 0;
}

데이터를 담는 변수

변수

변수란 C++에서 사용 편의성을 위해 메모리에 이름을 붙여서 관리할 수 있게 제공하는 것으로 타입과 이름을 가지고, 타입에 따라서 차지하는 메모리 크기가 다르다. 초기 선언과 동시에 값을 가질 수 있고, 추후 대입 연산자를 통해 값을 가질 수도 있다.

 

자주 사용되는 타입은 아래와 같다.

  • int
  • double
  • float
  • bool
  • char
  • string

이 중에서 `double`과 `float`는 부동소수점 타입으로 각각 소수점 15자리, 7~8자리를 보장한다.

 

변수로 할당된 공간에 입력을 받을 때는 `cin`, 저장된 값을 콘솔에 출력할 때는 `cout`을 사용한다.

변수의 크기는 `sizeof` 연산자를 활용해서 구할 수 있다.

 

기본적인 대입 `=`, 사칙연산 `+, -, *, /` 그리고 대소비교 `>, <, >=, <=, !=, ==`가 가능하다.

 

전위연산과 후위연산이라는게 있는데 전위연산 `int b = ++a`는 증가시킨 후 대입하고 후위연산 `int b = a++`는 대입한 후에 증가시킨다.

 

`조건 ? x : y`의 형태를 가진 삼항연산자라는 것이 있다. 조건이 `true`이면 `x`, `false`이면 `y`를 반환한다.

 

변수가 있으면 상수도 있다. `C++`에서 상수는 앞에 `const`를 붙이고, 값을 한 번 선언하면 더 이상 변경할 수 없다.

 

입력을 받을 때 `cin`말고 `getline`을 사용할 수도 있다. `getline`은 공백이 있는 문자열을 받는 경우에 사용한다.

데이터를 여러 개 담는 배열

동일한 타입의 값을 여러 개 담을 수 있는 자료 구조를 배열이라고 한다. 같은 타입의 데이터 여러 개를 하나의 묶음으로 관리할 수 있다.

 

반복문을 사용하면 데이터를 효율적으로 처리할 수 있다.

 

배열의 이름은 하나이고, 여러 개의 변수를 나열한 자료구조이기 때문에 접근할 수 있는 방법이 필요하다. 배열 참조 연산자 `[ ]`를 통해 특정 원소에 접근할 수 있는데, 이를 임의 접근이라고 한다.

 

변수와 마찬가지로 선언과 동시에 초기화 또는 선언 후 초기화 모두 가능하다.

배열의 원소 각각은 변수와 같이 복사 및 대입이 가능하나, 배열 자체를 통째로 대입하는 것이 불가능하다.

 

배열의 각 원소는 변수와 동일하므로 `cin`, `cout`으로 입출력이 가능하다.

반복작업을 줄여주는 함수

같은 내용의 코드가 반복되는 경우 이를 함수로 만들면 가독성과 재사용성이 높아진다.

기본적으로 함수는 아래와 같은 형태를 가진다.

반환타입 함수명(인자) {
	함수가 할 일
}

반환은 필수가 아니며, 반환하지 않는 함수를 만들려면 반환 타입을 `void`로 하면된다.

 

함수에서 값을 전달하는 방식은 3가지로

  • 값 자체를 전달
  • 주소값을 전달 (포인터)
  • 참조자를 전달 (레퍼런스)

하는 방식이 있다.

값 전달 (일반 변수)

C++에서 일반적인 변수(값 타입 변수)는 값을 복사하여 함수로 전달한다. 따라서 함수 내부에서 값을 변경해도 원본 변수의 값은 변경되지 않는다. 이러한 방식을 `call by value`라고 한다.

주소값 전달 (변수, 배열)

변수의 주소 또는 배열의 시작 주소을 함수에 전달하면, 해당 변수 또는 배열에 접근할 수 있게 된다. 따라서 함수와 상관없이 해당 주소의 변수 값 또는 배열 값이 수정된다.

참조자 전달

참조자로 값을 전달하면, 함수 내부에서 값을 변경할 때 원본 변수의 값도 변경된다. `call by reference`라고 부른다.

판단을 해주는 조건문

조건문은 크게 3가지 방식이 있다.

  • `if`
    `if (조건식) { 조건식이 참인 경우 실행; }`
  • `if-else`
    `if (조건식) { 조건식이 참인 경우 실행; } else { 조건식이 거짓인 경우 실행; }`
  • `if-else if-else`
    `if (조건식1) { 조건식1이 참인 경우 실행; } else if (조건식2) { 조건식2가 참인 경우 실행; } else { 조건식1, 2 모두 거짓인 경우 실행 }`

조건식의 경우 좀 더 복잡할 수도 있다. 이럴 때는 복합 조건 `&&, ||`를 사용한다.

  • `&&` : 둘 다 `true`면 `true`
  • `||` : 둘 중 하나만 `true`면 `true`

동일한 작업을 해주는 반복문

`for`문

반복의 범위가 명확하게 정해진 경우에 주로 사용한다.

for ( 초기화; 종료조건; 사후동작)
{
	반복할 내용;
}

초기화와 종료조건은 비워져있어도 되지만, 세미콜론은 있어야 한다. `for ( ; ; )`

`while`문

특정 조건만 확인하여 반복해야 하는 경우 사용한다.

while(조건)
{
	조건이 true인 경우 반복할 내용
}
iamrain
@iamrain :: Annals of Unreal

iamrain 님의 블로그 입니다.

공감하셨다면 ❤️ 구독도 환영합니다! 🤗

목차