BLOG ARTICLE 프로그래밍 | 5 ARTICLE FOUND

  1. 2007/05/31 NDS 개발관련 사이트 (5)
  2. 2006/04/07 실습
  3. 2006/03/28 C언어 세계로 들어가기
  4. 2006/03/24 드디어 언어 카테고리를 쓰다 (6)
  5. 2005/11/22 오목 알고리즘 (3)

DS tutorials:

Recommended NDS Tutorial -
http://www.patatersoft.info/manual.html

Beginners DS dev page -
http://www.double.co.nz/nintendo_ds/index.html

OpenGL on DS -
http://ethos.oddigytitanium.com/

Another DS 3d Tutorial -
http://delfare.pizz.biz/tutoEN.htm

Aaron Recomends This Which Is Not As Dated (PA_lib) -
http://www.palib.info/wiki/doku.php

PA_lib DS Tutorial -
http://www.aaronrogers.com/nintendods/PA_Lib/

C++ Based DS Dev -
http://www.dspassme.com/programmers_guide/tutorial/

MacOS DS Dev Tutorials (unfinished) -
http://users.rcn.com/n8mobiles/extras/macday1.html

Homebrew Programmers Guide to the Nintendo DS (unfinished) -
http://www.dspassme.com/programmers_guide/tutorial/

DS Programming Guide -
http://www.dev-scene.com/NDS_Tutorials_Day_1
http://www.dev-scene.com/NDS_Tutorials_Day_2
http://www.dev-scene.com/NDS_Tutorials_Day_3

General DS Links:

Aaron's Link Page (great list of well-orginized general DS links) -
http://www.aaronrogers.com/nintendods/links.php

Cearn's Link Page (also a well orgainized page of links (mentions some good book refrences too)) -
http://user.chem.tue.nl/jakvijn/tonc/refs.htm

Another General DS Site (has info on python for the ds) -
http://www.dsdeveloper.co.nz/

Home of the Most Popular SDK (for DS and GBA) -
http://www.devkitpro.org

DS Video Modes Info -
http://tobw.net/dswiki/index.php?title=Graphic_modes

DS Homebrew Site -
http://dshb.fileplace.biz/

MTClib (for multi-thread applications)-
http://www.softsystem.co.uk/page9.html

C/C++(and more!) Tutorials/eBooks:

General - http://www.programmingtutorials.com/

General eBooks - http://www.programmingebooks.tk/

C/C++ - http://cplus.about.com/od/beginnerctutoria1/l/blctut.htm
C/C++ - http://www.cprogramming.com/tutorial.html
C/C++ - http://devcentral.iftech.com/articles/C++/default.php

C/C++ eBooks - http://www.devkitpro.org/reading.shtml

C Specific - http://www.lysator.liu.se/c/bwk-tutor.html
C Specific - http://www.cyberdiem.com/vin/tutorials.html

C++ Specific - http://www.intap.net/~drw/cpp/
C++ Specific - http://www.cs.wustl.edu/~schmidt/C++/
C++ Specific - http://www.cplusplus.com/doc/tutorial/
C++ Specific - http://www.functionx.com/cpp/

C++ Tutorial for C Users - http://www.4p8.com/eric.brasseur/cppcen.html

ASM Specific:

ARM GCC Inline Assembler Cookbook - http://www.ethernut.de/en/documents/arm-inline-asm.html

GCC-Inline-Assembly-HOWTO - http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html#s4

ARM ASSEMBLER PROGRAMMING - http://www.heyrick.co.uk/assembler/

and of course, last but not least, the GCC manual, available from - http://gcc.gnu.org/onlinedocs/

GBA Tutorials:

<NOTE FOR BEGINNERS> GBA games will run on the DS so learning to program the GBA will help out if you feel there is a lack of info on DS development. Plenty of resources are available.

TONC (Great Tutorial (even teaches mode 7 graphics programming)) -
http://user.chem.tue.nl/jakvijn/tonc/toc.htm

An unpublished book using Visual HAM as the IDE (read wintermutes second post before using this book) -
http://www.jharbour.com/gameboy/default.aspx

Good Tutorials (new home of The Pern Project) -
http://drunkencoders.com/index.php?system_id=2&page=Tutorials

Tutorial Using HAM -
http://www.aaronrogers.com/ham/

