회원가입 ID/PW 찾기

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

콘텐츠 수 610

캠퍼스 C 강좌_3

펌웨어 & 코딩언어 구매수 0 2007.11.04 01:09:38
판매자 프리미엄 판매 납포인트 무료 평점 0점 / 총 0명 참여

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

[연락처] : 605-8662 (서울) ("캠퍼스 C", 도서출판 "책과 스승")
           천리안 : go campusc  
           나우콤 : go lcampc
           하이텔 ID : campusc
****************************<< 목 차 >>************************************
[1부] 문법편
---------------
<1> BGIDEMO.C 를 살펴 보자
<2> 블럭(block) 이란
<3> C 프로그램은 이런 단어들로 채워 졌어요.
        1. 예약어 (RESERVED WORD, KEYWORD)
        2. 연산자 (OPERATOR)
        3. 변수명 (VARIABLES)
        4. 함수명 (FUNCTION NAME)
<4> 변수에 대하여
        1. 변수를 쓰는법 및 선언 하는 곳 2 군데
        2. 변수의 자료형(Data Type)이 얘기하는것.
        3. 변수의 자료형(Data Type) 종류
                1) char, int, long
                2) float, double
                3) signed, unsigned

-----------------------------------
[2 부]  함수 소개및 프로그램 짜기
-----------------------------------
<1> 자기가 짠 함수 첨가하기

******************************< 내용 시작 >********************************
<1> BGIDEMO.C 를 살펴 보자

        지난 시간 숙제 BGIDEMO.C 를 확인해 보셨나요  ? 이 BGIDEMO.C 프로그램
은 C 프로그램의 "형태"를 비교적 알기쉽고 모범적으로  보여주는 좋은 예제 입니
다. 따라서  여러분도 앞으로 이  프로그램의  모습을 항상 참고하시고 따라 하세
요.

        이 형태는 거의  전통적으로 쓰이는 모습 그대로 이고 UNIX  SOURCE 에서
도 그대로 볼 수 있는 형태 입니다. 숙제를  잘 하셨겠지만 여러분의 이해를 돕기
위해 잠깐만 같이 살펴 보겠습니다.

        여러분도 느끼셨겠지만 제가  간단하게 설명한 것과 내용상  차이는 없지
만 길이가 무척 길어서 약간 혼란 스러움을  느꼈을겁니다.하지만 실제 상용화 되
는 프로그램은 이것보다 훨씬 크다는걸 아시고 이  정도는 가볍게 생각 해야 합니
다. 특히 이것은 내용적으로도 복잡함 없이 서브  루틴(SUB ROUTINE) 들이 단순히
병렬적으로 나열된 지극히 단순한 형태 이지요

자 같이 볼까요 ! 라인의 오른쪽 부분에 설명를 달았습니다.

/*                                      <-- 주석문 (COMMENT) 시작
   GRAPHICS DEMO FOR TURBO C 2.0

   Copyright (c) 1987,88 Borland International. All rights reserved.

   From the command line, use:

                tcc bgidemo graphics.lib

*/                                      <--- 주석문 끝

#ifdef __TINY__                         <--- 설명 안한 부분임
                                        큰 골격을 이해 하는데 불필요

#error BGIDEMO will not run in the tiny model.
#endif

#include <dos.h>                        <--- <구성 1> #include 시작
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <graphics.h>

                                        <--- <구성 2> #define 시작
#define ESC     0x1b                    /* Define the escape key        */
#define TRUE    1                       /* Define some handy constants  */
#define FALSE   0                       /* Define some handy constants  */
#define PI      3.14159                 /* Define a value for PI        */
#define ON      1                       /* Define some handy constants  */
#define OFF     0                       /* Define some handy constants  */

                                        <--- <구성 3> 변수 선언 시작
char *Fonts[] = {
  "DefaultFont",   "TriplexFont",   "SmallFont",
  "SansSerifFont", "GothicFont"
};

char *LineStyles[] = {
  "SolidLn",  "DottedLn",  "CenterLn",  "DashedLn",  "UserBitLn"
};

