기본 작업공간 (base workspace)
먼저 workspace 의 개념부터 설명할 필요가 있다. Scilab을 사용하다보면 여러 객체(행렬, 문자열, 구조체, 함수, 등등)를 변수에 담아서 사용하게 되며 한 번 생성된 변수는 일부러 삭제하지 않는 한 언제든지 접근하여 값을 읽거나 변경할 수 있다. 이렇게 객체가 저장되는 메모리 공간을 작업공간(workspace)라고 칭하며 현재 작업공간 내의 변수들은 Variable brower 창에서 항상 확인할 수 있다.
[그림 1] variable browser 에 방금 생성한 변수 a와 B가 표시되어 있다.
특별히 Scilab을 처음 실행시킬 때 사용되는 작업 공간을 기본 작업 공간(base workspace)라고 칭하도록 하겠다.
작업 공간과 관련된 명령어들을 다음 표에 정리하였다.
[표 1] workspace 와 관련된 명령어들
명령어 | 기능 |
who | 모든 변수들의 리스트 출력 |
who_user | 모든 사용자 변수들의 리스트 출력 |
whos | 모든 변수들의 리스트와 특성(type, size) 출력 |
whereis(‘function_name’) | 함수가 포함된 라이브러리명 출력 |
global a,b,c… global(‘a’,’b’,’c’,...) | 전역공간에 변수 a,b,c를 생성 (위와 상동) |
isglobal(var) | 변수 var 가 전역변수이면 %T 반환 |
clear clear a, b, fA, fB, … 또는 clear(‘a’, ‘b’, ‘fA’, ‘fB’, …) | 비보호된 모든 변수와 함수를 workspace에서 제거 지정된 (비보호된) 변수와 함수를 제거 (위와 상동) |
clearglobal clearglobal a,b,c… clearglobal(‘a’, ‘b’, ‘c’, …) | 전역공간의 모든 변수 삭제 전역공간의 변수 a,b,c,... 삭제 (위와 상동) |
type(a) | |
typeof(a) | |
isdef(var, [, strLoc]) | |
exists(str [, strLoc])) |
기본 작업영역의 모든 변수/함수를 제거하려면 clear 명령을 내리면 되고 특정한 변수/함수만을 제거하려면 clear 뒤에 그 변수의 이름을 써 주면 된다.
전역 작업 공간 (global workspace)
전 절의 명령어 표에 보면 global 이라는 명령어가 있는데 이것은 기본 작업 공간과는 별개의 전역 공간 (global workspace)에 변수를 생성하는 명령이다. 예를 들어서 다음과 같이 명령을 내리면
>> global ga ⏎
전역공간에 변수 ga가 생성되며 동시에 기본 작업공간에 이 전역 변수를 참조할 수 있는 참조가 생기게 된다. 기본 작업 공간에 생기는 변수 ga는 지역 변수가 아니라 전역 변수로의 참조라는 것을 이해하여야 한다.
[그림 2] 글로벌 변수 ga의 생성
따라서 다음과 같은 명령을 내리면
>> ga=%pi ⏎
기본 작업 공간의 참조 변수 ga를 통해서 전역 변수 ga를 %pi 로 초기화 시킬 수 있다.
순서를 바꿔서 만약 이미 있는 지역 변수를 나중에 전역 변수로 선언해도 비슷한 일이 일어난다. 변수 값이 전역 작업공간으로 옮겨지며 기존의 지역 변수는 전역 변수로의 참조로 변환된다. 이 점을 이해하여야 한다.
[그림 3] 전역 변수로의 전환
전역 공간의 모든 변수/함수를 제거하려면 clearglobal 명령을 내리면 되고 특정한 변수/함수만을 제거하려면 clearglobal 뒤에 그 변수의 이름을 써 주면 된다.
전역 공간은 기본 작업 공간과 함수 간 혹은 함수들 사이에 공통으로 사용되는 변수를 관리하는데 이용된다. 이것에 대해서는 함수를 설명하는 부분에서 더 자세히 언급하겠다.
'프로그래밍언어.Lib > Scilab' 카테고리의 다른 글
싸이랩(scialb)의 복소수 입력 (0) | 2015.06.17 |
---|---|
싸이랩(scialb)의 숫자 자료형 (정수형과 실수형) (0) | 2015.06.17 |
싸이랩(scialb)의 폴더 관련 명령어와 변수들 (0) | 2015.06.17 |
싸이랩(scialb)의 연산자와 기정의 상수들 (0) | 2015.06.17 |
싸이랩(scialb)의 대입문과 식별자 (0) | 2015.06.17 |