20130419

________ 논리 회로____________________________________________________________________________________________

 

※ 5변수 이상이면 QM(Quine - McCluskey) 최소화 알고리즘을 이용하라!!!

    (알고리즘 CPP 파일 첨부했음)

 

※ NAND 또는 NOR로 모든 게이트를 표현할수 있음.

 

 
 

 

 

_________________________________________________________________________________________________________

 

 

 

 

 

 

___________ARM_______________________________________________________________________________________________

 

  스크립트 파일                                                            예> makefile 

 

> 소스자체가 컴파일 되지 않고 바로실행되는 파일

> 변수타입이 없음

> 변수이름 = 값 

> 스크립트파일에서 #은 주석

> OPTIM : 최적화

> $() : $(TOOL)이라고 쓴다면 괄호안에 TOOL 안에 든 값을 가져와라 

> AS : 어셈블러  

   CC : C 컴파일러

   LD : 링커

 

> FLAGAS : 옵션들...

> ARM7TDMI  <= 이름이 가지고 있는 의미 중에 뒤에  TDMI는 칩이 가지고 있는 기능들을 나타냄

 

> 리눅스와 유닉스의 저장방식이 달라 이유없이 warning 이 뜬다면

  소스 제일 끝에 Enter 키를 한번치고 저장하여 컴파일하면됨.

 

 

 ★          -D : 컴파일 할때 Define 함.

              ex> cl -DTEST=200 main.c        // #define TEST 200을 한 효과                

 ※ 아래 소스를 컴파일 할때 cl -DSMART main.c 의 명령어로 컴파일 한다면

      TEST는 900이 될것이고 그렇지 않고 그냥 컴파일 한다면 TEST 는 100이 될것이다.

 

 

#include <stdio.h>

 

#ifndef SMART
#define TEST 100

 

#else
#define TEST 900

 

#endif

 

int main()
{

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

 

    return 0;
}

 
    

____________________________________________________________________________________________________________

 

 

 

 

 

 

 

______ C 수업______________________________________________________________________________________________

 

★ 연결 리스트

 

 연결 리스트는 구조체 내에 다른 구조체를 가리키는 포인터를 멤버로 가짐으로서 만들수 있음.

 

#include <stdio.h>

 

typedef struct list
{
    int data;
   

    struct list *next;    //  자신의 타입을 가리킬수 있는 포인터 변수 선언 가능(자기참조 구조체)
                                

}LIST;

 

int main()
{
       LIST a;
       LIST b;
       LIST c;

 

 a.data = 3;
 b.data = 4;
 c.data = 5;

 

 a.next = b.next = c.next = NULL;    

    /*  모든 next 필드를  null 로 초기화 시킨다.(선언후 바로해주는게 좋음)       */

       /* 여기서 포인터변수가 null 값을 가지는 것은 아무것도 가리키지 않는다는 의미임.  */

 

 printf("a: %d,\tb: %d,\tc: %d\t\n", a.data, b.data, c.data);

 

 a.next = &b;
 b.next = &c;

 

 printf("a: %d,\tb: %d \n", a.data, a.next->data);
 
 printf("c: %d\n", a.next->next->data);     //   구조체 변수 a안에 next가 가리키는곳의 
                                                            /  next(c의next)가 가리키는 data의 값
 printf("c: %d\n", b.next->data);


       return 0;
}

 반복문을 이용한 효과적인 연결리스트 출력

 

#include <stdio.h>

 

typedef struct list
{
     int data;
 
     struct list *next;                   

 

}LIST;

 

int main()
{
       LIST a = {3,0};       // data에는 3 을 next 에는 null 을 넣음
       LIST b = {4,0};       // data에는 4 을 next 에는 null 을 넣음
       LIST c = {5,0};       // data에는 5 을 next 에는 null 을 넣음
 
       LIST *p;

 

 a.next = &b;         
 b.next = &c;          

 
 for(p = &a; p!= 0; p = p->next)       //  p가 &a의 주소로 시작해서 next를 계속 따라가서 
 {                                                //  결국 c안의 next(null)를 만나면 for문을 탈출한다.
 
        printf("%d->", p->data);


 }

 printf("NULL\n");
  
 
 return 0;
}

 

※ 연결리스트에서의 각 구조체 변수를 노드(node) 라고 부름

 

※ NULL 을 표현하는 두가지 방법       

                                 

                              

                               [1]                                     [2]           

 

 

 

 

 

a.next = b.next = c.next = NULL 일때

( 모두 초기화 된 상태)

  a.next = &b;    b.next = &c; 일때  (연결된 상태)

 

 

 

 

 

 

 

 과제 2

 

#include <stdio.h>

 

int main()
{
       int i;
       int j;

 int n = 0;
 int result[5][5] = {0,};
 
 for(i = 0;i < 5; ++i)
 {
    
        for(j = 0; j <=i; ++j)
        {
             n = n+1;
     
             result[i][j] = n;
        }
  
 }

 

 for(i = 0; i < 5; ++i)
 {
    
        for(j = 4; j >=0; --j)
        {
              if(0==result[i][j])
              {
                    printf("   ");
              }
             else
             {
                   printf("%2d ", result[i][j]);
             }
             if(0==j)
             {
                   putchar('\n');
             }
        }

  
 }

 return 0;

}

 

 

 


 

 

_________________________________________________________________________________________________

 

 

 

 

_______실습파일______________

 

 

10-2-1.c

 

10-2.c

 

Dtest.c

 

QM.cpp

 

10-1.c

 

 

report2.c

____________________________

 

 

 

 

____________________________________________________________________________________________________________

 

 

 

'스마트 컨트롤러 게시물' 카테고리의 다른 글

20130423  (0) 2013.04.23
20130422  (0) 2013.04.22
20130418  (0) 2013.04.18
20130417  (0) 2013.04.17
20130416  (0) 2013.04.16