Tcl-Tk - Panduan Cepat

Tcl adalah kependekan dari Tool Command Language. John Ousterhout dari University of California, Berkeley, merancangnya. Ini adalah kombinasi dari bahasa skrip dan penerjemahnya sendiri yang disematkan ke aplikasi, kami kembangkan dengannya.

Tcl awalnya dikembangkan untuk Unix. Kemudian porting ke Windows, DOS, OS / 2, dan Mac OSX. Tcl sangat mirip dengan bahasa shell unix lainnya seperti Bourne Shell (Sh), C Shell (csh), Korn Shell (sh), dan Perl.

Ini bertujuan untuk memberikan kemampuan bagi program untuk berinteraksi dengan program lain dan juga untuk bertindak sebagai juru bahasa yang dapat disematkan. Meskipun, tujuan awalnya adalah agar program dapat berinteraksi, Anda dapat menemukan aplikasi lengkap yang ditulis dalam Tcl / Tk.

Fitur Tcl

Fitur Tcl adalah sebagai berikut -

  • Mengurangi waktu pengembangan.

  • Kit antarmuka pengguna yang kuat dan sederhana dengan integrasi TK.

  • Tulis sekali, jalankan di mana saja. Ini berjalan di Windows, Mac OS X, dan hampir di setiap platform Unix.

  • Cukup mudah untuk memulai bagi programmer berpengalaman; karena, bahasanya sangat sederhana sehingga mereka dapat mempelajari Tcl dalam beberapa jam atau hari.

  • Anda dapat dengan mudah memperluas aplikasi yang ada dengan Tcl. Juga, dimungkinkan untuk menyertakan Tcl di C, C ++, atau Java ke Tcl atau sebaliknya.

  • Memiliki seperangkat fungsi jaringan yang kuat.

  • Terakhir, ini adalah open source, gratis, dan dapat digunakan untuk aplikasi komersial tanpa batasan apa pun.

Aplikasi

Tcl adalah bahasa tujuan umum dan Anda dapat menemukan Tcl di mana-mana. Itu termasuk,

  • Situs web skalabel yang sering kali didukung oleh database.
  • Server web berkinerja tinggi dibangun dengan TclHttpd.
  • Tcl dengan situs web berbasis CGI.
  • Aplikasi GUI desktop.
  • Aplikasi yang disematkan.

Pengaturan Lingkungan Lokal

Jika Anda ingin mengatur lingkungan Anda untuk Tcl, Anda memerlukan dua aplikasi perangkat lunak berikut yang tersedia di komputer Anda -

  • Editor Teks
  • Tcl Interpreter.

Editor Teks

Ini akan digunakan untuk mengetik program Anda. Contoh dari beberapa editor teks termasuk Windows Notepad, perintah OS Edit, Brief, Epsilon, EMACS, dan vim atau vi.

Nama dan versi editor teks dapat berbeda pada sistem operasi yang berbeda. Misalnya, Notepad akan digunakan di Windows, dan vim atau vi dapat digunakan di windows serta Linux atau UNIX.

File yang Anda buat dengan editor teks Anda disebut file sumber dan berisi kode sumber program. File sumber untuk program Tcl diberi nama dengan ekstensi".tcl".

Sebelum memulai pemrograman Anda, pastikan Anda memiliki satu editor teks dan Anda memiliki cukup pengalaman untuk menulis program komputer, menyimpannya dalam sebuah file, membangunnya, dan terakhir menjalankannya.

Penerjemah Tcl

Ini hanyalah program kecil yang memungkinkan Anda untuk mengetik perintah Tcl dan menjalankannya baris demi baris. Ini menghentikan eksekusi file tcl, dalam kasus, itu menemukan kesalahan tidak seperti kompiler yang dijalankan sepenuhnya.

Mari kita memiliki file helloWorld.tcl sebagai berikut. Kami akan menggunakan ini sebagai program pertama, kami berjalan pada platform yang Anda pilih.

#!/usr/bin/tclsh

puts "Hello World!"

Instalasi di Windows

Unduh versi terbaru untuk penginstal windows dari daftar binari Tcl Aktif yang tersedia. Edisi komunitas Tcl aktif gratis untuk penggunaan pribadi.

Jalankan file yang dapat diunduh untuk menginstal Tcl, yang dapat dilakukan dengan mengikuti petunjuk di layar.

Sekarang, kita dapat membangun dan menjalankan file Tcl say helloWorld.tcl dengan beralih ke folder yang berisi file tersebut menggunakan perintah 'cd' dan kemudian jalankan program menggunakan langkah-langkah berikut

C:\Tcl> tclsh helloWorld.tcl

Kita bisa melihat outputnya sebagai berikut.

C:\Tcl> helloWorld

C: \ Tcl adalah foldernya, saya gunakan untuk menyimpan sampel saya. Anda dapat mengubahnya ke folder tempat Anda menyimpan program Tcl.

Instalasi di Linux

Sebagian besar sistem operasi Linux hadir dengan Tcl inbuilt dan Anda dapat langsung memulai di sistem tersebut. Jika tidak tersedia, Anda dapat menggunakan perintah berikut untuk mengunduh dan menginstal Tcl-Tk.

$ yum install tcl tk

Sekarang, kita dapat membangun dan menjalankan file Tcl say helloWorld.tcl dengan beralih ke folder yang berisi file tersebut menggunakan perintah 'cd' dan kemudian jalankan program menggunakan langkah-langkah berikut -

$ tclsh helloWorld.tcl

Kita dapat melihat output berikut -

$ hello world

Instalasi pada Sistem berbasis Debian

Jika tidak tersedia di OS Anda, Anda dapat menggunakan perintah berikut untuk mengunduh dan menginstal Tcl-Tk -

$ sudo apt-get install tcl tk

Sekarang, kita dapat membangun dan menjalankan file Tcl say helloWorld.tcl dengan beralih ke folder yang berisi file tersebut menggunakan perintah 'cd' dan kemudian jalankan program menggunakan langkah-langkah berikut -

$ tclsh helloWorld.tcl

Kita dapat melihat output berikut -

$ hello world

Instalasi di Mac OS X

Unduh versi terbaru untuk paket Mac OS X dari daftar binari Tcl Aktif yang tersedia. Edisi komunitas Tcl aktif gratis untuk penggunaan pribadi.

Jalankan file yang dapat diunduh untuk menginstal Tcl Aktif, yang dapat dilakukan dengan mengikuti petunjuk di layar.

Sekarang, kita dapat membangun dan menjalankan file Tcl say helloWorld.tcl dengan beralih ke folder yang berisi file tersebut menggunakan 'cd' dan kemudian jalankan program menggunakan langkah-langkah berikut -

$ tclsh helloWorld.tcl

Kita dapat melihat output berikut -

$ hello world

Instalasi dari File Sumber

Anda dapat menggunakan opsi untuk menginstal dari file sumber ketika paket biner tidak tersedia. Biasanya lebih disukai menggunakan binari Tcl untuk Windows dan Mac OS X, jadi hanya kompilasi sumber pada sistem berbasis unix yang ditampilkan di bawah.

  • Unduh file sumber.

  • Sekarang, gunakan perintah berikut untuk mengekstrak, mengompilasi, dan membangun setelah beralih ke folder yang diunduh.

$ tar zxf tcl8.6.1-src.tar.gz $ cd tcl8.6.1
$ cd unix $ ./configure —prefix=/opt —enable-gcc
$ make $ sudo make install

Note - Pastikan, Anda mengubah nama file ke versi yang Anda unduh pada perintah 1 dan 2 yang diberikan di atas.

Di Tcl, kami mengklasifikasikan beberapa variabel sebagai variabel khusus dan mereka memiliki penggunaan / fungsionalitas yang telah ditentukan. Daftar variabel spesial tercantum di bawah ini.

Sr.No. Variabel & Deskripsi Khusus
1

argc

Mengacu pada sejumlah argumen baris perintah.

2

argv

Mengacu pada daftar yang berisi argumen baris perintah.

3

argv0

Mengacu pada nama file dari file yang diinterpretasikan atau nama yang kita gunakan untuk memanggil skrip.

4

env

Digunakan untuk mewakili larik elemen yang merupakan variabel lingkungan.

5

errorCode

Memberikan kode kesalahan untuk kesalahan Tcl terakhir.

6

errorInfo

Menyediakan pelacakan tumpukan untuk kesalahan Tcl terakhir.

7

tcl_interactive

Digunakan untuk beralih antara mode interaktif dan non-interaktif dengan menyetelnya ke 1 dan 0 masing-masing.

8

tcl_library

Digunakan untuk mengatur lokasi pustaka Tcl standar.

9

tcl_pkgPath

Menyediakan daftar direktori tempat paket biasanya diinstal.

10

tcl_patchLevel

Mengacu pada level patch interpreter Tcl saat ini.

11

tcl_platform

Digunakan untuk merepresentasikan larik elemen dengan objek termasuk byteOrder, mesin, osVersion, platform, dan os.

12

tcl_precision

Mengacu pada presisi yaitu jumlah digit yang harus dipertahankan saat mengonversi ke bilangan floating-point menjadi string. Nilai defaultnya adalah 12.

13

tcl_prompt1

Mengacu pada prompt utama.

14

tcl_prompt2

Mengacu pada prompt sekunder dengan perintah yang tidak valid.

15

tcl_rcFileName

Menyediakan file startup khusus pengguna.

16

tcl_traceCompile

Digunakan untuk mengontrol penelusuran kompilasi bytecode. Gunakan 0 untuk tanpa output, 1 untuk ringkasan, dan 2 untuk detail.

17

tcl_traceExec

Digunakan untuk mengontrol pelacakan eksekusi bytecode. Gunakan 0 untuk tanpa output, 1 untuk ringkasan, dan 2 untuk detail.

18

tcl_version

Menampilkan versi interpreter Tcl saat ini.

Variabel khusus di atas memiliki arti khusus untuk interpreter Tcl.

Contoh untuk menggunakan variabel khusus Tcl

Mari kita lihat beberapa contoh untuk variabel khusus.

Versi Tcl

#!/usr/bin/tclsh

puts $tcl_version

Saat Anda menjalankan program, Anda akan mendapatkan hasil yang serupa seperti yang ditunjukkan di bawah ini -

8.6

Jalur Lingkungan Tcl

#!/usr/bin/tclsh

puts $env(PATH)

Saat Anda menjalankan program, Anda akan mendapatkan hasil yang serupa seperti yang ditunjukkan di bawah ini -

/home/cg/root/GNUstep/Tools:/usr/GNUstep/Local/Tools:/usr/GNUstep/
System/Tools:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/webmaster/.local/bin:/
home/webmaster/bin:/usr/local/scriba/bin:/usr/local/smlnj/
bin:/usr/local/bin/std:/usr/local/bin/extra:/usr/local/fantom/bin:/usr/
local/dart/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin:/opt/mono/
bin:/opt/mono/lib/mono/4.5:/usr/local/bin:.:/usr/libexec/sdcc:/usr/local/
icon-v950/bin:/usr/local/mozart/bin:/opt/Pawn/bin:/opt/jdk1.7.0_75/bin:/
opt/jdk1.7.0_75/jre/bin:/opt/pash/Source/PashConsole/bin/Debug/

Jalur Paket Tcl

#!/usr/bin/tclsh

puts $tcl_pkgPath

Saat Anda menjalankan program, Anda akan mendapatkan hasil yang serupa seperti yang ditunjukkan di bawah ini -

/usr/lib64/tcl8.6 /usr/share/tcl8.6 /usr/lib64/tk8.6 /usr/share/tk8.6

Perpustakaan Tcl

#!/usr/bin/tclsh

puts $tcl_library

Saat Anda menjalankan program, Anda akan mendapatkan hasil yang serupa seperti yang ditunjukkan di bawah ini -

/usr/share/tcl8.6

Tingkat Patch Tcl

#!/usr/bin/tclsh

puts $tcl_patchLevel

Saat Anda menjalankan program, Anda akan mendapatkan hasil yang serupa seperti yang ditunjukkan di bawah ini -

8.6.6

Presisi Tcl

#!/usr/bin/tclsh

puts $tcl_precision

Saat Anda menjalankan program, Anda akan mendapatkan hasil yang serupa seperti yang ditunjukkan di bawah ini -

0

File Startup Tcl

#!/usr/bin/tclsh

puts $tcl_rcFileName

Saat Anda menjalankan program, Anda akan mendapatkan hasil yang serupa seperti yang ditunjukkan di bawah ini -

~/.tclshrc

Tcl cukup mudah dipelajari dan mari kita mulai membuat program Tcl pertama kita!

Program Tcl Pertama

Mari kita tulis program Tcl sederhana. Semua file Tcl akan memiliki ekstensi, yaitu .tcl. Jadi, letakkan kode sumber berikut di file test.tcl.

#!/usr/bin/tclsh

puts "Hello, World!"

Dengan asumsi, lingkungan Tcl diatur dengan benar; mari kita jalankan program setelah beralih ke direktori file dan kemudian jalankan program menggunakan -

$ tclsh test.tcl

Kami akan mendapatkan output berikut -

Hello, World!

Sekarang mari kita lihat struktur dasar program Tcl, sehingga akan mudah bagi Anda untuk memahami blok bangunan dasar dari bahasa Tcl. Di Tcl, kami menggunakan baris baru atau titik koma untuk mengakhiri baris kode sebelumnya. Tetapi titik koma tidak diperlukan, jika Anda menggunakan baris baru untuk setiap perintah.

Komentar

