목록Programing/C Programing (42)
Prosto
'WHILE - 까지.. 일정 조건이 만족할 때까진 반복!' 프로그래밍에서 while문은 반복문의 가장 기본입니다.일정한 조건이 만족하는 동안 계속 반복하는 함수죠.for문을 가장 많이 사용하지만 기본 형태이기에 알아두어야겠죠?(while문도 경우에 따라 자주 이용하기도 합니다.) 게임으로 예를 들면, 어느 게임에서 독에 맞으면 1초에 체력을 5씩 감소한다고 해봅니다.그렇다면 플레이어가 독에 걸려서 체력이 1이상이라면 체력이 일정시간 동안은계속 닳아야겠죠?이런 경우 while문을 이용하면 수월하게 반복 작업을 처리해줄 수 있습니다. 즉, 특정 조건에 만족하는경우 반복된다면 이러한 처리를 해라. 라고 만들 수 있는 것이 while문 입니다.(while문은 반복문의 기본이니 while문으로도 for문은..
'파일 입출력 - 파일을 생성하고 쓰고, 읽을 수 있는 방법!' 프로그래밍을 하다보면 파일을 만들어서 데이터를 보관하는 경우도 있고, 어떤 데이터가 저장된 파일을 읽어와 사용하는 경우도 있습니다. (C언어에서) 이때 사용하는 것이 바로 파일 입출력입니다. 게임으로 예를 들어 싱글플레이 게임이 있는데 사용자가 저장 버튼을 눌러 게임에서 사용되는 레벨, 경험치, 금화, 아이템 등을 저장해야 할 때가 있겠죠? 이때 저장 방법 중 대표적인 방법이 data 파일을 만들어 저장하는 방법이죠. 우리는 이번에 파일 입출력을 이용하여 몇 가지 정보들을 저장해보기도 하고, 실제로 문제도 풀어보며 파일 입출력을 익혀볼 수 있도록 하겠습니다. 파일 입출력을 사용하기 위한 가장 기본적인 부분은 처리할 파일을 가리키고 있을 파일..
'FOR - 위한... 쉬운 반복작업을 위한다면? 배워보자' 프로그래밍에서 FOR문은 if문과 마찬가지로 중요한 역할을 하고 있습니다.같은 혹은 유사한 작업을 할 때 사용되죠. ( 고객 10000명에게 똑같은 처리를 해야한다면? 머리아프겠죠?) 다시 게임으로 예를 들면, 어느 게임에서 이벤트로 플레이어들에게 모두 금화 5000을 준다고 해봅니다.그렇다면 플레이어가 총 5만 명이라면요? 프로그래밍으로 처리하려고 할 때일일이 하나하나 모두에게 주려니까 최소 5만 라인은 작성되어야 할까요?이런 경우 for문과 같은 반복문은 빛을 발하는 것입니다. 즉, 반복되는 경우에는 이러한 똑같은 처리를 해라. 라고 만들 수 있는 것이 for문 입니다. for문의 기본적인 형태를 보면 아래와 같습니다.for(선언 및 초기화..
이번에 간단하게 이야기해볼 내용은 C언어나 winAPI에서도 사용되는 Sleep함수입니다. C 공부를 하는 중 한번쯤 만나볼 수 있는 Sleep! 무엇이고, 어떻게 사용할까요? Sleep - (잠을)자다 Sleep함수는 프로그램이 잠깐 잠을 자도록하는 함수입니다. 우리가 보는 입장에서는 지연시키는 함수라고 볼 수 있죠. windows.h를 참조하여 사용할 수 있고, 사용방법은 굉장히 간단합니다. Sleep(시간); 형식으로 사용되죠. 여기서 시간은 밀리초(ms)입니다. [참고로 1000밀리초(ms) = 1초(s)입니다.] 그렇다면 Sleep(1000);이라고 되어있다면? -> 1초간 지연시키는 것이고, Sleep(3500);이라고 되어있다면? -> 3.5초간 지연시키는 것이겠죠? 정말 간단한 예제 소스입..
'IF - 만약... 이렇다면. 이렇게 처리하라.' 프로그래밍에서 IF문은 중요한 역활을 하고 있습니다. 이런 경우에는 이렇게, 또 저런 경우에는 저렇게... 여러 가지 조건에 따라 다른 결과를 보여줄 수 있도록 도와줍니다. 게임으로 예를 들면, 어느 게임 캐릭터가 점프를 할 수 있다고 해봅시다. 플레이어가 점프키를 누르면 공중으로 뛸 테고, 잠시 후면 중력을 받아 다시 땅으로 떨어질 것입니다. 그렇다면 기본적으로 이런 조건이 필요하겠네요. - 캐릭터가 점프 중이 아닌 상태(지면에 있음)이고.. 점프키를 누르면 공중으로 뛰어라. 이런 조건이 필요한 이유는 캐릭터가 점프 중일 때 다시 점프를 하면 땅을 박차고 뛰는 점프가 아니게 됩니다. (별도로 이중점프가 아닌 일반 점프) 이렇듯 어떠한 경우에는 어떻게 ..
오늘 오랜만에 예전 프로젝트를 열어 빌드(컴파일)를 해봤습니다. [winAPI] 컴파일을 하는데 오류가 나오더군요. 그때 나온 에러 두 가지를 보겠습니다. 현재 사용하는 Visual Studio 버전은 Community 2015입니다.(무료) 1. LNK1207 : incompatible PDB format in '~~~~~'; delete and rebuild 이는 비쥬얼 스튜디오(VS) 버전으로 인한 PDB 포멧 에러인데요. 다시 빌딩을 하면 정상적으로 작동하게 되는 것을 확인할 수 있습니다. * 해결 방법 visual studio의 상단 메뉴 -> BUILD -> Rebuild Solution 순으로 선택하면 자동으로 현재 VS 환경에 맞게 다시 빌드해줍니다. 보통 이렇게 되지만 단순히 Rebuil..
프로그램을 만들 때, 난수를 발생 시키는 경우가 종종 있습니다. 이럴 때 사용할 수 있도록 만들어진 함수가 있습니다. #include // C #include // C++ 에 있는 rand() //seed 값에 따라 난수 발생. (똑같은 상황엔 항상 같은 난수가 나옵니다.) 그러한 것에 대비해 srand()함수로 seed 값을 잡아줄 수 있습니다. srand(time(null))일 경우 현재 시간을 기준으로 시드값을 만들 수 있습니다. (매번 바뀌게 됨.) 단 time 함수를 사용하기 위해선 time.h를 include 해주어야 합니다. 예를 들면, srand((unsigned)time(NULL)); std::cout
포인터의 포인터.. int * ptr; 이라는 포인터가 있을 때 int ** dptr; 이라는 것도 있을 수 있습니다. 간단한 예문 #include int main(void) { int na=20; int * ptr = &na; int ** dptr = &ptr; printf("%#x \n%#x \n%#x \n\n", na, ptr, dptr); printf("%d, %d, %d", na, *ptr, **dptr); return 0; } 위에서 볼 수 있듯 na = *ptr = **dptr 결과라는 것을 알 수 있습니다. **dptr -가리킴-> *ptr -가리킴-> na dptr은 ptr의 주소를 가리키고 있고, ptr은 na의 주소를 가리키고 있습니다. 그렇기에 na = *ptr = **dptr이 된..
저번에 1년 중 1월1일을 구하고 그 1월 달만 구하는 달력을 만들어 보았는데요. (달력 계산) 이번에는 1년 전체 달력을 출력 해주는 프로그램을 만들어보겠습니다. (입력년도의 1월~12월 달력 계산 출력 프로그램.) 필요 : for문, if문, 사용자 정의 함수, 함수, 변수, 배열 (3차원 배열) .... 등을 사용하였습니다. (포인터 사용 안했음.) 예를 들어 달력이 궁금한 년도를 입력하면 그 해의 달력을 출력해주는 것 입니다. 2011년을 입력하면 2011년 달력 (1월, 2월, 3월 ....) 2년을 입력하면 2년... 그리고 달력의 출력형태로는 --------1월-------- 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..
포인터란? 포인터는 주소 값을 담고 있는 변수 또는 상수 입니다. *포인터에는 포인터가 가리키는 메모리에 대한 정보가 포함되어 있습니다. (주소 값을 지니며, 참조하는 대상의 자료형 정보도 지니는 상수 또는 변수) 포인터는 같은 TYPE형 변수로 지정해야 합니다. int형 변수는 int형 포인터로. char형 변수는 char형 포인터로. double형 변수는 double형 포인터로... (예) int num=3; int * ptr = # (선언과 동시에 초기화 가능.) 이러한 식으로 이용 가능합니다. 포인터 선언시 *의 앞 뒤 공백은 어떻게 하든 똑같습니다. int * ptr; int* ptr; int *ptr; 모두 같은 의미. 포인터는 4byte 입니다! 변수를 선언 할 때에 int형, cha..