![]() Brent B. Welch 글쓴이 소개: Brent Welch씨는 www.scriptics.com웹싸이트가 만들어질때 Tcl과 관련된 URL들을 보기좋게 데이터베이스화하고 TclPro제품을 위한 전자상거래 인프라들을 만드셨습니다. 또한 Tcl/Tk를 이용한 대형 프로그램들을 많이 만들었습니다. 개발한 대표적인 프로그램으로는 현재 www.scriptics.com을 운영하는데 사용되고 있는 TclHttpd웹서버, 메일 사용자인터페이스인 Wxmh, webtk HTML편집기등이 있습니다. 그는 또 "Practical Programming in Tcl and Tk"란 책을 펴내기도 했었습니다. (한국어판도 있죠:) Welch씨는 1982년 Boulder에 있는 University of Colorado에서 항공우주공학을 전공하였으며 1986년 University of California, Berkeley에서 컴퓨터공학 석사학위를 받았으며 90년도에 박사학위를 받았습니다. Welch씨는 제록스 PARC에서 분산시스템에 관한 연구원으로 일한적이 있으며 그 후 썬 마이크로시스템즈 연구소에서 Tcl/Tk팀원으로 활동하고 있습니다. 현재 ACM과 IEEE 컴퓨터분과의 회원입니다. 홈페이지: http://www.beedub.com/ 차례: |
Abstract:
이 글에서는 Tcl언어의 기본개념과 문법에 대해 설명합니다.
스크립트언어인 Tcl은 매우 간단한 문법을 가지고 있다.
명령어 인자 인자 인자
$foo
foo
는 변수명이다..
[clock seconds]
"some stuff"
{some stuff}
\
이래예는 현재시간을 화면에 출력하는 간단한 Tcl명령이다.
사용되는 Tcl명령어는 set
, clock
, puts
등 세개이다.
set
명령은 변수를 지정한다.
clock
명령은 현재 시간값을 계산한다.
puts
명령어는 값을 출력한다.
set seconds [clock seconds] puts "The time is [clock format $seconds]"
변수를 지정할때는 $기호를 사용하지 않는다는 것을 기억해 두기 바란다.
단지 여러분이 어떤 변수의 값을 사용할 필요가 있을때 $를 붙여 사용한다.
seconds
변수는 사실 꼭 필요한 변수는 아니다.
여러분은 현재 시간을 다음 명령한줄로도 출력할 수 있다.:
puts "The time is [clock format [clock seconds]]"
Tcl파서는 다른 세단계를 거쳐 Tcl문법을 해석한다.: 인자 그룹화, 결과 대체,명령의 실행.
puts
명령에서
사용되었다.
$foo
를 foo
변수의 값으로
바꾸는 것이다.즉 괄호사이의 명령어들을 그 명령의 결과로 바꾸는 것이다. 이 대체과정은
일반적으로 그룹화가 결정되고 난 다음에 수행된다.
이 순서에 따라 작업을 수행하면 이상한 값으로 명령어의 구조가 복잡해지지 않도록 해준다.
여기 다른 예제 하나를 살펴보자.:
여기서 중괄호는 어떤 대체과정이 일어나지 않게 하면서 인자들을 그룹화하기 위하여 사용되었다. Tcl파서는set i 0 while {$i < 10} { puts "$i squared = [expr $i*$i]" incr i }
while
명령에 대하여 특별한 동작을 필요로 하지 않는다는 것을
알고 있다.마치 다른 명령어처럼 취급된다.
while
명령의 실행은 단지 첫번째 인자가 표현식이며, 두번째인자가 Tcl명령어들이라는 것만
알고 있다.
괄호로 된 그룹은 두개의 인자를 가지고 있다.: 루프의 제어를 담당하는 불린표현식과
루프과정에서 동작할 명령어로 되어 있다.
우리는 두가지 수학적 표현식을 보았다.: 하나는 불린 연산이며 하나는 가감승제로 표현되는 수식이다.
while명령은 자동으로 그 첫번째 인자를 수식으로 평가한다.
다른 경우에서 여러분은 반드시 특별한 수학적 계산을 수행하려면 expr
명령어를
사용해야 한다.
마지막으로 Tcl은 어려운 몇가지 작업을 진행하기 위하여 몇몇을 호출한다. 우리는 이미
Tcl이 수학함수를 사용하기 위하여 expr
명령을 사용하고, 출력함수를 다루기 위하여
puts
함수를 사용하며, 변수값을 지정하기 위하여 set
명령을 사용한다는
것을 살펴보았다.
이러한 Tcl명령어들은 Tcl에 등록되어 있는 C프로시저를 호출하여 실행된다.
C명령어 프로시저는 Tcl명령행으로부터 문자열 인자를 받아서 그 값을 새로운 문자열로 돌려준다.
C명령어 프로시저를 작성하는 것은 매우 쉬운 일이다. C명령어 프로시저를 이용하면 데이터베이스의 접근에서부터
그래픽한 사용자 인터페이스를 만드는 등의 일까지 모든 작업이 가능하다.언어로서의 Tcl은
실제로 그 명령이 어떤 일을 하는지 실제로 모른다. 단지 인자들을 그룹화하고, 결과를 치환하고,
명령어들을 처리할 뿐이다.
다음 프로그램은 팩토리얼을 구하는 프로그램이다.:
proc fac {x} { if {$x < 0} { error "Invalid argument $x: must be a positive integer" } elseif {$x <= 1} { return 1 } else { return [expr $x * [fac [expr $x-1]]] } }
웹페이지는 리눅스포커스의 편집팀에 의해 관리됩니다.
© Brent B. Welch LinuxFocus 1999 |