Tutorial TCL TK: Bahasa Perintah Alat

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. Ini pertama kali dibuat oleh John Osterhout pada tahun 1989. Tujuan pengembangan bahasa ini adalah untuk memudahkan penyematan aplikasi inti ( ). Bahasa ini biasanya digunakan untuk GUI dan pengujian. Misalnya, pembuatan prototipe cepat, pengujian interaksi basis data, dll. Di TCL secara default semuanya adalah string.

Dalam tutorial ini, Anda akan belajar-

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

Di TCL, Perintah “Puts” digunakan untuk mencetak pesan ke konsol. Sintaks puts ada di bawah

menempatkan?-nonewline? ?saluranId? rangkaian

  • 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 dalam tanda kurung siku dievaluasi terlebih dahulu. Hasilnya dikembalikan dengan .”expr” yang 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 menghindari karakter khusus serta untuk menyebarkan perintah yang panjang ke beberapa baris. Setiap karakter yang 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 pengidentifikasi yang menyimpan nilai. Dengan kata lain, variabel adalah referensi ke memori komputer, tempat nilai 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 menghancurkan 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).

Ada berbagai perintah “info” di TCL seperti “info ada”, “info fungsi”, “info global”, dan seterusnya. Di sini kita akan melihat contoh “info ada”.

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

Tanda kurung kurawal di TCL mengelompokkan kata-kata menjadi argumen. Kurung kurawal digunakan untuk mendefinisikan blok yang ditangguhkan – dengan kata lain, blok tersebut dapat dijalankan SETELAH sisa perintah pada baris saat ini. Karakter 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 bertingkat. Sederhananya, output dari satu perintah diteruskan sebagai argumen ke perintah lain. Tanda kurung siku digunakan untuk menentukan blok yang dijalankan SEBELUM 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 dibangun dari operan dan operator. Ekspresi dievaluasi dengan perintah "expr". Operator dievaluasi berdasarkan prioritas dan asosiatif. Bahasa TCL memiliki operator bawaan seperti di bawah ini

Operauntuk Kategori Символ 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 tidak 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

- Mengurangi 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 ekspresi apa pun. Di sini pada outputnya terlihat nilai 'a' kini 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 dari kedua operan. Jika nilai operan sama, maka akan mengembalikan 1, jika tidak akan mengembalikan 0. Dalam contoh, nilai untuk A dan B adalah 7, maka hasilnya akan mengembalikan 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 diperlukan ditemukan dalam daftar yang ditentukan, ia mengembalikan 1, jika tidak, kembalikan 0. Misalnya, nilai 1 ada dalam variabel 'a' maka ia 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 if...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
         }
      }
   }

Example: Pada contoh berikut, nilai a adalah 100, dan dengan kode yang sama kita mengganti pernyataan dengan nilai b yang lain yaitu 200. Hasilnya akan menunjukkan 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 loop memungkinkan eksekusi suatu pernyataan atau sekelompok pernyataan beberapa kali. Tcl menyediakan jenis pernyataan looping berikut.

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

Dalam contoh di atas, perintah bawaan "incr" digunakan. Artinya nilai 'a' akan dinaikkan sebesar 1 hingga nilai maksimum (<12).

Untuk perintah

Itu mengeksekusi serangkaian pernyataan beberapa kali berdasarkan nilai counter. Secara otomatis bertambah atau berkurang selama setiap pengulangan loop.

Sintaksis :-

For {start} {test} {next} {
Body
}

Example: Dalam contoh di bawah, nilai 'i' disetel ke 0 dan bertambah hingga nilainya <5.

#!/usr/bin/tclsh

for {set i 0} {$i < 5} {incr i} {
put $i
}

Keluaran:-

0 
1 
2 
3 
4

Ringkasan:

  • TCL adalah bahasa skrip berbasis string dan juga bahasa prosedural
  • Bahasa ini biasanya digunakan untuk GUI dan pengujian
  • Di TCL secara default semuanya adalah string
  • TCL adalah aplikasi shell yang membaca perintah TCL dari input standarnya atau dari file dan memberikan hasil yang diinginkan.
  • Program TCL harus memiliki ekstensi .tcl