char *FillStyles[] = {
  "EmptyFill",  "SolidFill",      "LineFill",      "LtSlashFill",
  "SlashFill",  "BkSlashFill",    "LtBkSlashFill", "HatchFill",
  "XHatchFill", "InterleaveFill", "WideDotFill",   "CloseDotFill"
};

char *TextDirect[] = {
  "HorizDir",  "VertDir"
};

char *HorizJust[] = {
  "LeftText",   "CenterText",   "RightText"
};

char *VertJust[] = {
  "BottomText",  "CenterText",  "TopText"
};

struct PTS {
  int x, y;
};      /* Structure to hold vertex points      */

int    GraphDriver;             /* The Graphics device driver           */
int    GraphMode;               /* The Graphics mode value              */
double AspectRatio;             /* Aspect ratio of a pixel on the screen*/
int    MaxX, MaxY;              /* The maximum resolution of the screen */
int    MaxColors;               /* The maximum # of colors available    */
int    ErrorCode;               /* Reports any graphics errors          */
struct palettetype palette;             /* Used to read palette info    */

/*                                                                      */
/*      Function prototypes                                             */
/*                                                                      */

                                        <--- <구성 4> 함수 머리만 선언
                                        <--- 함수의 선언(main 몸통 밖에서)
void Initialize(void);
void ReportStatus(void);
void TextDump(void);
void Bar3DDemo(void);
void RandomBars(void);
void TextDemo(void);
void ColorDemo(void);
void ArcDemo(void);
void CircleDemo(void);
void PieDemo(void);
void BarDemo(void);
void LineRelDemo(void);
void PutPixelDemo(void);
void PutImageDemo(void);
void LineToDemo(void);
void LineStyleDemo(void);
void CRTModeDemo(void);
void UserLineStyleDemo(void);
void FillStyleDemo(void);
void FillPatternDemo(void);
void PaletteDemo(void);
void PolyDemo(void);
void SayGoodbye(void);
void Pause(void);
void MainWindow(char *header);
void StatusLine(char *msg);
void DrawBorder(void);
void changetextstyle(int font, int direction, int charsize);
int  gprintf(int *xloc, int *yloc, char *fmt, ... );

/*                                                                      */
/*      Begin main function                                             */
/*                                                                      */

                                        <--- <구성 5> 함수 시작

int main()                      <---  main() 함수 짠다(정의)( 머리 + 몸통)
{

  Initialize();                 /* Set system into Graphics mode        */
  ReportStatus();               /* Report results of the initialization */

  ColorDemo();                  /* Begin actual demonstration           */
  if( GraphDriver==EGA || GraphDriver==EGALO || GraphDriver==VGA )
    PaletteDemo();
  PutPixelDemo();               <---  함수 부른다(호출) (머리만,몸통안에서)
  PutImageDemo();
  Bar3DDemo();
  BarDemo();
  RandomBars();
  ArcDemo();
  CircleDemo();
  PieDemo();
  LineRelDemo();
  LineToDemo();
  LineStyleDemo();
  UserLineStyleDemo();
  TextDump();
  TextDemo();
  CRTModeDemo();
  FillStyleDemo();
  FillPatternDemo();
  PolyDemo();
  SayGoodbye();                 /* Give user the closing screen         */

  closegraph();                 /* Return the system to text mode       */
  return(0);
}

/*                                                                      */
/*      INITIALIZE: Initializes the graphics system and reports         */
/*      any errors which occured.                                       */
/*                                                                      */

void Initialize(void)                   <--- 함수 짠다 (머리 + 몸통)
{                                       <--- 몸통 시작
  int xasp, yasp;                      

  GraphDriver = DETECT;                
  initgraph( &GraphDriver, &GraphMode, "" );
  ErrorCode = graphresult();           
  if( ErrorCode != grOk ){              <--- if 몸통 시작
    printf(" Graphics System Error: %s\n", grapherrormsg( ErrorCode ) );
    exit( 1 );
  }                                     <--- if 몸통 끝

  getpalette( &palette );              
  MaxColors = getmaxcolor() + 1;       

  MaxX = getmaxx();
  MaxY = getmaxy();                    

  getaspectratio( &xasp, &yasp );      
  AspectRatio = (double)xasp / (double)yasp;

}                                       <--- 몸통 끝
**************************************************************************
<2> 블럭 이란 ?
        C 에서  블럭 이란 용어를 쓰는데,  이건 말그대로 한 묶음  이란 뜻이고