GBA Programming Tutorials Along With Some ARM Links (Mostly Outdated)-
http://www.gbajunkie.co.uk/

Short "Mode 7" Explanation-
http://www.taswegian.com/TwoHeaded/mode7.html


퍼온곳도 불펌이랬지만
나 역시 불펌;;


2007/05/31 15:32 2007/05/31 15:32

실습

프로그래밍/C언어 2006/04/07 13:03

1)본인의 학번을 정수에 입력하여 출력하는 프로그램을 작성하시오

2)25인치의 길이를 센티미터(cm)로 계산하여 출력하는 프로그램을 작성하시오.(단 1인치는 2.54 cm 이다.)

3)문자 ‘a’를 담는 변수를 하나 만들고, 이 변수의 산술연산을 이용하여 문자 ‘f’를 출력하는 프로그램을 작성하시오.

4)경보음이 울리고 다음 문장이 출력되는 프로그램을 작성하시오.
/* 경보음이 울리고 다음 문장이 출력되는 프로그램을 작성하시오.
           "수업시간입니다."                               */
(\a이용)

5)1년이 몇 초인지 계산하는 프로그램을 작성하시오.


2006/04/07 13:03 2006/04/07 13:03

하루 늦어졌다 ㅡㅡ...
처음부터 이러면 안되는데...

여튼 각설하고 본격적으로 시작해 보기로 한다.

이번 글에서는 C언어를 배우기에 앞서 알아야할
*C언어 만든 녀석
*컴파일러(compiler)
*간단한 출력 예제

이렇게 세 가지 정도만 해보겠다.

우선 C가 무엇인지, 또 누가 만들었길래 이리도 유명한지 알아보자...물론, 필자는 잘 모른다 ㅡㅡ.....
따라서 네이버를 뒤져보도록 하자;;

벨 연구소에서 1971년경부터 리치(D.M.Ritchie) 등에 의해서 설계 개발된 시스템 기술용의 프로그래밍 언어이다. UNIX 오퍼레이팅 시스템의 기술에 사용할 것을 목적으로 설계한 언어로 UNIX OS의 대부분이 이 언어로 개발되었다. 컴퓨터의 구조에 밀착한 기초 기술이 가능한 것과 간결한 표기가 될 수 있는 것 등을 특징으로 하고 있다.
(이하 생략)


이라고 한다....
여담이지만 필자가 배운바에 따르면 리치가 있던 벨 연구소에 놀고 있는 컴퓨터가 하나가 있었는데....

리치: 엇, 안쓰는 컴퓨터가 있네. 마침 심심한데 os나 하나 만들어보자~
리치: 근데 만들 적당한 언어가 없네...
리치: 에잇! 언어 하나 만들어서 사용해야지


.....해서 만들어진게 C언어라는 속설이 있댄다 =ㅁ=

흐흠..여튼 리치에 대한 이야기는 이정도로 해두자.
더 알아봤자 크게 도움도 안되고, 나중에 가면 다 잊어먹게 돼 있는 법.

그럼 이제 컴파일러 라는 것에 대해 알아보자.

우리가 이제 배울 C언어는 어느정도 고급언어에 속한다.
고급언어....무슨 말인가 하면 인간이 보고 이해할 수 있다는 뜻이다.
(물론 다 거짓말이다....일반인들은 아무도 이해 못한다)

회화를 하듯이 사람이 보고 쉽게 이해할 수 있는 것을 고급언어,
컴퓨터가 이해할 수 있는 형태로 된 언어를 저수준 언어(low level language), 또는 컴퓨터 지향 언어라고 한다.

그중 어셈블리어가 low level language의 대표적인 녀석이라고 볼 수 있다.
또 다시 네이버를 찾아보면...

컴퓨터 프로그램을 기술하는 언어의 하나. 알파벳 기호 등 인간이 판독하기 쉬운 기호 형식으로 기계 명령(machine instruction)에 대응하는 저수준 언어이다. 각 명령문은 통상 단일 기계 명령과 1:1로 대응한다.
(이하 생략)

이보다 낮은, 진짜 컴퓨터가 알아듣는 것을 기계어라고 부른다.
기계어(machine language)는 말 그대로 컴퓨터가 쓰는 2진수, 0과 1로만 이루어져 있다.

