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-
- Apa itu TCL
- Cara Menjalankan TCL
- skrip TCL
- Jenis Pergantian TCL
- Variabel TCL
- Ekspresi TCL dan Operator
- Kontrol aliran TCL dan pengambilan keputusan
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
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
- 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 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
- 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 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