版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、2020/10/12,Tcl/Tk語言介紹 研究院,王強 2009.09.09,2020/10/12,一. Tcl/Tk簡介 二. Tcl總體結構圖 三. Tcl語言的特點 四. Tcl與其它語言的比較 五. Tcl語法簡介 六. Tcl操作文件的方法 七. Tk工具箱,2020/10/12,一. Tcl / Tk簡介 背景 Tcl/Tk的發(fā)明人John Ousterhout教授在八十年代初,是伯克利大學的教授。在其教學過程中,他發(fā)現(xiàn)在集成電路CAD設計中,很多時間是花在編程建立測試環(huán)境上。并且,環(huán)境一旦發(fā)生了變化,就要重新修改代碼以適應。這種費力而又低效的方法,迫使Ousterhout 教授
2、力圖尋找一種新的編程語言,它即要有好的代碼可重用性,又要簡單易學,這樣就促成了Tcl (Tool Command Language) 語言的產生。 Tcl最初的構想的是希望把編程按照基于組件的方法 (component approach),即與其為單個的應用程序編寫成百上千行的程序代碼,不如尋找一種方法將程序分割成一個個小的, 具備一定“完整”功能的,可重復使用的組件。這些小的組件小到可以基本滿足一些獨立的應用程序的需求,其它部分可由這些小的組件功能基礎上生成。不同的組件有不同的功能,用于不同的目的。并可為其它的應用程序所利用。當然, 這種語言還要有良好的擴展性, 以便用戶為其增添新的功能模塊
3、。最后,需要用一種強的,靈活的“膠水”把這些組件“粘”合在一起, 使各個組件之間可互相“通信”,協(xié)同工作。程序設計有如拼圖游戲一樣,這種設計思想與后來的Java不謀而合。終于在1988年的春天, 這種強大靈活的膠水-Tcl語言被發(fā)明出來了。,2020/10/12,定義 按照Ousterhout教授的定義,Tcl是一種可嵌入的命令腳本化語言 (Command Script Language)。“可嵌入”是指把很多應用有效,無縫地集成在一起?!懊睢笔侵该恳粭lTcl語句都可以理解成命令加參數(shù)的形式: 命令 參數(shù) 1 參數(shù) 2 參數(shù) 3 參數(shù) 4 . 參數(shù) N 腳本化是指Tcl為特殊的,特定的任務所
4、設計。但從現(xiàn)在角度看,可以說Tcl是一種集C語言靈活強大的功能與BASIC語言易學高效的風格于一身的通用程序設計語言。 tcl (讀作“tickle”)腳本語言和tk工具箱是為XWindow系統(tǒng)創(chuàng)建圖形用戶界面的編程環(huán)境。tcl和tk非常容易學習和使用,并且利用它們構造用戶界面的速度要比利用傳統(tǒng)的XWindow 編程方法快得多。它最初設計用來為交互式工具提供一種可復用的命令語言,但它的實際發(fā)展卻遠非如此,并且在眾多的軟件產品中被廣泛應用。tcl/tk的真正功能在于,利用tcl腳本語言幾乎完全可以編寫復雜的圖形應用程序,因而避開了利用C語言編寫界面時所遇到的界面編程的許多復雜性。,2020/10
5、/12,簡介 TCL(Tool Command Language)是一種解釋執(zhí)行的腳本語言(ScriptingLanguage)。它擁有一個固有的核心命令集,同時還具有和C/C+語言類似的控制結構:if控制、循環(huán)控制和switch控制等,并支持過程的定義和調用,對數(shù)組和字符串等簡單數(shù)據(jù)結構也提供了支持。 由于TCL的解釋器是用一個CC+語言的過程庫實現(xiàn)的,這個庫中有豐富的用于擴展TCL命令的CC+過程和函數(shù),所以可以較為容易的在CC+應用程序中嵌入TCL,而且每個應用程序都可以根據(jù)自己的需要對TCL語言進行擴展。我們可以針對某一特定應用領域對TCL語言的核心命令集合進行擴展,加入適合于自己的應
6、用領域的擴展命令,如果需要,甚至可以加入新的控制結構,TCL解釋器將把擴展命令和擴展控制結構與固有命令和固有控制結構同等看待。擴展后的TCL語言將可以繼承TCL 核心部分的所有功能,包括核心命令、控制結構、數(shù)據(jù)類型、對過程的支持等。根據(jù)需要,我們還可以屏蔽掉TCL的某些固有命令和固有控制結構,一旦我們新定義的命令和控制結構與固有命令和控制結構同名,固有命令和控制結構將被新定義的命令和控制結構所屏蔽。通過對TCL的擴展、繼承或屏蔽,用戶用不著象平時定義一種計算機語言那樣對詞法、語法、語義、語用等各方面加以定義,就可以方便的為自己的應用領域提供一種功能完備的腳本語言。,2020/10/12,TCL
7、良好的可擴展性使得它能很好地適應產品測試的需要,測試任務常常會由于設計和需求的改變而迅速改變,往往讓測試人員疲于應付。利用TCL的 可擴展性,測試人員就可以迅速繼承多種新技術,并針對產品新特點迅速推出擴展TCL命令集,以用于產品的測試中,可以較容易跟上設計需求的變化。 另外,因為TCL是一種比CC+語言有著更高抽象層次的語言,使用TCL可以在一種更高的層次上編寫程序,它屏蔽掉了編寫CC+程序時必須涉及 到的一些較為煩瑣的細節(jié),可以大大地提高開發(fā)測試例的速度。而且, 我們使用TCL語言寫的測試例腳本,即使作了修改,也用不著重新編譯就可以調用TCL解釋器執(zhí)行。可以省去不少時間。 TCL目前已成為自
8、動測試中事實上的標準。,2020/10/12,(注:圖中的黑方塊代表組件):,二. Tcl總體結構圖,2020/10/12,三. Tcl語言的特點 “可信賴的”可移植性 Tcl是一種高級程序設計語言。它將程序設計概念高度抽象,真正地把程序設計與操作系統(tǒng)底層結構隔開,因此不依賴于任何平臺,具有良好的可移植性。 相反,雖然C語言也是一種可移植性好的語言,但由于其設計時,保留對系統(tǒng)底層的操作,程序就有了“依賴性”,再加上其“開放”的策略,各個廠家“各自為政”,爭先制定“標準”,結果造成版本眾多,互不兼容。而Tcl卻非常的“單純”,“標準”也只有一個。是否100% 的“純”是程序設計語言可移植性的先決
9、條件。 “可信賴”是我給加的。筆者曾有過這樣的經驗,將一個上萬行的,在SUN上用Tcl開發(fā)的GUI程序移植到NT平臺,竟未改一行Source Code。相反,筆者也曾將一個基于Java的幾百行的一個搜索引擎程序移植到NT平臺,結果發(fā)現(xiàn)涉及文件系統(tǒng),漢字處理的模塊必須做出一個NT版本才能正確執(zhí)行。 Tcl是用C語言開發(fā)的。它現(xiàn)在可運行在Unix,Windows和Macintosh等各種平臺上。,2020/10/12,較高的執(zhí)行效率 Tcl常用的功能模塊被編譯生成C的庫文件。因此,Tcl雖然是按解釋方式執(zhí)行的,但多數(shù)執(zhí)行代碼調用的是編譯成機器語言的C庫文件,因此其執(zhí)行效率仍然很高。 筆者曾分別用C
10、+,Java和Tcl編寫了grep串匹配查找程序,對一個六萬行, 長度為15MB的字典文件,用同一模板從文件首進行串查找,用時分別為 C+ (53s),Tcl (69s),Java (287s)。測試環(huán)境為: 硬件:SUN SPARCWorkstaion 5 軟件:SUN C+ Compiler 4.2,JDK 1.15,Tcl/Tk 7.6 另外,由于Tcl是用解釋方式執(zhí)行的,其擴展和修改應用是在執(zhí)行過程當中, 比 Microsoft的OLE的靜態(tài)的對象嵌入連接更具靈活性。例如,一個電子表格程序每次執(zhí)行時可動態(tài)的更新表格中來自被數(shù)據(jù)庫應用程序修改過的數(shù)據(jù)。,2020/10/12,簡單易學 T
11、cl語言簡單易學,與C語言的風格有相似的流程控制語句,支持過程化結構。但它也有其本身的風格特點。如隱含了數(shù)據(jù)類型,即沒有了字符,整數(shù),浮點,數(shù)組等的差別,全為統(tǒng)一的變量。變量間賦值仍有數(shù)據(jù)類型間的強制或缺省轉換。取消了變量的定義,在程序體的任何部分,都可順手“抓來”變量。 如果用戶有C語言的基礎,注意一下Tcl的變量定義方法,花一天的時間, 即可基本掌握。沒有Windows編程經驗的的人(你完全可以沒有X-Windows或 MS Windows的概念),也可在幾天之內,參照一些范例程序編出跨平臺的 Windows窗口程序來。 正如每一種語言都以“Hello World”做為其第一個程序, 讓我
12、們看看Tcl/Tk 的“Hello World”: button .b -text Hello World! -command exit pack .b 這簡簡單單的兩行命令,就已經實現(xiàn)了一個窗口程序所具有的全部功能并且它還可以不加任何修改地運行在X-Windows和MS Windows系統(tǒng)上。,2020/10/12,四. 與其它語言的比較 下面就Tcl與經典的的程序設計語言C+,及現(xiàn)在時髦的Java做一些比較:,2020/10/12,五. Tcl語法 命令結構 TCL命令的基本結構是: commandname arguments 這里的commandname是tcl所要執(zhí)行的命令,argum
13、ents是提供給此命令的可選變元,整個行(commandname和arguments)稱為一個命令。命令之間通過換行(n)或者由分號(;)來分隔。 置換(substitution) TCL解釋器在分析命令時,把所有的命令參數(shù)都當作字符串看待,例如: set x 100 set y x+100 /y的值是x+100,而不是200 上例的第二個命令中,x被看作字符串x+100的一部分,如果我們想使用x 的值100 就需要用到TCL語言中提供的置換功能。TCL提供三種形式的置換: 變量置換、命令置換和反斜杠置換。每種置換都會導致一個或多個單詞符號本身被其他的值所代替。置換可以發(fā)生在包括命令名在內的每
14、一個單詞符號中,而且置換可以嵌套。,2020/10/12,變量置換:它由一個符號標記,變量置換會導致變量的值插入一個單詞符號中。例如: set y $x+100 /y的值是10+100,這里x被置換成它的值10 這時,y的值還不是我們想要的值110,而是10+100,因為TC解釋器把10+100看成是一個字符串而不是表達式,y要想得到值110,還必須用命令置換,使得TCL會把10+100看成一個表達式并求值。 命令置換:命令置換是由括起來的TCL命令及其參數(shù),命令置換會導致某一個命令的所有或部分單詞符號被另一個命令的結果所代替。例如: set y expr $x+100 /y的值是110,這里
15、x被置換成它的值10,然后expr命令會把10100作為表達式求值,為110。 . 雙引號和花括號 TCL提供兩種方法來使得解釋器對分隔符和置換符等特殊字符當作普通字符,而不作特殊處理,這就要使用雙引號和花括號()。 TCL解釋器對雙引號中的各種分隔符將不作處理,但是對換行符及和兩種置換符會照常處理。而在花括號中,所有特殊字符都將成為普通字符,失去其特殊意義,TCL解釋器不會對其作特殊處理。例如: set x 100 set y $x ddd / y的值為 100 ddd set y /n$x expr 10+100 / y的值為 /n$x expr 10+100,2020/10/12,TCL
16、 的注釋 除命令外,tcl腳本中另一種類型的代碼行是注釋。如同在UNIX shell和Perl中那樣,注釋行是以#號開頭的行,例如: #this is a comment 但是與shell中不同的是,下面一行內容并不是注釋 set foo 0 #initialize foo 而且它將會產生一個錯誤,這是因為tcl解析器總是認為一條命令應該以換行或分號結束,因此如果想要在命令所在的同一行上包括注釋內容,這個命令必須以分號結束,就像下面這樣: set foo 0; #initialize foo 因此,用分號結束所有的命令通常是一種很好的做法,盡管有時分號并不是必需的。,2020/10/12,變量
17、 TCL支持兩種類型的變量:簡單變量和數(shù)組。 A. 簡單變量 一個TCL的簡單變量包含兩個部分:名字和值。名字和值都可以是任意字符串。例如一個名為“1323 7 這一行代碼用來干什么呢?現(xiàn)在,我們就來解釋一下。由于在這一行中指定的構件類型為button,因此也將創(chuàng)建一個按鈕;這里設定的路徑為. button,所以tk將在根窗口(.是tk的根窗口)中創(chuàng)建按鈕,并把它命名為button。,2020/10/12,現(xiàn)在按鈕在哪兒呢?此時也只是創(chuàng)建了按鈕,按鈕并沒有被立即顯示。為了顯示按鈕,需要告訴tk 如何來顯示這一構件。為此,利用pack 命令并給出所要顯示的構件的路徑: pack.button; 構件的選項 所有構件都可以使用標準的選項來控制它們的外觀和功能。大多數(shù)構件可以識別如下選項: -background color,-bg color構件的背景色。 -foreground color,-fg color構件的前景色。 -height pixels:構件的高度(以像素為單位) -width pixe
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 國家司法考試卷二刑法(刑罰執(zhí)行、刑罰消滅)模擬試卷1
- 精確制導技術
- 健康教育科室在健康扶貧中的經驗總結
- 健康城市建設的健康治理政策創(chuàng)新
- 糧食安全執(zhí)法培訓課件
- CT仿真內鏡在結直腸癌手術前評估中的意義
- 2026年內蒙古科技職業(yè)學院單招綜合素質考試備考試題帶答案解析
- 2026年南平市公安局莒口派出所招聘工作備考題庫有答案詳解
- 2026年南京大學招聘現(xiàn)代生物研究院助理備考題庫附答案詳解
- 2026年博思睿招聘(派遣至海寧市硤石街道辦事處)備考題庫及完整答案詳解一套
- 腫瘤化療導致的中性粒細胞減少診治中國專家共識解讀
- 2025年查對制度考核考試題庫(答案+解析)
- 云南省2025年普通高中學業(yè)水平合格性考試歷史試題
- 骨關節(jié)疾病危害課件
- 《再見2025歡迎2026》迎新年元旦主題班會
- 貓屎咖啡介紹
- DB54T 0540-2025 區(qū)域性強降雨氣象評估標準
- 2025-2026 學年三年級 道德與法治 隨堂檢測 試卷及答案
- 廣西貴百河2025-2026學年高一上學期12月聯(lián)考語文試題
- 《手術室護理實踐指南(2025版)》
- 四川省2025年高職單招職業(yè)技能綜合測試(中職類)汽車類試卷(含答案解析)
評論
0/150
提交評論