컴파일러란 이런 고급언어를 컴퓨터가 이해할 수 있는 기계어, 0과 1로 바꾸어 주는 녀석이다.

설명이 좀 길었지만 앞으로 코딩하는데 있어서 어느정도 알아둬야 하는 것이기에 적어보았다.
간단히 요약하자면, 컴파일러의 가장 큰 역할은 이렇게 고급->기계로 변환 시켜주는 것이다.

따라서 그만큼 컴파일러의 수도 많고 종류도 다양하다.

C언어 컴파일러만 해도 종류가 상당히 많은 편이지만, 여기에서는 MS사에서 개발한
Microsoft Visual C++ 6.0을 이용해서 할 계획이다.

VC 6.0을 안 좋다고 하는 사람도 많고 해서 될 수 있으면 다른 걸로 하고 싶지만...
필자가 2년간 계속 써온 컴파일러가 이 녀석이고
익숙해진게 이 녀석뿐이니 어쩔 수 없이 계속 쓰고 있다.

이 글을 보는 사람 중 프로그래밍을 처음 접하는 사람이라면 다른 컴파일러로 시작해보는 것도 좋다고 본다.

그럼 이 VC 6.0의 생김새와 설치 후 화면을 스샷으로 잠깐 보도록 하자.
(아, 물론 이 녀석은 p2p나 직접 구입등 알아서 구하길....=_=)



이렇게 생겨먹은 컴파일러다.
거의 모든 컴파일러가 그렇듯이 그다지 예쁘게 생기지는 않았다.

앞으로 자주 보게 될 녀석이니 얼른 익숙해지자.
간단히 설명하자면 좌측이 "파일정보", 우측이 "코딩 할 곳", 아래가 "빌드정보 및 오류표시".


이제 본격적으로 프로그래밍을 시작해보도록 하자!!

우선 VC에서는 프로젝트 라는 것을 생성해야 한다.
이 프로젝트 안에서 소스파일도 만들고 아이콘도 만들고 하면서 노는 곳이다.

일단 아래 화면에서 보듯이 File->New를 선택한다.



그러면 창이 하나 뜨는데 처음 보면 이것저것 조금 복잡해 보일 것이다.

이때 당황하지 말고 아래 화면과 같이 Win32 Console Application을 선택하고
오른쪽 Project Name에는 말 그대로 프로젝트 명을, 그 밑에는 저장할 경로를 지정하면 된다.



그리고 OK를 누르면 또 다시 작은 창이 하나 더 뜨는데,
라디오 체크박스를 An empty project 에 놔둔채 Finish를 클릭한다.



그러면 마지막으로 확인하는 창이 뜬다. 재빨리 Ok를 누르면 드디어 프로젝트가 생성~^^





좌측을 보면 ClassView가 이제 활성화 돼 있는 것을 확인할 수 있다.

이제 코딩을 할 소스파일을 만들 차례이다.
다시 FIle->New를 선택하자.
그러면 이번에는 Projects가 아닌 Files로 탭이 돼 있을 것이다.

여기서 C++ Source File을 선택하고, 우측 상단에 있는 Add to project:를 체크,
그 밑에 File란에 파일명을 적어주고 Ok를 누르면 된다.





깜박 거리는 프롬프트가 보이는가!!
드디어 프로그래밍을 할 수 있는 곳이 만들어진 것이다~
다른 말로는 이제부터 고생이 시작 됐다는 것이다.......ㅡㅡ.......

이제 프로그램을 종료하라고 말하고 싶지만,
그냥 끝내기는 아쉬우니 간단한 출력 예제를 써보기로 하자.
아래 그림에 써져 있는 것을 그대로 써보도록 한다.



그림이 잘 안 보이는군....다음 부터는 스샷을 좀 더 크게 할 테니 이번만 그냥 넘어가도록...
실제로 쓴 것도 얼마 안되니 그냥 따라 한다.

사실 많은 분들이 알겠지만, 처음 프로그래밍을 배우면 가장 먼저 짜는 것이
Hello World! 를 출력하는 코드이다.

하지만 너무 진부하고 항상 같은 것을 싫어하는 필자이기에
필자 닉을 딴 Hello Six를 출력하기로 한다.
하기 싫은 사람은 맘대로 쓰도록...멀 하든 마찬가지이니 ㅡ.ㅡ;

다 썼으면 이제 컴파일을 해보자.
Build->Compile xxx.cpp를 클릭한다.



