Lv. 76 (전무보) 58,935 납
22%
Exp. 58,103/59,290 | 22%
회원가입 ID/PW 찾기

1) 지식 창고는 본인이 작성한 콘텐츠(팁/노하우/리소스/강좌 등)을 무료 혹은 가상화폐인 납포인트를 통해 공유하는 공간입니다.
2) 본인이 작성한 콘텐츠에 대해서만 지식 창고에 등록할 수 있으며, 저작권에 위배되는 콘텐츠는 사전경고 없이 삭제될 수 있습니다.
3) 콘텐츠 구매 및 첨부파일 다운로드는 회원그룹 '연구원' 이상 가능하오니, 경험치를 쌓아 진급한 후에 이용 부탁드립니다.
4) 무료 콘텐츠의 본문은 구매절차 없이 즉시 이용할 수 있으며, 판매 납포인트가 있는 콘텐츠는 구매 후 이용할 수 있습니다.
5) 콘텐츠 판매에 따른 납포인트 수익은 지정한 비율(50%)에 따라 판매자에게 지급하며, 납포인트 수익을 통해 진급을 빨리할 수 있습니다.
6) 구매 후 평가를 하면 구매 납포인트의 20%를 돌려 드립니다.

콘텐츠 수 1,041

캠퍼스 C 강좌_16

펌웨어 & 코딩언어 구매수 0 2007.11.07 23:32:16
판매자 프리미엄 판매 납포인트 무료 평점 0점 / 총 0명 참여

***************************< 캠퍼스 C  강좌 >******************************
[제목] :
[코드] : campusc1-016 (초급)
[교재] : CAMPUS C (초급, Third edition)  [출판사 : 책과스승]
[알림] :이 파일은 "캠퍼스 C"에서 모든 분께 공개한 "초급 강좌"입니다.
        이 [알림]의 내용을 지우지 않는다면 누구에게나 임의로 복사해 줄 수
        있습니다.그러나 이 강좌 내용에 대한 저작권은 "캠퍼스 C"에 있습니다.

[연락처] : 605-8662 (서울) ("캠퍼스 C", 도서출판 "책과 스승")
           천리안 : go campusc  
           나우콤 : go lcampc
           하이텔 ID : campusc
****************************<< 목 차 >>************************************
<1> menu.exe의 구성
        1> 숙제 해답
        2> 분할 컴파일 방법.
<2> 소스 분석및 문제
**************************< 내용 시작 >********************************
<1> menu.exe의 구성
*********************************************************************** 
1> 숙제 해답
-------------
        같이 보내는 menu.exe  파일에는, 지난 15회 까지 나간  숙제중 해답
이 필요하다고 생각하는 것만 골라 실었습니다. 제  생각에는 스스로 못할 문
제가 별로 없다고  생각했는데, 의외로 해답을 요구하는 분이 많더군요.
 

--------------------
2> 분할 컴파일 방법
--------------------
        "분할 컴파일" 이라는  말이 정확치는 않은것 같은데,  C에서는 컴파
일 할 때 여러 개의 이름으로 된  소스 파일을 "일괄적"으로 컴파일해서 하나
의 실행파일(xxx.exe)를 만드는 방법이 제공되고  있습니다. 이것은 정확하게
는 "make" 라는 유틸리티인데, 터보  C 에서는 "프로젝트(PROJECT)"라는 이름
으로 그 기능을 간단하게 제공하고 있습니다. 먼저  터보 C의 메인 메뉴를 보
면 "PROJECT"라는 항목이 있을 겁니다.

        실제로 연구소 등에서 프로그램을 개발할 때는  여러 사람이 팀을 이
루어서 개발을  합니다. 그 때 "프로젝트"란  용어를 씁니다. 터보  C 메뉴의
project 도 똑같은 의미 인데, 이렇게 프로젝트란  용어를 쓰면 그 일의 규모
가 아주 크고 복잡하다는 느낌이 "솔솔" 풍기지요.
 

        먼저 터보  C의 "project" 항목이  하는 일을 개념적으로  살펴보면,
여러개의 "xxx.c" 파일을 전부 컴파일 하기는  하되, 실행파일은 하나가 되게
끔 만들자는 것입니다. 제가 보내 드린 파일을  실제 예로 들어 보면, 다음과 
같이 menu.c  와 graphic.c를 동시에  컴파일해서 menu.exe라는 실행  파일을
만들자는 겁니다.

        menu.c          \
                          >  -->     menu.exe
        graphic.c       /

 
        이렇게  하기  위해서  할일은 지극히  간단합니다.  즉  보내  드린