Komentar seperti teks bantuan dalam program Tcl Anda dan penerjemah mengabaikannya. Komentar dapat ditulis menggunakan tanda hash _ (#) di awal.

#!/usr/bin/tclsh

# my first program in Tcl
puts "Hello World!"

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Hello World!

Komentar multiline atau blok ditulis menggunakan 'if' dengan kondisi '0'. Contohnya ditunjukkan di bawah ini.

#!/usr/bin/tclsh

if 0 {
   my first program in Tcl program
   Its very simple
}
puts "Hello World!"

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Hello World!

Komentar sebaris menggunakan; #. Contoh diberikan di bawah ini.

#!/usr/bin/tclsh

puts "Hello World!" ;# my first print in Tcl program

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Hello World!

Pengenal

Pengenal Tcl adalah nama yang digunakan untuk mengidentifikasi variabel, fungsi, atau item lain yang ditentukan pengguna. Pengenal dimulai dengan huruf A sampai Z atau a sampai z atau garis bawah (_) diikuti dengan nol atau lebih huruf, garis bawah, dollar ($), dan angka (0 sampai 9).

Tcl tidak mengizinkan karakter tanda baca seperti @, dan% dalam pengenal. Tcl adalahcase sensitive_ bahasa. Jadi Tenaga Kerja dan tenaga kerja adalah dua pengenal berbeda di Tcl. Berikut beberapa contoh pengenal yang dapat diterima -

mohd       zara    abc   move_name  a_123
myname50   _temp   j     a23b9      retVal

Kata yang Dicadangkan

Daftar berikut menunjukkan beberapa kata yang dipesan di Tcl. Kata-kata yang dicadangkan ini tidak boleh digunakan sebagai konstanta atau variabel atau nama pengenal lainnya.

setelah menambahkan Himpunan auto_execok
auto_import auto_load auto_load_index auto_qualify
biner Bgerror istirahat menangkap
CD Jam Menutup concat
terus Dde default lain
elseif Pengkodean eof kesalahan
eval Exec keluar expr
fblocked Fconfigure fcopy mengajukan
fileevent Menyiram untuk untuk setiap
format Mendapat gumpal global
sejarah Jika info interp
Ikuti Lappend lindex linsert
daftar Llength beban lrange
lreplace Cari lsort namespace
Buka Paket pid pkg_mkIndex
proc Puts pwd Baca
regexp Regsub ganti nama sumber
kembali Pindai mencari set
stopkontak Sumber membagi tali
subst Beralih tclLog menceritakan
waktu Jejak tidak diketahui tidak disetel
memperbarui Naik tingkat upvar variabel
vwait Sementara

Spasi kosong di Tcl

Baris yang hanya berisi spasi, kemungkinan dengan komentar, disebut sebagai blank line, dan penerjemah Tcl mengabaikannya sama sekali.

Spasi putih adalah istilah yang digunakan di Tcl untuk mendeskripsikan kosong, tab, karakter baris baru, dan komentar. Spasi putih memisahkan satu bagian pernyataan dari yang lain dan memungkinkan interpreter untuk mengidentifikasi di mana satu elemen dalam pernyataan, seperti menempatkan, berakhir dan elemen berikutnya dimulai. Oleh karena itu, dalam pernyataan berikut -

#!/usr/bin/tclsh

puts "Hello World!"

Harus ada setidaknya satu karakter spasi (biasanya spasi) antara "put" dan "Hello World!" agar penerjemah dapat membedakannya. Di sisi lain, dalam pernyataan berikut -

#!/usr/bin/tclsh

puts [expr 3 + 2] ;# print sum of the 3 and 2

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

5

Tidak diperlukan karakter spasi antara 3 dan +, atau antara + dan 2; meskipun, Anda bebas memasukkan beberapa jika Anda ingin agar dapat dibaca.

Seperti yang Anda ketahui, Tcl adalah bahasa perintah Alat, perintah adalah bagian bahasa yang paling penting. Perintah Tcl dibangun di dalam bahasa dengan masing-masing memiliki fungsi yang telah ditentukan sebelumnya. Perintah-perintah ini membentuk kata-kata khusus bahasa dan tidak dapat digunakan untuk penamaan variabel lainnya. Keuntungan dengan perintah Tcl ini adalah, Anda dapat menentukan implementasi Anda sendiri untuk salah satu dari perintah ini untuk menggantikan fungsionalitas bawaan asli.

Setiap perintah Tcl memvalidasi masukan dan mengurangi pekerjaan penerjemah.

Perintah Tcl sebenarnya adalah daftar kata, dengan kata pertama mewakili perintah yang akan dijalankan. Kata-kata berikutnya mewakili argumen. Untuk mengelompokkan kata menjadi satu argumen, kami menyertakan beberapa kata dengan "" atau {}.

Sintaks perintah Tcl adalah sebagai berikut -

commandName argument1 argument2 ... argumentN

Mari kita lihat contoh sederhana dari perintah Tcl -

#!/usr/bin/tclsh

puts "Hello, world!"

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Hello, world!

Pada kode di atas, 'put' adalah perintah Tcl dan "Hello World" adalah argument1. Seperti yang dikatakan sebelumnya, kami telah menggunakan "" untuk mengelompokkan dua kata.

Mari kita lihat contoh lain dari perintah Tcl dengan dua argumen -

#!/usr/bin/tclsh

puts stdout "Hello, world!"

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Hello, world!

Pada kode di atas, 'put' adalah perintah Tcl, 'stdout' adalah argument1, dan "Hello World" adalah argument2. Di sini, stdout membuat program untuk mencetak pada perangkat keluaran standar.

Pergantian Perintah

Dalam penggantian perintah, tanda kurung siku digunakan untuk mengevaluasi skrip di dalam tanda kurung siku. Contoh sederhana untuk menambahkan dua angka ditunjukkan di bawah ini -

#!/usr/bin/tclsh

puts [expr 1 + 6 + 9]

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

16

Substitusi Variabel

Dalam substitusi variabel, $ digunakan sebelum nama variabel dan ini mengembalikan konten variabel. Contoh sederhana untuk menetapkan nilai ke variabel dan mencetaknya ditunjukkan di bawah ini.

#!/usr/bin/tclsh

set a 3
puts $a

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

3

Substitusi Backslash

Ini biasa disebut escape sequences; dengan setiap garis miring terbalik, diikuti dengan huruf yang memiliki arti tersendiri. Contoh sederhana untuk substitusi baris baru ditunjukkan di bawah ini -

#!/usr/bin/tclsh

puts "Hello\nWorld"

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Hello
World

Tipe data primitif dari Tcl adalah string dan seringkali kita dapat menemukan kutipan pada Tcl sebagai bahasa hanya string. Tipe data primitif ini pada gilirannya membuat tipe data komposit untuk daftar dan array asosiatif. Di Tcl, tipe data tidak hanya dapat mewakili objek Tcl sederhana, tetapi juga dapat mewakili objek kompleks seperti pegangan, objek grafis (kebanyakan widget), dan saluran I / O. Mari kita lihat detail tentang masing-masing hal di atas.

Objek Tcl Sederhana

Di Tcl, apakah itu bilangan bulat, boolean, bilangan floating point, atau string. Jika Anda ingin menggunakan variabel, Anda dapat langsung memberikan nilai padanya, tidak ada langkah deklarasi di Tcl. Mungkin ada representasi internal untuk berbagai jenis objek ini. Itu dapat mengubah satu tipe data ke tipe lainnya bila diperlukan. Sintaks untuk menetapkan nilai ke variabel adalah sebagai berikut -

#!/usr/bin/tclsh

set myVariable 18
puts $myVariable

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

18

Pernyataan di atas akan membuat nama variabel myVariable dan menyimpannya sebagai string meskipun kami belum menggunakan kutipan ganda. Sekarang, jika kita mencoba membuat aritmatika pada variabel, itu secara otomatis berubah menjadi bilangan bulat. Contoh sederhana ditunjukkan di bawah ini -

#!/usr/bin/tclsh

set myVariable 18
puts [expr $myVariable + 6 + 9]

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

33

Satu hal penting yang perlu diperhatikan adalah, variabel ini tidak memiliki nilai default dan harus diberi nilai sebelum digunakan.

Jika kami mencoba mencetak menggunakan put, jumlahnya diubah menjadi string yang tepat. Memiliki dua representasi, internal dan eksternal, membantu Tcl membuat struktur data yang kompleks dengan mudah dibandingkan dengan bahasa lain. Selain itu, Tcl lebih efisien karena sifat objeknya yang dinamis.

Representasi String

Tidak seperti bahasa lain, di Tcl, Anda tidak perlu menyertakan tanda kutip ganda jika hanya ada satu kata. Contohnya bisa -

#!/usr/bin/tclsh

set myVariable hello
puts $myVariable

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

hello

Saat kita ingin merepresentasikan beberapa string, kita bisa menggunakan tanda kutip ganda atau kurung kurawal. Itu ditunjukkan di bawah ini -

#!/usr/bin/tclsh

set myVariable "hello world"
puts $myVariable set myVariable {hello world} puts $myVariable

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

hello world
hello world

Daftar

Daftar tidak lain adalah sekelompok elemen. Sekelompok kata baik menggunakan tanda kutip ganda atau tanda kurung kurawal dapat digunakan untuk mewakili daftar sederhana. Daftar sederhana ditunjukkan di bawah ini -

#!/usr/bin/tclsh

set myVariable {red green blue}
puts [lindex $myVariable 2] set myVariable "red green blue" puts [lindex $myVariable 1]

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

blue
green

Array Asosiatif

Array asosiatif memiliki indeks (kunci) yang tidak harus berupa bilangan bulat. Biasanya ini adalah string yang bertindak seperti pasangan nilai kunci. Contoh sederhana ditunjukkan di bawah ini -

#!/usr/bin/tclsh

set  marks(english) 80
puts $marks(english) set marks(mathematics) 90 puts $marks(mathematics)

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

80
90

Menangani

Tcl menangani biasanya digunakan untuk mewakili file dan objek grafik. Ini dapat mencakup tuas ke permintaan jaringan dan juga saluran lain seperti komunikasi port serial, soket, atau perangkat I / O. Berikut ini adalah contoh di mana pegangan file dibuat.

set myfile [open "filename" r]

Anda akan melihat lebih detail tentang file di bab I / O file Tcl .

Di Tcl, tidak ada konsep deklarasi variabel. Sekali, nama variabel baru ditemukan, Tcl akan mendefinisikan variabel baru.

Penamaan Variabel

Nama variabel dapat berisi karakter dan panjang apa saja. Anda bahkan dapat memberi spasi putih dengan mengapit variabel dalam tanda kurung kurawal, tetapi itu tidak disukai.

Perintah set digunakan untuk menetapkan nilai ke variabel. Sintaks untuk perintah set adalah,

set variableName value

Beberapa contoh variabel ditunjukkan di bawah ini -

#!/usr/bin/tclsh

set variableA 10
set {variable B} test
puts $variableA puts ${variable B}

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

10
test

Seperti yang Anda lihat pada program di atas, $ variableName digunakan untuk mendapatkan nilai variabel.

Pengetikan Dinamis

Tcl adalah bahasa yang diketik secara dinamis. Nilai variabel dapat secara dinamis dikonversi ke jenis yang diperlukan bila diperlukan. Misalnya, angka 5 yang disimpan sebagai string akan diubah menjadi angka saat melakukan operasi aritmatika. Itu ditunjukkan di bawah ini -

#!/usr/bin/tclsh

set variableA "10"
puts $variableA
set sum [expr $variableA +20]; puts $sum

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

10
30

Ekspresi Matematika

Seperti yang Anda lihat pada contoh di atas, expr digunakan untuk merepresentasikan ekspresi matematika. Presisi default Tcl adalah 12 digit. Untuk mendapatkan hasil floating point, kita harus menambahkan setidaknya satu digit desimal. Contoh sederhana menjelaskan hal di atas.

#!/usr/bin/tclsh

set variableA "10"
set result [expr $variableA / 9]; puts $result
set result [expr $variableA / 9.0]; puts $result
set variableA "10.0"
set result [expr $variableA / 9]; puts $result

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

1
1.1111111111111112
1.1111111111111112

Dalam contoh di atas, Anda dapat melihat tiga kasus. Dalam kasus pertama, pembagi dan pembagi adalah bilangan bulat dan kita mendapatkan bilangan bulat sebagai hasilnya. Dalam kasus kedua, pembagi saja adalah angka desimal dan dalam kasus ketiga, pembagi adalah angka desimal. Dalam kasus kedua dan ketiga, kami mendapatkan angka desimal sebagai hasilnya.

Pada kode di atas, Anda dapat mengubah presisi dengan menggunakan variabel khusus tcl_precision. Itu ditunjukkan di bawah ini -

#!/usr/bin/tclsh

set variableA "10"
set tcl_precision 5
set result [expr $variableA / 9.0]; puts $result

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

1.1111

Operator adalah simbol yang memberi tahu kompiler untuk melakukan manipulasi matematika atau logika tertentu. Bahasa Tcl kaya akan operator bawaan dan menyediakan jenis operator berikut -

  • Operator Aritmatika
  • Operator Relasional
  • Operator Logis
  • Operator Bitwise
  • Operator Ternary

Bab ini akan menjelaskan operator aritmatika, relasional, logika, bitwise, dan terner satu per satu.

Operator Aritmatika

Tabel berikut menunjukkan semua operator aritmatika yang didukung oleh bahasa Tcl. Asumsikan variabel 'A' menampung 10 dan variabel 'B' menampung 20, lalu -

Tunjukkan Contoh

Operator Deskripsi Contoh
+ Menambahkan dua operan A + B akan menghasilkan 30
- Mengurangi operan kedua dari yang pertama A - B akan memberi -10
* Menggandakan kedua operan A * B akan memberi 200
/ Membagi pembilang dengan de-numerator B / A akan memberi 2
% Modulus Operator dan sisa setelah pembagian integer B% A akan memberi 0

Operator Relasional

Tabel berikut menunjukkan semua operator relasional yang didukung oleh bahasa Tcl. Asumsikan variabelA memegang 10 dan variabel B memegang 20, lalu -

Tunjukkan Contoh

Operator Deskripsi Contoh
== Memeriksa apakah nilai dari dua operan sama atau tidak, jika ya maka kondisinya menjadi benar. (A == B) tidak benar.
! = Memeriksa apakah nilai dari dua operan sama atau tidak, jika nilai tidak sama maka kondisi menjadi benar. (A! = B) benar.
> Memeriksa apakah nilai operan kiri lebih besar dari nilai operan kanan, jika ya maka kondisi menjadi benar. (A> B) tidak benar.
< Memeriksa apakah nilai operan kiri kurang dari nilai operan kanan, jika ya maka kondisinya menjadi benar. (A <B) benar.
> = Memeriksa apakah nilai operan kiri lebih besar dari atau sama dengan nilai operan kanan, jika ya maka kondisi menjadi benar. (A> = B) tidak benar.
<= Memeriksa apakah nilai operan kiri kurang dari atau sama dengan nilai operan kanan, jika ya maka kondisi menjadi benar. (A <= B) benar.

Operator Logis

Tabel berikut menunjukkan semua operator logika yang didukung oleh bahasa Tcl. Asumsikan variabelA memegang 1 dan variabel B memegang 0, lalu -

Tunjukkan Contoh

Operator Deskripsi Contoh
&& Disebut Logical AND operator. Jika kedua operan bukan nol, maka kondisi menjadi benar. (A && B) salah.
|| Disebut Logical OR Operator. Jika salah satu dari dua operan bukan nol, maka kondisi menjadi benar. (A || B) itu benar.
! Disebut Logical NOT Operator. Gunakan untuk membalikkan keadaan logis operannya. Jika kondisi benar maka operator NOT akan membuat salah. ! (A && B) benar.

Operator Bitwise

Operator bitwise bekerja pada bit dan melakukan operasi bit demi bit. Tabel kebenaran untuk &, |, dan ^ adalah sebagai berikut -

p q p & q p | q p ^ q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

Asumsikan jika A = 60; dan B = 13; sekarang dalam format biner mereka akan menjadi sebagai berikut -

A = 0011 1100

B = 0000 1101

----------------------

A&B = 0000 1100

A | B = 0011 1101

A ^ B = 0011 0001

Operator Bitwise yang didukung oleh bahasa Tcl tercantum dalam tabel berikut. Asumsikan variabelA memegang 60 dan variabel B memegang 13, lalu -

Tunjukkan Contoh

Operator Deskripsi Contoh
& Biner AND Operator menyalin sedikit ke hasil jika ada di kedua operan. (A & B) akan menghasilkan 12, yaitu 0000 1100
| Biner ATAU Operator menyalin sedikit jika ada di salah satu operan. (A | B) akan menghasilkan 61, yaitu 0011 1101
^ Operator Biner XOR menyalin bit jika diatur dalam satu operan tetapi tidak keduanya. (A ^ B) akan menghasilkan 49, yaitu 0011 0001
<< Operator Binary Left Shift. Nilai operan kiri dipindahkan ke kiri dengan jumlah bit yang ditentukan oleh operan kanan. A << 2 akan menghasilkan 240, yaitu 1111 0000
>> Operator Pergeseran Kanan Biner. Nilai operan kiri dipindahkan ke kanan dengan jumlah bit yang ditentukan oleh operan kanan. A >> 2 akan menghasilkan 15, yaitu 0000 1111

Operator Ternary

Tunjukkan Contoh

Operator Deskripsi Contoh
? : Ternary Jika Kondisi benar? Kemudian nilai X: Jika tidak, nilai Y

Operator Diutamakan di Tcl

Prioritas operator menentukan pengelompokan istilah dalam ekspresi. Ini memengaruhi bagaimana ekspresi dievaluasi. Operator tertentu memiliki prioritas lebih tinggi daripada yang lain; Misalnya, operator perkalian memiliki prioritas lebih tinggi daripada operator penjumlahan.

For example: x = 7 + 3 * 2; di sini, x ditetapkan 13, bukan 20 karena operator * memiliki prioritas lebih tinggi dari +, jadi pertama-tama dikalikan dengan 3 * 2 dan kemudian dijumlahkan menjadi 7.

Di sini, operator dengan prioritas tertinggi muncul di bagian atas tabel, operator dengan prioritas terendah muncul di bagian bawah. Dalam ekspresi, operator dengan prioritas lebih tinggi akan dievaluasi terlebih dahulu.

Tunjukkan Contoh

Kategori Operator Asosiatif
Unary + - Kanan ke kiri
Perkalian * /% Kiri ke kanan
Aditif + - Kiri ke kanan
Bergeser << >> Kiri ke kanan
Relasional <<=>> = Kiri ke kanan
Bitwise DAN & Kiri ke kanan
Bitwise XOR ^ Kiri ke kanan
Bitwise ATAU | Kiri ke kanan
DAN logis && Kiri ke kanan
Logis ATAU || Kiri ke kanan
Ternary ?: Kanan ke kiri

Struktur pengambilan keputusan mengharuskan programmer menentukan satu atau lebih kondisi untuk dievaluasi atau diuji oleh program, bersama dengan pernyataan atau pernyataan yang akan dieksekusi jika kondisi ditentukan benar, dan secara opsional, pernyataan lain yang akan dieksekusi jika kondisinya ditentukan sebagai salah.

Berikut ini adalah bentuk umum dari struktur pengambilan keputusan khas yang ditemukan di sebagian besar bahasa pemrograman -

Bahasa Tcl menggunakan perintah expr secara internal dan oleh karena itu tidak diharuskan bagi kita untuk menggunakan pernyataan expr secara eksplisit.

Bahasa Tcl menyediakan jenis pernyataan pengambilan keputusan berikut -

Sr.No. Pernyataan & Deskripsi
1 jika pernyataan

Pernyataan 'jika' terdiri dari ekspresi Boolean yang diikuti oleh satu atau beberapa pernyataan.

2 jika ... pernyataan lain

Pernyataan 'if' dapat diikuti dengan pernyataan 'else' opsional, yang dieksekusi jika ekspresi Boolean salah.

3 pernyataan if bersarang

Anda dapat menggunakan satu pernyataan 'if' atau 'else if' di dalam pernyataan 'if' atau 'else if' lainnya.

4 pernyataan switch

SEBUAH switch pernyataan memungkinkan variabel untuk diuji kesetaraan terhadap daftar nilai.

5 pernyataan saklar bersarang

Anda bisa menggunakannya switch pernyataan di dalam yang lain switch pernyataan.

Itu? : Operator

Kami telah meliputnya conditional operator ? : di bab sebelumnya, yang bisa digunakan untuk menggantikan if...elsepernyataan. Ini memiliki bentuk umum berikut -

Exp1 ? Exp2 : Exp3;

Dimana Exp1, Exp2, dan Exp3 adalah ekspresi. Perhatikan penggunaan dan penempatan titik dua.

Nilai dari '? ekspresi 'ditentukan seperti ini: Exp1 dievaluasi. Jika benar, maka Exp2 dievaluasi dan menjadi nilai keseluruhan '? ekspresi.' Jika Exp1 salah, maka Exp3 dievaluasi dan nilainya menjadi nilai ekspresi. Contohnya ditunjukkan di bawah ini.

#!/usr/bin/tclsh

set a 10;
set b [expr $a == 1 ? 20: 30] puts "Value of b is $b\n"
set b [expr $a == 10 ? 20: 30] puts "Value of b is $b\n"

Ketika Anda mengkompilasi dan menjalankan program di atas, ini menghasilkan hasil sebagai berikut -

Value of b is 30
Value of b is 20

Mungkin ada situasi, di mana Anda perlu mengeksekusi blok kode beberapa kali. Secara umum, pernyataan dieksekusi secara berurutan: Pernyataan pertama dalam suatu fungsi dijalankan pertama, diikuti oleh yang kedua, dan seterusnya.

Bahasa pemrograman menyediakan berbagai struktur kontrol yang memungkinkan jalur eksekusi yang lebih rumit.

Pernyataan loop memungkinkan kita untuk mengeksekusi pernyataan atau sekelompok pernyataan beberapa kali dan berikut adalah bentuk umum dari pernyataan loop di sebagian besar bahasa pemrograman -

Bahasa Tcl menyediakan jenis loop berikut untuk menangani persyaratan perulangan.

Sr.No. Jenis & Deskripsi Loop
1 while loop

Mengulangi pernyataan atau sekelompok pernyataan saat kondisi tertentu benar. Ini menguji kondisi sebelum menjalankan badan perulangan.

2 untuk loop

Menjalankan urutan pernyataan beberapa kali dan menyingkat kode yang mengelola variabel loop.

3 loop bersarang

Anda dapat menggunakan satu atau lebih loop di dalam while lainnya, for atau do.. while loop.

Pernyataan Kontrol Loop

Pernyataan kontrol loop mengubah eksekusi dari urutan normalnya. Saat eksekusi meninggalkan ruang lingkup, semua objek otomatis yang dibuat dalam lingkup itu dimusnahkan.

Tcl mendukung pernyataan kontrol berikut.

Sr.No. Pernyataan & Deskripsi Kontrol
1 pernyataan istirahat

Menghentikan pernyataan loop atau switch dan mentransfer eksekusi ke pernyataan segera setelah loop atau switch.

2 lanjutkan pernyataan

Menyebabkan loop melewatkan sisa tubuhnya dan segera menguji ulang kondisinya sebelum mengulangi.

Loop Tak Terbatas

Pengulangan menjadi pengulangan tanpa batas jika suatu kondisi tidak pernah menjadi salah. Ituwhileloop secara tradisional digunakan untuk tujuan ini. Anda dapat membuat loop tanpa akhir dengan membiarkan ekspresi kondisional sebagai 1.

while {1} {
   puts "This loop will run forever."
}

Jika ekspresi kondisional tidak ada, maka dianggap benar. Pemrogram Tcl lebih umum menggunakan konstruksi while {1} untuk menandakan pengulangan tak terbatas.

NOTE - Anda dapat menghentikan loop tak terbatas dengan menekan tombol Ctrl + C.

Array adalah susunan sistematis dari sekelompok elemen menggunakan indeks. Sintaks untuk larik konvensional ditampilkan di bawah ini.

set ArrayName(Index) value

Contoh untuk membuat array sederhana ditunjukkan di bawah ini.

#!/usr/bin/tclsh

set languages(0) Tcl
set languages(1) "C Language"
puts $languages(0) puts $languages(1)

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Tcl
C Language

Ukuran Array

Sintaks untuk menghitung larik ukuran ditunjukkan di bawah ini.

[array size variablename]

Contoh untuk mencetak ukuran ditunjukkan di bawah ini.

#!/usr/bin/tclsh

set languages(0) Tcl
set languages(1) "C Language"
puts  [array size languages]

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

2

Array Iteration

Padahal, indeks array bisa jadi tidak kontinu seperti nilai yang ditentukan untuk indeks 1 lalu indeks 10 dan seterusnya. Tapi, jika mereka kontinu, kita dapat menggunakan iterasi array untuk mengakses elemen array. Iterasi larik sederhana untuk mencetak elemen larik ditampilkan di bawah ini.

#!/usr/bin/tclsh

set languages(0) Tcl
set languages(1) "C Language"
for { set index 0 }  { $index < [array size languages] } { incr index } { puts "languages($index) : $languages($index)"
}

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

languages(0) : Tcl
languages(1) : C Language

Array Asosiatif

Di Tcl, semua larik pada dasarnya bersifat asosiatif. Array disimpan dan diambil tanpa urutan tertentu. Array asosiatif memiliki indeks yang tidak harus berupa angka, dan dapat diisi dengan jarang. Contoh sederhana untuk array asosiatif dengan indeks non-angka ditampilkan di bawah ini.

#!/usr/bin/tclsh

set personA(Name) "Dave"
set personA(Age) 14
puts  $personA(Name) puts $personA(Age)

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Dave
14

Indeks Array

Sintaks untuk mengambil indeks larik ditampilkan di bawah ini.

[array names variablename]

Contoh untuk mencetak ukuran ditunjukkan di bawah ini.

#!/usr/bin/tclsh

set personA(Name) "Dave"
set personA(Age) 14
puts [array names personA]

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Age Name

Iterasi dari Associative Array

Anda dapat menggunakan indeks array untuk melakukan iterasi melalui array asosiatif. Contohnya ditunjukkan di bawah ini.

#!/usr/bin/tclsh

set personA(Name) "Dave"
set personA(Age) 14
foreach index [array names personA] {
   puts "personA($index): $personA($index)"
}

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

personA(Age): 14
personA(Name): Dave

Tipe data primitif dari Tcl adalah string dan seringkali kita dapat menemukan kutipan pada Tcl sebagai bahasa hanya string. String ini dapat berisi karakter alfanumerik, hanya angka, Boolean, atau bahkan data biner. Tcl menggunakan karakter unicode 16 bit dan karakter alfanumerik dapat berisi huruf termasuk karakter non-Latin, angka atau tanda baca.

Nilai Boolean dapat direpresentasikan sebagai 1, ya atau benar untuk benar dan 0, tidak, atau salah untuk salah.

Representasi String

Tidak seperti bahasa lain, di Tcl, Anda tidak perlu menyertakan tanda kutip ganda jika hanya ada satu kata. Contohnya bisa -

#!/usr/bin/tclsh

set myVariable hello
puts $myVariable

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

hello

Saat kita ingin merepresentasikan beberapa string, kita bisa menggunakan tanda kutip ganda atau kurung kurawal. Itu ditunjukkan di bawah ini -

#!/usr/bin/tclsh

set myVariable "hello world"
puts $myVariable set myVariable {hello world} puts $myVariable

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

hello world
hello world

String Escape Sequence

Literal karakter dapat berupa karakter biasa (mis., 'X'), urutan escape (mis., '\ T'), atau karakter universal (mis., '\ U02C0').

Ada beberapa karakter dalam Tcl yang diawali dengan garis miring terbalik, mereka akan memiliki arti khusus dan digunakan untuk merepresentasikan seperti baris baru (\ n) atau tab (\ t). Di sini, Anda memiliki daftar beberapa kode urutan pelolosan tersebut -

Urutan pelarian Berarti
\\ \ karakter
\ ' 'karakter
\ " "karakter
\? ? karakter
\Sebuah Peringatan atau bel
\ b Menghapus
\ f Bentuk pakan
\ n Garis baru
\ r Kereta kembali
\ t Tab horizontal
\ v Tab vertikal

Berikut adalah contoh untuk menunjukkan beberapa karakter urutan pelolosan -

#!/usr/bin/tclsh

puts "Hello\tWorld\n\nTutorialspoint";

Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -

Hello   World

Tutorialspoint

Perintah String

Daftar subperintah untuk perintah string tercantum dalam tabel berikut ini -

Sr.No. Metode & Deskripsi
1

compare string1 string2

Membandingkan string1 dan string2 secara leksografis. Mengembalikan 0 jika sama, -1 jika string1 datang sebelum string2, else 1.

2

first string1 string2

Mengembalikan indeks kemunculan pertama dari string1 dalam string2. Jika tidak ditemukan, mengembalikan -1.

3

index indeks string

Mengembalikan karakter pada indeks.

4

last string1 string2

Mengembalikan indeks kemunculan terakhir string1 dalam string2. Jika tidak ditemukan, mengembalikan -1.

5

length tali

Mengembalikan panjang string.

6

match pattern tali

Mengembalikan 1 jika string cocok dengan pola.

7

range string index1 index2

Kembalikan rentang karakter dalam string dari indeks1 ke indeks2.

8

tolower tali

Mengembalikan string huruf kecil.

9

toupper tali

Mengembalikan string huruf besar.

10

trim string? trimcharacters?

Menghapus karakter trim di kedua ujung string. Karakter trim default adalah spasi.

11

trimleft string? trimcharacters?

Menghapus karakter trim di awal kiri string. Karakter trim default adalah spasi.

12

trimright string? trimcharacters?

Menghapus karakter trim di ujung kiri string. Karakter trim default adalah spasi.

13

wordend indeks findstring

Kembalikan indeks dalam string pencarian karakter setelah kata yang berisi karakter pada indeks.

14

wordstart indeks findstring

Kembalikan indeks dalam string pencarian dari karakter pertama pada kata yang berisi karakter pada indeks.

Contoh dari beberapa sub perintah string Tcl yang umum digunakan diberikan di bawah ini.

Perbandingan String

#!/usr/bin/tclsh

set s1 "Hello"
set s2 "World"
set s3 "World"
puts [string compare $s1 $s2]
if {[string compare $s2 $s3] == 0} {
   puts "String \'s1\' and \'s2\' are same.";
}

if {[string compare $s1 $s2] == -1} {
   puts "String \'s1\' comes before \'s2\'.";
}

if {[string compare $s2 $s1] == 1} {
   puts "String \'s2\' comes after \'s1\'.";
}

Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -

-1
String 's1' and 's2' are same.
String 's1' comes before 's2'.
String 's2' comes after 's1'.

Indeks String

#!/usr/bin/tclsh

set s1 "Hello World"
set s2 "o"
puts "First occurrence of $s2 in s1" puts [string first $s2 $s1] puts "Character at index 0 in s1" puts [string index $s1 0]
puts "Last occurrence of $s2 in s1" puts [string last $s2 $s1] puts "Word end index in s1" puts [string wordend $s1 20]
puts "Word start index in s1"
puts [string wordstart $s1 20]

Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -

First occurrence of o in s1
4
Character at index 0 in s1
H
Last occurrence of o in s1
7
Word end index in s1
11
Word start index in s1
6

Panjang String

#!/usr/bin/tclsh

set s1 "Hello World"
puts "Length of string s1"
puts [string length $s1]

Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -

Length of string s1
11

Menangani Kasus

#!/usr/bin/tclsh

set s1 "Hello World"
puts "Uppercase string of s1"
puts [string toupper $s1] puts "Lowercase string of s1" puts [string tolower $s1]

Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -

Uppercase string of s1
HELLO WORLD
Lowercase string of s1
hello world

Karakter Pemangkasan

#!/usr/bin/tclsh

set s1 "Hello World"
set s2 "World"
puts "Trim right $s2 in $s1"
puts [string trimright $s1 $s2]

set s2 "Hello"
puts "Trim left $s2 in $s1"
puts [string trimleft $s1 $s2]

set s1 " Hello World "
set s2 " "
puts "Trim characters s1 on both sides of s2"
puts [string trim $s1 $s2]

Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -

Trim right World in Hello World
Hello 
Trim left Hello in Hello World
 World
Trim characters s1 on both sides of s2
Hello World

String yang Cocok

#!/usr/bin/tclsh

set s1 "[email protected]" 
set s2 "*@*.com"
puts "Matching pattern s2 in s1"
puts [string match "*@*.com" $s1 ] puts "Matching pattern tcl in s1" puts [string match {tcl} $s1]

Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -

Matching pattern s2 in s1
1
Matching pattern tcl in s1
0

Tambahkan Perintah

#!/usr/bin/tclsh

set s1 "Hello" 
append s1 " World"
puts $s1

Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -

Hello World

Perintah format

Tabel berikut menunjukkan daftar penentu format yang tersedia di Tcl -

Penentu Menggunakan
% s Representasi string
% d Representasi bilangan bulat
% f Representasi floating point
% e Representasi floating point dengan bentuk mantissa-eksponen
% x Representasi desimal heksa

Beberapa contoh sederhana diberikan di bawah ini -

#!/usr/bin/tclsh

puts [format "%f" 43.5]
puts [format "%e" 43.5]
puts [format "%d %s" 4 tuts]
puts [format "%s" "Tcl Language"]
puts [format "%x" 40]

Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -

43.500000
4.350000e+01
4 tuts
Tcl Language
28

Perintah pindai

Perintah scan digunakan untuk mem-parsing string berdasarkan penentu format. Beberapa contoh ditunjukkan di bawah ini.

#!/usr/bin/tclsh

puts [scan "90" {%[0-9]} m]
puts [scan "abc" {%[a-z]} m]
puts [scan "abc" {%[A-Z]} m]
puts [scan "ABC" {%[A-Z]} m]

Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -

1
1
0
1

Daftar adalah salah satu tipe data dasar yang tersedia di Tcl. Ini digunakan untuk mewakili koleksi item yang dipesan. Ini dapat mencakup berbagai jenis item dalam daftar yang sama. Selanjutnya, daftar dapat berisi daftar lain.

Satu hal penting yang perlu diperhatikan adalah bahwa daftar ini direpresentasikan sebagai string secara lengkap dan diproses untuk membentuk item individual bila diperlukan. Jadi, hindari daftar besar dan dalam kasus seperti itu; menggunakan array.

Membuat Daftar

Sintaks umum untuk daftar diberikan di bawah ini -

set listName { item1 item2 item3 .. itemn }
# or
set listName [list item1 item2 item3]
# or 
set listName [split "items separated by a character" split_character]

Beberapa contoh diberikan di bawah ini -

#!/usr/bin/tclsh

set colorList1 {red green blue}
set colorList2 [list red green blue]
set colorList3 [split "red_green_blue" _]
puts $colorList1
puts $colorList2 puts $colorList3

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

red green blue
red green blue
red green blue

Menambahkan Item ke Daftar

Sintaks untuk menambahkan item ke daftar diberikan di bawah ini -

append listName split_character value
# or
lappend listName value

Beberapa contoh diberikan di bawah ini -

#!/usr/bin/tclsh

set var orange
append var " " "blue"
lappend var "red" 
lappend var "green" 
puts $var

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

orange blue red green

Panjang Daftar

Sintaks untuk panjang daftar diberikan di bawah ini -

llength listName

Contoh panjang daftar diberikan di bawah -

#!/usr/bin/tclsh

set var {orange blue red green}
puts [llength $var]

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

4

Daftar Item di Indeks

Sintaks untuk memilih item daftar pada indeks tertentu diberikan di bawah ini -

lindex listname index

Contoh untuk item daftar pada indeks diberikan di bawah ini -

#!/usr/bin/tclsh

set var {orange blue red green}
puts [lindex $var  1]

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

blue

Sisipkan Item di Indeks

Sintaks untuk memasukkan item daftar pada indeks tertentu diberikan di bawah ini.

linsert listname index value1 value2..valuen

Contoh untuk memasukkan item daftar pada indeks tertentu diberikan di bawah ini.

#!/usr/bin/tclsh

set var {orange blue red green}
set var [linsert  $var 3 black white]
puts $var

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

orange blue red black white green

Ganti Item di Indeks

Sintaks untuk mengganti item daftar pada indeks tertentu diberikan di bawah ini -

lreplace listname firstindex lastindex value1 value2..valuen

Contoh untuk mengganti item daftar pada indeks tertentu diberikan di bawah ini.

#!/usr/bin/tclsh

set var {orange blue red green}
set var [lreplace $var 2 3 black white]
puts $var

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

orange blue black white

Tetapkan Item pada Indeks

Sintaks untuk item daftar pengaturan pada indeks tertentu diberikan di bawah ini -

lset listname index value

Contoh untuk mengatur item daftar pada indeks tertentu diberikan di bawah ini -

#!/usr/bin/tclsh

set var {orange blue red green}
lset var 0 black 
puts $var

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

black blue red green

Ubah Daftar menjadi Variabel

Sintaks untuk menyalin nilai ke variabel diberikan di bawah ini -

lassign listname variable1 variable2.. variablen

Contoh untuk mengubah daftar menjadi variabel diberikan di bawah ini -

#!/usr/bin/tclsh

set var {orange blue red green}
lassign $var colour1 colour2 puts $colour1
puts $colour2

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

orange
blue

Menyortir Daftar

Sintaks untuk mengurutkan daftar diberikan di bawah ini -

lsort listname

Contoh untuk menyortir daftar diberikan di bawah ini -

#!/usr/bin/tclsh

set var {orange blue red green}
set var [lsort $var]
puts $var

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

blue green orange red

Kamus adalah pengaturan untuk memetakan nilai ke kunci. Sintaks untuk kamus konvensional ditunjukkan di bawah ini -

dict set dictname key value
# or 
dict create dictname key1 value1 key2 value2 .. keyn valuen

Beberapa contoh untuk membuat kamus ditunjukkan di bawah -

#!/usr/bin/tclsh

dict set colours  colour1 red 
puts $colours
dict set colours  colour2 green
puts $colours set colours [dict create colour1 "black" colour2 "white"] puts $colours

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

colour1 red
colour1 red colour2 green
colour1 black colour2 white

Ukuran Dict

Sintaks untuk mendapatkan ukuran dict ditunjukkan di bawah ini -

[dict size dictname]

Contoh untuk mencetak ukuran ditunjukkan di bawah ini -

#!/usr/bin/tclsh

set colours [dict create colour1 "black" colour2 "white"]
puts [dict size $colours]

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

2

Iterasi Kamus

Sebuah iterasi kamus sederhana untuk mencetak kunci dan nilai kamus ditunjukkan di bawah -

#!/usr/bin/tclsh

set colours [dict create colour1 "black" colour2 "white"]
foreach item [dict keys $colours] {
   set value [dict get $colours $item]
   puts $value
}

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

black
white

Nilai untuk Key in Dict

Sintaks untuk mengambil nilai kunci dalam dict ditunjukkan di bawah ini -

[dict get $dictname $keyname]

Contoh untuk mengambil nilai untuk kunci diberikan di bawah ini -

#!/usr/bin/tclsh

set colours [dict create colour1 "black" colour2 "white"]
set value [dict get $colours colour1]
puts $value

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

black

Semua Kunci di Dict

Sintaks untuk mengambil semua kunci dalam dict ditunjukkan di bawah ini -

[dict keys $dictname]

Contoh untuk mencetak semua kunci ditunjukkan di bawah ini -

#!/usr/bin/tclsh

set colours [dict create colour1 "black" colour2 "white"]
set keys [dict keys $colours] puts $keys

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

colour1 colour2

Semua Nilai di Dict

Sintaks untuk mengambil semua nilai dalam dict ditunjukkan di bawah ini -

[dict values $dictname]

Contoh untuk mencetak semua nilai ditunjukkan di bawah ini -

#!/usr/bin/tclsh

set colours [dict create colour1 "black" colour2 "white"]
set values [dict values $colours]
puts $values

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

black white

Kunci Ada di Dict

Sintaks untuk memeriksa apakah ada kunci dalam dict ditunjukkan di bawah ini -

[dict exists $dictname $key]

Contoh untuk memeriksa apakah ada kunci di dict ditunjukkan di bawah ini -

#!/usr/bin/tclsh

set colours [dict create colour1 "black" colour2 "white"]
set result [dict exists $colours colour1]
puts $result

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

1

Prosedur tidak lain adalah blok kode dengan serangkaian perintah yang menyediakan fungsionalitas khusus yang dapat digunakan kembali. Ini digunakan untuk menghindari pengulangan kode yang sama di beberapa lokasi. Prosedur setara dengan fungsi yang digunakan dalam banyak bahasa pemrograman dan tersedia di Tcl dengan bantuanproc perintah.

Sintaks untuk membuat prosedur sederhana ditunjukkan di bawah ini -

proc procedureName {arguments} {
   body
}

Contoh sederhana untuk prosedur diberikan di bawah ini -

#!/usr/bin/tclsh

proc helloWorld {} {
   puts "Hello, World!"
}
helloWorld

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Hello, World!

Prosedur dengan Banyak Argumen

Contoh untuk prosedur dengan argumen ditunjukkan di bawah ini -

#!/usr/bin/tclsh

proc add {a b} {
   return [expr $a+$b]
}
puts [add 10 30]

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

40

Prosedur dengan Argumen Variabel

Contoh untuk prosedur dengan argumen ditunjukkan di bawah ini -

#!/usr/bin/tclsh

proc avg {numbers} {
   set sum 0
   foreach number $numbers {
      set sum  [expr $sum + $number]
   }
   set average [expr $sum/[llength $numbers]]
   return $average
}
puts [avg {70 80 50 60}]
puts [avg {70 80 50 }]

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

65
66

Prosedur dengan Argumen Default

Argumen default digunakan untuk memberikan nilai default yang dapat digunakan jika tidak ada nilai yang diberikan. Contoh untuk prosedur dengan argumen default, yang terkadang disebut sebagai argumen implisit ditampilkan di bawah ini -

#!/usr/bin/tclsh

proc add {a {b 100} } {
   return [expr $a+$b]
}
puts [add 10 30]
puts [add 10]

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

40
110

Prosedur Rekursif

Contoh untuk prosedur rekursif ditunjukkan di bawah ini -

#!/usr/bin/tclsh

proc factorial {number} {
   if {$number <= 1} {
      return 1
   } 
   return [expr $number * [factorial [expr $number - 1]]]

}
puts [factorial 3]
puts [factorial 5]

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

6
120

Paket digunakan untuk membuat unit kode yang dapat digunakan kembali. Paket terdiri dari kumpulan file yang menyediakan fungsionalitas tertentu. Kumpulan file ini diidentifikasi dengan nama paket dan dapat memiliki beberapa versi file yang sama. Paket dapat berupa kumpulan skrip Tcl, pustaka biner, atau kombinasi keduanya.

Paket menggunakan konsep namespace untuk menghindari benturan nama variabel dan nama prosedur. Lihat lebih lanjut di tutorial ' namespace ' kami berikutnya .

Membuat Paket

Sebuah paket dapat dibuat dengan bantuan minimal dua file. Satu file berisi kode paket. File lain berisi file paket indeks untuk mendeklarasikan paket Anda.

Daftar langkah-langkah untuk membuat dan menggunakan paket diberikan di bawah ini.

LANGKAH 1: Membuat Kode

Buat kode untuk paket di dalam folder, katakan HelloWorld. Biarkan file diberi nama HelloWorld.tcl dengan kode seperti di bawah ini -

# /Users/rajkumar/Desktop/helloworld/HelloWorld.tcl 
# Create the namespace
namespace eval ::HelloWorld {
 
  # Export MyProcedure
  namespace export MyProcedure
 
  # My Variables
   set version 1.0
   set MyDescription "HelloWorld"
 
  # Variable for the path of the script
   variable home [file join [pwd] [file dirname [info script]]]
 
}
 
# Definition of the procedure MyProcedure
proc ::HelloWorld::MyProcedure {} {
   puts $HelloWorld::MyDescription } package provide HelloWorld $HelloWorld::version
package require Tcl 8.0

LANGKAH 2: Membuat Indeks Paket

Buka tclsh. Beralih ke direktori HelloWorld dan gunakan perintah pkg_mkIndex untuk membuat file indeks seperti yang ditunjukkan di bawah ini -

% cd /Users/rajkumar/Desktop/helloworld 
% pkg_mkIndex . *.tcl

LANGKAH 3: Menambahkan Direktori ke Autopath

Gunakan perintah lappend untuk menambahkan paket ke daftar global seperti yang ditunjukkan di bawah ini -

% lappend auto_path "/Users/rajkumar/Desktop/helloworld"

LANGKAH 4: Menambahkan Paket

Selanjutnya tambahkan paket ke program menggunakan pernyataan paket membutuhkan seperti yang ditunjukkan di bawah ini -

% package require HelloWorld 1.0

LANGKAH 5: Prosedur Permintaan

Sekarang, semuanya sudah diatur, kita dapat menjalankan prosedur kita seperti yang ditunjukkan di bawah ini -

% puts [HelloWorld::MyProcedure]

Anda akan mendapatkan hasil sebagai berikut -

HelloWorld

Dua langkah pertama membuat paket. Setelah paket dibuat, Anda dapat menggunakannya di file Tcl mana pun dengan menambahkan tiga pernyataan terakhir seperti yang ditunjukkan di bawah ini -

lappend auto_path "/Users/rajkumar/Desktop/helloworld"
package require HelloWorld 1.0
puts [HelloWorld::MyProcedure]

Anda akan mendapatkan hasil sebagai berikut -

HelloWorld

Namespace adalah wadah untuk sekumpulan pengenal yang digunakan untuk mengelompokkan variabel dan prosedur. Namespaces tersedia dari Tcl versi 8.0. Sebelum ruang nama diperkenalkan, ada satu cakupan global. Sekarang dengan namespace, kami memiliki partisi tambahan dalam lingkup global.

Membuat Namespace

Namespaces dibuat menggunakan namespaceperintah. Contoh sederhana untuk membuat namespace ditunjukkan di bawah ini -

#!/usr/bin/tclsh

namespace eval MyMath {
  # Create a variable inside the namespace
  variable myResult
}

# Create procedures inside the namespace
proc MyMath::Add {a b } {  
  set ::MyMath::myResult [expr $a + $b]
}
MyMath::Add 10 23

puts $::MyMath::myResult

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

33

Pada program di atas, Anda bisa melihat ada namespace dengan variabel myResult dan prosedur Add. Ini memungkinkan untuk membuat variabel dan prosedur dengan nama yang sama di bawah ruang nama yang berbeda.

Namespaces Bersarang

Tcl memungkinkan penumpukan namespace. Contoh sederhana untuk ruang nama bersarang diberikan di bawah ini -

#!/usr/bin/tclsh

namespace eval MyMath {
   # Create a variable inside the namespace
   variable myResult
}

namespace eval extendedMath {
   # Create a variable inside the namespace
   namespace eval MyMath {
      # Create a variable inside the namespace
      variable myResult
   }
}
set ::MyMath::myResult "test1"
puts $::MyMath::myResult
set ::extendedMath::MyMath::myResult "test2"
puts $::extendedMath::MyMath::myResult

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

test1
test2

Mengimpor dan Mengekspor Namespace

Anda dapat melihat pada contoh namespace sebelumnya, kami menggunakan banyak operator resolusi cakupan dan lebih kompleks untuk digunakan. Kita dapat menghindari ini dengan mengimpor dan mengekspor namespace. Contoh diberikan di bawah ini -

#!/usr/bin/tclsh

namespace eval MyMath {
   # Create a variable inside the namespace
   variable myResult
   namespace export Add
}

# Create procedures inside the namespace
proc MyMath::Add {a b } {  
   return [expr $a + $b]
}

namespace import MyMath::*
puts [Add 10 30]

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

40

Lupakan Namespace

Anda dapat menghapus namespace yang diimpor dengan menggunakan forgetsubperintah. Contoh sederhana ditunjukkan di bawah ini -

#!/usr/bin/tclsh

namespace eval MyMath {
   # Create a variable inside the namespace
   variable myResult
   namespace export Add
}

# Create procedures inside the namespace
proc MyMath::Add {a b } {  
   return [expr $a + $b]
}
namespace import MyMath::*
puts [Add 10 30]
namespace forget MyMath::*

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

40

Tcl mendukung penanganan file dengan bantuan perintah bawaan buka, baca, letakkan, dapatkan, dan tutup.

File mewakili urutan byte, tidak masalah apakah itu file teks atau file biner.

Membuka File

Tcl menggunakan perintah buka untuk membuka file di Tcl. Sintaks untuk membuka file adalah sebagai berikut -

open fileName accessMode

Sini, filename adalah string literal, yang akan Anda gunakan untuk memberi nama file dan accessMode dapat memiliki salah satu dari nilai berikut -

Sr.No. Mode & Deskripsi
1

r

Membuka file teks yang ada untuk tujuan membaca dan file tersebut harus ada. Ini adalah mode default yang digunakan ketika tidak ada accessMode yang ditentukan.

2

w

Membuka file teks untuk menulis, jika tidak ada, maka file baru dibuat jika file yang sudah ada terpotong.

3

a

Membuka file teks untuk menulis dalam mode appending dan file harus ada. Di sini, program Anda akan mulai menambahkan konten di konten file yang sudah ada.

4

r+

Membuka file teks untuk membaca dan menulis keduanya. File harus sudah ada.

5

w+

Membuka file teks untuk membaca dan menulis keduanya. Ini pertama-tama memotong file menjadi panjang nol jika ada jika tidak membuat file jika tidak ada.

6

a+

Membuka file teks untuk membaca dan menulis keduanya. Ini membuat file jika tidak ada. Pembacaan akan dimulai dari awal, tetapi tulisan hanya dapat ditambahkan.

Menutup File

Untuk menutup file, gunakan perintah tutup. Sintaks untuk close adalah sebagai berikut -

close fileName

File apa pun yang telah dibuka oleh program harus ditutup ketika program selesai menggunakan file itu. Dalam kebanyakan kasus, file tidak perlu ditutup secara eksplisit; mereka ditutup secara otomatis ketika objek File dihentikan secara otomatis.

Menulis File

Perintah Puts digunakan untuk menulis ke file yang terbuka.

puts $filename "text to write"

Contoh sederhana untuk menulis ke file ditunjukkan di bawah ini.

#!/usr/bin/tclsh

set fp [open "input.txt" w+]
puts $fp "test" close $fp

Ketika kode di atas dikompilasi dan dijalankan, itu membuat file baru input.txt di direktori yang telah dimulai (di direktori kerja program).

Membaca File

Berikut adalah perintah sederhana untuk membaca dari file -

set file_data [read $fp]

Contoh lengkap membaca dan menulis ditunjukkan di bawah ini -

#!/usr/bin/tclsh

set fp [open "input.txt" w+]
puts $fp "test"
close $fp set fp [open "input.txt" r] set file_data [read $fp]
puts $file_data close $fp

Ketika kode di atas dikompilasi dan dijalankan, ia membaca file yang dibuat di bagian sebelumnya dan menghasilkan hasil sebagai berikut -

test

Berikut adalah contoh lain untuk membaca file hingga akhir baris file demi baris -

#!/usr/bin/tclsh

set fp [open "input.txt" w+]
puts $fp "test\ntest" close $fp
set fp [open "input.txt" r]

while { [gets $fp data] >= 0 } { puts $data
}
close $fp

Ketika kode di atas dikompilasi dan dijalankan, ia membaca file yang dibuat di bagian sebelumnya dan menghasilkan hasil sebagai berikut -

test
test

Penanganan kesalahan di Tcl disediakan dengan bantuan error dan catchperintah. Sintaks untuk masing-masing perintah ini ditampilkan di bawah.

Kesalahan sintaks

error message info code

Dalam sintaks perintah kesalahan di atas, pesan adalah pesan kesalahan, info diatur dalam errorInfo variabel global dan kode diatur dalam errorCode variabel global.

Tangkap Sintaks

catch script resultVarName

Dalam sintaks perintah catch di atas, script adalah kode yang akan dieksekusi, resultVarName adalah variabel yang menahan kesalahan atau hasilnya. Perintah catch mengembalikan 0 jika tidak ada kesalahan, dan 1 jika ada kesalahan.

Contoh penanganan kesalahan sederhana ditunjukkan di bawah ini -

#!/usr/bin/tclsh

proc Div {a b} {
   if {$b == 0} {
      error "Error generated by error" "Info String for error" 401
   } else {
      return [expr $a/$b]
   }
}

if {[catch {puts "Result = [Div 10 0]"} errmsg]} {
   puts "ErrorMsg: $errmsg" puts "ErrorCode: $errorCode"
   puts "ErrorInfo:\n$errorInfo\n" } if {[catch {puts "Result = [Div 10 2]"} errmsg]} { puts "ErrorMsg: $errmsg"
   puts "ErrorCode: $errorCode" puts "ErrorInfo:\n$errorInfo\n"
}

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

ErrorMsg: Error generated by error
ErrorCode: 401
ErrorInfo:
Info String for error
   (procedure "Div" line 1)
   invoked from within
"Div 10 0"

Result = 5

Seperti yang Anda lihat pada contoh di atas, kami dapat membuat pesan kesalahan khusus kami sendiri. Demikian pula, dimungkinkan untuk menangkap kesalahan yang dihasilkan oleh Tcl. Contohnya ditunjukkan di bawah ini -

#!/usr/bin/tclsh

catch {set file [open myNonexistingfile.txt]} result
puts "ErrorMsg: $result" puts "ErrorCode: $errorCode"
puts "ErrorInfo:\n$errorInfo\n"

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

ErrorMsg: couldn't open "myNonexistingfile.txt": no such file or directory
ErrorCode: POSIX ENOENT {no such file or directory}
ErrorInfo:
couldn't open "myNonexistingfile.txt": no such file or directory
   while executing
"open myNonexistingfile.txt"

Tcl menyediakan sejumlah fungsi (prosedur) bawaan untuk berbagai operasi. Ini termasuk -

  • Fungsi penanganan daftar .

  • Fungsi penanganan string .

  • Fungsi penanganan larik .

  • Fungsi penanganan kamus .

  • Fungsi penanganan File I / O.

  • Berfungsi untuk membuat ruang nama dan paket.

  • Fungsi untuk operasi Matematika.

  • Fungsi untuk operasi Sistem.

Masing-masing hal di atas kecuali fungsi matematika dan sistem telah dibahas di bab sebelumnya. Matematika dan fungsi built-in sistem dijelaskan di bawah ini.

Fungsi Matematika

Fungsi matematika yang tersedia di Tcl tercantum dalam tabel berikut -

Sr.No. Metode & Deskripsi
1

abs arg

Menghitung nilai absolut dari arg.

2

acos arg

Menghitung arccosine dari arg.

3

asin arg

Menghitung busur dari arg.

4

atan arg

Menghitung arkangen dari arg.

5

atan2 yx

Menghitung arkangen hasil bagi dari argumennya (y / x).

6

ceil arg

Menghitung bilangan bulat terkecil yang lebih besar dari atau sama dengan angka.

7

cos arg

Menghitung kosinus arg.

8

cosh arg

Menghitung kosinus hiperbolik arg.

9

double arg

Menghitung jika arg adalah nilai floating-point, mengembalikan arg, jika tidak mengonversi arg menjadi floating-point dan mengembalikan nilai yang dikonversi.

10

exp arg

Menghitung fungsi eksponensial (e pangkat dari arg).

11

floor arg

Menghitung bilangan bulat terbesar kurang dari atau sama dengan arg.

12

fmod xy

Menghitung sisa floating-point dari pembagian x dengan y. Jika y adalah 0, kesalahan dikembalikan.

13

hypot xy

Menghitung panjang hipotenusa dari segitiga siku-siku akar persegi (x * x + y * y).

14

int arg

Menghitung jika arg adalah nilai bilangan bulat dengan lebar yang sama dengan kata mesin, mengembalikan arg, jika tidak, mengonversi arg menjadi bilangan bulat.

15

log arg

Menghitung logaritma natural arg.

16

log10 arg

Menghitung logaritma basis 10 dari arg.

17

pow xy

Menghitung nilai x yang dipangkatkan y. Jika x negatif, y harus berupa nilai integer.

18

rand

Menghitung angka acak semu antara 0 dan 1.

19

round arg

Menghitung nilai arg yang dibulatkan ke bilangan bulat terdekat.

20

sin arg

Menghitung sinus arg.

21

sinh arg

Menghitung sinus hiperbolik arg.

22

sqrt arg

Menghitung akar kuadrat dari arg. arg harus positif.

23

srand arg

Menghitung bilangan pseudo-acak antara 0 dan 1. Arg, yang harus berupa bilangan bulat, digunakan untuk menyetel ulang seed untuk pembuat bilangan acak rand.

24

tan arg

Menghitung tangen dari arg.

25

tanh arg

Menghitung tangen hiperbolik dari arg.

26

wide arg

Menghitung nilai integer setidaknya dengan lebar 64-bit (dengan ekstensi tanda jika arg adalah angka 32-bit) untuk arg jika belum ada.

Beberapa contoh menggunakan fungsi matematika diberikan di bawah ini -

#!/usr/bin/tclsh

namespace import ::tcl::mathfunc::*
puts [tan 10]
puts [pow 10 2]
puts [ceil 10.34]
puts [hypot 10 20]
puts [srand 45]
puts [log 10]
puts [srand 45]

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

0.6483608274590866
100.0
11.0
22.360679774997898
0.0003521866166741525
2.302585092994046
0.0003521866166741525

Fungsi Sistem

Fungsi sistem penting di Tcl meliputi,

  • clock - Fungsi detik, yang mengembalikan waktu saat ini dalam hitungan detik.

  • clock - Fungsi format, yang memformat detik menjadi tanggal dan waktu.

  • clock - Fungsi scan, yang memindai string input dan mengubahnya menjadi detik.

  • open - fungsi, yang digunakan untuk membuka file.

  • exec - fungsi, yang digunakan untuk menjalankan perintah sistem.

  • close - fungsi, yang digunakan untuk menutup file.

Beberapa contoh untuk fungsi di atas tercantum di bawah -

#!/usr/bin/tclsh

#get seconds
set currentTime [clock seconds]
puts $currentTime
#get format 
puts "The time is: [clock format $currentTime -format %H:%M:%S]" puts "The date is: [clock format $currentTime -format %D]"

set date "Jun 15, 2014"
puts [clock scan $date -format {%b %d, %Y}] puts [exec ls] puts [exec dir] set a [open input.txt] puts [read $a];
puts $a close $a

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

1402819756
The time is: 03:09:16
The date is: 06/15/2014
1402808400
input.txt
main.tcl
input.txt  main.tcl
This is the file you can use to provide input to your program and later on open
   it inside your program to process the input.

file3

Tabel berikut menyediakan daftar string yang dapat digunakan untuk memformat tanggal dan waktu.

Sr.No. Format & Deskripsi
1

%a

Hari dalam bentuk singkat, misalnya: Matahari.

2

%A

Hari dalam bentuk penuh misalnya: Minggu.

3

%b

Sebulan dalam bentuk singkat.

4

%B

Bulan dalam bentuk penuh.

5

%d

Hari dalam sebulan.

6

%j

Hari Julian dalam setahun.

7

%m

Bulan dalam angka.

8

%y

Tahun dalam dua digit.

9

%Y

Tahun dalam empat digit.

10

%H

Jam dalam format 24 jam.

11

%I

Jam dalam format 12 jam.

12

%M

Menit.

13

%S

Detik.

14

%p

AM atau PM.

15

%D

Tanggal dalam angka, bb / hh / ttt.

16

%r

Waktu dalam format 12 jam.

17

%R

Waktu dalam format 24 jam tanpa detik.

18

%T

Waktu dalam format 24 jam dengan detik.

19

%Z

Nama Zona Waktu seperti GMT, IST, EST, dan sebagainya.

Perintah "regexp" digunakan untuk mencocokkan ekspresi reguler di Tcl. Ekspresi reguler adalah rangkaian karakter yang berisi pola pencarian. Ini terdiri dari beberapa aturan dan tabel berikut menjelaskan aturan ini dan penggunaan yang sesuai.

Sr.No. Aturan & Deskripsi
1

x

Benar-benar cocok.

2

[a-z]

Semua huruf kecil dari az.

3

.

Karakter apapun.

4

^

String awal harus cocok.

5

$

String akhir harus cocok.

6

\^

Urutan backlash untuk mencocokkan karakter khusus ^. Demikian pula yang dapat Anda gunakan untuk karakter lain.

7

()

Tambahkan urutan di atas di dalam tanda kurung untuk membuat ekspresi reguler.

8

x*

Harus cocok dengan 0 atau lebih kemunculan x sebelumnya.

9

x+

Harus cocok dengan 1 atau lebih kemunculan dari x sebelumnya.

10

[a-z]?

Harus cocok dengan 0 atau 1 kemunculan x sebelumnya.

11

{digit}

Cocok persis dengan digit kemunculan ekspresi regex sebelumnya. Digit yang berisi 0-9.

12

{digit,}

Cocok dengan 3 digit atau lebih kemunculan ekspresi regex sebelumnya. Digit yang berisi 0-9.

13

{digit1,digit2}

Kejadian cocok dengan rentang antara digit1 dan digit2 kemunculan ekspresi regex sebelumnya.

Sintaksis

Sintaks untuk regex diberikan di bawah ini -

regexp optionalSwitches patterns searchString fullMatch subMatch1 ... subMatchn

Di sini, regex adalah perintahnya. Kita akan melihat tentang sakelar opsional nanti. Pola adalah aturan seperti yang disebutkan sebelumnya. String pencarian adalah string sebenarnya tempat regex dijalankan. Pencocokan penuh adalah variabel apa pun untuk menahan hasil dari hasil regex yang cocok. Submatch1 to SubMatchn adalah variabel subMatch opsional yang menyimpan hasil dari pola sub match.

Mari kita lihat beberapa contoh sederhana sebelum menyelami yang rumit. Contoh sederhana untuk string dengan huruf apa pun. Ketika karakter lain ditemukan regex, pencarian akan dihentikan dan dikembalikan.

#!/usr/bin/tclsh

regexp {([A-Za-z]*)} "Tcl Tutorial" a b 
puts "Full Match: $a"
puts "Sub Match1: $b"

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Full Match: Tcl
Sub Match1: Tcl

Beberapa Pola

Contoh berikut menunjukkan cara mencari beberapa pola. Ini adalah contoh pola untuk huruf apapun yang diikuti dengan karakter apapun yang diikuti oleh huruf apapun.

#!/usr/bin/tclsh

regexp {([A-Za-z]*).([A-Za-z]*)} "Tcl Tutorial" a b c  
puts "Full Match: $a"
puts "Sub Match1: $b" puts "Sub Match2: $c"

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Full Match: Tcl Tutorial
Sub Match1: Tcl
Sub Match2: Tutorial

Versi modifikasi dari kode di atas untuk menunjukkan bahwa sub pola dapat berisi banyak pola ditunjukkan di bawah -

#!/usr/bin/tclsh

regexp {([A-Za-z]*.([A-Za-z]*))} "Tcl Tutorial" a b c  
puts "Full Match: $a" puts "Sub Match1: $b"
puts "Sub Match2: $c"

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Full Match: Tcl Tutorial
Sub Match1: Tcl Tutorial
Sub Match2: Tutorial

Sakelar untuk Perintah Regex

Daftar sakelar yang tersedia di Tcl adalah,

  • nocase - Digunakan untuk mengabaikan kasus.

  • indices - Simpan lokasi sub pola yang cocok, bukan karakter yang cocok.

  • line- Pencocokan sensitif baris baru. Mengabaikan karakter setelah baris baru.

  • start index - Mengatur offset awal pola pencarian.

  • Menandai akhir sakelar

Dalam contoh di atas, saya sengaja menggunakan [AZ, az] untuk semua huruf, Anda dapat dengan mudah menggunakan -nocase daripada seperti yang ditunjukkan di bawah ini -

#!/usr/bin/tclsh

regexp -nocase {([A-Z]*.([A-Z]*))} "Tcl Tutorial" a b c  
puts "Full Match: $a"
puts "Sub Match1: $b" puts "Sub Match2: $c"

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Full Match: Tcl Tutorial
Sub Match1: Tcl Tutorial
Sub Match2: Tutorial

Contoh lain menggunakan sakelar ditunjukkan di bawah ini -

#!/usr/bin/tclsh

regexp -nocase -line -- {([A-Z]*.([A-Z]*))} "Tcl \nTutorial" a b 
puts "Full Match: $a" puts "Sub Match1: $b"
regexp -nocase -start 4 -line -- {([A-Z]*.([A-Z]*))} "Tcl \nTutorial" a b  
puts "Full Match: $a" puts "Sub Match1: $b"

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Full Match: Tcl 
Sub Match1: Tcl 
Full Match: Tutorial
Sub Match1: Tutorial

Tk mengacu pada Toolkit dan menyediakan widget GUI lintas platform, yang membantu Anda dalam membangun Antarmuka Pengguna Grafis. Ini dikembangkan sebagai ekstensi untuk bahasa scripting Tcl oleh John Ousterhout. Tk tetap dalam pengembangan secara independen dari Tcl dengan versi yang berbeda satu sama lain, sebelumnya dibuat sinkron dengan Tcl di v8.0.

Fitur Tk

Ini adalah lintas platform dengan dukungan untuk sistem operasi Linux, Mac OS, Unix, dan Microsoft Windows.

  • Ini adalah open source.
  • Ini memberikan tingkat perpanjangan yang tinggi.
  • Itu dapat disesuaikan.
  • Ini dapat dikonfigurasi.
  • Ini menyediakan sejumlah besar widget.
  • Ini dapat digunakan dengan bahasa dinamis lain dan bukan hanya Tcl.
  • GUI terlihat identik di semua platform.

Aplikasi yang Dibangun di Tk

Aplikasi besar yang berhasil telah dibangun di Tcl / Tk.

  • Dashboard Soft User Interface
  • Membentuk GUI untuk Relational DB
  • GUI Ad Hoc untuk Relational DB
  • Perancangan Sistem Perangkat Lunak / Perangkat Keras
  • Xtask - Manajemen Tugas
  • Musikologi dengan Tcl dan Tk
  • Aplikasi kalender
  • Tk mail
  • Tk Debugger

Umumnya, semua Mac Mac dan Linux dilengkapi dengan Tk yang sudah diinstal sebelumnya. Jika tidak tersedia atau Anda memerlukan versi terbaru, Anda mungkin perlu menginstalnya. Windows tidak dilengkapi dengan Tcl / Tk dan Anda mungkin perlu menggunakan biner spesifiknya untuk menginstalnya.

Penerjemah Tk

Ini hanyalah program kecil yang memungkinkan Anda mengetik perintah Tk dan menjalankannya baris demi baris. Ini menghentikan eksekusi file tcl dalam kasus, itu menemukan kesalahan tidak seperti kompiler yang dijalankan sepenuhnya.

Mari kita memiliki file helloWorld.tcl sebagai berikut. Kami akan menggunakan ini sebagai program pertama, kami berjalan di platform yang Anda pilih.

#!/usr/bin/wish

grid [ttk::button .mybutton -text "Hello World"]

Bagian berikut hanya menjelaskan cara menginstal Tcl / Tk di setiap platform yang tersedia.

Instalasi di Windows

Unduh versi terbaru untuk penginstal windows dari daftar binari Tcl / Tk Aktif yang tersedia. Edisi komunitas Tcl / Tk aktif gratis untuk penggunaan pribadi.

Jalankan file yang dapat diunduh untuk menginstal Tcl dan Tk, yang dapat dilakukan dengan mengikuti petunjuk di layar.

Sekarang, kita dapat membangun dan menjalankan file Tcl say helloWorld.tcl dengan beralih ke folder yang berisi file tersebut menggunakan cd dan kemudian menggunakan langkah berikut -

C:\Tcl> wish helloWorld.tcl

Tekan enter dan kita akan melihat output seperti yang ditunjukkan di bawah ini -

Instalasi di Linux

Sebagian besar sistem operasi Linux hadir dengan Tk inbuilt dan Anda dapat segera memulai di sistem tersebut. Jika tidak tersedia, Anda dapat menggunakan perintah berikut untuk mengunduh dan menginstal Tcl-Tk.

$ yum install tcl tk

Sekarang, kita dapat membangun dan menjalankan file Tcl say helloWorld.tcl dengan beralih ke folder yang berisi file tersebut menggunakan cd command dan kemudian menggunakan langkah berikut -

$ wish helloWorld.tcl

Tekan enter dan kami akan melihat output yang mirip dengan berikut -

Instalasi pada Sistem Berbasis Debian

Jika, ini tidak tersedia bawaan di OS Anda, Anda dapat menggunakan perintah berikut untuk mengunduh dan menginstal Tcl-Tk -

$ sudo apt-get install tcl tk

Sekarang, kita dapat membangun dan menjalankan file Tcl say helloWorld.tcl dengan beralih ke folder yang berisi file tersebut menggunakan cd command dan kemudian menggunakan langkah-langkah berikut -

$ wish helloWorld.tcl

Tekan enter dan kami akan melihat output yang mirip dengan berikut -

Instalasi di Mac OS X

Unduh versi terbaru untuk paket Mac OS X dari daftar biner Tcl / Tk Aktif yang tersedia. Edisi komunitas Tcl aktif gratis untuk penggunaan pribadi.

Jalankan file yang dapat diunduh untuk menginstal Tcl Aktif, yang dapat dilakukan dengan mengikuti petunjuk di layar.

Sekarang, kita dapat membangun dan menjalankan file Tcl say helloWorld.tcl dengan beralih ke folder yang berisi file tersebut menggunakan cd command dan kemudian menggunakan langkah berikut -

$ wish helloWorld.tcl

Tekan enter dan kita akan melihat output seperti yang ditunjukkan di bawah ini -

Instalasi dari File Sumber

Anda dapat menggunakan opsi untuk menginstal dari file sumber ketika paket biner tidak tersedia. Biasanya lebih disukai menggunakan binari Tk untuk Windows dan Mac OS X, jadi hanya kompilasi sumber pada sistem berbasis unix yang ditampilkan di bawah -

  • Unduh file sumber.

  • Sekarang, gunakan perintah berikut untuk mengekstrak, mengkompilasi, dan membangun setelah beralih ke folder yang diunduh.

$ tar zxf tk8.6.1-src.tar.gz
$ cd tcl8.6.1 $ cd unix
$ ./configure —with-tcl=../../tcl8.6.1/unix —prefix=/opt —enable-gcc $ make
$ sudo make install

Note - Pastikan, Anda mengubah nama file ke versi yang Anda unduh pada perintah 1 dan 2 di atas.

Di Tk, kami mengklasifikasikan beberapa variabel sebagai variabel khusus dan mereka memiliki penggunaan / fungsionalitas yang telah ditentukan. Daftar variabel khusus tercantum di bawah ini.

Sr.No. Variabel & Deskripsi Khusus
1

tk_library

Digunakan untuk mengatur lokasi pustaka Tk standar.

2

tk_patchLevel

Mengacu pada level patch interpreter Tk saat ini.

3

tk_strictMotif

Ketika bukan nol, Tk mencoba untuk mengikuti tampilan-dan-nuansa Motif sedekat mungkin.

4

tk_version

Menampilkan versi Tk.

Variabel khusus di atas memiliki arti khusus untuk interpreter Tk.

Contoh penggunaan variabel khusus Tk

Mari kita lihat contoh variabel khusus.

VERSI TK

#!/usr/bin/wish

puts $tk_version

Saat Anda menjalankan program, Anda akan mendapatkan hasil yang serupa seperti yang ditunjukkan di bawah ini.

8.5

TK LIBRARY PATH

#!/usr/bin/wish

puts $tk_library

Saat Anda menjalankan program, Anda akan mendapatkan hasil yang serupa seperti yang ditunjukkan di bawah ini.

/Library/Frameworks/Tk.framework/Versions/8.6/Resources/Scripts

TINGKAT PATCH TK

#!/usr/bin/wish

puts $tk_patchLevel

Saat Anda menjalankan program, Anda akan mendapatkan hasil yang serupa seperti yang ditunjukkan di bawah ini.

8.6.1

TK STRICTMOTIF

#!/usr/bin/wish

puts $tk_strictMotif

Saat Anda menjalankan program, Anda akan mendapatkan hasil yang serupa seperti yang ditunjukkan di bawah ini.

0

Komponen dasar dari aplikasi berbasis Tk disebut widget. Sebuah komponen kadang-kadang juga disebut jendela, karena, di Tk, "jendela" dan "widget" sering digunakan secara bergantian. Tk adalah sebuah paket yang menyediakan sekumpulan komponen grafis yang kaya untuk membuat aplikasi grafis dengan Tcl.

Tk menyediakan berbagai widget mulai dari widget GUI dasar seperti tombol dan menu hingga widget tampilan data. Widget sangat dapat dikonfigurasi karena memiliki konfigurasi default sehingga mudah digunakan.

Aplikasi Tk mengikuti hierarki widget di mana sejumlah widget dapat ditempatkan dalam widget lain, dan widget tersebut dalam widget lain. Widget utama dalam program Tk disebut sebagai widget root dan dapat dibuat dengan membuat instance baru dari kelas TkRoot.

Membuat Widget

Sintaks untuk membuat widget diberikan di bawah ini.

type variableName arguments options

Jenis di sini mengacu pada jenis widget seperti tombol, label, dan sebagainya. Argumen dapat bersifat opsional dan diperlukan berdasarkan sintaks individual setiap widget. Pilihannya berkisar dari ukuran hingga pemformatan setiap komponen.

Konvensi Penamaan Widget

Widget menggunakan struktur yang mirip dengan paket penamaan. Di Tk, jendela root dinamai dengan titik (.) Dan elemen di jendela, misalnya tombol bernama .myButton1. Nama variabel harus dimulai dengan huruf kecil, angka, atau tanda baca (kecuali titik). Setelah karakter pertama, karakter lain dapat berupa huruf besar atau kecil, angka, atau tanda baca (kecuali titik). Dianjurkan untuk menggunakan huruf kecil untuk memulai label.

Konvensi Penamaan Warna

Warna-warna tersebut dapat dinyatakan dengan menggunakan nama seperti merah, hijau, dan sebagainya. Itu juga dapat menggunakan representasi heksadesimal dengan #. Jumlah digit heksadesimal bisa 3, 6, 9, atau 12.

Konvensi Dimensi

Unit default adalah piksel dan digunakan ketika kita tidak menentukan dimensi. Dimensi lainnya adalah i untuk inci, m untuk milimeter, c untuk sentimeter dan p untuk titik.

Opsi Umum

Ada begitu banyak opsi umum yang tersedia untuk semua widget dan tercantum di bawah ini dalam tabel berikut -

Sr.No. Sintaks & Deskripsi
1

-background color

Digunakan untuk mengatur warna latar belakang untuk widget.

2

-borderwidth width

Digunakan untuk menggambar dengan batas dalam efek 3D.

3

-font fontDescriptor

Digunakan untuk mengatur font untuk widget.

4

-foreground color

Digunakan untuk menyetel warna latar depan untuk widget.

5

-height number

Digunakan untuk mengatur ketinggian widget.

6

-highlightbackground color

Digunakan untuk menyetel persegi panjang warna untuk menggambar di sekitar widget saat widget tidak memiliki fokus masukan.

7

-highlightcolor color

Digunakan untuk menyetel persegi panjang warna untuk menggambar di sekitar widget saat widget memiliki fokus input.

8

-padx number

Setel padx untuk widget.

9

-pady number

Setel pady untuk widget.

10

-relief condition

Setel relief 3D untuk widget ini. Kondisi tersebut dapat timbul, cekung, datar, bergerigi, padat, atau berlekuk.

11

-text text

Menyetel teks untuk widget.

12

-textvariable varName

Variabel yang terkait dengan widget. Saat teks widget berubah, variabel disetel dengan teks widget.

13

-width number

Menyetel lebar widget.

Contoh sederhana untuk opsi ditampilkan di bawah ini.

#!/usr/bin/wish

grid [label .myLabel -background red -text "Hello World" -relief ridge -borderwidth 3]
   -padx 100 -pady 100

Saat kita menjalankan program di atas, kita akan mendapatkan output sebagai berikut.

Daftar widget yang tersedia dikategorikan di bawah -

Widget dasar

Sr.No. Widget & Deskripsi
1

Label

Widget untuk menampilkan satu baris teks.

2

Button

Widget yang dapat diklik dan memicu tindakan.

3

Entry

Widget digunakan untuk menerima satu baris teks sebagai input.

4

Message

Widget untuk menampilkan banyak baris teks.

5

Text

Widget untuk menampilkan dan secara opsional mengedit beberapa baris teks.

6

Toplevel

Jendela dengan semua batas dan dekorasi yang disediakan oleh pengelola Jendela.

Widget Tata Letak

Sr.No. Widget & Deskripsi
1

Frame

Widget wadah untuk menampung widget lain.

2

Place

Widget untuk menyimpan widget lain di tempat tertentu dengan koordinat asalnya dan ukuran yang tepat.

3

Pack

Widget sederhana untuk mengatur widget dalam blok sebelum menempatkannya di widget induk.

4

Grid

Widget untuk membuat sarang widget dikemas dalam berbagai arah.

Widget Seleksi

Sr.No. Widget & Deskripsi
1

Radiobutton

Widget yang memiliki sekumpulan tombol dan label on / off, salah satunya dapat dipilih.

2

Checkbutton

Widget yang memiliki sekumpulan tombol dan label nyala / mati, banyak di antaranya dapat dipilih ..

3

Menu

Widget yang berfungsi sebagai pemegang item menu.

4

Listbox

Widget yang menampilkan daftar sel, satu atau lebih di antaranya dapat dipilih.

Widget Mega

Sr.No. Widget & Deskripsi
1

Dialog

Widget untuk menampilkan kotak dialog.

2

Spinbox

Widget yang memungkinkan pengguna memilih angka.

3

Combobox

Widget yang menggabungkan entri dengan daftar pilihan yang tersedia untuk digunakan.

4

Notebook

Widget bertab yang membantu untuk beralih di antara salah satu dari beberapa halaman, menggunakan tab indeks.

5

Progressbar

Widget untuk memberikan umpan balik visual untuk kemajuan operasi yang lama seperti unggahan file.

6

Treeview

Widget untuk menampilkan dan memungkinkan penjelajahan melalui hierarki item lebih dalam bentuk pohon.

7

Scrollbar

Gulir widget tanpa widget teks atau kanvas.

8

Scale

Widget skala untuk memilih nilai numerik melalui slider.

Widget Lainnya

Sr.No. Widget & Deskripsi
1

Canvas

Widget menggambar untuk menampilkan grafik dan gambar ..

Kami akan membahas masing-masing widget ini di bab-bab selanjutnya.

Widget dasar adalah widget umum yang tersedia di hampir semua aplikasi Tk. Daftar widget dasar yang tersedia diberikan di bawah ini -

Sr.No. Widget & Deskripsi
1 Label

Widget untuk menampilkan satu baris teks.

2 Tombol

Widget yang dapat diklik dan memicu tindakan.

3 Masuk

Widget digunakan untuk menerima satu baris teks sebagai input.

4 Pesan

Widget untuk menampilkan banyak baris teks.

5 Teks

Widget untuk menampilkan dan secara opsional mengedit beberapa baris teks.

6 Level tertinggi

Widget digunakan untuk membuat bingkai yang merupakan jendela tingkat atas baru.

Contoh Tk sederhana ditunjukkan di bawah ini menggunakan widget dasar -

#!/usr/bin/wish

grid [label .myLabel -text "Label Widget" -textvariable labelText] 
grid [text .myText -width 20 -height 5]
.myText insert 1.0 "Text\nWidget\n"
grid [entry .myEntry -text "Entry Widget"]
grid [message .myMessage -background red -foreground white -text "Message\nWidget"]
grid [button .myButton1  -text "Button" -command "set labelText clicked"]

Saat kita menjalankan program di atas, kita akan mendapatkan output berikut -

Widget tata letak digunakan untuk menangani tata letak untuk aplikasi Tk. Widget bingkai digunakan untuk mengelompokkan widget lain dan tempat, paket, dan kisi adalah pengelola tata letak untuk memberi Anda kendali penuh atas penambahan Anda ke jendela. Daftar widget tata letak yang tersedia seperti yang ditunjukkan di bawah ini -

Sr.No. Widget & Deskripsi
1 Bingkai

Widget wadah untuk menampung widget lain.

2 Tempat

Widget untuk menyimpan widget lain di tempat tertentu dengan koordinat asalnya dan ukuran yang tepat.

3 Pak

Widget sederhana untuk mengatur widget dalam blok sebelum menempatkannya di widget induk.

4 Kotak

Widget untuk membuat sarang widget dikemas dalam berbagai arah.

Contoh Tk sederhana ditampilkan di bawah ini untuk widget tata letak -

#!/usr/bin/wish

frame .myFrame1 -background red  -relief ridge -borderwidth 8 -padx 10 -pady 10
   -height 100 -width 100
frame .myFrame2 -background blue  -relief ridge -borderwidth 8 -padx 10 -pady 10
   -height 100 -width 50
pack .myFrame1 
pack .myFrame2

Saat kita menjalankan program di atas, kita akan mendapatkan output berikut -

Widget pemilihan digunakan untuk memilih opsi yang berbeda dalam aplikasi Tk. Daftar widget pilihan yang tersedia seperti yang ditunjukkan di bawah ini.

Sr.No. Widget & Deskripsi
1 Tombol radio

Widget yang memiliki sekumpulan tombol dan label on / off, salah satunya dapat dipilih.

2 Tombol centang

Widget yang memiliki sekumpulan tombol dan label on / off, banyak di antaranya dapat dipilih.

3 Tidak bisa

Widget yang berfungsi sebagai pemegang item menu.

4 Kotak daftar

Widget yang menampilkan daftar sel, satu atau lebih di antaranya dapat dipilih.

Contoh Tk sederhana ditunjukkan di bawah ini menggunakan widget pilihan -

#!/usr/bin/wish

grid [frame .gender ]
grid [label .label1  -text "Male" -textvariable myLabel1 ] 
grid [radiobutton .gender.maleBtn -text "Male"   -variable gender -value "Male"
   -command "set  myLabel1 Male"] -row 1 -column 2
grid [radiobutton .gender.femaleBtn -text "Female" -variable gender -value "Female"
   -command "set  myLabel1 Female"] -row 1 -column 3
.gender.maleBtn select
grid [label .myLabel2  -text "Range 1 not selected" -textvariable myLabelValue2 ] 
grid [checkbutton .chk1 -text "Range 1" -variable occupied1 -command {if {$occupied1 } {
   set myLabelValue2 {Range 1 selected}
} else {
   set myLabelValue2 {Range 1 not selected}
} }]
proc setLabel {text} {
   .label configure -text $text 
}

Saat kita menjalankan program di atas, kita akan mendapatkan output berikut -

Kanvas digunakan untuk menyediakan area menggambar. Sintaks untuk widget kanvas ditunjukkan di bawah ini -

canvas canvasName options

Pilihan

Opsi yang tersedia untuk widget kanvas tercantum di bawah pada tabel berikut -

Sr.No. Sintaks & Deskripsi
1

-background color

Digunakan untuk mengatur warna latar belakang untuk widget.

2

-closeenough distance

Menyetel kedekatan kursor mouse ke item yang dapat ditampilkan. Standarnya adalah 1.0 piksel. Nilai ini mungkin pecahan dan harus positif.

3

-scrollregion boundingBox

Kotak pembatas untuk total area kanvas ini.

4

-height number

Digunakan untuk mengatur ketinggian widget.

5

-width number

Menyetel lebar widget.

6

-xscrollincrement size

Jumlah untuk menggulir secara horizontal saat pengguliran diminta.

7

-yscrollincrement size

Jumlah untuk menggulir secara vertikal saat pengguliran diminta.

Contoh sederhana untuk widget kanvas ditunjukkan di bawah ini -

#!/usr/bin/wish

canvas .myCanvas -background red -width 100 -height 100 
pack .myCanvas

Saat kita menjalankan program di atas, kita akan mendapatkan output berikut -

Widget untuk Menggambar di Kanvas

Daftar widget yang tersedia untuk menggambar di kanvas tercantum di bawah -

Sr.No. Widget & Deskripsi
1 Garis

Menarik garis.

2 Busur

Menggambar busur.

3 Empat persegi panjang

Menggambar persegi panjang.

4 Lonjong

Menggambar oval.

5 Poligon

Menggambar poligon.

6 Teks

Menggambar teks.

7 Bitmap

Menggambar bitmap.

8 Gambar

Menggambar sebuah gambar.

Contoh menggunakan widget kanvas yang berbeda ditunjukkan di bawah ini -

#!/usr/bin/wish

canvas .myCanvas -background red -width 200 -height 200 
pack .myCanvas
.myCanvas create arc 10 10 50 50 -fill yellow
.myCanvas create line 10 30 50 50 100 10 -arrow both -fill yellow -smooth true
   -splinesteps 2
.myCanvas create oval 50 50 100 80 -fill yellow
.myCanvas create polygon 50 150 100 80 120 120 100 190 -fill yellow -outline green
.myCanvas create rectangle 150 150 170 170  -fill yellow
.myCanvas create text 170 20 -fill yellow -text "Hello" -font {Helvetica -18 bold}
.myCanvas create bitmap 180 50 -bitmap info

Saat kita menjalankan program di atas, kita akan mendapatkan output berikut -

Widget mega mencakup banyak widget kompleks yang sering dibutuhkan dalam beberapa aplikasi Tk skala besar. Daftar mega widget yang tersedia adalah seperti di bawah ini -

Sr.No. Widget & Deskripsi
1 Dialog

Widget untuk menampilkan kotak dialog.

2 Spinbox

Widget yang memungkinkan pengguna memilih angka.

3 Kotak kombo

Widget yang menggabungkan entri dengan daftar pilihan yang tersedia untuk digunakan.

4 Buku catatan

Widget bertab yang membantu untuk beralih di antara salah satu dari beberapa halaman, menggunakan tab indeks.

5 Progressbar

Widget untuk memberikan umpan balik visual untuk kemajuan operasi yang lama seperti unggahan file.

6 Treeview

Widget untuk menampilkan dan memungkinkan penjelajahan melalui hierarki item lebih dalam bentuk pohon.

7 Scroll bar

Gulir widget tanpa widget teks atau kanvas.

8 Skala

Widget skala untuk memilih nilai numerik melalui slider.

Contoh Tk sederhana ditunjukkan di bawah ini menggunakan beberapa widget mega.

#!/usr/bin/wish

ttk::treeview .tree -columns "Creator Year" -displaycolumns "Year Creator" 
.tree heading Creator -text "Creator" -anchor center
.tree heading Year -text "Year" -anchor center
pack .tree
.tree insert {} end -id Languages -text "Languages"
.tree insert Languages end -text C -values [list "Dennis Ritchie" "1990"]
proc scaleMe {mywidget scaleValue} {
	$mywidget configure -length $scaleValue
} 
pack [scale .s2  -from 100.0 -to 200.0 -length 100 -background yellow -borderwidth 5
   -font{Helvetica -18 bold} -foreground red -width 40 -relief ridge -orien horizontal
   -variable a -command "scaleMe .s2" ]
pack [ttk::progressbar .p1 -orient horizontal -length 200 -mode indeterminate -value 90]
pack [ttk::progressbar .p2 -orient horizontal -length 200 -mode determinate -variable a
   -maximum 75 -value 20]

Saat kita menjalankan program di atas, kita akan mendapatkan output berikut -

Ada sejumlah widget yang mendukung menampilkan teks. Sebagian besar menyediakan opsi atribut font. Sintaks untuk membuat font ditunjukkan di bawah ini -

font create fontName options

Pilihan

Opsi yang tersedia untuk pembuatan font tercantum di bawah ini dalam tabel berikut -

Sr.No. Sintaks & Deskripsi
1

-family familyName

Nama keluarga fonta.

2

-size number

Ukuran font.

3

-weight level

Berat font.

Contoh sederhana untuk pembuatan font ditunjukkan di bawah ini -

#!/usr/bin/wish

font create myFont -family Helvetica -size 18 -weight bold 
pack [label .myLabel -font myFont -text "Hello World"]

Saat kita menjalankan program di atas, kita akan mendapatkan output berikut -

Untuk mendapatkan semua font yang tersedia, kita dapat menggunakan perintah berikut -

#!/usr/bin/wish

puts [font families]

Ketika kami menjalankan perintah di atas, kami akan mendapatkan output berikut -

{Abadi MT Condensed Extra Bold} {Abadi MT Condensed Light} {Al Bayan} {Al Nile}
{Al Tarikh} {American Typewriter} {Andale Mono} Arial {Arial Black}
{Arial Hebrew} {Arial Narrow} {Arial Rounded MT Bold} {Arial Unicode MS}
Athelas Avenir {Avenir Next} {Avenir Next Condensed} Ayuthaya Baghdad {Bangla MN}
{Bangla Sangam MN} {Baoli SC} Baskerville {Baskerville Old Face} Batang {Bauhaus 93}
Beirut {Bell MT} {Bernard MT Condensed} BiauKai {Big Caslon} {Book Antiqua}
{Bookman Old Style} {Bookshelf Symbol 7} Braggadocio {Britannic Bold} {Brush Script MT}
Calibri {Calisto MT} Cambria {Cambria Math} Candara Century {Century Gothic}
{Century Schoolbook} Chalkboard {Chalkboard SE} Chalkduster {Charcoal CY} Charter
Cochin {Colonna MT} {Comic Sans MS} Consolas Constantia {Cooper Black} Copperplate
{Copperplate Gothic Bold} {Copperplate Gothic Light} Corbel {Corsiva Hebrew} Courier
{Courier New} {Curlz MT} Damascus {DecoType Naskh} Desdemona {Devanagari MT}
{Devanagari Sangam MN} Didot {DIN Alternate} {DIN Condensed} {Diwan Kufi} {Diwan Thuluth}
{Edwardian Script ITC} {Engravers MT} {Euphemia UCAS} Eurostile Farah Farisi
{Footlight MT Light} {Franklin Gothic Book} {Franklin Gothic Medium}
Futura Gabriola Garamond {GB18030 Bitmap} {Geeza Pro} Geneva {Geneva CY}
Georgia {Gill Sans} {Gill Sans MT} {Gloucester MT Extra Condensed}
{Goudy Old Style} {Gujarati MT} {Gujarati Sangam MN} Gulim GungSeo {Gurmukhi MN}
{Gurmukhi MT} {Gurmukhi Sangam MN} Haettenschweiler {Hannotate SC} {Hannotate TC}
{HanziPen SC} {HanziPen TC} Harrington HeadLineA Hei {Heiti SC} {Heiti TC}
Helvetica {Helvetica CY} {Helvetica Neue} Herculanum {Hiragino Kaku Gothic Pro}
{Hiragino Kaku Gothic ProN} {Hiragino Kaku Gothic Std} {Hiragino Kaku Gothic StdN}
{Hiragino Maru Gothic Pro} {Hiragino Maru Gothic ProN}
{Hiragino Mincho Pro} {Hiragino Mincho ProN} {Hiragino Sans GB}
{Hoefler Text} Impact {Imprint MT Shadow} InaiMathi {Iowan Old Style} Kai Kailasa
{Kaiti SC} {Kaiti TC} {Kannada MN} {Kannada Sangam MN} Kefa {Khmer MN} {Khmer Sangam MN}
{Kino MT} Kokonor Krungthep KufiStandardGK {Lantinghei SC} {Lantinghei TC} {Lao MN}
{Lao Sangam MN} {Libian SC} {LiHei Pro} {LiSong Pro} {Lucida Blackletter} {Lucida Bright}
{Lucida Calligraphy} {Lucida Console} {Lucida Fax} {Lucida Grande} {Lucida Handwriting}
{Lucida Sans} {Lucida Sans Typewriter} {Lucida Sans Unicode} {Malayalam MN}
{Malayalam Sangam MN} Marion {Marker Felt} Marlett {Matura MT Script Capitals}
Meiryo Menlo {Microsoft Sans Serif} Mishafi Mistral {Modern No. 20} Monaco {MS Gothic}
{MS Mincho} {MS PGothic} {MS PMincho} {MS Reference Sans Serif} {MS Reference Specialty}
Mshtakan {MT Extra} Muna {Myanmar MN} {Myanmar Sangam MN} Nadeem {Nanum Brush Script}
{Nanum Gothic} {Nanum Myeongjo} {Nanum Pen Script} {New Peninim MT} {News Gothic MT}
Noteworthy Onyx Optima {Oriya MN} {Oriya Sangam MN} Osaka Palatino {Palatino Linotype}
Papyrus PCMyungjo Perpetua {Perpetua Titling MT} PilGi {Plantagenet Cherokee}
Playbill PMingLiU {PT Mono} {PT Sans} {PT Sans Caption} {PT Sans Narrow} {PT Serif}
{PT Serif Caption} Raanana Rockwell {Rockwell Extra Bold} Sana Sathu {Savoye LET}
Seravek Silom SimSun {Sinhala MN} {Sinhala Sangam MN} Skia {Snell Roundhand} {Songti SC}
{Songti TC} Stencil STFangsong STHeiti STIXGeneral STIXIntegralsD STIXIntegralsSm
STIXIntegralsUp STIXIntegralsUpD STIXIntegralsUpSm STIXNonUnicode STIXSizeFiveSym
STIXSizeFourSym STIXSizeOneSym STIXSizeThreeSym STIXSizeTwoSym STIXVariants STKaiti
STSong Superclarendon Symbol Tahoma {Tamil MN} {Tamil Sangam MN} TeamViewer8 {Telugu MN}
{Telugu Sangam MN} Thonburi Times {Times New Roman} {Trebuchet MS} {Tw Cen MT} Verdana
Waseem {Wawati SC} {Wawati TC} Webdings {Weibei SC} {Weibei TC} {Wide Latin} Wingdings
{Wingdings 2} {Wingdings 3} {Xingkai SC} {Yuanti SC} YuGothic YuMincho {Yuppy SC}
{Yuppy TC} {Zapf Dingbats} Zapfino {Apple Braille} {Apple Chancery} {Apple Color Emoji}
{Apple LiGothic} {Apple LiSung} {Apple SD Gothic Neo} {Apple Symbols}
AppleGothic AppleMyungjo {Monotype Corsiva} {Monotype Sorts}

Widget gambar digunakan untuk membuat dan memanipulasi gambar. Sintaks untuk membuat gambar adalah sebagai berikut -

image create type name options

Dalam tipe sintaks di atas adalah foto atau bitmap dan nama adalah pengenal gambar.

Pilihan

Opsi yang tersedia untuk pembuatan gambar tercantum di bawah ini pada tabel berikut -

Sr.No. Sintaks & Deskripsi
1

-file fileName

Nama dari nama file gambar.

2

-height number

Digunakan untuk mengatur ketinggian widget.

3

-width number

Menyetel lebar widget.

4

-data string

Gambar dalam string berenkode basis 64.

Contoh sederhana untuk widget gambar ditunjukkan di bawah ini -

#!/usr/bin/wish

image create photo imgobj -file "/Users/rajkumar/Desktop/F Drive/pictur/vb/Forests/
   680049.png" -width 400 -height 400 
pack [label .myLabel]
.myLabel configure -image imgobj

Saat kita menjalankan program di atas, kita akan mendapatkan output berikut -

Fungsi yang tersedia untuk gambar tercantum di bawah ini pada tabel berikut -

Sr.No. Sintaks & Deskripsi
1

image delete imageName

Menghapus gambar dari memori dan widget terkait secara visual.

2

image height imageName

Mengembalikan tinggi untuk gambar.

3

image width imageName

Mengembalikan lebar gambar.

4

image type imageName

Mengembalikan tipe gambar.

5

image names

Mengembalikan daftar gambar yang tinggal di memori.

Contoh sederhana untuk menggunakan perintah widget gambar di atas ditunjukkan di bawah ini -

#!/usr/bin/wish

image create photo imgobj -file "/Users/rajkumar/images/680049.png"
   -width 400 -height 400 
pack [label .myLabel]
.myLabel configure -image imgobj
puts [image height imgobj]
puts [image width imgobj]
puts [image type imgobj]
puts [image names]
image delete imgobj

Gambar akan dihapus secara visual dan dari memori setelah perintah "image delete imgobj" dijalankan. Di konsol, hasilnya akan seperti berikut -

400
400
photo
imgobj ::tk::icons::information ::tk::icons::error ::tk::icons::
warning ::tk::icons::question

Acara dalam bentuk yang paling sederhana ditangani dengan bantuan perintah. Contoh sederhana untuk penanganan event adalah penanganan event dengan tombol dan ditunjukkan di bawah ini -

#!/usr/bin/wish

proc myEvent { } {
   puts "Event triggered"
}
pack [button .myButton1  -text "Button 1"   -command myEvent]

Saat kita menjalankan program di atas, kita akan mendapatkan output berikut -

Sebuah program sederhana untuk menampilkan acara animasi teks tunda ditunjukkan di bawah ini -

#!/usr/bin/wish

proc delay {} {
   for {set j 0} {$j < 100000} {incr j} {} 
}

label .myLabel -text "Hello................" -width 25
pack .myLabel
set str "Hello................"
for {set i [string length $str]} {$i > -2} {set i [expr $i-1]} { .myLabel configure -text [string range $str 0 $i]
   update
   delay
}

Saat kami menjalankan program, kami akan mendapatkan output berikut dengan cara animasi -

Acara setelah penundaan

Sintaks untuk acara setelah penundaan ditampilkan di bawah ini -

after milliseconds number command

Sebuah program sederhana untuk ditampilkan setelah acara penundaan ditampilkan di bawah ini -

#!/usr/bin/wish

proc addText {} {
   label .myLabel -text "Hello................" -width 25
   pack .myLabel
}
after 1000 addText

Saat kami menjalankan program, kami akan mendapatkan output berikut setelah satu detik -

Anda dapat membatalkan acara menggunakan perintah setelah membatalkan seperti yang ditunjukkan di bawah ini -

#!/usr/bin/wish

proc addText {} {
   label .myLabel -text "Hello................" -width 25
   pack .myLabel
}
after 1000 addText
after cancel addText

Pengikatan Acara

Sintaks untuk event binding seperti yang ditunjukkan di bawah ini -

bind arguments

Contoh Acara Keyboard

#!/usr/bin/wish

bind .  {puts "Key Pressed: %K "}

Ketika kami menjalankan program dan menekan huruf X, kami akan mendapatkan output berikut -

Key Pressed: X

Contoh Peristiwa Mouse

#!/usr/bin/wish

bind .  {puts "Button %b Pressed : %x %y "}

Ketika kami menjalankan program dan menekan tombol kiri mouse, kami akan mendapatkan output yang mirip dengan berikut -

Button 1 Pressed : 89 90

Menghubungkan Acara dengan Contoh Tombol

#!/usr/bin/wish

proc myEvent { } {
   puts "Event triggered"
}
pack [button .myButton1  -text "Button 1"   -command myEvent]
bind .  ".myButton1 invoke"

Saat kita menjalankan program dan menekan enter, kita akan mendapatkan output berikut -

Event triggered

Manajer jendela digunakan untuk menangani jendela tingkat atas. Ini membantu dalam mengontrol ukuran, posisi, dan atribut jendela lainnya. Di Tk,. digunakan untuk merujuk ke jendela utama. Sintaks untuk perintah jendela ditampilkan di bawah ini -

wm option window arguments

Daftar opsi yang tersedia untuk perintah Tk wm ditunjukkan pada tabel berikut -

Sr.No. Sintaks & Deskripsi
1

aspect windowName a b c d

Mencoba untuk menjaga rasio lebar / tinggi antara a / b dan c / d.

2

geometry windowName geometryParams

Gunakan untuk mengatur geometri untuk jendela.

3

grid windowName w h dx dy

Setel ukuran petak.

4

group windowName leaderName

leaderName memberikan pemimpin grup jendela terkait.

5

deiconify windowName

Membawa layar ke normal jika diminimalkan.

6

iconify windowName

Meminimalkan jendela.

7

state windowName

Mengembalikan status jendela saat ini.

8

withdraw windowName

Buka peta jendela dan hapus detailnya di memori.

9

iconbitmap windowName image

Setel atau kembalikan ikon bitmap.

10

iconPhoto windowName image

Mengatur atau mengembalikan foto ikon.

11

command windowName commandString

Merekam perintah startup di properti WM_COMMAND.

12

protocol windowName arguments

Daftarkan perintah untuk menangani nama permintaan protokol, yang bisa berupa WM_DELETE_WINDOW,

WM_SAVE_YOURSELF,

WM_TAKE_FOCUS. Misalnya: protokol wm.

WM_DELETE_WINDOW Keluar.

13

minsize windowName size

Menentukan ukuran jendela minimum.

14

maxsize windowName size

Menentukan ukuran jendela maksimum.

15

title windowName titleText

Menentukan judul untuk jendela.

16

attributes subOptions

Ada banyak atribut yang tersedia seperti alfa, layar penuh, dan sebagainya.

Beberapa perintah di atas digunakan dalam contoh berikut -

#!/usr/bin/wish

wm maxsize . 800 800
wm minsize . 300 300
wm title . "Hello"
wm attributes . -alpha ".90" 
wm geometry . 300x200+100+100

Saat kita menjalankan program di atas, kita akan mendapatkan output berikut -

Seperti yang Anda lihat, alfa adalah salah satu atribut yang tersedia. Daftar subperintah yang umum digunakan tercantum di bawah ini -

Sr.No. Sintaks & Deskripsi
1

-alpha number

Set alfa untuk jendela.

2

-fullscreen number

Angka bisa 0 untuk layar normal atau 1 untuk layar penuh.

3

-topmost number

Menyetel atau mengembalikan apakah jendela paling atas.Nilai bisa 0 atau 1.

Membuat Jendela

Kita dapat menggunakan perintah tingkat atas untuk membuat jendela dan contohnya ditunjukkan di bawah ini -

#!/usr/bin/wish

toplevel .t

Saat kita menjalankan program di atas, kita akan mendapatkan output berikut -

Menghancurkan Jendela

Kita dapat menggunakan perintah penghancuran untuk menghancurkan jendela dan contohnya ditunjukkan di bawah ini -

#!/usr/bin/wish

destroy .t

Perintah di atas akan menghancurkan jendela bernama .t.

Manajer geometri digunakan untuk mengatur geometri jendela dan bingkai lainnya. Kita bisa menggunakannya untuk menangani posisi dan ukuran jendela dan bingkai. Para tata letak widget yang digunakan untuk tujuan ini.

Penentuan posisi dan ukuran

Sintaks untuk jendela pemosisian dan ukuran ditunjukkan di bawah ini -

wm geometry . wxh+/-x+/-y

Di sini, w mengacu pada lebar dan h untuk tinggi. Diikuti dengan tanda '+' atau '-' dengan nomor berikutnya yang mengacu pada posisi x di layar. Demikian pula tanda '+' atau '-' berikut dengan angka mengacu pada posisi y di layar

Contoh sederhana ditunjukkan di bawah ini untuk Pernyataan di atas -.

#!/usr/bin/wish

wm geometry . 300x200+100+100

Saat kita menjalankan program di atas, kita akan mendapatkan output berikut -

Geometri Kisi

Sintaks untuk geometri grid ditunjukkan di bawah ini -

grid gridName -column number -row number -columnspan number -rowspan number

Kolom, baris, rentang kolom, atau rentang baris membantu dalam menyediakan geometri kisi.

Contoh sederhana ditunjukkan di bawah ini untuk pernyataan di atas -

#!/usr/bin/wish

frame .myFrame1 -background red  -height 100 -width 100
frame .myFrame2 -background blue -height 100 -width 50
grid .myFrame1 -columnspan 10 -rowspan 10 -sticky w
grid .myFrame2 -column 10 -row 2

Saat kita menjalankan program di atas, kita akan mendapatkan output berikut -