Introduction


 우선 이 간단한 공학용 계산기를 우리가 흔히 사용하는 공학용 계산기라고 생각해보면 접근이 편할지 모르겠다. 그렇게 생각해보면 일단 필요한 것이 눈에 보이는 키패드(입력), 디스플레이(출력)이고 눈에 보이지 않는 내부 처리 모듈이다.  


입력

출력

처리

input()

output()

processor()


 처리 모듈은 입력과 출력을 제어하고 공학용 계산기가 정확한 동작을 할 수 있도록 메모리나 전자회로를 이용한다. 이 프로젝트를 완성하는 것은 곧 processor() 함수를 구현 하는 것이고 스펙이 원하는 결과를 얻기 위한 메모리 구성, 전자회로 구현이 주가 될 것이다.


Main


   Processor


 우선 이 프로그램은 입력-처리-출력의 절차를 따른다. 따라서 메인프로그램은 다음과 같은 함수를 차례로 호출한다. 그리고 processor()에서는 input()으로부터 얻은 입력수식을 일단 파싱한다. 파싱한 결과를 가지고 여러 전자회로를 이용하여 수식을 처리한다.


- in program


void input(void);

void processor(void);

void output(void);


- in processor


void parser(char *);

void calculate(char *);




   Memory


 우선 입출력 간의 써야할 입출력 버퍼가 필요하다. 이는 단순 문자열 이므로 다음과 같이 간단하게 선언할 수 있다.

char inputBuff[buff_length + 1];
char outputBuff[buff_length + 1];


 다음은 단일변수 및 배열변수를 저장하기 위한 메모리 구성을 해야 한다. 변수의 이름과 값만 가지는 간단한 구조이다. 그리고 이 변수를 쉽게 사용할 수 있게 여러 가지 함수가 필요하다.


struct variable{
   char name[variable_length +1];
   char* value;
   int number;
   double* values;
};

void newVariable(struct variable);

void setVariable(struct variable);

struct variable getVariable(char *);

int isVariable(char *);

void parseVariable(struct variable *);


 그리고 수학함수를 처리하기 위한 메모리 구성을 해야 한다. 이 역시 마찬가지로 함수 값을 쉽게 얻어올 수 있게 여러 가지 함수가 필요하다.


struct function{
   char name[function_length + 1];
   char* argument;
   int number;   
   double* arguments;
   double reternValue;
};

void isFunction(char *);

void parseFuntion(struct function *);


   Circuit


스펙에 나온 배열변수의 연산함수 처리를 위하여 다음과 같은 함수가 필요하다.


double add(struct variable)

double  mul(struct variable)

double  avg(struct variable)

double  std(struct variable)


스펙에 나온 저장과 불러오기 처리를 위하여 다음과 같은 함수가 필요하다.


void save()

void load()



프로젝트 메인으로

이올린에 북마크하기(0) 이올린에 추천하기(0)
« PREV : 1 : ... 12 : 13 : 14 : 15 : 16 : 17 : 18 : 19 : 20 : NEXT »