내장형 하드웨어/C언어

C 언어 - 변수형, scanf, 상수, %(숫자)(형식연산자), 마인드스톰(mindstorms)

동화다아아 2011. 3. 28. 16:05

#include<stdio.h>

int main()

{

        unsigned char a;

        unsigned short b;

        

        b=256;

        a=b;

        printf("%d\n",a);

        printf("%d\n",b);


        return 0;

}


→ signed short b=255는 %d로 출력하면 -1이 나온다.

  즉, 이와 같이 변수와 값을 선언하기 전에는 쓰레기값 혹은 임의의 값이라 불리는 값이 들어가 있다. 이 변수에 255라는 수를 선언 하는 것을 초기화라 한다.


․ unsigned short b; → 변수 선언.(쓰레기값이 들어가 있다.)

․ short b=0; → b=0으로 초기화

․ unsigned short b=0; → 변수선언과 초기화를 동시에


// int 형 변수가 범위를 벗어나는 값을 가질 경우 발생하는 오류를 보여주는 프로그램


# include <stdio.h>

int main()

{

        int num;

        num = 2147483647; //정수의 최대값

        num = num +2;

        printf("최대값보다 2가 큰 값은 %d.\n", num + 2);

        num = num - 2;

        printf("최대값보다 2가 작은 값은 %d.\n", num -2);


        return 0;

}


⇒ num = num +2;

① num+2 → 최대 값 +2(ALU가 계산 하고 register로 값이 넘어간다.)

② num-2의 값이 num으로 대입되고 최대값 2147483647+2가 num이 된다.


․ scanf → scan + f(function)

 ⇒ 키보드로 값을 입력받는다.

 - scanf("%d",&변수) → 개행문자를 넣지 않는다. %d를 입력받는 다는  것은 10진수 정수만 입력 받는다는 것.

 - &(ampersand)는 주소연산자로 scanf() 함수 내에서 입력 값을 받는 변수 앞에 반드시 붙여 주어야 한다.


// 키보드로부터 숫자를 입력받아 화면에 출력하는 프로그램

#include <stdio.h>

int main()

{

        int number;

        printf("Please enter a number : "); /*키보드로 10진수 정수를 입력받아 number 위치에 넣어라는 뜻*/

        scanf("%d", &number); /* 아무것도 입력ㅎ지 않으면 block 상태-커서가 대기하며 멈춰있다.(프로그램 정지 중)

        printf("The number you typed is %x.\n", number);


        return 0;

}

․ stdio.h

- stdio(standard input output - 표준 입출력). h(header)

- input(입력장치-키보드) ※마우스는 기본적으로 표준 입력 장치에 들어가지 않는다.

- output(출력장치-모니터)


․ char ≤ short ≤ int ≤ long 의로 규정되어 있으며, 32bit CPU의 경우

⇒ char = 1byte, short = 2byte, int = 4byte, long = 4byte로 되어 있으나 이것과 다른 값을 가질 수 도 있다.

※ short 형은 int 형이며, int의 절반의 바이트 크기를 가진다.


․ %(형식연산자-d,o,x,f,lf...) 사이에 숫자(자리수)를 지정해 줄 수 있다.

// 자릿수 지정에 따른 데이터 출력 결과


#include <stdio.h>


int main()

{


        printf("%2d\n",111);

        printf("%1d\n",111);

        printf("%3d\n",111);

        printf("%4d\n",111);

        printf("%5d\n",111);

        printf("%6d\n",111);

        printf("%7d\n",111);

        printf("%8d\n",111);

        printf("%12d\n",111);

        printf("%-2d\n",111);

        printf("%-3d\n",111);

        printf("%-4d\n",111);

        printf("%-5d\n",111);



        return 0;

}

실행결과 정리

 

프로그램을 컴파일 하면 위와 같은 값이 출력되는데 이것으로 보아 데이터 크기보다 작은 숫자(여기서는 3까지)를 %d 사이에 넣어도(%3d) 데이터 값은 그대로 출력되며 그 보다 클 경우에는 해당비트 수 만큼 오른쪽으로 밀려나서 나타나게 된다.(비트가 왼쪽에 생성되어 그만큼 빈칸이 나타난다.) 음수일 경우는 오른쪽으로 나타나 화면에는 변화가 없다.


․ 상수(Constant) - C언어에서는 const로 사용.

⇒ 변하지 않는 수.(문자도 포함 될 수 있는데, 그 이유는 컴퓨터가 문자까지도 숫자로 기억하기 때문이다.)

․ char num = 13;

⇒ char(형 지정자, type 지정자), num(변수), = (대입연산자), 13(상수),

   ;(세미콜론 - 명령문 뒤에는 반드시 붙인다.)


․ sizeof() 

⇒ 바이트의 크기를 확인하게 해준다.

   sizeof(자료형 or 변수 or 수식)




Mindstorms 실습

Anmial ⇒ spike ⇒ Crawling Base ⇒ 조립(Building) ⇒ NXT programming

 

 제작한 spike



NXT 프로그램

구동 영상

앞 뒤 이동

 

앞으로 이동후 왼쪽으로 돌아 다시 이동하는 동작