검색어 입력폼

벡터를 계산하는 인터프리터

저작시기 2009.04 |등록일 2009.06.13 파일확장자압축파일 (zip) | 6페이지 | 가격 4,000원

소개글

알고리즘 - 재귀호출을 이용한 벡터를 계산하는 인터프리터
알고리즘
프로그래밍 과제 #1


교재 5장의 Recursive Descent Interpreter 프로그램의 기능을 확장하여 다음과 같이 벡터(vector) 타입의 변수들을 다룰 수 있도록 하라.

1. 모든 변수는 scalar 타입이거나 혹은 vector 타입이다. scalar 타입의 변수는 하나의 실수를 값으로 가지고, 벡터 타입의 변수는 여러 개의 실수를 값으로 가진다. 각 벡터 변수가 가질 수 있는 값의 개수를 그 변수의 차원(dimension)이라고 부른다.

2. 교재에서와는 달리 모든 변수는 사용되기 전에 먼저 선언되어야 한다. 변수의 선언은 변수의 "이름"과 "차원"을 지정한다.

dim vect1 4; // 벡터 변수 vect1의 차원은 4이다.
dim vect2 4;
dim vect3 4;
dim scalar1 1; // 스칼라 변수 scalar1의 차원은 1이다.

3. 선언된 벡터 타입의 변수는 다음과 같이 사용될 수 있다.

vect1 = [ 2, 24, 0, 5 ];
vect2 = vect1;
vect3 = 2 * vect2 + [ 1, 2, 10-5, 0 ];
print vect3;
vect3 = [ 5, 50, 5, 10 ];

4. 각 벡터 변수의 차원은 선언될 때 정해지고 변경되지 않는다. 벡터 변수에 대해서는 같은 차원의 벡터를 더하기, 같은 차원의 벡터를 빼기, scalar 값을 곱하기, 같은 차원의 벡터 변수에 치환하기 연산이 허용된다. 벡터 간의 곱셈이나 나눗셈은 허용하지 않는다. 차원이 다른 벡터간의 치환은 허용되지 않는다.

5. 벡터의 한 성분(component)를 다음과 같이 <> 기호를 사용하여 엑세스하여 사용할 수 있다. 추출된 성분은 하나의 스칼라 값으로 사용된다.

scalar1 = vect3<2>; // 인덱스는 0, 1, 2...
print scalar1;
scalar1 = 5; // 인덱스가 0부터 시작되므로 50이 아닌 5임
dim scalar2 1;
scalar2 = 2*scalar1 + vect3<1> + vect3<3>;
print scalar2;
scalar2 = 70;
dim vector4 4;
vector4 = [scalar1*(scalar1+vect3<2>), scalar2, vect3<2>, 2*vect3<3>+3];
print vector4;
vector4 = [ 50, 70, 5, 23 ];

6. 위에서 설명한 문법에 대한 recursive definition을 첨부한 "보고서 양식 4절"에 기술하여 제출한다.

컴파일 실행환경

java jdk1.6.0

압축파일 내 파일목록

벡터를 계산하는 인터프리터.hwp
Interpreter.java

참고 자료

Data Structures and Algorithms in java second edition
다운로드 맨위로