"menu.prj" 라는 파일을 보세요. 이 파일의 이름에서  "menu"란 것은 내 맘대
로 지은 것이지만, ".prj"란 확장자는 터보 C  에서 쓰라고 결정해 놓은 것입
니다.
        이 menu.prj는 아주  간단한 "텍스트 파일" 입니다. 이  파일에는 현
재 다음과 같이 딱 딱 두 줄이 들어가 있지요.
        -----------
        menu.c
        graphic.c
        -----------
나는 이  menu.prj 파일을,  터보 C 에디터에서  간단하게 두 줄을  입력하고
"menu.prj" 라고  저장 했습니다. 이와  같이 xxx.prj 파일을 만드는  방법은
간단합니다. 그리고 이  파일의 의미는, 위에 설명한대로 이 파일을  전부 컴
파일 한다는 것이지요.
        따라서 앞으로 menu.prj  에 들어가 있는 형태로  컴파일하고 싶으면
먼저 이 파일을 선택해야 합니다. 선택하는 방법은, 터보 C 메뉴에서
        ---------------------------------------
        [PROJECT] [Project name]을 줄줄이 선택
        ---------------------------------------
하고 이 menu.prj 라는 이름을 입력하면 됩니다.

        작업을 한 후 이 menu.prj를 더 이상 사용할 필요가 없을 때는 역시
        ---------------------------------
        [PROJECT] [Clear project] 를 선택
        ---------------------------------
하면 평상시 처럼, 한개의 파일로 한개의 실행  파일을 만드는 보통상태의 컴
파일을 합니다.
        "PROJECT" 란에는  그외에도 다음과  같은 선택항이 있는데,  현재는
다음과 같은 상태로 설정을 하기로 하지요.
        ----------------------------
        Break make on         Errors    <-- 보기 1
        Auto dependencies     Off       <-- 보기 2
        ----------------------------

        위에서 "보기  1"이 의미하는  것은, "컴파일하다가 Error  메세지를
만나면 컴파일 하는걸 중지 하도록 하자" 라는  의미입니다. 경우에 따라 "경
고(warning) 메세지를  만나면 중지하자" 등  여러가지 선택을 할 수  있습니
다.
        "보기 2"의  의미는, "파일을 만든 시간에  의존(depend)해서 작업을
할까(On) ?  말까 (Off)  ?"를 나타내는 것입니다.

        이건 무슨  얘기 인가  하면, 기본적으로 "make"라는  유틸리티(현재
터보 C 에서는  "PROJECT") 는 시간을 검사해서 컴파일 할  것만 선택을 하는
데, 지금 menu.prj  는 워낙에 간단한  것이니까 상관이 없지만, 실제로는 수
십개의 소스  파일(xxx.c)가 들어가 있습니다.  그런데, 그 중의  파일하나를
수정했다고 칩시다.  그리고 또 컴파일을  할려면, 그 수십개의 소스  파일을
또 전부 컴파일할 필요가 있습니까 ? 변경된  파일만 검사해서 그것만 컴파일
하는게 속도도  빠르고 간편하겠지요. 그런데  "그 변경된 파일"을  알아내는
방법이 바로 "파일의 생성된 시간"입니다.
        이건 마치 형사 콜롬보가 "단서"를  잡는것 같은데, 지금 menu.prj의
소스 파일들 경우를 보면 시간이 다음과 같습니다.

MENU     C       34704 08-01-94  12:31a     <-- 생성 시간
GRAPHIC  C       49510 07-31-94  11:59p
MENU     EXE    130955 08-01-94  12:34a     <-- 아마 최고 느릴꺼다.

위의  경우는 당연히  menu.exe의 생성  시간이  가장 느리겠지요.  menu.c와
graphic.c가 먼저 있어야 그걸로 menu.exe를 만드는것 아닙니까 ?
        따라서 혹시 menu.c 와 graphic.c의  생성시간이 menu.exe 의 생성시
간 보다  더 느리다면,  그것은 나중에  또 수정을  했다는 의미 아닙니까  ?   
이럴 때 위에서 얘기한 항목이

        Auto dependencies     On