중괄호 "{ }"  가 열리고 닫히는 부분을 말합니다. 아시다시피  함수의 몸통이 블
럭으로 되있습니다. 그리고 반드시 알아야 할 부분이 다음의 4 가지 블럭입니다.
1)      if() {
        }

2)      for() {
        }

3)      while() {
        }
4)      switch() {
        }

        이외에도 더 있을 수 있지만 크게 신경 쓸  필요는 없고 위의 4개만 암기
가 필요합니다. 그런데  위의 4개는 형태로 보아 함수와 구별이  안 갑니다. 머리
xxx() 가 있고 몸통 { } 이 있습니다.  그러나 함수는 아니라고 말한적이 있지요.
그리고 이 4가지는 형태적으로도 좌측같이 하지 않고 우측같이 합니다.
        ------------------------------
        (x)                     (o)
        ------------------------------
        if()                    if() {
        {
        }                       }
 

물론 좌측같이 한다고  틀리는 것은 아니지만 한 줄이라도 소스  크기를 줄이려고
하는 전문가 다운 표현입니다. 이 차이는 보시다시피 3  줄로 되는 부분이 2 줄로
줄어들 수 있다는 것이지요.
        위의 BGIDEMO.C를 봐도  알겠지만 소스가 커지면 300 라인이  될것이 200
라인 으로 줄어  들 수 도 있는거지요.  그러면 여러면에서 이익을 볼  수 있지요
종이도 절약되고 읽기도 간편하고...

그렇다고 "함수를 짤때"도  라인을 줄인다고
xxx() {
}
이런식으로 하지는 않습니다. 물론 이것도 자기 마음대로  해도 뭐랄 사람은 없지
만, 이 세계에서 이미 나름대로 굳어져 있는 형태이기 때문에 꼭 따라서 쓰세요.

        1. 함수를 짤때는 다음 형태로
                xxx()
                {
                }
        2. 그 외는 아래 형태 입니다
                if() {
                }

        위의 bgidemo.c 프로그램을 읽으면서 이상하게  생각 하실까봐 잠시 언급
했습니다. 이 사실을 눈치 채지 못한 분은 bgidemo.c 를 다시 읽어 보세요.
**************************************************************************
<3> C 프로그램은 이런 단어들로 채워 졌어요.
      1. 예약어 (RESERVED WORD, KEYWORD)
      2. 연산자 (OPERATOR)
      3. 변수명 (VARIABLES)
      4. 함수명 (FUNCTION NAME)
**************************************************************************
        여러분들이 숙제를  충실히 했다면 이제는  C 프로그램의 "형태" 나  "구
조" 에 대해서는 충분히 이해를 했을겁니다.

        그러면 이제 조금더 자세하게 들어 갈 차례  입니다. 교재를 가지신 분들
은 [55쪽]을 펴 보세요

        우리가 "C  를 배운다는 말"은  문법적인 측면에서는, 다음과 같이  정리
될 수 있습니다. 즉
        ---------------------------------------------
        1. [55쪽]의 "예약어" 들을 이해 한다
        2. [88쪽]의 "연산자 표" 의 내용을 이해 한다.
        ----------------------------------------------
        어떤가요 ? 딱 두 페이지 입니다. 제가  1주일 이면 C를 배운다고 했는데
거짓말 같지는 않지요 ?  이제 여러분의 학습목표를  분명히 하기 위해서 빨간 색
연필이나 형광펜 같은  것으로 이 두 페이지에다 확실하게 표시를  해 두세요. 언
제든지 금방 찾아  볼 수 있도록 말입니다. 앞으로 우리가  진도가 나가면서 배우
는 것들을 여기서 하나씩 지워 나가야 됩니다. 일 주일 이면 다 지워지겠지요 ?
 

        사실은 이것 말고  또 공부해야 할 부분이 있습니다. 이건  조금 많은데,
이 부분이 교재의 "부록 A : 라이브러리 함수"  부분입니다. 이 함수들은 영어 사
전처럼 단어들이 나열되 있는 형태 이고 300 ~ 400개 정도 입니다.

        여기에 실은 것도, 터보 C에서 제공하는  함수의 전부는 아니고 실용적으
로 쓰일만한 것만 발췌해  낸 것 입니다. 따라서 사실 이 함수들을 한  두달 사이
에 전부  공부 한다는 것은 도저히  말이 안되고 다만 기본적으로  "읽는 방법"만
확실히 알면 앞으로  자기에게 필요한 부분의 함수는 하나씩 연습해  나가면 됩니
다.
        이 강좌에서는  이런 연습을 위해서  따로 "함수 소개및 프로그램  짜기"
부분이 있을 것입니다.
---------------------------------------------------------------------------
 1.예약어(KEYWORDS)

         예약어라는 의미는 "컴파일러가 먼저 쓰기로  예약된 단어"의 준말 입니
다. 따라서 우리가 맘대로 지을 수 있는 이름  "함수명" 과 "변수명" (뒤에 나옴)
에서는 이 이름들을 쓰면 안된다 고 경고 하는 것입니다.

        이 단어는 전부  외어야 합니다. 몇개 안됩니다. C 언어의  특징 중 작고
간편하다 라는 것이 있습니다. 이것때문입니다.  벽에다 붙여놓으세요. 처음은 낯
설겠지만 계속  쳐다보세요. 이  중에는 함수  같이 생겼지만 함수가  아니라고한
if, for , while, switch 같은 단어들이 있습니다.

<숙제> 이 KEYWORDS 를 책상앞에 적어 놓으세요.
---------------------------------------------------------------------------
 2.연산자

        이건 여러분이 이미 많이 알겁니다. 예를들어  C 에서는 "더하라"는 말을 
a + b; 라고 씁니다. 더이상 말이 필요 없겠지요 ?
        이것도 결국  외어야 하지만 단어가  아니기 때문에 철자 보다  "기능"을
이해 해야 합니다.  이건 종류가 많습니다. C의 막강한 기능은  여기서 나오지요.
중요한 "포인터" 내용도 여기있습니다.

<숙제> 여러분이 이미 상식적으로 아는 연산자들을 전부 표시 하세요
<숙제> 연산자 표를 보면 소령마크 '*' 글자는 두  곳에서 서로 다른 의미로 쓰이
        고 있습니다. 이런게 더 있습니다. 찾아서 표시하세요
---------------------------------------------------------------------------
3.함수명

     함수명 아시지요. 가장중요한  main() 만 빼고는 다 우리  맘대로 짓습니다.
단, 컴파일러 회사들이  상품을 팔때 많은 함수들을 이미 많들어서  같이 주고 있
습니다. 그  이름들이 "부록 A :  라이브러리 함수"에 나와 있는  겁니다. 따라서
당연히 우리가  짓는 함수이름은 이것과  같아서는 안됩니다. 그래서  프로그램을
읽다가 함수명을 보면 다음 두가지를 구별해야 합니다. (중요)
        -----------------------------------
        1. 라이브러리에 있는 함수명 인가 ?
        2. 사용자가 맘대로 지은 이름 인가 ?
        -----------------------------------
        라이브러리에 있는 함수들은 이미  그 함수내용을   "짜 놨기" 때문에 우
리는 이름만 불러서 쓰면  됩니다. 그 함수를 자세히 설명해 놓은  책이  "라이브
러리 레퍼런스 매뉴얼(library reference manual)" 입니다.
        이 책에서 요약한  부분은 "볼랜드 C++ 3.1 " 라이브러리  레퍼런스 메뉴
얼을 참조  한것입니다. 우리가 쓰는 컴파일러  보다는 나중에 나온  버젼 이지만
그대로 이용 할 수 있고  여러분이 나중에 C++을 공부 할 때 까지 이용  할 수 있
습니다.
---------------------------------------------------------------------------
4.변수명

      위의 3 가지를 뺀 나머지가 전부 변수명  이라고 일단은 알아 두세요. 이건
