Tutorial Tcl/Tk
โก Ringkasan Cerdas
TCL (Tool Command Language) adalah bahasa skrip dan prosedural berbasis string yang dibuat oleh John Osterhout pada tahun 1989, yang banyak digunakan untuk GUI dan prototipe cepat.ping, dan pengujian, di mana setiap nilai diperlakukan sebagai string secara default.

Apa itu TCL?
TCL adalah aplikasi shell yang membaca perintah TCL dari input standarnya atau dari file dan memberikan hasil yang diinginkan.
TCL adalah bahasa skrip berbasis string dan juga bahasa prosedural. Bahasa ini pertama kali dibuat oleh John Osterhout pada tahun 1989. Tujuan pengembangannya adalah untuk...ping Bahasa ini mudah diintegrasikan ke dalam aplikasi. Bahasa ini umumnya digunakan untuk GUI dan pengujian. Misalnya, prototipe cepat.ping, pengujian interaksi basis data, dll. Di TCL secara default semuanya adalah string.
Cara Menjalankan TCL
Ada dua cara untuk mengeksekusi kode TCL:
- Windows aplikasi berbasis tersedia di sini file exe tcltutor
- Aplikasi berbasis Linux
In Linux interpreter interaktif, kita dapat menjalankan skrip TCL seperti di bawah ini
Untuk mengakses sesi interaktif TCL, jalankan perintah berikut
skrip TCL
Program TCL harus memiliki ekstensi .tcl. Setiap skrip di UNIX/LINUX dimulai dengan jalur shell TCL
#!/usr/bin/tclsh
Contoh:-
#!/usr/bin/tclsh Puts "Hello World" Script execution:- $ chmod +x helloworld.tcl $ ./helloworld.tcl
Keluaran: Halo Dunia
Dalam TCL, perintah โPutsโ digunakan untuk mencetak pesan ke konsol. Sintaks perintah puts adalah sebagai berikut.
menempatkan ?-nonewline? ?channelId? string
- Tidak ada baris baru: Parameter opsional ini menekan karakter baris baru dengan perintah default. Itu menempatkan baris baru untuk setiap string
- saluranid: Parameter ini digunakan untuk saluran masukan standar (stdin) dan saluran keluaran standar (stdout).
Mantan:-
%puts "Hello World" % Hello World %puts stdout "Hello World" % Hello World
Jenis Pergantian TCL
Ada tiga macam substitusi di TCL
- Substitusi perintah
- Substitusi variabel
- Substitusi garis miring terbalik
Mari kita pelajari satu per satu
Substitusi perintah
Tanda kurung siku digunakan untuk penggantian perintah.
Contoh:-
% puts [expr 1*3] % 3
Di sini, perintah di antara tanda kurung siku dievaluasi terlebih dahulu. Hasilnya dikembalikan. "expr" digunakan untuk melakukan perhitungan aritmatika.
Substitusi variabel
TCL melakukan substitusi variabel dengan bantuan $ tanda.
Contoh:-
#!/usr/bin/tclsh set a 10 puts a puts $a
Di sini kita membuat variabel bernama โaโ dan menetapkan nilai โ10โ padanya.
- menempatkan a : Ini akan mencetak string โaโ tetapi bukan nilai 'a' ke konsol
- menempatkan $a : Ini akan mencetak nilai 'a' ke konsol
Mari kita jalankan dan verifikasi. Anda akan mendapatkan output seperti di bawah ini.
$ ./substitution.tcl
a
10
Substitusi garis miring terbalik
Dalam Tcl, garis miring terbalik digunakan untuk escaping karakter khusus serta untuk menyebarkan perintah panjang ke beberapa baris. Karakter apa pun yang langsung mengikuti garis miring terbalik akan tetap ada tanpa penggantian. Dalam contoh di bawah ini, Anda dapat melihat karakter khusus โ โ, tetap ada setelah garis miring terbalik.
Mari kita verifikasi ini dengan sebuah contoh
#!/usr/bin/tclsh puts "This is my \"car\"" $ ./backslashsubstitution.tcl This is my "car"
CATATAN: -Untuk mengomentari string apa pun di TCL digunakan โ#โ. Semua karakter setelah โ#โ diabaikan oleh perintah tclsh shell.
Variabel TCL
Variabel adalah pengenal yang menyimpan suatu nilai. Dengan kata lain, variabel adalah referensi ke memori komputer, tempat nilai tersebut disimpan.
Variabel dibuat dengan โperintah setโ dan semua nama variabel peka huruf besar-kecil. Artinya halo, Halo, HELLO semuanya berbeda di TCL. Lihatlah beberapa contoh untuk variabel peka huruf besar-kecil.
% set name Techoit % set Name Technoit_1 % set NAME Technoit_2
Keluaran:-
% puts $name % Technoit %puts $Name %Technoit_1 %puts $NAME %Technoit_2
Membuat Variabel TCL
Untuk membuat variabel di TCL, Anda perlu menggunakan "set" Command
Tetapkan 10
Untuk memperoleh nilai variabel harus menggunakan simbol โ$โ seperti
% masukkan $a
% 10
Jadi kita mendapatkan nilai variabel 'a' sebesar 10.
Info Perintah TCL ada
Perintah โsetโ digunakan untuk membuat dan membaca variabel seperti yang ditunjukkan di atas. Perintah unset digunakan untuk menghapus variabel. Perintah โinfo existsโ mengembalikan 1 jika varName ada sebagai variabel (atau elemen array) dalam konteks saat ini, jika tidak mengembalikan 0. (lihat contoh di bawah).
Terdapat berbagai perintah โinfoโ di TCL seperti โinfo existsโ, โinfo functionsโ, โinfo globalโ, dan sebagainya. Di sini kita akan melihat contoh dari โinfo existsโ.
Mantan:-
% set a 20 % puts $a % 20 % puts [info exists a] % 1 % unset a %puts [info exists a] % 0
Kawat gigi berbeda dan perilakunya
{} -> kurung kurawal
Kurung kurawal dalam TCL mengelompokkan kata-kata menjadi argumen. Kurung kurawal digunakan untuk mendefinisikan blok yang ditunda โ dengan kata lain, blok tersebut dapat dijalankan SETELAH bagian perintah lainnya pada baris saat ini. Karakter di dalam kurung kurawal diteruskan ke perintah persis seperti yang tertulis.
Beberapa hal yang perlu diingat
- Substitusi variabel tidak diperbolehkan di dalam kurung kurawal {}
- Ini digunakan untuk membuat tipe data daftar
Contoh:-
% set x 10 % puts {$x} % $x
%set nomor {1 2 3 4 5} -> Di sini nomor adalah tipe data daftar
%memasukkan $angka
%1 2 3 4 5
[] -> kurung kurawal persegi
Tanda kurung siku digunakan untuk membuat perintah bersarang. Sederhananya, output dari satu perintah diteruskan sebagai argumen ke perintah lain. Tanda kurung siku digunakan untuk mendefinisikan blok yang dijalankan SEBELUM bagian perintah lainnya pada baris saat ini, dan hasilnya disubstitusikan ke dalam baris tersebut.
Mantan: -
% set x 10 % puts "y : [set y [set x 10]]" %y : 10 % puts "x : $x" %x : 10
() -> kurung kurawal bulat
Perintah ini digunakan untuk membuat tipe data array dan juga menunjukkan prioritas operator.
% set a(1) 10 % set a(2) 20
Di sini โaโ adalah array dengan nilai 10 dan 20. Lihat perintah di bawah untuk mencetak kunci, pasangan nilai kunci, dan nilai array.
% puts [array get a] -> To print key value pairs we use this command % 1 10 2 20 % puts [array names a] -> To print only keys % 1 2 % puts $a(1) -> To print first value of array % 10 % puts $a(2) -> To print second value of array % 20
Untuk mencetak nilai โNthโ dari array a, kita akan menggunakan Puts $a(N)
Argumen baris perintah TCL
Item data yang diteruskan ke skrip dari baris perintah dikenal sebagai argumen. Jumlah argumen baris perintah ke skrip Tcl diteruskan sebagai variabel global argumen. Nama skrip Tcl diteruskan ke skrip sebagai variabel global argv0, dan argumen baris perintah lainnya diteruskan sebagai daftar argumen.
TCL memiliki 3 variabel yang telah ditentukan sebelumnya seperti
$argc -> indicates the number of arguments passed to the script $argv -> indicates list of arguments $argv0 -> indicates the name of script
Mantan:-
arg-script.tcl #!/usr/bin/tclsh puts "number of arguments passed to the scripts : $argc" puts "list of arguments are passed to the script: $argv" puts "the name of scripts is: $argv0"
$ ./arg-script.tcl 10 20 30
keluaran:-
- Jumlah argumen yang diteruskan ke skrip: 3
- Daftar argumen diteruskan ke skrip: 10 20 30
- Nama skripnya adalah: arg-script.tcl
Ekspresi TCL dan Operator
Ekspresi dibentuk dari operan dan operator. Ekspresi dievaluasi dengan perintah โexprโ. Operator dievaluasi berdasarkan prioritas dan asosiatif. Bahasa TCL memiliki operator bawaan seperti di bawah ini
| OperaKategori tor | ะกะธะผะฒะพะป | Prioritas/Asosiasi |
|---|---|---|
| Hitung Operator | + โ * / % | Kiri ke kanan |
| Relasional Operator | == != < > <= >= | Kiri ke kanan |
| logis Operator | && || ! | Kiri ke kanan |
| bitwise Operator | & | ^ ~ | Kiri ke kanan |
| Terner Operator | ?: | Kanan ke kiri |
| Shift Operator | << >> | Kiri ke kanan |
| Perbandingan Tali Operator | persamaan ne | Kiri ke kanan |
| Eksponensiasi Operator | ** | Kiri ke kanan |
| Daftar Operator | Di ni | Kiri ke kanan |
Hitung Operator
Ekspresi TCL terdiri dari kombinasi operan, operator, dan tanda kurung. Mari lihat contoh operator Aritmatika di TCL
+ Tambahkan dua atau lebih operan
Mantan:-
%set a 10 %set b 20 %puts [expr $a + $b] 30
โ Subtracts dua atau lebih operan
Mantan:-
%set a 20 %set b 10 %puts [expr $a - $b] 10
* Kalikan dua atau lebih operan
%set a 20 %set b 10 %puts [expr $a * $b] 200
/ Bagi pembilang dengan penyebut
%set a 20 %set b 10 %puts [expr $a / $b] 2
% Operator modulus membagi pembilang dengan pembilang tetapi mengembalikan pengingat
%set a 20 %set b 10 %puts [expr $a % $b] 0
Relasional Operator
Memeriksa apakah nilai operan kiri lebih besar dari nilai operan kanan. Jika ya, maka kondisi menjadi benar dan kembalikan 1 jika tidak kembalikan 0.
%set a 20 %set b 10 %puts [expr $a > $b] 1
Periksa apakah nilai operan kiri lebih kecil dari nilai operan kanan. Jika ya, maka kondisi menjadi benar dan kembalikan 1 jika tidak kembalikan 0
%set a 10 %set b 20 %puts [expr $a < $b] 1
>= Memeriksa apakah nilai operan kiri lebih besar atau sama dengan nilai operan kanan, jika ya maka kondisi menjadi benar dan kembalikan 1 jika tidak kembalikan 0
%set a 20 %set b 10 %puts [expr $a >= $b] 1
<= Memeriksa apakah nilai operan kiri kurang dari atau sama dengan nilai operan kanan, jika ya maka kondisi menjadi benar dan kembalikan 1 jika tidak kembalikan 0
%set a 20 %set b 10 %puts [expr $a <= $b] 0
!= Memeriksa apakah nilai dua operan sama atau tidak, jika nilainya tidak sama maka kondisi menjadi benar dan kembalikan 1 jika tidak kembalikan 0
%set a 20 %set b 10 %puts [expr $a != $b] 1
== Memeriksa apakah nilai dua operan sama atau tidak, jika ya maka kondisi menjadi benar dan kembalikan 1 jika tidak kembalikan 0
%set a 20 %set b 10 %puts [expr $a == $b] 0
logis Operator
&& Jika kedua operannya bukan nol, maka kondisi menjadi benar dan menghasilkan 1 jika tidak maka akan menghasilkan 0
%set a 20 %set b 10 %puts [expr $a && $b] 1
|| Jika salah satu dari dua operan bukan nol, maka kondisi menjadi benar dan mengembalikan 1 jika tidak maka akan menghasilkan 0
%set a 0 %set b 10 %puts [expr $a || $b] 1
! Digunakan untuk membalikkan hasil dari ekspresi apa pun. Di sini, pada output, Anda dapat melihat nilai 'a' sekarang menjadi 1 dari 0. Sedangkan nilai 'b' menjadi 0 dari 1.
%set a 0 %set b 1 %puts [expr !$a] 1 %puts [expr !$b] 0
bitwise Operator
& (bitwise dan) melakukan operasi bit demi bit dan ikuti tabel di bawah ini untuk operasinya.
| A | B | A & B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 1 | 1 |
| 1 | 0 | 0 |
Mantan:-
%set A 10 %set B 20 Follow the sequence to convert decimal to binary number 128 64 32 16 8 4 2 1 10 binary equivalents will be 128 64 32 16 8 4 2 1 ร 0 0 0 0 1 0 1 0 20 binary equivalents will be 128 64 32 16 8 4 2 1 ร 0 0 0 1 0 1 0 0 So now as per above tabular rules A & B will be 0 0 0 0 0 0 0 0
| (bitwise atau) melakukan operasi bit demi bit dan ikuti tabel di bawah ini
| A | B | Sebuah | B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 1 | 1 |
| 1 | 0 | 1 |
Mantan:-
%set A 10 %set B 20 Follow the sequence to convert decimal to binary number 128 64 32 16 8 4 2 1 10 binary equivalents will be 128 64 32 16 8 4 2 1 ร 0 0 0 0 1 0 1 0 20 binary equivalents will be 128 64 32 16 8 4 2 1 ร 0 0 0 1 0 1 0 0 So now as per above tabular rules A | B will be 0 0 0 1 1 1 1 0
^ (bitwise eksklusif atau) melakukan operasi bit demi bit dan ikuti tabel di bawah ini
| A | B | SEBUAH ^ B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 1 | 0 |
| 1 | 0 | 1 |
Mantan:-
%set A 10 %set B 20 Follow the sequence to convert decimal to binary number 128 64 32 16 8 4 2 1 10 binary equivalents will be 128 64 32 16 8 4 2 1 ร 0 0 0 0 1 0 1 0 20 binary equivalents will be 128 64 32 16 8 4 2 1 ร 0 0 0 1 0 1 0 0 So now as per above tabular rules A ^ B will be 0 0 0 1 1 1 1 0 ร 30
Operator ~ (negasi bitwise) mengubah setiap 1 menjadi 0 dan 0 menjadi 1, ikuti tabel sebagai referensi
| A | ~A |
|---|---|
| 0 | 1 |
| 1 | 0 |
%set A 7 %puts [expr ~$A] -8
Terner Operauntuk ( ?:)
Sintaksnya adalah
condition-expression? expression_1: expression_2
Jika kondisi-exp benar, exp1 dievaluasi dan hasilnya dikembalikan. Jika cond-exp salah, exp2 dievaluasi dan hasilnya dikembalikan. Dalam contoh kita, exp1 benar karena nilai A lebih besar dari 6.
%set A 7 %set result [expr $A > 6 ? true : false] %puts $result true
Shift Operator
Shift Operator dilambangkan dengan operator shift kiri <<, atau operator shift kanan >>. Untuk operator shift kiri <<, nilai operan kiri digeser ke kiri berdasarkan jumlah bit yang ditentukan oleh operan kanan.
%set A 7 %set result [expr $A << 2] %puts $result
Untuk operator shift kanan >>, nilai operan kiri dipindahkan ke kanan sebanyak jumlah bit yang ditentukan oleh operan kanan.
%set A 7 %set result [expr $A >> 2] %puts $result
Perbandingan Tali Operator
Operator perbandingan string membandingkan nilai kedua operand. Jika nilai operand sama, maka akan mengembalikan 1, jika tidak maka mengembalikan 0. Dalam contoh, nilai A dan B adalah 7, oleh karena itu hasilnya adalah 1.
Mantan:-
%set A 7 %set B 7 %set result [expr $A eq $B] %puts $result 1
Ne (jika nilai kedua operan berbeda maka akan menghasilkan 1 jika tidak, kembalikan 0)
%set A 7 %set B 8 %set result [expr $A ne $B] %puts $result 1
Operator eksponen
Pow () dan ** keduanya sama. Itu selalu mengembalikan nilai mengambang.
** menunjukkan kekuatan operan yang diinginkan.
Mantan:-
%set A 7 %set result [expr $A ** 2] %puts $result 49
Daftar Operator
Jika nilai yang dibutuhkan ditemukan dalam daftar yang ditentukan, maka akan mengembalikan 1, jika tidak akan mengembalikan 0. Dalam contoh ini, nilai 1 ada dalam variabel 'a', oleh karena itu akan mengembalikan 1.
set a {1 2 3} if {1 in $a} { puts "ok" } else { puts "fail" } Output: ok
tidak, jika nilai yang diperlukan ditemukan dalam daftar yang ditentukan maka ia akan mengembalikan 0 jika tidak, kembalikan 1.
Mantan :-
set a {1 2 3} if {1 ni $a} { puts "ok" } else { puts "fail" } Output: fail
Kontrol aliran TCL dan pengambilan keputusan
Ada berbagai perintah kontrol aliran dan pengambilan keputusan yang digunakan untuk mengubah aliran suatu program. Eksekusi program selalu dimulai dari atas file sumber hingga ke bawah.
Pernyataan if terdiri dari ekspresi Boolean yang diikuti oleh satu atau lebih pernyataan.
Jikaโฆ pernyataan
Sintaksis:-
jika expr ?lalu? tubuh
jika expr dievaluasi benar, maka isi perintah dijalankan.
Mantan:-
set age 10 if {$age < 20} { puts "Age is less than 20" } Output: Age is less than 20
Pernyataan jika โฆ else
Sintaks :-
Jika ekspresi? lalu badan_1 lagi badan_2
Jika ekspresi dievaluasi menjadi benar, maka ekspresi tersebut akan mengembalikan body_1, jika tidak maka ekspresi tersebut akan mengembalikan body_2
Mantan:-
set age 10 if {$age < 20} { puts "Age is less than 20" } else { Puts "Age is greater than 20" } output: Age is less than 20
Pernyataan if..else bersarang
Artinya satu pernyataan if or else..if dapat dimasukkan ke dalam pernyataan if or else..if lainnya.
Sintaksis:-
If {expression_1} { Body_1 If {expression_2} { Body_2 } }
Mantan:-
set a 10 set b 20 if {$a == 10} { # if expression_1 is true then it will go to expression_2 if {$b == 20} { #if expression_2 is true then it will print the below string puts "value of a is 10 and b is 20" } } o/p: value of a is 10 and b is 20
Ganti pernyataan
Pernyataan switch memungkinkan variabel diuji kesetaraannya terhadap daftar nilai. Ini mengevaluasi daftar nilai dan mengembalikan hasil evaluasi itu. Jika tidak ada nilai yang cocok maka nilai default akan dikembalikan.
Example:
#!/usr/bin/tclsh # switch_cmd.tcl set domain x switch $domain { x { puts "x" } y { puts "y" } z { puts "z" } default { puts "unknown" } }
Sakelar bersarang
Pernyataan switch bersarang berarti pernyataan switch di dalam pernyataan switch.
Sintaksis :-
switch <switchingstring1> { <matchstring1> { body1 switch <switchingstring2> { <matchstring2> { body2 } ... switch <switchingstringN> { <matchStringN> { bodyN } } }
ExamplePada contoh berikut, nilai a adalah 100, dan dengan kode yang sama kita menggunakan pernyataan switch untuk nilai b lain yaitu 200. Output akan menampilkan nilai untuk a dan b.
#!/usr/bin/tclsh set a 100 set b 200 switch $a { 100 { puts "The value of a is $a" switch $b { 200 { puts "The value of b is $b" } } } }
Keluaran:-
Nilai a adalah 100
Nilai b adalah 200
Pernyataan Lingkaran TCL
Pernyataan perulangan memungkinkan eksekusi suatu pernyataan atau sekelompok pernyataan beberapa kali. Tcl menyediakan jenis perulangan berikut.ping pernyataan.
Sementara perintah
Ketika suatu kondisi tertentu benar maka suatu pernyataan atau sekelompok pernyataan berulang yang ada di badan perulangan.
Sintaksis:
While {condition} {
Statements
}
Mantan :-
#!/usr/bin/tclsh Set a 10 While {$a < 12} { Puts "a is $a" incr a }
Keluaran:-
a adalah 10
a adalah 11
Pada contoh di atas, perintah bawaan โincrโ digunakan. Artinya, nilai 'a' akan ditambah 1 hingga mencapai nilai maksimum (<12).
Untuk perintah
Fungsi ini mengeksekusi serangkaian pernyataan beberapa kali berdasarkan nilai penghitung. Nilai penghitung secara otomatis bertambah atau berkurang selama setiap pengulangan loop.
Sintaksis :-
For {start} {test} {next} {
Body
}
Example: Pada contoh di bawah ini, nilai 'i' diatur ke 0 dan ditingkatkan hingga nilainya <5.
#!/usr/bin/tclsh for {set i 0} {$i < 5} {incr i} { put $i }
Keluaran:-
0 1 2 3 4