으로 되  있다면, 시간을 따져서  해당되는 파일만 컴파일 하겠다는  뜻이고,
Off로 되 있다면,  "시간은 따지지 말고 무조건 모든 파일을  전부 다시 컴파
일하라"는 뜻이지요. 따라서  Off로 해 놓으면 "더 무식한 방법"  이지요. 그
런데 이 방법을 쓰려면 여러분 컴퓨터의 시간이  항상 잘 맞아야 된다는 보장
이 있어야 합니다. 밧데리 나쁜 컴퓨터들은 가끔  시간이 틀릴텐데 그러면 문
제가 생길수도 있겠지요.  지금은 워낙에 간단한 경우라 Off로 해놔도  별 지
장 없을  듯합니다. 앞으로 여러분 스스로  짜는 프로그램이 점점  더 커져서
컴파일 시간이 길어지면 "On" 으로 바꾸는 문제를 염두에 두어야 합니다.

        이제 보내 드린 파일들을 컴파일 하는  순서를 정리하면 다음과 같습
니다. (보내  드린 파일(menu.arj)의 압축을  풀면 파일이 많이 있는데  전부
실행 시키는데 필요한 것이니 가급적이면 따로  디랙토리를 만들어서 그 안에
이 파일들을 전부 보관하세요)

        터보 C에 들어가서
 

        1. [PROJECT] [Project name]를 선택하고 "menu.arj"를 고른다.
        2. [Ctrl + F9]를 동시에 눌러 컴파일 한다.

이와 같이 간단히 하면 됩니다.

***********************************************************************
<2> 소스 분석및 문제
***********************************************************************
        menu.exe를 구석구석 실행해 보세요. 제가  여러분들의 소스 분석 능
력 향상을 위해서  여러가지 잡다한 프로그램을 실었는데, 지금까지  배운 것
을 전부 활용하면,  프로그램을 분석할 수 있을 겁니다. 파일에  관한 부분은
앞으로 나올 것이므로 예습삼아 읽어 보세요.

        다음의 숙제를  해 보시면서 프로그램을  직접 읽고 이해 하는  것이 
이번 강좌의 내용입니다.

        프로그램을 분석하는 요령은, 먼저 "실행의  결과"를 보고 내용을 짐
작한 후 분석을 하세요. 훨씬 쉬울 것입니다.  예를 들면, 산토끼를 연주하는
프로그램이 있는데, 그걸  직접 들어 본후 프로그램을 읽어 보면,  아마 거의
짐작이 될겁니다.

[349쪽] 18줄 부터 시작되는 "float  Data[8][12] = {" 이하 부분은 [546쪽]
음계의 주파수표를 사용한 것입니다.

[349쪽] 29줄의 char *dong_data  는 char형의 1차원 포인터 이기 때문에
"스트링  하나"를 취급할 수 있는 걸 알  겁니다. 이것은 계명을 "솔솔라라"
따위 대신에 영어로 "GGAA"로 적은 것입니다.

<숙제> [349쪽]의 30줄의 index[]  변수가 의미 하는  것은 무엇인가요 ?
<숙제> [349쪽] 39줄 부터 switch 문이 시작  되는데, 보통의 경우라면 
각 case : 문  다음에 "break" 를 쓰는게  일반적인데 여기서는 48줄에만 하나
를 쓰고 있습니다. 이 의도는 무엇인가요 ?

<숙제>  [349쪽] 40줄의 continue를 만나면  어디로 가나요 ?
이 40줄 때문에 [349쪽]의 5,6줄  같은 설명을 했습니다. 기능이 무엇입니까 ?

<숙제>  [349쪽] 52줄, 53줄의  증가(++)dml 의미는 각각 무엇입니까 ?

<숙제>   [349쪽] 62줄  에는 "240." 이라는 부분이  있습니다.
         점(.)을 찍은 이유는 무엇 입니까 ?

<숙제>  역시  [349쪽] 62줄에 캐스트(cast)  연산자 "()"를 확인하세요.

<숙제> 현재 무조건 한 박자 씩만 연주 하게  되 있는데, 박자 길이도 임의로
연주 하도록 바꿔 보세요.

<숙제> vocabulary를 사용하려면 "조합형 한글을 미리  올려야 합니다" 이 화
면은 정말 보기 싫게 되 있는데, box및  화면 구성을 칼라를 이용하여 이쁘게
고쳐 보세요.

<숙제> vocabulary의 소스를  읽고  어떤 키를 눌러야 총알이  나가는지 알아
보세요.

<숙제> vocabulary의  소스를 읽고  's'  와 'd' 키를 치면  어떤 일을하는지
알아 보세요.

