일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Win32
- 리뷰
- c#
- VS ERROR
- 지식나눔강좌
- 프로그래밍
- Windows
- tipssoft
- 배열
- Direct2D
- Programming
- 함수
- Javascript
- 김성엽
- 연산자
- c
- Visual Studio
- 알고리즘
- Desktop
- 티스토리
- doit코틀린프로그래밍
- Tips강좌
- Kotlin
- 백준
- CS
- 이지스퍼블리싱
- 문법
- 포인터
- Tips프로그래밍강좌
- c++
- Yesterday
- Today
- Total
목록DEV (265)
F.R.I.D.A.Y.
if 조건문과 switch 조건문 if-else 가장 대표적인 조건 분기문으로, 사용은 C++과 동일하다. 한가지 아쉬운 점이라면 안에 들어오는 expression은 무조건 bool 타입이어야 한다. int a = 10; if(a){} 이런식의 처리가 가능하지 않다는 소리다. 때문에 논리 연산자를 이용해 무조건 true/false로 값을 주어야한다. 이 점은 좀 더 명확히 하기 위해서인듯 키워드는 동일하게 if - else로 구성되어 있다. 일부 언어에서는 else if를 하나로 묶어버리는 경우가 있는데 C#의 경우엔 여전히 C/C++을 따라 if와 else로만 구성한다. switch C++에서 진일보했다고 생각한다. 단순히 상수로만 구분하는 것이 아니라 문자열로도 판단이 가능하다.[# C++에선 문자열..
null 값을 가질 수 있는 nullable 타입 자료형 자료형 일반적으로 정수 자료형은 null이란 값을 가질 수 없다. null이란 값이 존재하지 않는다 라는 뜻으로, 흔히 C에서의 (void*)0 과는 다르다.[# C++을 제외한 것은 nullptr이라 불리는 새로운, null을 의미하는 리터럴이 추가되었기 때문이다.] C#에서 nullable 타입은 컴파일시 Nullable로 변환된다.[# C++의 템플릿 클래스를 생각하면 쉽겠다.] 실제 사용은 자료형 뒤에 '?'를 붙여 사용한다. int a = null; // 오류 int? b = null; // nullable 타입으로 선언했기 때문에 가능 null 체크 변수가 null을 가졌는지 확인하기 위해서는 아래와 같은 방법을 이용할 수 있다. int..
특정 상수를 의미를 가지는 문자열로 표현할 수 있도록 제공하는 문법 열거형 프로그래밍을 하다보면 특정 값이 들어왔을 때 특정 동작을 수행하는 함수나 객체를 만드는 경우가 허다하다. 이럴 때 특정 작업을 수행하기 위한 입력값이 숫자로 표현되었을 때, 그리고 그런 숫자가 많을 때는 숫자 하나를 잘못 작성해 semantic 오류[# 논리적 오류로, 프로그래밍 문법 자체는 맞지만 기획 의도와 맞지 않는 행동을 수행하는 문제를 시맨틱 에러라고 부른다]를 부른다. 위치 이런 문제는 특정 값이 가지는 의미를 바로 알 수 있도록 하는 것이 문제 해결의 실마리가 될 수 있는데, 이 때 열거형이 큰 도움이 된다. 일단 열거형은 아래와 같은 상황에 선언이 가능하다. 클래스 및 네임스페이스 안쪽 바로 윗 스코프가 메서드, 함..
C#에서 사용하는 두 가지 방식의 문자열 처리 string 컴파일 진행시 string 자료형을 .net 자료형인 System.String 타입으로 전환해 컴파일을 진행한다. 때문에 string으로 작성하더라도 System.String에 선언된 모든 내부 프로퍼티 및 메서드를 사용할 수 있다. 관리 방식 string 자료형은 객체를 변수가 가리키는 방식으로 문자열을 처리하고, 새로운 문자열을 대입했을 때는 객체를 수정하지 않고 새로운 객체를 만들어 해당 객체를 변수가 가리키는 방식으로 처리한다. 즉, C/C++에서의 const char* 타입의 문자열 상수를 가리키는 방식이라 보면 될 것 같다. 개별 문자 접근 이렇게 작성된 문자열은 문자의 집합체로서, 문자열의 개별 문자에 접근할 때는 배열 연산자로 사용..
C# 자료형 및 변수 선언 # 해당 시리즈는 C++과 비교하며 포스트가 진행됩니다. # 기반은 링크된 사이트입니다. 자료형 C#은 기본적으로 128bit 정수까지 표현 가능한 .Net 자료형을 제공한다. 대부분 C++과 비슷한 구성을 가지고 있으며, 선언 또한 비슷하다. bool true/false (s)byte 8비트 (unsinged) 정수 (u)short 16비트 (unsigned) 정수 (u)int 32비트 (unsigned) 정수 (u)long 64비트 (unsigned) 정수 float 32비트 단정밀도 부동소수점 double 64비트 배정밀도 부동소수점 decimal 128비트 정수 char 16비트 유니코드 문자 string 유니코드 문자열 System.DateTime 날짜 및 시간(C# ..
Microsoft가 주력으로 밀고 있는 C#을 비롯한 .Net 기반 언어를 실행하는 프레임워크 .Net Framework .Net Framework는 MS사에서 개발한 Windows용 프로그램 개발 및 실행 환경으로[# https://ko.wikipedia.org/wiki/%EB%8B%B7%EB%84%B7_%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC] 네트워크 작업, 인터페이스 등의 작업이 포함되어있으며, 공통 언어 런타임(Common Language Runtime, CLR)이란 가상 머신[# 자바 프로그램을 실행하기 위핸 JVM 또한 가상머신의 일종이다.] 위에서 동작한다. .Net Framework는 가상 머신 역할로서 이것만 설치하면 어떤 플랫폼이더라도 .Net..
회전한 사각형을 외접하는 사각형 구하기 회전 사각형 이미지처럼 회전각이 존재하는 사각형은 그 외부에 해당 사각형을 포함하는 사각형을 그릴 수 있습니다. 해당 사각형을 구하는 방법을 알아봅니다. 여기서부터 회전각을 가진 사각형을 포함하는 사각형[# 빨간색으로 되어 있는 사각형]을 외접 사각형이라 명명합니다. 삼각함수 외접 사각형을 구하는 방법은 피타고라스 방정식을 이용하는 것입니다. 빗변 길이의 제곱은 가로 길이의 제곱과 세로 길이의 제곱의 합으로 이루어진다는 방정식을 이용하면 외접 사각형을 구할 수 있습니다. 80도 만큼 회전한 사각형이 있습니다. 그럼 빨간색으로 강조된 삼각형이 형성됩니다. 해당 부분의 가로축과 세로축은 COS와 SIN 삼각함수를 이용하면 구할 수 있습니다. 여기에서 COS에 적용할 각..
템플릿 클래스를 상속하는 템플릿 클래스에서 부모 템플릿 클래스의 멤버 사용하기 템플릿 상속 템플릿 클래스 상속 또한 일반 클래스 상속과 같은 방식으로 합니다. template class Test{ protected: T* list; size_t length; } template class exam : Test{ exam(T* arr, size_t length): length{length}{ list = new T[length]; for(size_t i = 0 ; i < length; ++i) list[i] = arr[i]; } } 다만 일반 클래스 상속과 달리 부모 템플릿에서 상속한 list[# 템플릿으로 구현한 자료형 T를 사용] 멤버를 exam에서 사용하기 위해서는 이런 식으로 사용할 수 없다. 만일..
A 클래스 메서드를 가리키는 A 클래스의 멤버 함수 포인터의 선언과 사용 함수 포인터 함수 포인터는 말 그대로 함수를 가리키는 포인터입니다. 함수 포인터에 대한 자세한 설명은 아래 링크를 참고하세요. 포인터(pointer) part3. 함수 포인터 포인터는 신기하게도 함수까지 가리킬 수 있습니다. 어차피 이름이 있으니 이름으로 사용하면 될 텐데 뭐가 좋으냐는 생각을 할 수 있겠지만 이번에 그 생각이 바뀌실 겁니다. # 포인터에 대한 pang2h.tistory.com 클래스의 메서드도 함수 포인터로 이용을 할 수 있습니다. 그러나 일반적인 함수 포인터 선언으로는 제대로 사용할 수 없습니다. 해당 문제는 클래스 메서드의 특성을 알아야 이해가 가능하기 때문에 해당 부분을 먼저 설명합니다. 클래스 클래스는 객체..
물리엔진 - 벽 충돌 part1. 바닥 구현 이전 시간의 중력 구현에 이어 이번에는 지나갈 수 없는 벽을 구현해봅니다. 벽 물리엔진을 구성하다보니 주로 게임에 빗대는 경우가 많은데, 벽이라 함은 물체가 뚫고 지나갈 수 없는 것을 pang2h.tistory.com 위 시리즈와 연계해 작성합니다. 프로젝트 코드는 다음에서 이어집니다. 좌우 벽 충돌 플래시 게임 등에서 바닥을 형성한 것 외에 추가로 구현한 것이 있습니다. 좌우로 벽을 만났을 때 캐릭터가 이동하지 못하도록 하는 것입니다. 이것 또한 Calculate 메서드에서 처리하면 구현할 수 있습니다. 과 방향만 다르지 동일한 내용이기 때문에 해당 코드를 참고해 역으로 계산하면 수비게 코드를 작성할 수 있습니다. 또한, 좌우 이동은 서로 상반된 명령이기 때..