Tcl/Tk 민 인학 한국 Tcl/Tk 커뮤니티.

Slides:



Advertisements
Similar presentations
- C-style formatting - format() method.  file = open(‘file.txt’, [mode]) ◦ Mode  ‘r’: for reading (default)  ‘w’: for writing (truncate if already.
Advertisements

Python RaspberryPi Sejin Oh. Raspberry Pi Python  참과 거짓  Python 자료형의 참과 거짓을 구분 짓는 기준은 다음과 같다. 2 참과 거짓 자료형참 or 거짓 “” 가 아닌 문자열 ( 예 : “python”) 참 “” 거짓.
03 변수와 자료형 세종대학교 최옥경 교수 참고 : 한빛미디어 뇌를 자극하는 C, INFINITY Perfect C.
멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
쉘 스크립트와 cron coearth, george.
2007 1학기 12 배열.
제12장 표준 입출력과 파일 입출력.
C++ Espresso 제3장 배열과 포인터.
C++ Espresso 제3장 배열과 포인터.
C++ Espresso 제1장 기초 사항.
제 1장 C 언어의 소개.
어서와 Java는 처음이지! 제4장 배열.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
C 프로그래밍 소개 숙명여대 창병모 2011 가을.
제 8 장  파서 생성기 YACC 사용하기.
Chapter 11 The C Shell.
Ruby 프로그래밍 1 문자열 입출력 제어구조 looping 함수 정의
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
쉽게 풀어쓴 C언어 Express 제18장 입출력과 라이브러리 함수 C Express.
Kasimov C언어 세미나 1st.
처음으로 배우는 C 프로그래밍 제2부 기초 제5장 반복문.
2. PHP 프로그래밍 웹 브라우저로 데이터 전송 주석 작성하기 변수/상수 문자열/숫자형 HTML 폼 만들기
6장 비연결형 지향 프로토콜 Database Lab 강 우 석.
제 12장 I/O멀티플렉싱(Multiplexing)
명품 Java Programming.
C 7장. 배열과 문자열 #include <stdio.h> int main(void) { int num;
IS lab. 김건영 Awk, Posting list IS lab. 김건영
프로그래밍 서울대학교 통계학과 2009년 2학기 컴퓨터의 개념 및 실습 (
9장 파일 입출력.
발로 하는 파이썬 세미나 안녕하세요. 저는 발로 하는 파이썬 세미나를 발표할….
Chapter 11 Strings.
제 3 장 상수와 변수
10장 C 표준 파일 입출력 子曰 學而時習(실습?)之 不亦悅乎.
Chapter 13 Input/Output and Files
-제어문, 함수, 클래스- IS lab. 김건영 Python -제어문, 함수, 클래스- IS lab. 김건영
adopted from KNK C Programming : A Modern Approach
Chapter 2 Lexical Elements, Operators, and the C System
2019년 2월 24일 오후 4시 59분 제2장 표준 입출력 함수
Chapter 10 Strings and Pointers
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
기초 프로그래밍 Yang-Sae Moon Department of Computer Science
자전거를 배우려면 안장에 올라가 페달을 밟아라.
11장. 1차원 배열 IT응용시스템공학과 김 형 진 교수.
제2장 제어구조와 배열 if-else 문에 대하여 학습한다. 중첩 if-else 문에 대하여 학습한다.
4장 - PHP의 표현식과 흐름 제어-.
Python.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
6장 콘 셸 뇌를 자극하는 Solaris Bible.
자바 5.0 프로그래밍.
Fflush 사용이유 및 방법 [이유] 키보드에서 입력된 내용은 입력버퍼에 저장되었다가 Enter 키가 들어오면 프로그램으로 전달됨 이 때 입력버퍼에 있는 Enter 키도 프로그램으로 전달됨 그러므로 아래와 같은 프로그램에서 문자 하나를 입력해도 Enter키도 입력된 것으로.
C89(C++03) 프로그래밍 (Part 2) 7 배열 8 변수 범위 9 포인터 10 유도 자료형.
누구나 즐기는 C언어 콘서트 제2장 기초 사항 IT응용시스템공학과 김형진 교수.
GDB - GNU Debugger 김진용.
반복문의 기능 반복문 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 while문
제5장 디버깅과 추적 문봉근.
이번 시간에는... 지난 시간까지 2회차에 걸쳐 WML의 택스트 포맷, 이미지 처리, 페이지 이동, 태스크 수행과 이벤트 처리 및 WML 사용자 Input 처리 태그 등, WML 개발에 대해서 알아보았습니다. 이번 시간에는 2회차에 걸쳐, WML 스크립트 개발에 대해서.
실습과제 1번 생성된 파일 basic.txt를 프로젝트 폴더에서 메모장으로 열고 내용을 확인
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
3주차: Control Flow and Others
어서와 C언어는 처음이지 제16장.
argc, argv 의 사용방법 #include <stdio.h>
개정판 누구나 즐기는 C언어 콘서트 제10장 문자열 출처: pixabay.
C 13장. 입출력 라이브러리 #include <stdio.h> int main(void) { int num;
C.
printf("Global Korea\n");
C 프로그래밍은 매우 도전적인 작업이다. 도전의 이면에 철저한 준비와 체계적인 노력
Spring, 2019 School of CSE Pusan National University
Choi Younghwan CSE HUFS
PHP 기초문법 PHP를 공부하는데 있어 가장 기초가 되는 PHP기초문법에 대해서 배워 봅니다.
Presentation transcript:

Tcl/Tk 민 인학 한국 Tcl/Tk 커뮤니티

Tcl 역사  1988 년도에 존 오스터하우트 (John Ousterhout) 에 의해 개발시작  1991 년 Tcl 첫번째 릴리즈  1992 년 Tk 첫번째 릴리즈  1994~1998 년 선 (Sun) 에서 유지보수  이 시기에 맥 오에스 / 윈도우즈 지원시작  국제화지원 / 실행속도개선 / UTF-8 채용 / 고성능의 정규 표현식 지원 …  2000 년 10 월부터 오픈소스로 전환

Tcl/Tk 특징  high-level scripting language  모티프나 윈도우즈 코드보다 작다.  interpreted  직접 실행이 가능하며, 컴파일링 / 링킹 과정이 필요없다.  extensible  Tcl 이나 C 로 확장가능하다.  embeddable  C 에서 Tcl 터프리터를 호출할 수 있다.  most platforms  유닉스 / 리눅스 / 맥 / 윈도우즈 지원.  Autoloading  자동 라이브러리 로딩.  free  오픈소스.  로얄티없음.

Tcl/Tk Application  Modelsim  Tcl/Tk 8.4 버전 사용됨

Tcl/Tk Application  HyperWorks  World Best CAE Total Solution

Tcl/Tk Application  iNSPIRE, iPROVE  Tcl/Tk 8.4 버전 사용됨

Tcl/Tk Application  STB Tester  Tcl/Tk 8.4 버전 사용됨

Tcl/Tk 사용방식  tclsh 콘솔 어플  wish 윈도우 어플

Tcl/Tk 사용방식  C/C++ 언어의 embedded 어플 #include int main(int argc, char *argv[]) { Tcl_interp *interp = Tcl_CreateInterp(); code = Tcl_EvalFile(interp, argv[1]); if (*interp->result != 0) { printf(“%s\n”, interp->result); }

Tcl/Tk 사용방식  전통적인 유닉스 스크립트 #!/usr/local/bin/wish –f puts stdout "Hello, world!”

기본 문법  명령어 ( 커맨드 ) 의 인자를 스페이스로 구분지어 나열  command arg1 arg2 arg3 …  한 행에 여러 개의 명령어를 나열할 땐 “;” 으로 구분  command arg1 arg2 arg3... ; command arg1 arg2 arg3...

기본 문법  한 행이 길어진다면 백 ( 역 ) 슬래쉬 “\” 로 이어 쓴다.  command arg1 \ arg2 arg3 …

Hello World  puts stdout {Hello World}  Hello World  puts stderr {Hello World}  Hello World  puts {Hello World}  Hello World  puts stdout "Hello World”  Hello World  puts stderr "Hello World“  Hello World  puts "Hello World”  Hello World puts 커맨드로 출력한다. 스페이스 ( 공백 ) 문자를 포함하고 싶다면 “…” 나 {…} 사용 stdout 은 표준 메시지 출력 Standard output stderr 은 표준 에러 메시지 출력 Standard error

변수  set var 123  123  set var  123  set var abc  abc  puts stdout $var  abc  puts ${var}def  abcdef  unset var 변수에는 타입이 없다. C 언어에서의 int, char, float 같은 타입은 없다. set 커맨드로 변수에 값을 대입. set 커맨드로 값을 생략 시 변수 값 참조. 변수명의 처음에 $ 을 붙여주면 값을 참조. unset 메모리에 변수 삭제.

산술연산  expr 1 / 0  divide by zero  expr x  34  expr 2.0 * asin(1.0)   set i 1  1  incr i  2 expr 커맨드 사용 16 진수,8 진수도 대입 가능 16 진수 0x10  10 진수로 16 8 진수 010  10 진수로 8 다양한 수학함수 지원 난수 (random) 지원

커맨드의 치환 (Substitution)  set x [expr 10 * 2]  20  puts $x  20  set a 10; set b [set a]  10 […] 는 커맨드의 실행 결과로 치환

더블 쿼테이션 “…” 과 중괄호 {…}  set var 123  123  puts "result = $var”  result = 123  puts {result = $var}  result = $var  puts "result = \$var”  result = $var  set var 123  123  puts "result = [pwd]”  result = C:/  puts {result = [pwd]}  result = [pwd]  puts "result = \[var]”  result = [var] “…” 와 {…} 는 여러 개의 문자열을 하나로 묶어줌. 더블 쿼테이션 내에서는 변수와 커맨드가 치환이 됨 중괄호 내에서는 변수와 커맨드가 치환이 안됨 백 슬래쉬는 ‘[‘ 와 ‘$’ 의 치환을 무효화

format 서식  scan " " "%d.%d" a b  2  set a  123  set b  456  format "%d.%d" $a $b  C 언어의 scanf, printf 와 동일한 서식 지원 scan 은 서식에 맞춰 문자열 분리 format 은 서식에 맞게 문자열 작성

procedure( 함수 ) # 보통의 인자 set foo 3  3 proc add {a b} { global foo return [expr $a + $b + $foo] } add 1 2  6 proc 커맨드로 0 개 이상의 인자를 갖는 함수를 정의 함수 내 에서 선언된 변수는 함수 내 에서만 참조가능 다른 영역의 변수를 참조하고자 한다면 global 을 사용

procedure( 함수 ) # 참조형 인자와 기본 인자 proc plus {a {b 1}} { upvar $a r set r [expr $r + $b] return $r } set foo 1  1 plus foo  2 plus foo 2  4 인자의 기본 값을 가질 수 있다. 인자에 변수의 값이 아닌 변수의 이름 자체를 넣고자 한다면 upvar 를 사용한다. (call by name)

procedure( 함수 ) # 가변 인자 proc sum {args} { set s 0 foreach i $args { set s [expr $s + $i] } return $s } sum 1 2  3 sum  6 가변인자는 args 를 사용한다.

namespace namespace eval Hello { variable var {Hello World} proc print {} { variable var puts $var } namespace eval Hello2 { variable var {Hello World} proc print {} { variable var puts $var } namespace 는 패키지 사이의 심볼 ( 함수, 변수 ) 을 충돌을 피하기 위한 기능 puts $Hello::var  Hello World Hello::print  Hello World

comment( 주석 ) # 주석 1 # 주석 2 \ 주석 2 계속 puts {Hello World} ; # 주석 3  Hello World # 시작하는 행은 주석을 의미 스크립트 기술도중에는 “; #” 를 사용

if, elseif, else set var 일  일 if {$var == " 일 "} { puts 1 }  1 set var 이  이 if {$var == " 일 "} { puts 1 } else { puts 2 }  2 지정된 조건 일때 수행한다. else 는 생략 가능하다. set var 삼  삼 if {$var == " 일 "} { puts 1 } elseif {$var == " 이 "} { puts 2 } else { puts 3 }  3

for for {set i 1} {$i <= 3} {incr i} { puts $i }  1  2  3 for {set i 1} {$i <= 5} {incr i} { if {$i < 3} { continue } puts $i }  3  4  5 지정된 횟수만큼 loop 를 수행한다. break 는 loop 를 빠져나간다. continue 는 다음 loop 을 수행한다. for {set i 1} {$i <= 5} {incr i} { if {$i > 3} { break } puts $i }  1  2  3

while set i 3  3 while {$i != 0} { puts stdout $i incr i -1 }  3  2  1 조건을 만족할 때까지 loop 를 수행한다. break 는 loop 를 빠져나간다. continue 는 다음 loop 을 수행한다.

foreach foreach i {A B C} { puts stdout $i }  A  B  C foreach {i j} {A B C D E F} { puts stdout "$i $j” }  A B  C D  E F 주어진 리스트만큼 loop 를 수행한다. break 는 loop 를 빠져나간다. continue 는 다음 loop 을 수행한다.

switch set fruit “ 사과 ”  사과 switch $fruit { 사 {puts 1000 원 } 귤 {puts 500 원 } 바나나 {puts 200 원 } default {puts 모름 } }  1000 원 만족 조건만 수행한다. default 는 맞는 조건이 없을때 수행

catch catch {expr 1+2} var  0 catch {expr 1*_} var  1 catch {expr 1/0} var  1 catch {error bug} var  1 에러를 catch( 감지 ) 한다. 에러발생시 1, 아닐시 0 을 리턴 % expr 1*_ invalid character "_" in expression "1*_" (parsing expression "1*_") invoked from within "expr 1*_" (file "a.tcl" line 1)

array 1/2 set ary( 사과 ) 1000 원  1000 원 set ary( 오렌지 ) 500 원  500 원 set ary( 바나나 ) 2000 원  2000 원 parray ary  ary( 사과 ) = 1000 원  ary( 오렌지 ) = 500 원  ary( 바나나 ) = 2000 원 puts $ary( 사과 )  1000 원 요소들의 모음 근복적으로 1 차원 array 만 가능하나 키가 문자열인 것을 이용하여 2 차원 이상도 표현 가능 parray 는 array 의 요소를 출력 키 = 값 set ary(0,0) 0 set ary(0,1) 1 set ary(0,2) 2 set ary(1,0) 0 set ary(1,1) 1 set ary(1,2) 2

array 2/2 array names ary  바나나 오렌지 사과 array size ary  3 array exists ary  1 array set ary { 사과 1000 원 오렌지 500 원 바나나 2000 원 } array get ary  바나나 2000 원 오렌지 500 원 사과 1000 원 array unset ary  ary 삭제됨 unset ary( 오렌지 )  오렌지 요소 삭제됨 이 외에도 다양한 커맨드가 있으니 Tcl 공식 문서를 참고할 것

string 1/2 set str abc if {[string equal $str "abc"]} { puts 같음 }  같음 set str abc if {[string match "ab*" $str]} { puts 같음 }  같음 문자열 조작 커맨드 문자열 비교시 string 커맨드를 사용하는 것이 안전하다.

string 2/2 string length ”abc”  3 string range “abcdef” 0 2  abc string tolower “ABC”  abc string toupper “abc”  ABC string index “abc” 1  b 이 외에도 다양한 커맨드가 있으니 Tcl 공식 문서를 참고할것

append set str1 abc append str1 def ghi set str1  abcdefghi append str set str2  문자열 추가 커맨드

list set var ” 사과 오렌지 바나나 ”  사과 오렌지 바나나 set var { 사과 오렌지 바나나 }  사과 오렌지 바나나 set var [list 사과 오렌지 바나나 ]  사과 오렌지 바나나 set var [concat " 사과 오렌지 바나나 “]  사과 오렌지 바나나 set var [concat { 사과 오렌지 바나나 }]  사과 오렌지 바나나 set var { 사과 오렌지 바나나 }  사과 오렌지 바나나 lappend var 멜론 딸기  사과 오렌지 바나나 멜론 딸기 쌍 따옴표나 중괄호를 사용하여 공백으로 구분된 문자열의 집합 인자의 문자열로부터 리스트 생성 인자의 문자열로부터 공백을 기준으로 리스트 생성 리스트에 요소 추가 지정 변수 없을시 새로운 리스트 생성

list set var ” 사과 오렌지 바나나 ” llength $var  3 lindex $var 1  오렌지 lrange $var 0 1  사과 오렌지 linsert $var 1 메론 딸기  사과 메론 딸기 오렌지 바나나 lset $var 0 키위  키위 오렌지 바나나 리스트의 요소 개수 리턴 지정된 인덱스의 요소 리턴 지정된 영역의 요소를 리턴 지정된 위치에 요소를 삽입 지정된 위치에 요소를 변경

list set var ” 사과 오렌지 바나나 ” lsearch $var 오렌지  1 lsort " 사과 오렌지 바나나 "  바나나 사과 오렌지 set var { 사과 : 오렌지 : 바나나 : 사과 }  사과 : 오렌지 : 바나나 : 사과 split $var :  사과 귤 바나나 사과 리스트의 요소를 검색 리스트의 요소를 정렬 이 외에도 다양한 커맨드가 있으니 Tcl 공식 문서를 참고할것 문자열을 분리하여 리스트로 리턴

file i/o access set fd [open “sample.txt” w] puts $fd “hello world 1” puts $fd “hello world 2” close $fd set fd [open “sample.txt” r] set txt [read $fd] puts $txt close $fd 파일 생성 파일 읽음 이 외에도 파일 i/o 관련하여 다양한 커맨드를 제공하고 있으니 직접 찾아볼것.

file proc filechk {file1 file2} { set time1 [file mtime $file1] set time2 [file mtime $file2] if {$time1 > $time2} { return "$file1 이 최근것입니다.” } elseif {$time1 < $time2} { return "$file2 이 최근것입니다.” } else { return ” 같습니다.” } filechk a.txt b.txt file 커맨드는 file 에 관련된 다양한 기능을 제공하며 파일의 상태를 체크하는 기능도 제공한다. mtime 은 modify time. 이 외에도 file 에 관련된 다양한 커맨드가 있으니 Tcl 공식 문서를 참고할것

package package require tcl3d package require vtk package require Bwidget package 는 Tcl 의 기본 기능에서 플러그인 형식으로 확장하는 개념으로 보통 확장패키지라 부름 순수 Tcl 이나, C/C++ 로 확장 패키지를 작성함. package require 는 확장 패키지를 인터프리터로 적재시키는 커맨드 확장 패키지들은 tcltk.co.kr 에서 다운 받을 수 있음.

Tcl commands 지금까지 알아본 것 외에도 다양한 커맨드를 제공하고 있으니 반드시 확인해 볼것

Tcl/Tk 개발환경  ActiveTcl ( )  ActiveState 사에서 제공되는 Tcl/Tk 인터프리터  Tclsh,Wish 만 제공됨  다양한 플랫폼에서 컴파일된 Tcl/Tk 인터프리터 제공  Windows, Linux, Mac OS X, Solaris, AIX and HP-UX  무료

Tcl/Tk 개발환경  MyTcl (  개인적으로 시작한 Tcl/Tk 통합 개발환경  인터프리터 / 에디터 / 코드 부라우저 / 디버거 / 빌더 제공  유용하고 다양한 확장 패키지 제공  현재 윈도우 설치 파일만 제공 / 차후 리눅스 버전 계획 있음.  무료

감사합니다