<숙제> vocabulary는 같이 보내 드리는 a.dic  부터 z.dic의 사전을 이용하여
그 안의 단어를 읽습니다. 이 파일들은 텍스트  파일이므로 본인이 원하는 단
어를 첨가 해 보세요.

<숙제> fighting 의 소스를 읽고 이 프로그램이  하는 일이 무엇인지 알아 보
세요. 그리고 최고 기록이 몇초나 되는지 자신 있는 분은 보내 보세요.
**************************< 끝 마치며 >********************************
오늘 내드린  숙제는 양이 너무 작은지  많은지 잘 모르겠습니다.  열심히 해
보세요. 강좌가 어느덧 반이 넘어갔기 때문에 여러분  자신의 "작품"을 짤 준
비를 해야 합니다.
***********************************************************************

 


profile
외뿔공룡 2008.10.11 12:36
감사합니다.
profile
컴쟁이 2013.01.29 00:14
자료감사합니다
profile
시나브로69 2017.06.24 15:54
좋은 자료 감사합니다.
search
List of Articles
번호 분류 제목 평점 포인트 판매자 등록일 구매수 조회 수
공지 공공의 목적으로 공유하고자 하는 소프트웨어는 '소프트웨어 자료실'에 업로드를 요청드립니다.
공지 구매후 평점 댓글을 남겨주시면 구매포인트의 20%를 돌려드립니다.
301 펌웨어 & 코딩언어 캠퍼스 C 강좌_30 [12] 무료 프리미엄 2007-11-15 0 2121
300 펌웨어 & 코딩언어 캠퍼스 C 강좌_29 [3] 무료 프리미엄 2007-11-15 0 1224
299 펌웨어 & 코딩언어 캠퍼스 C 강좌_28 [3] 무료 프리미엄 2007-11-15 0 1329
298 펌웨어 & 코딩언어 캠퍼스 C 강좌_27 [4] 무료 프리미엄 2007-11-15 0 1367
297 펌웨어 & 코딩언어 캠퍼스 C 강좌_26 [4] 무료 프리미엄 2007-11-15 0 1108
296 펌웨어 & 코딩언어 캠퍼스 C 강좌_25 [3] 무료 프리미엄 2007-11-15 0 1148
295 펌웨어 & 코딩언어 캠퍼스 C 강좌_24 [4] 무료 프리미엄 2007-11-15 0 1296
294 펌웨어 & 코딩언어 캠퍼스 C 강좌_23 [3] 무료 프리미엄 2007-11-15 0 1032
293 펌웨어 & 코딩언어 캠퍼스 C 강좌_22 [2] 무료 프리미엄 2007-11-15 0 1182
292 펌웨어 & 코딩언어 캠퍼스 C 강좌_21 [2] 무료 프리미엄 2007-11-15 0 1143
291 펌웨어 & 코딩언어 캠퍼스 C 강좌_20 [3] 무료 프리미엄 2007-11-15 0 1083
290 펌웨어 & 코딩언어 캠퍼스 C 강좌_19 [5] 무료 프리미엄 2007-11-15 0 936
289 펌웨어 & 코딩언어 캠퍼스 C 강좌_18 [3] 무료 프리미엄 2007-11-15 0 965
288 마이크로프로세서 avrstudio와 codevision 중에서요 [7] 무료 주야 2007-11-13 0 8160
287 펌웨어 & 코딩언어 캠퍼스 C 강좌_17 [3] 무료 프리미엄 2007-11-07 0 877
» 펌웨어 & 코딩언어 캠퍼스 C 강좌_16 [3] 무료 프리미엄 2007-11-07 0 1247
285 펌웨어 & 코딩언어 캠퍼스 C 강좌_15 [4] 무료 프리미엄 2007-11-07 0 998
284 머신러닝, AI & 알고리즘 (12) matlab matlab이 지원하는 풍부한 그래픽 tool [7] 무료 프리미엄 2007-11-07 0 2225
283 머신러닝, AI & 알고리즘 (11) matlab M-file 작성 시 유용한 함수들(input.m, dialog형 함수, menu.m 등등) [4] 무료 프리미엄 2007-11-07 0 2764
282 마이크로프로세서 스테핑 모터 정속/가감속 구동 실험 [8] 무료 프리미엄 2007-11-05 0 6382
  • 자기가 해야 할 일을 소년 시절에 찾아낸 사람은 행복하다.
    - 헤딘
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.