728x90

프로그래밍 209

C언어 오목 예제

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일. omok.h #include // gotoxy(), SetConsoleCursorPosition() #include #include #include //kbhit(), _getch() #define RIGHT77 #define LEFT75 #define UP72 #define DOWN80 #define ENTER13 #define WHITEWIN2 #define BLACKWIN3 //함수 포인터 선언 void(*game) (); enum STATE { GAME_INIT = 0, KEY_CHECK, GAME_DRAW, GAME_CHECK }; voidkeyCheck(); voidgotoxy(int x, i..

C언어 마방진 채우기 예제

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일. #include #include #include #define USE_ARRAY #undef USE_ARRAY #ifdef USE_ARRAY int Data[20][20]; //크기가 iSize인 마방진을 만든다. void MagicSquare(int iSize); int main() { int iSize; //마방진 입력 while (true) { printf("마방진의 크기를 3~19사이의 홀수로 입력하세요 :"); scanf_s("%d", &iSize); if (iSize >= 3 && iSize < 20) { break; } } //마방진 계산 MagicSquare(iSize); //마방진 출력 ..

C언어 매크로 예제 (beep으로 '학교종' 연주하기)

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일. std.h #pragma once #include #include #include ////sound() => Beep() ////delay() => Sleep() // #define DO(t) Beep((DWORD)(131*pow(1.06f,0)),(DWORD)(300*(t)));Sleep(100); // pow(1.06f,0) == 1 / pow(1.06f,12) == 2 // Beep(진동수, 시간) //옥타브 0 1 2 3 4 5 6 7 8 // 도 016 033 065 131 262 523 1047 2093 4186 #define DO(t)Beep((DWORD)523*pow(1.06f, 0),(D..

C언어 재귀함수 예제 (하노이의 탑)

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일. #include void HanoiTab(int n, char from, char temp, char to); void HanoiTower(int n, char from, char temp, char to); int main() { int n; printf("원반 갯수를 입력하세요 : "); scanf_s("%d", &n); HanoiTab(n, 'A', 'B', 'C'); } // 1. 디스크는 한번에 하나씩 옮겨야 한다. // 2. 위에 놓인 디스크는 아래쪽의 디스크보다 클 수 없다. void HanoiTab(int n, char from, char temp, char to) { if (n > 0) ..

C언어 제어문 예제 (다이아 그리기)

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일. #include void DrawChar(char cValue); void DrawStar(int iMaxRow, int iMaxColumn, int iStartColumn, int iDir); void DrawDiamond(int iNunRow, int iNumCol); int main() { int iNumColumn = 3;//행(가로줄,위에서 아래로 셈) = Column int iNumRow = iNumColumn;//열(세로줄,좌에서 우로 셈 ) = Row //1)직접 제어문을 사용하여 출력 for (int row = 0; row < iNumRow; row++) { for (int col = 0..

C언어 파일처리 주요예제 3 (고수준 파일 입출력3)

1. 구조체 파일이 2진 파일로 저장되어 있는 경우에 읽어들여서 화면에 출력하는 프로그램 #include #include #include struct mydata { char name[10]; int clang, vb, tot; double avg; }; int main() { FILE* inp; mydata person; //파일 쓰기 fopen_s(&inp, "bin1.bin", "wb"); if (inp == NULL) { printf("파일을 열 수 없습니다. \n"); return 0; } strcpy_s(person.name, 10, "son"); person.clang = 10; person.vb = 13; person.tot = person.clang + person.vb; person.a..

C언어 이론 12. 파일처리(고수준의 파일 입출력 3. 블럭 단위 입출력 등)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. fread()/ fwrite() // 블럭 단위 파일 입출력 함수 ① 텍스트 형식 입출력 함수는 쉽고 유용하지만 부수적인 데이터 변환을 수행해야 하므로 효율적인 방법은 아니다. ② 또한 데이터 크기에서도 텍스트 파일은 이진 파일에 비해 큰편이다. ③ 이진 파일은 저장된 데이터를 확인하기는 어렵지만 속도와 크기면에서 훨씬 유리하다. ④ 원형 int fread (char* buffer, int size, int n, FILE* fp); int fwrite(char* buffer, int size, int n, FILE* fp); ⑤ fread(buffer,size,n,fp)는 파일 포인터 fp가..

volatile 변수

주로 메모리 맵 입출력(MMIO)을 제어할 때, volatile을 선언한 변수를 사용하여 컴파일러의 최적화를 못하게 하는 역할을 한다.static int foo; void bar(void) { foo = 0; while (foo != 255); } foo의 값의 초기값이 0 이후, while 루프 안에서 foo의 값이 변하지 않기 때문에 while의 조건은 항상 true가 나온다. 따라서 컴파일러는 다음과 같이 최적화한다.void bar_optimized(void) { foo = 0; while (true); } 이렇게 되면 while의 무한 루프에 빠지게 된다. 이런 최적화를 방지하기 위해 다음과 같이 volatile을 사용한다.static volatile int foo; void bar (void) ..

13장 코드 분량 줄이기

PART Ⅲ. 코드 재작성하기 13장. 코드 분량 줄이기 - 프로그래머가 배워야 하는 가장 중요한 기술은 언제 코딩을 해야 하는지 아는 것이다. ★ 가장 읽기 쉬운 코드는 아무것도 없는 코드다. __1. 그 기능을 구현하려고 애쓰지 마라. 그럴 필요가 없다. - 프로그래머는 대개 프로젝트에 정말로 필요한 기능이 얼마나 있는지 과대평가하는 경향이 있다. - 또한 어떤 기능을 구현하는 데 필요한 노력을 과소평가하는 경향도 있다. - 이는 조잡한 프로토타입을 구현하는 시간을 지나치게 낙관적으로 에측하고, 그 코드를 장차 유지보수하고, 문서를 만들고, 코드 베이스에 새로운 '무게'를 더하는데 얼마나 많은 시간이 필요한지를 완전히 잊어버리게 한다. __2. 요구사항에 질문을 던지고 질문을 잘게 나누어 분석하라. ..

12장 생각을 코드로 만들기

PART Ⅲ. 코드 재작성하기. 12장. 생각을 코드로 만들기 - 복잡한 생각을 다른 사람에게 설명할 때 중요하지 않은 자세한 내용 때문에 듣는 사람을 혼동시키는 일이 종종 있다. - '쉬운 말'로 자신의 생각을 지식이 부족한 사람에게 전달하는 기술은 매우 중요하다. - 여기에는 설명할 내용을 걸러서 요지만 뽑아내는 능력이 요구된다. - 코드도 마찬가지로 '쉬운 말'로 작성되어야 한다. - 이 장에서 설명할 코드를 더 명확하게 만드는 간단한 과정은 다음과 같다. 1. 코드가 할 일을 다른 사람에게 설명하듯이 '쉬운 말'로 묘사하라. 2. 이 설명에 들어가는 핵심적인 단어와 문구를 포착하라. 3. 설명과 부합하는 코드를 작성하라. __1. 논리를 명확하게 설명하기 - 예제 코드는 '사용자가 페이지를 볼 수..

반응형