언리얼 엔진 스터디/프로그래밍

Bitmap
Platina (토론 | 기여)님의 2024년 7월 9일 (화) 18:52 판 (새 문서: == 기본 프로그래밍 용어 == === 변수 (Variable) === 수학의 미지수와 비슷한 개념으로, 자연수가 될 수도 소수가 될 수도 있지만 자연수로 채택된 변수는 소수가 될 수 없다. 마찬가지로 반대도 불가능하다. 이러한 변수의 등록 형식을 변수의 타입이라 부르며, 자연수와 소수를 같이 연산하려면 둘 중 하나의 타입을 바꾸어야 함 (형변환) <syntaxhighlight lang="cpp" line> // 변수...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

기본 프로그래밍 용어

변수 (Variable)

수학의 미지수와 비슷한 개념으로, 자연수가 될 수도 소수가 될 수도 있지만 자연수로 채택된 변수는 소수가 될 수 없다. 마찬가지로 반대도 불가능하다. 이러한 변수의 등록 형식을 변수의 타입이라 부르며, 자연수와 소수를 같이 연산하려면 둘 중 하나의 타입을 바꾸어야 함 (형변환)

// 변수 선언 형식은:
// '타입' '변수 이름';

int a = 1;      // int (Integer, 정수) 타입의 a라는 이름의 변수 선언. a의 값은 1
float b = 1.2f; // float (실수) 타입의 b라는 이름의 변수 선언. b의 값은 1.2
char c = 'a';   // char (Character, 1바이트 글자) 타입의 c라는 이름의 변수 선언. c의 값은 a
bool d = false; // bool (Boolean, 참과 거짓) 타입의 d라는 이름의 변수 선언. d의 값은 거짓 (false)

변수의 배열 (Array)

같은 타입의 변수로 이루어진 집합. 리스트라고 생각해도 되지만 엄밀히는 다름

#include <cstdio>
// 배열 선언 형식은:
// '타입' '배열 이름'['배열 길이'] = {'타입에 맞는 값', ..., '배열 길이 - 1개만큼 작성할 것'};

int a[2] = {-1, 1};
float b[3] = {0.5f, 2.4f, 3.6f};
bool d[4];  // 값을 초기화하지 않으면 컴파일되지 않는다.
char c[5] = {'h', 'e', 'l', 'l', 'o'};

// 값 꺼내오기
// 배열의 순서는 0부터 시작하므로 a[0]은 -1, a[1]은 1이다.
int main(void) {
    printf("%d", a[1]);
    return 0;
}
// 결과: 1

함수 (Function)

작업을 수행하기 위해 설계된 코드의 집합.

    • 아두이노에서 썼던 println, 프로세싱의 rect 등은 모두 함수임
    • 함수의 목적에 따라 입력 값과 출력 값 (Return 값)이 있을 수 있음
    • 함수를 잘 쓰면 코드의 양이 획기적으로 줄고 가독성이 좋아짐
  • 이벤트 (Event)
    • 이벤트 노드 (블루프린트) 에서 노드의 시작점 (코드의 시작)
    • 스크래치의 방송과 비슷하면서도 함수와도 비슷함
    • 함수와의 차이점은 값을 출력 (리턴)할 수 없음
    • 기본적으로 게임이 시작될 때 동작하는 이벤트 (BeginPlay)와 매 프레임마다 동작하는 이벤트 (Tick)이 있음. 이벤트를 만들 수도 있음
  • 클래스 (Class)
    • 객체를 정의하기 위해 변수와 방법을 정의하는 템플릿
      • 쉽게 말하자면, 변수와 방법을 정의하는 블루프린트 클래스는 애셋 브라우저에 저장되어 있는데, 이를 레벨에 액터로써 (개체, 인스턴스로써) 배치할 때 비로소 클래스의 코드가 동작함

프로그래밍 연산자

대입 연산자

=: 등호를 기준으로 오른쪽의 값을 왼쪽에 적용함

#include <cstdio>

int main(void) {
    bool a;
    a = true; // a에 true를 대입한다.
    return 0;
}

사칙 연산

  • +: 덧셈
  • -: 뺄셈
  • *: 곱셈
  • /: 나눗셈
  • %: 나눗셈의 나머지
#include <cstdio>

int main(void) {
    int a;
    a = 1 + 2;
    printf("%d", a); // 결과는 3

    a = 1 - 2;
    printf("%d", a); // 결과는 -1

    a = 3 * 8;
    printf("%d", a); // 결과는 24

    a = 3 / 8;
    printf("%d", a); // 결과는 0 (정수형이라 0.375에서 소수점이 사라진다)

    a = 3 % 8;
    printf("%d", a); // 결과는 3

    // 지금까지 a의 값은 3입니다.
    a = a + 1; // a (3) + 1의 값을 a에 대입한다. 결과는 4
    a += 1;    // a = a + 1과 동일
    return 0;
}

증감 연산자

전위 증감

현재 변수의 값을 사용한 후 변수를 증감시킨다.

int a = 5;
int b = a++;  // b에는 5가 할당되고, a는 6이 됨.

후위 증감

변수를 증감시킨 후 그 값을 사용한다.

int a = 5;
int b = ++a;  // a는 6으로 증가하고, b에도 6이 할당됨.

표현식에서 사용되는 증감 연산자

아래 예제에서 a++는 현재 값을 사용한 후 증가하고, ++a는 먼저 증가한 후에 값을 사용합니다. 결과적으로 result1과 result2의 값이 다르다.

int a = 5;
int b = 10;
int result1 = a++ + b;  // result1은 15가 되고, a는 6이 됨.
int result2 = ++a + b;  // a는 7이 되고, result2는 17이 됨.

비교 연산자

  • < 및 >: 초과나 미만으로 좌우의 값을 비교했을 때 참이면 true를, 거짓이면 false를 반환
    • 3 < 4 == true
    • 3 > 4 == false
  • <= 및 >=: 이상이나 이하로 좌우의 값을 비교했을 때 참이면 true를, 거짓이면 false를 반환
    • 3 ≥ 4 == false
    • 3 ≥ 3 == true
    • 3 ≤ 4 == true
  • 같음 (==): 좌우의 값을 비교하고 같으면 true를, 다르면 false를 반환
    • int형 변수 a에 4가 저장되었을 때 a == 4는 true, a == 10은 false를 반환함
  • 다름 (!=): 좌우의 값을 비교하고 다르면 true를, 같으면 false를 반환

Boolean (true/false) 연산

true와 false 두 가지를 비교할 때

  • AND (&&): 양쪽 다 true일 때 true를 반환함
    • true && true == true
    • true && false == false
    • false && false == false
  • OR (||): 둘 중 하나만 true여도 true를 반환함
    • true || false == true
    • true || true == true
    • false || false == false
  • eXclusive OR (XOR): true의 개수가 홀수일 때 true를 반환함

기본 문법

조건문

if

if 안에 들어가는 값이 참일 때 코드를 실행한다.

#include <iostream>

void main() {
	int a = 1; // 정수형 변수 a를 선언하고 1로 초기화
	if(a == 1) {
		std::cout << a << std::endl; // a가 1이면 a의 값을 출력한다
	}
}
/* 결과는
1
*/

else if

if의 조건이 맞지 않을 때 같은 변수로 다른 조건을 제시한다.

#include <iostream>

void main() {
	int a = 3;  // 정수형 변수 a를 선언하고 3으로 초기화
	if(a == 1) {
		std::cout << a << std::endl; // a가 1이면 a의 값을 출력한다
	}
	else if(a == 3) {
		std::cout << a << std::endl; // a가 1은 아니고 3일 때 a의 값을 출력한다
	}
}
/* 결과는
3
*/

else

if나 else if의 조건까지 다 맞지 않을 때 나머지 조건이 참일 때 실행함

#include <iostream>

void main() {
	int a = 1; // 정수형 변수 a를 선언하고 1로 초기화
	if(a == 3) {
		std::cout << a << std::endl; // a가 3이면 a의 값을 출력한다
	}
	else {
		std::cout << "Else" << std::endl; // a가 3이 아니면 Else를 출력한다
	}
}
/* 결과는
Else
*/

switch-case

switch에 들어가는 어떤 한 변수에 대해서 case에 맞는 값일 때 코드를 실행하고 조건이 다 맞지 않는다면 default를 실행함

#include <cstdio>

void main() {
	int a = 1; // 정수형 변수 a를 선언하고 1로 초기화
	switch(a) {
		case 1: // if(a == 1)
			printf("a == 1");
			break;
		case 2: // if(a == 2)
			printf("a == 2");
			break;
		case 3: // if(a == 3)
			printf("a == 3");
			break;
		default: // else
			printf("뭣도 아님");
	}
}
/* 결과는
a == 1
*/

반복문

while

while 내 조건이 true일 때 계속해서 반복한다.

#include <iostream>

void main() {
	int a = 0; // 정수형 변수 a를 선언하고 0으로 초기화
	while(a <= 10) { // a가 10 이하인 경우 계속 반복
		std::cout << a << " "; // a의 값을 출력
		a++; // 매 반복마다 a에 1을 더함
	}
}
/* 결과는
0 1 2 3 4 5 6 7 8 9 10
*/

for

변수 선언, 변수의 범위, 변수의 증감을 직관적으로 일체화한 반복문

#include <iostream>

void main() {
	for(int i=0; i<=10; i++) {  // i는 0부터 10 이하까지 1씩 증가하며, 11번 반복한다
		std::cout << i << " ";
	}
	// for문 사용 시 선언한 변수 i는 for문 외부에서 사용할 수 없음
}
/* 결과는
0 1 2 3 4 5 6 7 8 9 10
*/

ForEach

배열의 길이만큼 반복하며 n번째 반복 주기에서 n번째 배열 값을 반환한다.

// C#에서의 ForEach
using System;

// ...

int[] numbers = { 4, 5, 6, 1, 2, 3, -2, -1, 0 }; // numbers라는 정수형 배열에 4, 5, 6, 1, 2, 3, -2, -1, 0의 값으로 구성
foreach(int n in numbers) { // 
    System.Console.Write("{0} ", n);
}
/* 결과는
4 5 6 1 2 3 -2 -1 0
*/
// C++에서의 ForEach (C++11부터 지원)
#include <cstdio>

int main(void) {
    int numbers[] = { 4, 5, 6, 1, 2, 3, -2, -1, 0 }; // numbers라는 정수형 배열에 4, 5, 6, 1, 2, 3, -2, -1, 0의 값으로 구성
    for(int n: numbers) { // 
        printf("{0} ", n);
    }
    return 0;
}
/* 결과는
4 5 6 1 2 3 -2 -1 0
*/