프로그래밍 491

행렬과 삼각함수

삼각함수 삼각함수란? + 행렬을 들어가기 전에 게임 수학에서 행렬을 쓰는 이유. 선형 변환의 원리는 게임의 가상 세계를 구축하는 데 필요한 모든 변환의 기본 바탕이 된다. 따라서 선형 변환을 안정적이고 빠르게 계산할 수 있는 체계가 구축된다면, 컴퓨터를 사용해 게임이 요구하는 가상 세계의 기반을 손쉽게 구축할 수 있을 것이다. 수학자들은 선형 변환의 계산 과정을 체계화하여 손쉽게 계산할 수 있는 편리한 도구를 발명했는데 그것이 바로 행렬이다. 행렬 행렬은 수를 사격형의 형태로 행과 열을 맞춰 배열한 테이블이다. 따라서 n개의 행과 m개의 열로 구성된 반듯한 사각형의 형태를 띤다. 예를 들어 위 행렬은 2 x 3 행렬은 다음과 같이 2행 3열의 형태를 띤다. A는 열 백터, B는 행 백터라 부른다. 선형 ..

#include <sstream>

1. istringstream과 ostringstream과 stringstream 은 무엇인가? 문자열을 다룰 때 유용하게 사용 가능한 Class이다. 1) istringstream - 문자열 포맷을 parsing 할 때 사용한다. 2) ostringstream - 문자열 format을 조합하여 저장할 때 사용합니다. 3) sstringstream - 문자열에서 내가 원하는 자료형의 데이터를 추출할 때 사용한다. 2. 헤더 정보 #include 를 include 하면 사용 가능하다. 3. 기본 사용법 1) istringstream로 문자열 format을 분해하기 - 다음 예제에서 space 또는 tap으로 구분된 "test 123 123 hah ahha" 를 각 변수에 알맞게 넣은 예제이다. #inclu..

WIN API (1)

WIN API int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow) { MyRegisterClass(hInstance); WIN API에서 _IN_ 은 필수적으로 필요로 하는 매개변수로, _IN_은 우리가 수정할 수 없는 매개변수로 0값을 절대적으로 들어오지 못하게 만든다. 만약 0값이 들어오게 되면 프로그램은 폭파된다. hlnstance = 게임의 주소값이 들어가는 자리이다. nCmdShow = 작업 관리자나 아래에는 창이 들어와있지만 보여주지 않을 것이냐 보여줄 것이냐 하는 역할을 담당한다. MyRegisterClass(hlnstanc..

WINDOWS 2023.02.13

vector 와 array

vector 는 동적 배열 구조로 구성 요소가 생성되고 삭제되면서, 스스로 크기를 자동적으로 조절한다. 이는 우리가 동적 배열을 하게되면 new와 delete를 사용하지만, 실제로 vector 클래스는 메모리를 관리하기 위해서 그 과정을 자동적으로 진행한다. 백터의 인덱스는 연속된 스토리지 배치되어 백터 데이터는 끝에 삽입된다. 배열을 확장해야 하는 경우는 위치에 따라 시간이 달리 걸린다. 마지막 인덱스를 제거하는 것은 크기 조정이 수행되지 않으므로 바로 제거가 가능하여, 일정 시간만 소요된다. 인덱스를 시작 부분이나 중간 부분에 끼워 넣거나 제거할 때는 시간이 더욱 걸린다. 1) vector container 란? vector 컨테이너는 자동으로 메모리가 할당되는 배열. 이라고 생각하면 될거같습니다. ..

Generic & Function Overload

제네릭 프로그래밍 제네릭 프로그래밍의 사전적 정의 제네릭 프로그래밍은 데이터 타입에 의존하지 않고, (다양한 데이터형을 받을 수 있다는 말은 즉, = 다향성(polymorphism)을 뜻한다. 그 프로그래밍 언어의 자료형 체계의 성질을 나타내는 것으로, 프로그램 언어의 각 요소 (상수, 변수, 식, 오브젝트, 함수, 메소드 등) 들이 다양한 자료형(type)에 속하는 것이 허가되는 성질을 가리킨다. 반댓말은 단항성(monomorphism)으로, 프로그램 언어의 각 요소가 한가지 형태만 가지는 성질을 가리킨다.) 하나의 값이 여러 다른 데이터 타입들을 가질 수 있는 기술에 중점을 두어 재사용성을 높일 수 있는 프로그래밍 방식이다. 제네릭 프로그래밍은 여러 가지 유용한 소프트웨어 컴포넌트들을 체계적으로 융합..

클래스

추상화( = Abstraction ) 데이터 추상화란 가장 본질적이고 중요한 OOP(= 객체지향프로그램) C++ 언어의 특색 중 하나이다. 추상화란 의미는 나타낸다 오롯이 중요한 정보는 표시하고, 세부 사항은 숨기는 것을 의미한다. 데이터 추상화를 예를 들면 사람이 차를 운전하는 실제 사례를 예시로 들어보겠다. 사람이 엑셀레이터를 밟으면 차의 속도가 빨라지거나 브레이크를 밟으면 차가 멈춘다는 것만 알고 있을 뿐, 실제로 액셀러레이터를 밟으면 어떻게 속도가 빨라지는지, 차의 내부 메커니즘이나 차의 엑설레이터, 브레이크 등의 구현에 대해서는 알지 못한다. 이것이 바로 추상화이다. 1. Data Abstraction 데이터 추상화 이 타입은, 오직 필수적인 정보에 대해서만 보여주고 불필요한 정보는 숨긴다. 2..

20230130 그간 배운 변수와 함수 상수 등 정리

1-1) 지역 변수(=Local Variable) 란? 지역 변수의 정의는, 초기값이 변수에 설정되고 함수나 메서드 또는 블록에서 사용되는 것이다. 이 변수는 오직 함수나 메서드 혹은 다른 블록으로 넘어 갈때, 즉, 지역 변수가 살아있던 블록이나 메서드 혹은 함수가 아닌 다음 블록이나 메서드 함수에서는 자연적으로 파괴되어야만 유의미한 변수이다. 지역 변수가 해당된 함수, 메서드, 블록말고 다른 외부에서 참조되는 경우 프로그램은 오류를 반환한다. 전역 변수와 지역 변수는 같은 이름을 사용할 수 있으나, 혹은 같은 지역변수라 하더라도 더 영역이 넓은 블록에 있는 같은 이름의 지역 변수와 그 영역 내에 더 좁은 영역의 블록의 지역 변수가 같을 수 있다. 하지만 이들을 구별하는 것은 변수가 작동하는 경계 범위에..

C++ 생성자 (constructor)와 소멸자 (destructor)

생성자는 그 클래스의 객체가 생성될 때 복사 생성자 역할 - 디폴트 복사 생성자는 static 멤버를 제외한 멤버들을 멤버별로 복사한다. 각 멤버는 값으로 복사된다. - 멤버별 복사 또는 얕은 복사라고 부른다. - 클래스가, 새로운 객체가 생성될 때마다 값이 변하는 static 데이터 멤버를 가지고 있다면, 그 상황을 처리하는 명시적 복사 생성자를 제공해야한다. - 프로그램이 복사 생성자를(명시적or암시적) 사용하지 않으면, 컴파일러는 함수 정의가 아니라 원형만 제공한다. 복사 생성자 사용 하는 곳 - 새 객체를 동일한 클래스이 다른 객체로 초기화할 때 - 객체가 함수에 값으로 전달될 때 - 함수가 객체를 값으로 리턴할 때 - 컴파일러가 임시 객체를 생성할 때 디폴트 생성자 - 인수를 취하지 않는 생성자..