전부 우리 맘대로 짓는 이름인데  "작명법"  도 중요하지요.그리고 이, 변수 개념
을 잘 이해하지  못하면 우리가 나중에 "포인터"를 다룰 때  조금 어지럽지요. 그
러나 이것은 우리가  사는 아파트와 아주 똑같은 개념입니다. 연예인  아파트, 군
인 아파트 등 몇채만 있으면 충분합니다.

이제 bgidemo.c로 다음의 숙제를 한번더 하시기 바랍니다.

<숙제 1>  프로그램에 나오는 함수 이름  중에서도 라이브러리에 있는  함수 명이
          아니고 "직접 짠" 함수의 이름을 전부 적으세요(머리 + 몸통) 있는것
<숙제 2> main() 함수 안에서 예약어 의 이름을 전부 적어 보세요.
<숙제 3> 프로그램의 처음부터   main() 함수  가 나오기 바로 전  까지에서 예약
         어를 전부 찾아 보세요.
<숙제 4> main() 함수 안에서 연산자의 이름을 전부 적어 보세요
<숙제 5> 다음은 프로그램안의 함수 이름만 적은것 입니다.
         Bar3DDemo
         RandomBars
         TextDemo
         ColorDemo
         ArcDemo
         CircleDemo
         PieDemo
         BarDemo
        이 각각의 이름들이 프로그램 전체 에서 몇번 나오는지 세어 보세요
        찾는 요령은 이렇습니다. (교재 [43-44쪽] 에디터 사용법 참조)
        1.      아래 한글이나 터보 씨 에디터에서 bgidemo.c 를 부른다
        2.      [^ Page Up]( 콘트롤 키와 Page  Up 키를 동시에 누름)하여 커서
                를 화일의  제일 처음에 놓는다.
        3.      [^q] [f] (콘트롤 q를 누르고 f 키를 누른다)
                (스트링 찾는 명령임)
        4.      찾고 싶은 문자열을 친다(대소 문자 구별해서 정확히)
        5.      옵션은 그냥 리턴
        6       계속 찾고 싶으면 [^L]키를 누른다.
        7       2번 부터 반복 한다.

<숙제 6> Bar3DDemo() 함수 안에서 나타나는 연산자를 전부 찾아보세요.
        마찬가지로 스트링 찾는 명령을 잘 활용하세요

<참고> Case Sensitive
        C 에서는 대문자와  소문자를 서로 구별 합니다. 즉 "RAMBO"  와 "rambo"
는 서로 다른 사람의 이름 이란 말입니다.물론 "Rambo"도 또 다른 사람 입니다.
        따라서  위의 숙제  함수명의  대소문자를  정확히 하셔야  하고  이런걸
"Case Sensitive" 하다라고  합니다. 한국말로 얘기 하자면,  "대소문자에 예민하
다"는 뜻이지요. 여기서 "case"란 상자 케이스를 얘기  하는게 아니고, 인쇄 용어
입니다. 참고로   영어로 "upper case"는 대문자를, "lower case"는  소문자를 얘
기 합니다.
        라이브러리 함수 중에도  isupper() 라는 함수가 있습니다.  "대문자냐 ?
" 라고 묻는  함수지요. 또 islower()라는 함수도 있지요. 역시  "소문자냐 ?라고
묻는 함수 입니다.
        예를 하나 더 들면, 터보 C 컴파일러에서 다음 메뉴를 계속 선택하세요
[option] [linker] [case  sensitive link] 이것이 on 으로 되  있으면 Sensitive
하다는 겁니다. 즉  대소문자를 구별 하겠다는 거지요. off로 할  수도 있는 모양
인데 그렇게는 쓰지 않습니다.
***************************************************************************
<4> 변수에 대하여
        1. 변수를 쓰는법 및 선언 하는 곳 2 군데
        2. 변수의 자료형(Data Type)이 얘기하는것.
        3. 변수의 자료형(Data Type) 종류
                1) char, int, long
                2) float, double
                3) signed, unsigned
***************************************************************************
1. 변수를 쓰는법 및 선언 하는 곳 2 군데

        아래 프로그램에서 char int long 하는  단어를 찾으세요. 그리고 위치가
다음과 같음을 기억하세요.
                --------------------------------
                1. main() 함수 위쪽에
                2. 함수 몸통 안에서 제일 첫 부분
                --------------------------------

char    word_array[W_MAX];               <-- 변수선언 시작
int     i,j,n,wordlong,timeout;
char    *wordp,  keyin,ch;
int     x,y,new_x,new_y,voc_offset;
long     m_jmp;                          <-- 변수 선언 끝

main(int argc, char *argv[])
{
        int     i,j;                     <-- 변수선언시작
        char    buf[30],*filep;
        char    filename[] = "a.dic";    <-- 변수선언 끝

        fire();
}
fire()
{
       int    a,bb,cc;                   <-- 변수 선언시작
       char     ii,jj;                   <-- 변수 끝

       a = bb + cc;
}
---------------------------------------------------------------------------
2. 변수의 자료형(Data Type)이 얘기하는것.

        char,int,long 이  3개는 예약어  중의 일부로서 "자료형"이라고 합니다.
의미는 각각 다음의  준말 이고 (CHARacter, INTeger, LONG int)  이 용어를 쓰는
이유는 딱 두가지 입니다(아주 중요). 즉

        ---------------------------------
        1 나는 이만한 크기다
                char  : 1 바이트
                int   : 2 바이트
                long  : 4 바이트
                float : 4 바이트
                double : 6 바이트
                long double : 12 바이트
 

        2.나는 이런 내용을 갖고 있다.
                char  : 알파벳 한글자 예) a,b,c, 따위
                int   : 글자가 아니고 숫자다 ( 소수점 없는 1,2,100 따위)
                long  : 글자가 아니고 숫자다 (          //             )
                float : 소수점 있는 숫자다.
                double : (   //          )
           long double : (   //          )
        ------------------------------------

        이 단어의 낱말의 뜻을 보면 2번 의미는 어느정도  이해 할 수 있을 겁니
다. 그러나 크기에  대해서는 전혀 암시가 없기 때문에 우리는  무조건 외야 합니
다. 이 크기에 관한  문제는 이 강좌가 끝나는 시점까지 계속 되는 내용  이기 때
문에 지금 확실히 외우고 넘어가야 합니다.
        이 내용은  너무나 중요해서 교재  [76쪽]에 그 크기를 아파트의  형태로
그려 놓았습니다.  프로그램으로 실제 확인을  위해서는 다음 프로그램을  컴파일
해 보세요

main()
{
       printf("char = %d\n",sizeof(char));
       printf("short = %d\n",sizeof(short));
       printf("int   = %d\n",sizeof(int));
}

        sizeof()는 함수형태를  가지고 있지만  예약어로서 연산자에  속합니다. 
물어보는 단어의 크기를 바이트 단위로 알려줍니다. 즉  char의 크기는  1 이라고
알려줍니다.
        printf()는 진짜 함수  입니다. 라이브러리에서 제공하지요. 따라서   우
리가 또 짜줄(정의 할) 필요는 없습니다.

<숙제> 위에서 크기는  내가 엉터리로 적은게 있습니다.나머지 타입도  실제로 컴
        파일 해보고 크기를 수정 하세요.
 -----------------------------------------------------------------
3. 변수의 자료형(Data Type) 종류

        전부 다음과 같은  타입이 있습니다. "<--" 표시 한것이 실제로  많이 쓰
는 것입니다. 괄호 부분은 쓰나 안쓰나 똑같다는  뜻 입니다. 각각의 격우에 표현
가능한 범위는 [74쪽]의 그림에 나와 있습니다.

           (signed)   char         <--
          unsigned    char         <--

           (signed)   int          <--
           unsigned   int          <--

            short     int
    signed short      int
  unsigned short      int

   (signed) long      int          <--
   unsigned long      int

                     float          <--
                    double          <--
             long   double
------------------
1> char type
------------------
크기는 1 바이트 이고 char 과 unsigned char 두가지 타입이 있습니다.
signed char 라고 쓸수도 있지만 생략하고 char 라고 더 많이 씁니다.
표현 범위는
         ------------------------------------
                    char   -128 부터 127 까지
           unsigned char      0 부터 256 까지
         -------------------------------------
입니다. 결국 숫자를 구별하는 것은 둘다 256 개 이지만 양수로만 전부 쓸것인가
아니면 + - 반반씩 나눠 쓸것인가 의 차이입니다.
------------------
2> int type
------------------
정수형 입니다. 즉 숫자를 다루는 것인데 소수점 없이 1,2,3, 하고 세는 값들입
니다.가령 학생수를 셀 때 2.5 명 하고 쓸 경우는 전혀없지 않습니까 ?
이름은 위와 같이 긴 이름을 안 쓰고 생략해서 다음과 같이 많이 씁니다.
---------------------------------------------
int                - 0x7fff  부터 0x7fff
unsigned                  0  부터 0xffff
long          -  0x7fffffff  부터 0x7fffffff
unsigned long             0  부터 0xffffffff
----------------------------------------------
        16진 표현법에 아직 익숙하지 않겠지만,  한바이트중에 (즉 아파트 한채)
가장 큰수는 0xff라고 표현됩니다. 이게 10진법으로는 256 입니다.
        컴퓨터를 얘기할 때 10진법을 쓰는 것은 정말  불편합니다. ff 와 256 어
느것이 정말로 다 찼다는 느낌이 드나요 ?
        위의 unsigned  를 보면 가장  큰수는 0xffff 입니다. 10진수로는  65535
입니다.어떤가요 구별이 갑니까 ?
        long형은 0xffffffff  이고 10진수는 4294967295 랍니다.  어떤걸로 크기
개념을 잡으시겠습니까 ?  하루빨리 16진수 개념에 익숙해져야 합니다.
------------------
3> float type
------------------
우리가 수학할 때 많이 쓰는 소수점 가진 수들을 다룰때 씁니다. 예를 들면
3.141592 x 12.3 같이 계산 할때지요. 이 표현법은 수학시간의 지수를 다룰 때
와 같습니다. 즉  3.14e+4 는  3.14 x 10000 를 의미합니다.

두가지가 있는데
      ----------------------------------------------------------------
      float   지수 -38승 부터 +38 승 까지 소수점 이하 7자리까지 정밀함
      double  지수 -308승 부터 +308 승 까지 소수점 이하 15자리까지 정밀함
      --------------------------------------------------------------------
최대 크기가 감이 안잡히는데 좌우간 우리가 쓰는데 불편은 없을것 입니다.

        다시 한번 강조하면, 각 타입이 "몇 바이트  크기인가" 하는것은 아주 중
요한 문제입니다.  따라서 교재 에서는,  처음부터 크기에 대한 이해를  돕기위해
구체적으로 아파트  형태의 그림으로 표현하고  있습니다. 여러분의 머리  속에는
항상 이 그림이 그려져 있어야 합니다.
        그러나 아마 따로 노력하지 않아도 자연히 알게  될 겁니다. 너무 중요하
기 때문에 이 교재에서 항상 나타나기 때문이지요.

        각 자료형의  크기는 컴퓨터 시스템 마다  틀릴 수 있습니다.  예를 들면
int 의 크기는  IBM-PC 와 맥킨토시 혹은  기타 대형 시스템에서 전부  틀릴 수도
있다는 얘기 입니다. 따라서 혹시 다른 시스템을 쓰는  사람들은 제일 먼저 이 크
기를 확인해 봐야합니다.
****************************< 끝 마치며 >*********************************
수고 하셨습니다. 질문이나 의문 사항이 있으시면 다음의 묻고 답하기란에
올려주세요.
        천리안 : go campusc
        나우콤 : go lcampc
***************************************************************************

 


profile
까부기 2008.10.05 15:08
ㅎ; 저는 비쥬얼 C로 해서 약간 힘든 부분도 있지만 거의 똑같네요^^ 열심히 아자!!
profile
버닝비 2009.09.22 15:37
좋은 자료 감사합니다.
profile
한틀 2009.11.02 11:13
약간 이해안가는 부분이 있지만 열심히 해보겠습니다 ㅎㅎ~
profile
스마일러 2009.12.29 16:49
점점 어려워지네요....ㅠㅠ;;
profile
용정 2010.01.15 13:04
좋은자료 감사합니다.
profile
안다솜 2010.02.03 13:45
감사합니다.
profile
CoolHead 2010.04.14 13:27
열심히 배울랍니다. ㅎ
profile
KillingS 2010.05.23 14:51
열심히 해보야 겠군요~
profile
jlee377 2010.07.28 14:01
좋은자료 감사합니다^^
profile
시나브로69 2017.06.24 15:39
좋은 자료 감사합니다.
search
List of Articles
번호 분류 제목 평점 포인트 판매자 등록일 구매수 조회 수
공지 공공의 목적으로 공유하고자 하는 소프트웨어는 '소프트웨어 자료실'에 업로드를 요청드립니다.
공지 구매후 평점 댓글을 남겨주시면 구매포인트의 20%를 돌려드립니다.
610 Analog & Mixed-Signal 설계 RF 레벨 버짓 Syscalc4 5P 썸남썸남 2022-12-23 1 163
609 전기전자 아무거나 간단한 RF 필터 설계 프로그램 5P 썸남썸남 2022-12-23 1 118
608 Analog & Mixed-Signal 설계 아날로그 설계기초 이론 자료 입니다. [13] 무료 또지 2018-03-05 0 1016
607 전력전자 DC-DC Switching Converter IC Design 이론 자료 입니다. [8] 무료 또지 2018-03-03 0 440
606 전기전자 아무거나 마이컴 초짜의 넋두리~ [12] 무료 소스리 2009-08-20 0 1403
605 Digital 회로 설계 데이터 전송 인터페이스 LVDS Application and Data Handbook [2] 무료 아크마 2018-02-18 0 195
604 Analog & Mixed-Signal 설계 바이패스 캐패시터의 선정방법과 사용법 [3] 무료 아크마 2017-10-05 0 540
603 전기전자 아무거나 안녕하세요 자동차 전장품 회로설계에 대해 질문드립니다 [2] 무료 오간지 2017-04-25 0 207
602 계측기 & 시험장비 오실로스코프 사용방법 [3] 무료 티이거 2016-04-24 0 516
601 전기전자 아무거나 TI 아날로그 엔지니어 포켓 레퍼런스 입니다... [19] 무료 솔개처럼 2016-12-16 0 357
600 전기전자 아무거나 바리스터 기초 자료 입니다. [7] 무료 kme 2016-10-09 0 381
599 전기전자 아무거나 포토인터럽트란 [4] 무료 kme 2016-10-09 0 224
598 전기전자 아무거나 poly switch란 [1] 무료 kme 2016-10-09 0 152
597 전기전자 아무거나 포토커플러사용방법 [1] 무료 kme 2016-10-09 0 357
596 전기전자 아무거나 전자회로 부품정리 자료 [8] 무료 kme 2016-10-09 0 561
595 Analog & Mixed-Signal 설계 Surge Absorber에 대하여 [2] 무료 kme 2016-10-07 0 227
594 드론/로봇/라인트레이서 로봇 [1] 무료 류진범 2015-04-28 0 170
593 Analog & Mixed-Signal 설계 바이패스커패시터, 필터커패시터 [26] 무료 V고양이V 2015-04-23 0 1117
592 계측기 & 시험장비 오실로스코프나 DMM을 대여할수 있는곳이있나요? [7] 무료 새우키마 2015-04-19 0 546
591 Sensor 설계 바이패스필터에 대한 이야기입니다. [8] 무료 BNT 2015-03-09 0 497
  • 우유부단한 것만이 습관으로 되어 있는 사람보다 더 비참한 사람은 없다
    - 제임스
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.