![tcl.tk語言介紹.ppt_第1頁](http://file1.renrendoc.com/fileroot2/2020-1/21/50d41770-e7a4-4a1b-befc-276e54b290a6/50d41770-e7a4-4a1b-befc-276e54b290a61.gif)
![tcl.tk語言介紹.ppt_第2頁](http://file1.renrendoc.com/fileroot2/2020-1/21/50d41770-e7a4-4a1b-befc-276e54b290a6/50d41770-e7a4-4a1b-befc-276e54b290a62.gif)
![tcl.tk語言介紹.ppt_第3頁](http://file1.renrendoc.com/fileroot2/2020-1/21/50d41770-e7a4-4a1b-befc-276e54b290a6/50d41770-e7a4-4a1b-befc-276e54b290a63.gif)
![tcl.tk語言介紹.ppt_第4頁](http://file1.renrendoc.com/fileroot2/2020-1/21/50d41770-e7a4-4a1b-befc-276e54b290a6/50d41770-e7a4-4a1b-befc-276e54b290a64.gif)
![tcl.tk語言介紹.ppt_第5頁](http://file1.renrendoc.com/fileroot2/2020-1/21/50d41770-e7a4-4a1b-befc-276e54b290a6/50d41770-e7a4-4a1b-befc-276e54b290a65.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、2020/10/12,Tcl/Tk語言介紹 研究院,王強(qiáng) 2009.09.09,2020/10/12,一. Tcl/Tk簡介 二. Tcl總體結(jié)構(gòu)圖 三. Tcl語言的特點(diǎn) 四. Tcl與其它語言的比較 五. Tcl語法簡介 六. Tcl操作文件的方法 七. Tk工具箱,2020/10/12,一. Tcl / Tk簡介 背景 Tcl/Tk的發(fā)明人John Ousterhout教授在八十年代初,是伯克利大學(xué)的教授。在其教學(xué)過程中,他發(fā)現(xiàn)在集成電路CAD設(shè)計(jì)中,很多時(shí)間是花在編程建立測試環(huán)境上。并且,環(huán)境一旦發(fā)生了變化,就要重新修改代碼以適應(yīng)。這種費(fèi)力而又低效的方法,迫使Ousterhout 教授
2、力圖尋找一種新的編程語言,它即要有好的代碼可重用性,又要簡單易學(xué),這樣就促成了Tcl (Tool Command Language) 語言的產(chǎn)生。 Tcl最初的構(gòu)想的是希望把編程按照基于組件的方法 (component approach),即與其為單個(gè)的應(yīng)用程序編寫成百上千行的程序代碼,不如尋找一種方法將程序分割成一個(gè)個(gè)小的, 具備一定“完整”功能的,可重復(fù)使用的組件。這些小的組件小到可以基本滿足一些獨(dú)立的應(yīng)用程序的需求,其它部分可由這些小的組件功能基礎(chǔ)上生成。不同的組件有不同的功能,用于不同的目的。并可為其它的應(yīng)用程序所利用。當(dāng)然, 這種語言還要有良好的擴(kuò)展性, 以便用戶為其增添新的功能模塊
3、。最后,需要用一種強(qiáng)的,靈活的“膠水”把這些組件“粘”合在一起, 使各個(gè)組件之間可互相“通信”,協(xié)同工作。程序設(shè)計(jì)有如拼圖游戲一樣,這種設(shè)計(jì)思想與后來的Java不謀而合。終于在1988年的春天, 這種強(qiáng)大靈活的膠水-Tcl語言被發(fā)明出來了。,2020/10/12,定義 按照Ousterhout教授的定義,Tcl是一種可嵌入的命令腳本化語言 (Command Script Language)。“可嵌入”是指把很多應(yīng)用有效,無縫地集成在一起?!懊睢笔侵该恳粭lTcl語句都可以理解成命令加參數(shù)的形式: 命令 參數(shù) 1 參數(shù) 2 參數(shù) 3 參數(shù) 4 . 參數(shù) N 腳本化是指Tcl為特殊的,特定的任務(wù)所
4、設(shè)計(jì)。但從現(xiàn)在角度看,可以說Tcl是一種集C語言靈活強(qiáng)大的功能與BASIC語言易學(xué)高效的風(fēng)格于一身的通用程序設(shè)計(jì)語言。 tcl (讀作“tickle”)腳本語言和tk工具箱是為XWindow系統(tǒng)創(chuàng)建圖形用戶界面的編程環(huán)境。tcl和tk非常容易學(xué)習(xí)和使用,并且利用它們構(gòu)造用戶界面的速度要比利用傳統(tǒng)的XWindow 編程方法快得多。它最初設(shè)計(jì)用來為交互式工具提供一種可復(fù)用的命令語言,但它的實(shí)際發(fā)展卻遠(yuǎn)非如此,并且在眾多的軟件產(chǎn)品中被廣泛應(yīng)用。tcl/tk的真正功能在于,利用tcl腳本語言幾乎完全可以編寫復(fù)雜的圖形應(yīng)用程序,因而避開了利用C語言編寫界面時(shí)所遇到的界面編程的許多復(fù)雜性。,2020/10
5、/12,簡介 TCL(Tool Command Language)是一種解釋執(zhí)行的腳本語言(ScriptingLanguage)。它擁有一個(gè)固有的核心命令集,同時(shí)還具有和C/C+語言類似的控制結(jié)構(gòu):if控制、循環(huán)控制和switch控制等,并支持過程的定義和調(diào)用,對數(shù)組和字符串等簡單數(shù)據(jù)結(jié)構(gòu)也提供了支持。 由于TCL的解釋器是用一個(gè)CC+語言的過程庫實(shí)現(xiàn)的,這個(gè)庫中有豐富的用于擴(kuò)展TCL命令的CC+過程和函數(shù),所以可以較為容易的在CC+應(yīng)用程序中嵌入TCL,而且每個(gè)應(yīng)用程序都可以根據(jù)自己的需要對TCL語言進(jìn)行擴(kuò)展。我們可以針對某一特定應(yīng)用領(lǐng)域?qū)CL語言的核心命令集合進(jìn)行擴(kuò)展,加入適合于自己的應(yīng)
6、用領(lǐng)域的擴(kuò)展命令,如果需要,甚至可以加入新的控制結(jié)構(gòu),TCL解釋器將把擴(kuò)展命令和擴(kuò)展控制結(jié)構(gòu)與固有命令和固有控制結(jié)構(gòu)同等看待。擴(kuò)展后的TCL語言將可以繼承TCL 核心部分的所有功能,包括核心命令、控制結(jié)構(gòu)、數(shù)據(jù)類型、對過程的支持等。根據(jù)需要,我們還可以屏蔽掉TCL的某些固有命令和固有控制結(jié)構(gòu),一旦我們新定義的命令和控制結(jié)構(gòu)與固有命令和控制結(jié)構(gòu)同名,固有命令和控制結(jié)構(gòu)將被新定義的命令和控制結(jié)構(gòu)所屏蔽。通過對TCL的擴(kuò)展、繼承或屏蔽,用戶用不著象平時(shí)定義一種計(jì)算機(jī)語言那樣對詞法、語法、語義、語用等各方面加以定義,就可以方便的為自己的應(yīng)用領(lǐng)域提供一種功能完備的腳本語言。,2020/10/12,TCL
7、良好的可擴(kuò)展性使得它能很好地適應(yīng)產(chǎn)品測試的需要,測試任務(wù)常常會由于設(shè)計(jì)和需求的改變而迅速改變,往往讓測試人員疲于應(yīng)付。利用TCL的 可擴(kuò)展性,測試人員就可以迅速繼承多種新技術(shù),并針對產(chǎn)品新特點(diǎn)迅速推出擴(kuò)展TCL命令集,以用于產(chǎn)品的測試中,可以較容易跟上設(shè)計(jì)需求的變化。 另外,因?yàn)門CL是一種比CC+語言有著更高抽象層次的語言,使用TCL可以在一種更高的層次上編寫程序,它屏蔽掉了編寫CC+程序時(shí)必須涉及 到的一些較為煩瑣的細(xì)節(jié),可以大大地提高開發(fā)測試?yán)乃俣取6遥?我們使用TCL語言寫的測試?yán)_本,即使作了修改,也用不著重新編譯就可以調(diào)用TCL解釋器執(zhí)行??梢允∪ゲ簧贂r(shí)間。 TCL目前已成為自
8、動(dòng)測試中事實(shí)上的標(biāo)準(zhǔn)。,2020/10/12,(注:圖中的黑方塊代表組件):,二. Tcl總體結(jié)構(gòu)圖,2020/10/12,三. Tcl語言的特點(diǎn) “可信賴的”可移植性 Tcl是一種高級程序設(shè)計(jì)語言。它將程序設(shè)計(jì)概念高度抽象,真正地把程序設(shè)計(jì)與操作系統(tǒng)底層結(jié)構(gòu)隔開,因此不依賴于任何平臺,具有良好的可移植性。 相反,雖然C語言也是一種可移植性好的語言,但由于其設(shè)計(jì)時(shí),保留對系統(tǒng)底層的操作,程序就有了“依賴性”,再加上其“開放”的策略,各個(gè)廠家“各自為政”,爭先制定“標(biāo)準(zhǔn)”,結(jié)果造成版本眾多,互不兼容。而Tcl卻非常的“單純”,“標(biāo)準(zhǔn)”也只有一個(gè)。是否100% 的“純”是程序設(shè)計(jì)語言可移植性的先決
9、條件。 “可信賴”是我給加的。筆者曾有過這樣的經(jīng)驗(yàn),將一個(gè)上萬行的,在SUN上用Tcl開發(fā)的GUI程序移植到NT平臺,竟未改一行Source Code。相反,筆者也曾將一個(gè)基于Java的幾百行的一個(gè)搜索引擎程序移植到NT平臺,結(jié)果發(fā)現(xiàn)涉及文件系統(tǒng),漢字處理的模塊必須做出一個(gè)NT版本才能正確執(zhí)行。 Tcl是用C語言開發(fā)的。它現(xiàn)在可運(yùn)行在Unix,Windows和Macintosh等各種平臺上。,2020/10/12,較高的執(zhí)行效率 Tcl常用的功能模塊被編譯生成C的庫文件。因此,Tcl雖然是按解釋方式執(zhí)行的,但多數(shù)執(zhí)行代碼調(diào)用的是編譯成機(jī)器語言的C庫文件,因此其執(zhí)行效率仍然很高。 筆者曾分別用C
10、+,Java和Tcl編寫了grep串匹配查找程序,對一個(gè)六萬行, 長度為15MB的字典文件,用同一模板從文件首進(jìn)行串查找,用時(shí)分別為 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í)行的,其擴(kuò)展和修改應(yīng)用是在執(zhí)行過程當(dāng)中, 比 Microsoft的OLE的靜態(tài)的對象嵌入連接更具靈活性。例如,一個(gè)電子表格程序每次執(zhí)行時(shí)可動(dòng)態(tài)的更新表格中來自被數(shù)據(jù)庫應(yīng)用程序修改過的數(shù)據(jù)。,2020/10/12,簡單易學(xué) T
11、cl語言簡單易學(xué),與C語言的風(fēng)格有相似的流程控制語句,支持過程化結(jié)構(gòu)。但它也有其本身的風(fēng)格特點(diǎn)。如隱含了數(shù)據(jù)類型,即沒有了字符,整數(shù),浮點(diǎn),數(shù)組等的差別,全為統(tǒng)一的變量。變量間賦值仍有數(shù)據(jù)類型間的強(qiáng)制或缺省轉(zhuǎn)換。取消了變量的定義,在程序體的任何部分,都可順手“抓來”變量。 如果用戶有C語言的基礎(chǔ),注意一下Tcl的變量定義方法,花一天的時(shí)間, 即可基本掌握。沒有Windows編程經(jīng)驗(yàn)的的人(你完全可以沒有X-Windows或 MS Windows的概念),也可在幾天之內(nèi),參照一些范例程序編出跨平臺的 Windows窗口程序來。 正如每一種語言都以“Hello World”做為其第一個(gè)程序, 讓我
12、們看看Tcl/Tk 的“Hello World”: button .b -text Hello World! -command exit pack .b 這簡簡單單的兩行命令,就已經(jīng)實(shí)現(xiàn)了一個(gè)窗口程序所具有的全部功能并且它還可以不加任何修改地運(yùn)行在X-Windows和MS Windows系統(tǒng)上。,2020/10/12,四. 與其它語言的比較 下面就Tcl與經(jīng)典的的程序設(shè)計(jì)語言C+,及現(xiàn)在時(shí)髦的Java做一些比較:,2020/10/12,五. Tcl語法 命令結(jié)構(gòu) TCL命令的基本結(jié)構(gòu)是: commandname arguments 這里的commandname是tcl所要執(zhí)行的命令,argum
13、ents是提供給此命令的可選變元,整個(gè)行(commandname和arguments)稱為一個(gè)命令。命令之間通過換行(n)或者由分號(;)來分隔。 置換(substitution) TCL解釋器在分析命令時(shí),把所有的命令參數(shù)都當(dāng)作字符串看待,例如: set x 100 set y x+100 /y的值是x+100,而不是200 上例的第二個(gè)命令中,x被看作字符串x+100的一部分,如果我們想使用x 的值100 就需要用到TCL語言中提供的置換功能。TCL提供三種形式的置換: 變量置換、命令置換和反斜杠置換。每種置換都會導(dǎo)致一個(gè)或多個(gè)單詞符號本身被其他的值所代替。置換可以發(fā)生在包括命令名在內(nèi)的每
14、一個(gè)單詞符號中,而且置換可以嵌套。,2020/10/12,變量置換:它由一個(gè)符號標(biāo)記,變量置換會導(dǎo)致變量的值插入一個(gè)單詞符號中。例如: set y $x+100 /y的值是10+100,這里x被置換成它的值10 這時(shí),y的值還不是我們想要的值110,而是10+100,因?yàn)門C解釋器把10+100看成是一個(gè)字符串而不是表達(dá)式,y要想得到值110,還必須用命令置換,使得TCL會把10+100看成一個(gè)表達(dá)式并求值。 命令置換:命令置換是由括起來的TCL命令及其參數(shù),命令置換會導(dǎo)致某一個(gè)命令的所有或部分單詞符號被另一個(gè)命令的結(jié)果所代替。例如: set y expr $x+100 /y的值是110,這里
15、x被置換成它的值10,然后expr命令會把10100作為表達(dá)式求值,為110。 . 雙引號和花括號 TCL提供兩種方法來使得解釋器對分隔符和置換符等特殊字符當(dāng)作普通字符,而不作特殊處理,這就要使用雙引號和花括號()。 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中不同的是,下面一行內(nèi)容并不是注釋 set foo 0 #initialize foo 而且它將會產(chǎn)生一個(gè)錯(cuò)誤,這是因?yàn)閠cl解析器總是認(rèn)為一條命令應(yīng)該以換行或分號結(jié)束,因此如果想要在命令所在的同一行上包括注釋內(nèi)容,這個(gè)命令必須以分號結(jié)束,就像下面這樣: set foo 0; #initialize foo 因此,用分號結(jié)束所有的命令通常是一種很好的做法,盡管有時(shí)分號并不是必需的。,2020/10/12,變量
17、 TCL支持兩種類型的變量:簡單變量和數(shù)組。 A. 簡單變量 一個(gè)TCL的簡單變量包含兩個(gè)部分:名字和值。名字和值都可以是任意字符串。例如一個(gè)名為“1323 7 這一行代碼用來干什么呢?現(xiàn)在,我們就來解釋一下。由于在這一行中指定的構(gòu)件類型為button,因此也將創(chuàng)建一個(gè)按鈕;這里設(shè)定的路徑為. button,所以tk將在根窗口(.是tk的根窗口)中創(chuàng)建按鈕,并把它命名為button。,2020/10/12,現(xiàn)在按鈕在哪兒呢?此時(shí)也只是創(chuàng)建了按鈕,按鈕并沒有被立即顯示。為了顯示按鈕,需要告訴tk 如何來顯示這一構(gòu)件。為此,利用pack 命令并給出所要顯示的構(gòu)件的路徑: pack.button; 構(gòu)件的選項(xiàng) 所有構(gòu)件都可以使用標(biāo)準(zhǔn)的選項(xiàng)來控制它們的外觀和功能。大多數(shù)構(gòu)件可以識別如下選項(xiàng): -background color,-bg color構(gòu)件的背景色。 -foreground color,-fg color構(gòu)件的前景色。 -height pixels:構(gòu)件的高度(以像素為單位) -width pixe
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 會議場所租賃服務(wù)詳細(xì)合同(2024年版)版B版
- 2025年度化妝品環(huán)保包裝設(shè)計(jì)合作合同
- 2025年度海上旅游船員派遣合同模板
- 2025版石場租賃合同范本:石場安全生產(chǎn)責(zé)任書3篇
- 2025年度換熱站工程竣工驗(yàn)收合同
- 2025年鋅錠產(chǎn)品研發(fā)與技術(shù)創(chuàng)新合作合同
- 二零二五年度特色民宿租賃服務(wù)合同2025
- 2025年個(gè)人代理銷售合同經(jīng)典版(2篇)
- 2025年度環(huán)??萍脊蓹?quán)投資合作合同范本
- 2025年度個(gè)人公司股份收購合同范本詳述4篇
- 2025年度高端商務(wù)車輛聘用司機(jī)勞動(dòng)合同模板(專業(yè)版)4篇
- GB/T 45107-2024表土剝離及其再利用技術(shù)要求
- 2025長江航道工程局招聘101人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年黑龍江哈爾濱市面向社會招聘社區(qū)工作者1598人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 維吾爾醫(yī)優(yōu)勢病種
- 全國教學(xué)設(shè)計(jì)大賽一等獎(jiǎng)英語七年級上冊(人教2024年新編)《Unit 2 Were Family!》單元教學(xué)設(shè)計(jì)
- 【獨(dú)家揭秘】2024年企業(yè)微信年費(fèi)全解析:9大行業(yè)收費(fèi)標(biāo)準(zhǔn)一覽
- 1-1 擁抱夢想:就這樣埋下一顆種子【2022中考作文最熱8主題押題24道 構(gòu)思點(diǎn)撥+范文點(diǎn)評】
- 職業(yè)暴露與防護(hù)
- 酒店行業(yè)客源渠道分析
- AVL-CRUISE-2019-整車經(jīng)濟(jì)性動(dòng)力性分析操作指導(dǎo)書
評論
0/150
提交評論