그러면 컴파일이 시작됨과 함께 곧 하단에 다음과 같은 정보들이 나타난다.



소스의 오브젝트 파일이 생성되었으며, 에러(오류)와 워닝(경고)이 하나도 없다고 한다.
100% 완벽한 코드이기 때문이다. (흐흐흐.. =ㅁ=)

이제 실행파일이 exe를 만들기 위해 Build를 해보자.
Build->Build xxx.exe를 클릭하자.



역시나 아무 이상없이 잘 링킹이 되었을 것이다.

이제 실행을 해보자.
단축키인 Ctrl+F5를 눌러 바로 실행을 하자.
다음과 같이 실행창이 뜨고 Hello Six가 제대로 뜬다면 성공이다.




축하한다. 이제 당신도 C 세계로 들어오게 되었다.
앞으로 여러가지를 배우게 되겠지만,
항상 코드 짜는것을 꾸준히 해야 C 감각을 잃지 않는다는 것을 말해두고 싶다.
안 그러면 필자처럼 된다 ㅡㅡ....

이 글의 목적은 처음 접하는 사람들에게 C언어를 보여주고자 하는 목적도 있지만
개인적으로는 내 게으름 떄문에 시작한 일이다.
비록 아직은 처음이라 크게 준비 없이 쓰지만
이제 회를 거듭할 수록 점점 어려워지면 나도 다시 공부해야 하지 않을까 해서이다.

어쨌든 여기까지 읽어준 모든 분들께 감사드리며,
다음 글은 일주일 후인 4/4 오차범위: 하루 에 올릴 계획이다.
그럼 다음 글에서 다시 볼 수 있기를....

2006/03/28 18:46 2006/03/28 18:46

이제부터 꾸준히 들어와서 업데이트를 시키고자 "언어" 카테고리를 이용해볼 계획이다.

무엇을 하려는가....하면

가장 처음 배운 "컴퓨터"언어(수연양의 조언으로 컴퓨터 강조 // 수연曰: 너가 처음 배운 언어는 "한글"이야..=_=) 이자 현재로서도 가장 익숙한 C언어를 올리는것

아직 미숙한 실력이지만 그래도 2년간 코딩을 해보면서 나름대로 느낀 것도 있고
이런식으로 조금씩 써 나가면서 나만의 데이터베이스를 구축해보고자 한다.

대상은 C언어를 처음 배우는 사람으로 가정하고
기초적인 것부터 올리도록 함

첫 자료는 3/27로
일단은 매주마다 한번씩 올릴 계획이다.







과연 언제까지 할 수 있을까나 ㅡㅡ...
2006/03/24 18:17 2006/03/24 18:17

작은... 아주 작은 대회(?)에서 오목 AI 대결을 한다고 한다
마침 조금 여유도 생겼고 해서 (사실 psp에 눈이 멀어 ㅡㅡ..)
참가해 보려는데....
흐흠 어떻게 짜야 가장 이상적으로 움직일까~~

아무리 생각해도 오목 알고리즘이라 해봤자
대단한게 없다...

일단 대회 룰에 삼삼과 사삼을 허용한다고 했으니
최우선으로 삼삼을 형성하고 2차적으로 사삼을 형성해서
끝낼 수 있는 방법이 좋을듯....(너무 당연한거지만 ㅡㅡ...)

15x15에서 이루어지는 판이니
전체 스캔도 그렇게 오래 걸리지 않을듯

대략 생각해둔건
while(1)
{
1) 전체스캔
1-1) 적의 가로 세로 대각선 3개 연속 돌 파악
1-2) 3개 연속 돌 中 양끝에 내 돌이 있는지 파악
1-2-1) 양쪽 다 없을 경우 막는다
1-3) 공격패턴 전개
}

공격패턴()
{
1) 내 돌 中 3개 연속 돌이 있을 경우 돌 추가
2) 내 돌 中 4개 연속 돌이 있을 경우 돌 추가

3) 아무것도 없는 경우(공격 및 방어) 최대한 정중앙에서 시작
3-1) 삼삼 만들기 전개
}


일단 이 정도....쓰고 보니 너무나 단순하다 ㅡㅡ.....
흐흠 좀 더 파고 들어봐야 할듯...
2005/11/22 17:20 2005/11/22 17:20