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.

  • ๐Ÿงต Definisi TCL: Bahasa skrip dan prosedural berbasis string di mana semuanya secara default berupa string.
  • โ–ถ ๏ธ eksekusi: Jalankan skrip Tcl melalui shell tclsh pada Windows atau Linux, dengan file yang menggunakan ekstensi .tcl.
  • ๐Ÿ”„ Pengganti: Mendukung substitusi perintah (kurung siku), variabel ($), dan garis miring terbalik.
  • ๐Ÿ“ฆ Variabel: Dibuat dengan set, dibaca dengan $, dihapus dengan unset, dan diperiksa dengan info exists.
  • โž— Ekspresi: Perintah expr mengevaluasi operator aritmatika, relasional, logis, bitwise, dan operator lainnya.
  • ๐Ÿ”€ Alur kontrol: Menyediakan pernyataan if/else, switch, while, dan for untuk pengambilan keputusan dan perulangan.

Tutorial TCL/Tk

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:

  1. Windows aplikasi berbasis tersedia di sini file exe tcltutor
  2. Aplikasi berbasis Linux

In Linux interpreter interaktif, kita dapat menjalankan skrip TCL seperti di bawah ini

Untuk mengakses sesi interaktif TCL, jalankan perintah berikut

Tutorial TCL: Bahasa Perintah Alat

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

  1. Substitusi perintah
  2. Substitusi variabel
  3. 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

  1. Substitusi variabel tidak diperbolehkan di dalam kurung kurawal {}
  2. 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

Pertanyaan Umum Demo Slot

Ya. Tcl masih digunakan untuk otomatisasi, pengujian, alat EDA, pembuatan skrip perangkat jaringan, dan penyematan dalam aplikasi. Alat Expect dan banyak kerangka kerja pengujian bergantung pada Tcl, meskipun kurang umum untuk aplikasi web baru.

Tcl adalah bahasa skrip, sedangkan Tk adalah perangkat lunak pendukungnya berupa toolkit grafis untuk membangun GUI. Bersama-sama sebagai Tcl/Tk, keduanya memungkinkan Anda untuk menulis aplikasi desktop lintas platform dengan perintah sederhana.

Perintah expr mengevaluasi ekspresi matematika dan logika di Tcl. Karena Tcl memperlakukan semuanya sebagai string, expr diperlukan untuk melakukan operasi aritmatika, perbandingan, dan boolean.

Asisten AI dapat menghasilkan kode Tcl, menjelaskan perintah seperti set, puts, dan expr, mengkonversi pseudocode ke Tcl, dan men-debug kesalahan sintaks, membantuping Para pemula mempelajari bahasa tersebut lebih cepat.

Ya. Alat AI dapat menerjemahkan skrip Tcl ke dalam bahasa seperti... Python atau Perl, petaping perintah dan struktur kontrol, meskipun pengembang harus meninjau output untuk memastikan kebenarannya.

Ringkaslah postingan ini dengan: