단순화된 공학 계산기 - Design (설계)
Posted 2007/10/07 16:49Introduction
우선 이 간단한 공학용 계산기를 우리가 흔히 사용하는 공학용 계산기라고 생각해보면 접근이 편할지 모르겠다. 그렇게 생각해보면 일단 필요한 것이 눈에 보이는 키패드(입력), 디스플레이(출력)이고 눈에 보이지 않는 내부 처리 모듈이다.
|
입력 |
출력 |
처리 |
|
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]; |
다음은 단일변수 및 배열변수를 저장하기 위한 메모리 구성을 해야 한다. 변수의 이름과 값만 가지는 간단한 구조이다. 그리고 이 변수를 쉽게 사용할 수 있게 여러 가지 함수가 필요하다.
|
struct variable{ |
|
void newVariable(struct variable); |
|
void setVariable(struct variable); |
|
struct variable getVariable(char *); |
|
int isVariable(char *); |
|
void parseVariable(struct variable *); |
그리고 수학함수를 처리하기 위한 메모리 구성을 해야 한다. 이 역시 마찬가지로 함수 값을 쉽게 얻어올 수 있게 여러 가지 함수가 필요하다.
|
struct function{ |
|
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() |
- Filed under : 분류없음
- Tag : 설계, 프로젝트
- 2 Comments Trackback
이올린에 북마크하기
이올린에 추천하기