TCL TK Eğitimi: Araç Komut Dili
TCL nedir?
TCL, TCL komutunu standart girişinden veya bir dosyadan okuyan ve istenen sonuçları veren kabuk uygulamasıdır.
TCL, dize tabanlı kodlama dili ve aynı zamanda prosedürel bir dildir. İlk olarak 1989 yılında John Osterhout tarafından oluşturulmuştur. Bu dili geliştirmenin amacı, ( ) uygulamalara kolayca yerleştirilebilmesidir. Dil genellikle GUI'ler ve testler için kullanılır. Örneğin hızlı prototipleme, Test yapmak veritabanı etkileşimi vb. TCL'de varsayılan olarak her şey bir dizedir.
Bu eğitimde şunları öğreneceksiniz:
- TCL nedir?
- TCL Nasıl Yürütülür
- TCL komut dosyaları
- TCL Oyuncu değişikliği türü
- TCL Değişkeni
- TCL İfadesi ve Operator
- TCL akış kontrolü ve karar verme
TCL Nasıl Yürütülür
TCL kodunu çalıştırmanın iki yolu vardır
- Windows tabanlı uygulama burada mevcuttur tcltutor.exe dosyası
- Linux tabanlı uygulama
In Linux etkileşimli tercüman, TCL komut dosyalarını aşağıdaki gibi çalıştırabiliriz
TCL etkileşimli oturumuna erişmek için aşağıdaki komutu çalıştırın
TCL komut dosyaları
TCL programının .tcl uzantılı olması gerekmektedir. UNIX/LINUX'taki her komut dosyası TCL kabuk yoluyla başlar
#!/usr/bin/tclsh
Örnek:-
#!/usr/bin/tclsh Puts "Hello World" Script execution:- $ chmod +x helloworld.tcl $ ./helloworld.tcl
Çıktı: Selam Dünya
TCL'de mesajları konsola yazdırmak için “Puts” Komutu kullanılır. Puts'un sözdizimi aşağıdadır
koyar?-yeni satır yok mu? ?kanal kimliği? sicim
- Yeni hat yok: Bu isteğe bağlı parametre, varsayılan komut olarak yeni satır karakterini bastırır. Her dizeye yeni bir satır koyar
- Kanal kimliği: Standart giriş kanalı (stdin) ve standart çıkış kanalı (stdout) için kullanılan bu parametre.
Eski:-
%puts "Hello World" % Hello World %puts stdout "Hello World" % Hello World
TCL Oyuncu değişikliği türü
TCL'de üç çeşit oyuncu değişikliği vardır
- Komut ikamesi
- Değişken ikame
- Ters eğik çizgi değişikliği
Tek tek inceleyelim
Komut ikamesi
Komut yerine köşeli parantezler kullanılır.
Örnek:-
% puts [expr 1*3] % 3
Burada köşeli parantez içindeki komut ilk olarak değerlendirilir. Sonuçlar aritmetik hesaplamayı yapmak için kullanılan .”expr” döndürülür.
Değişken ikame
TCL yardımıyla değişken ikamesi gerçekleştirir $ işaret.
Örnek:-
#!/usr/bin/tclsh set a 10 puts a puts $a
Burada “a” adında bir değişken oluşturup ona “10” değerini ayarlıyoruz.
- puts a : Konsola “a” dizesini yazdırır ancak 'a'nın değerini yazdırmaz
- $a koyar: 'a'nın değerini konsola yazdırır
Çalıştıralım ve doğrulayalım. Çıktıyı aşağıdaki gibi alacaksınız.
$ ./substitution.tcl
a
10
Ters eğik çizgi değişikliği
Tcl'de ters eğik çizgi, özel karakterlerden kaçmak ve uzun komutları birden fazla satıra yaymak için kullanılır. Ters eğik çizginin hemen ardından gelen herhangi bir karakter, değiştirilmeden geçerliliğini korur. Aşağıdaki örnekte, ters eğik çizgiden sonra özel karakter ” “,'nin kaldığını görebilirsiniz.
Bunu bir örnekle doğrulayalım
#!/usr/bin/tclsh puts "This is my \"car\" $ ./backslashsubstitution.tcl This is my "car"
NOT: -TCL'de herhangi bir dizeye yorum yapmak için “#” kullanılır. “#” işaretinden sonraki tüm karakterler tclsh kabuk komutu tarafından dikkate alınmaz.
TCL Değişkeni
Değişken, bir değeri tutan bir tanımlayıcıdır. Başka bir deyişle değişken, değerin saklandığı bilgisayar belleğine yapılan bir referanstır.
Değişkenler “set komutu” ile oluşturulur ve tüm değişken adları büyük/küçük harfe duyarlıdır. Merhaba, Merhaba, MERHABA anlamına gelir TCL'de hepsi farklıdır. Büyük/küçük harfe duyarlı değişken için bazı örneklere bakın.
% set name Techoit % set Name Technoit_1 % set NAME Technoit_2
Çıktı:-
% puts $name % Technoit %puts $Name %Technoit_1 %puts $NAME %Technoit_2
TCL Değişkenleri Oluşturma
TCL'de değişkenler oluşturmak için kullanmanız gerekir "Ayarlamak" komuta
10'u ayarla
Değişkenin değerini elde etmek için aşağıdaki gibi “$” sembolünü kullanmanız gerekir.
% $a koy
% 10
Böylece 'a' değişkeninin değerini 10 olarak alıyoruz.
TCL Komut Bilgisi mevcut
“set” komutu yukarıda gösterildiği gibi değişkenleri oluşturmak ve okumak için kullanılır. Unset komutu bir değişkeni yok etmek için kullanılır. “info exists” komutu, varName geçerli bağlamda bir değişken (veya dizi öğesi) olarak mevcutsa 1 döndürür, aksi takdirde 0 döndürür. (aşağıdaki örneğe bakın).
TCL'de "bilgi var", "bilgi işlevleri", "bilgi global" vb. gibi çeşitli "bilgi" komutları vardır. Burada “bilgi var” örneğini göreceğiz.
Eski:-
% set a 20 % puts $a % 20 % puts [info exists a] % 1 % unset a %puts [info exists a] % 0
Farklı diş telleri ve davranışları
{} -> Kıvırcık parantez
TCL'deki küme parantezleri bağımsız değişken oluşturmak için kelimeleri bir araya getirir. Küme parantezleri ertelenen bir bloğu tanımlamak için kullanılır; başka bir deyişle, geçerli satırdaki komutun geri kalanından SONRA çalıştırılabilir. Parantez içindeki karakterler bir komuta aynen yazıldığı gibi aktarılır.
Hatırlanması gereken bazı noktalar
- {} parantezi içinde değişken değişimine izin verilmiyor
- Liste veri türünü oluşturmak için kullanılır
Örnek:-
% set x 10 % puts {$x} % $x
%set numarası {1 2 3 4 5} -> Burada sayı bir liste veri türüdür
%$sayıyı koyar
%1 2 3 4 5
[] -> köşeli ayraçlar
Köşeli parantezler iç içe komut oluşturmak için kullanılır. Basitçe söylemek gerekirse, bir komutun çıktısı başka bir komuta argüman olarak geçirilir. Köşeli parantezler, geçerli satırdaki komutun geri kalanından ÖNCE çalıştırılan bir bloğu tanımlamak için kullanılır ve sonuç satıra yerleştirilir.
Eski: -
% set x 10 % puts "y : [set y [set x 10]]" %y : 10 % puts "x : $x" %x : 10
() -> yuvarlak parantezler
Bu komut, dizi veri türünü oluşturmak ve ayrıca operatör önceliğini belirtmek için kullanılır.
% set a(1) 10 % set a(2) 20
Burada “a”, değeri 10 ve 20 olan bir dizidir. Anahtarları, anahtar değer çiftlerini ve dizi değerlerini yazdırmak için aşağıdaki komutlara bakın.
% 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
a dizisinin “N'inci” değerini yazdırmak için Puts $a(N) kullanacağız.
TCL Komut satırı bağımsız değişkenleri
Komut satırından bir betiğe iletilen veri öğeleri bağımsız değişkenler olarak bilinir. Bir Tcl betiğine komut satırı bağımsız değişkenlerinin sayısı genel değişken olarak iletilir argc . Bir Tcl betiğinin adı, betiğe genel değişken olarak aktarılır argv0 ve komut satırı argümanlarının geri kalanı bir liste olarak iletilir. bağımsız değişken.
TCL'nin önceden tanımlanmış 3 değişkeni vardır:
$argc -> indicates the number of arguments passed to the script $argv -> indicates list of arguments $argv0 -> indicates the name of script
Eski:-
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
çıktı:-
- Komut dosyalarına iletilen bağımsız değişken sayısı: 3
- Betiğe aktarılan argümanların listesi: 10 20 30
- Komut dosyasının adı: arg-script.tcl
TCL İfadesi ve Operator
İfade, operand ve operatörlerden oluşturulur. "expr" komutuyla değerlendirilir. Operators öncelik ve ilişkiselliğe göre değerlendirilir. TCL dili aşağıdaki gibi yerleşik operatörlere sahiptir
OperaTor Kategorisi | sembol | Öncelik/İlişkililik |
---|---|---|
Aritmetik Operator | + - * / % | Soldan Sağa |
İlişkisel Operator | == != < > <= >= | Soldan sağa |
mantıksal Operator | && || ! | Soldan sağa |
Bitsel Operator | & | ^ ~ | Soldan sağa |
Üçlü Operator | ?: | Sağdan sola |
Shift Operator | << >> | Soldan sağa |
Dizi Karşılaştırma Operator | eşit ne | Soldan sağa |
Üs Operator | ** | Soldan sağa |
Liste Operator | ni'de | Soldan sağa |
Aritmetik Operator
Bir TCL ifadesi işlenenlerin, operatörlerin ve parantezlerin birleşiminden oluşur. TCL'deki Aritmetik operatörlerin örneğini görelim
+ İki veya daha fazla işlenen ekleyin
Eski:-
%set a 10 %set b 20 %puts [expr $a + $b] 30
- İki veya daha fazla işleneni çıkarır
Eski:-
%set a 20 %set b 10 %puts [expr $a - $b] 10
*İki veya daha fazla işleneni çarpma
%set a 20 %set b 10 %puts [expr $a * $b] 200
/ Payı paydaya böl
%set a 20 %set b 10 %puts [expr $a / $b] 2
% Modül operatörü payı paydaya böler ancak hatırlatıcıyı döndürür
%set a 20 %set b 10 %puts [expr $a % $b] 0
İlişkisel Operator
Sol işlenenin değerinin sağ işlenenin değerinden büyük olup olmadığını kontrol eder. Evetse, koşul doğru olur ve 1 değerini döndürür, aksi takdirde 0 değerini döndürür.
%set a 20 %set b 10 %puts [expr $a > $b] 1
Sol işlenenin değerinin sağ işlenenin değerinden küçük olup olmadığını kontrol edin. Evetse, koşul doğru olur ve 1 değerini döndürür, aksi takdirde 0 değerini döndürür
%set a 10 %set b 20 %puts [expr $a < $b] 1
>= Sol işlenenin değerinin sağ işlenenin değerinden büyük veya eşit olup olmadığını kontrol eder, eğer evet ise koşul doğru olur ve 1 değerini döndürür, aksi halde 0 değerini döndürür
%set a 20 %set b 10 %puts [expr $a >= $b] 1
<= Sol işlenenin değerinin sağ işlenenin değerinden küçük veya ona eşit olup olmadığını kontrol eder, evet ise koşul doğru olur ve 1 değerini döndürür, aksi takdirde 0 değerini döndürür
%set a 20 %set b 10 %puts [expr $a <= $b] 0
!= İki işlenenin değerlerinin eşit olup olmadığını kontrol eder, eğer değerler eşit değilse koşul doğru olur ve 1 döndürür, aksi halde 0 döndürür
%set a 20 %set b 10 %puts [expr $a != $b] 1
== İki işlenenin değerlerinin eşit olup olmadığını kontrol eder, eğer öyleyse koşul doğru olur ve 1 değerini döndürür, aksi halde 0 değerini döndürür
%set a 20 %set b 10 %puts [expr $a == $b] 0
mantıksal Operator
&& Her iki işlenen de sıfırdan farklıysa, koşul doğru olur ve 1 değerini döndürür, aksi halde 0 değerini döndürür
%set a 20 %set b 10 %puts [expr $a && $b] 1
|| İki işlenenden herhangi biri sıfırdan farklıysa, koşul doğru olur ve 1 değerini döndürür, aksi halde 0 değerini döndürür
%set a 0 %set b 10 %puts [expr $a || $b] 1
! Herhangi bir ifadenin sonucunu tersine çevirmek için kullanılır. Burada çıktıda 'a' değerinin 1'dan 0'e çıktığını görüyorsunuz. 'b' değeri ise 0'den 1 oldu.
%set a 0 %set b 1 %puts [expr !$a] 1 %puts [expr !$b] 0
Bitsel Operator
& (bitsel ve) bit bazında işlem gerçekleştirir ve işlem için aşağıdaki tabloyu takip eder.
A | B | A ve B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
1 | 0 | 0 |
Eski:-
%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
| (bit düzeyinde veya) bit bazında işlem yapın ve aşağıdaki tabloyu takip edin
A | B | bir | B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 1 | 1 |
1 | 0 | 1 |
Eski:-
%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
^ (bit düzeyinde özel veya) bit bazında işlem yapın ve aşağıdaki tabloyu takip edin
A | B | bir ^ B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 1 | 0 |
1 | 0 | 1 |
Eski:-
%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
~ (bit düzeyinde olumsuzlama) operatörü her 1'i 0'a ve 0'ı 1'e değiştirir, referans olarak tabloyu takip edin
A | ~A |
---|---|
0 | 1 |
1 | 0 |
%set A 7 %puts [expr ~$A] -8
Üçlü Operator ( ? :)
sözdizimi
condition-expression? expression_1: expression_2
Koşul-ifade doğruysa, ifade1 değerlendirilir ve sonuç döndürülür. Koşul-ifadesi yanlışsa, ifade2 değerlendirilir ve sonucu döndürülür. Örneğimizde A'nın değeri 1'dan büyük olduğundan exp6 doğrudur.
%set A 7 %set result [expr $A > 6 ? true : false] %puts $result true
Shift Operator
Shift operatör << sol kaydırma operatörü veya >> sağ kaydırma operatörü ile gösterilir. << sol kaydırma operatörü için, sol işlenenin değeri sağ işlenen tarafından belirtilen bit sayısı kadar sola taşınır.
%set A 7 %set result [expr $A << 2] %puts $result
>> sağa kaydırma operatörü için, sol işlenenin değeri, sağ işlenen tarafından belirtilen bit sayısı kadar sağa taşınır.
%set A 7 %set result [expr $A >> 2] %puts $result
Dizi Karşılaştırma Operator
Dize karşılaştırma operatörü her iki işlenenin değerini karşılaştırır. İşlenenin değeri aynıysa, 1 döndürür, aksi takdirde 0 döndürür. Örnekte hem A hem de B için değer 7'dir, bu nedenle sonuç 1 döndürür.
Eski:-
%set A 7 %set B 7 %set result [expr $A eq $B] %puts $result 1
Ne (her iki işlenenin değeri farklıysa 1 değerini döndürür, aksi halde 0 değerini döndürür)
%set A 7 %set B 8 %set result [expr $A ne $B] %puts $result 1
Üs alma operatörü
Pow () ve ** her ikisi de aynıdır. Her zaman kayan değer döndürür.
** istenilen işlenenin gücünü gösterir.
Eski:-
%set A 7 %set result [expr $A ** 2] %puts $result 49
Liste Operator
İstenilen değer tanımlanan listede bulunursa 1 değerini döndürür, aksi halde 0 değerini döndürür. Örnekte 'a' değişkeninde 1 değeri mevcut olduğundan 1 değerini döndürür.
set a {1 2 3} if {1 in $a} { puts "ok" } else { puts "fail" } Output: ok
ni, eğer gerekli değer tanımlanmış listede bulunursa 0 değerini döndürür, aksi halde 1 değerini döndürür.
Eski :-
set a {1 2 3} if {1 ni $a} { puts "ok" } else { puts "fail" } Output: fail
TCL akış kontrolü ve karar verme
Bir programın akışını değiştirmek için kullanılan çeşitli akış kontrolü ve karar verme komutları vardır. Program yürütmeleri her zaman kaynak dosyanın üstünden altına doğru başlar.
If ifadesi Boolean ifadesinin ardından bir veya daha fazla ifadeden oluşur.
Eğer ... ifade
Sözdizimi:-
eğer ifade ?sonra? vücut
eğer ifade doğru olarak değerlendirilirse, komut gövdesi yürütülür.
Eski:-
set age 10 if {$age < 20} { puts "Age is less than 20" } Output: Age is less than 20
If ... else ifadesi
Sözdizimi: -
Eğer ifade? sonra gövde_1 yoksa gövde_2
İfade doğru olarak değerlendirilirse gövde_1 değerini döndürür, aksi halde gövde_2 değerini döndürür
Eski:--
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
İç içe if..else ifadesi
Bu, bir if veya else..if ifadesinin başka bir if veya else..if ifadesinin içine yerleştirilebileceği anlamına gelir.
Sözdizimi:-
If {expression_1} { Body_1 If {expression_2} { Body_2 } }
Eski:--
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
Anahtar bildirimi
Switch ifadesi, bir değişkenin bir değerler listesine göre eşitlik açısından test edilmesini sağlar. Değer listesini değerlendirir ve bu değerlendirmenin sonucunu döndürür. Hiçbir değer eşleşmezse varsayılan değerler döndürülür.
Örnek E-posta:
#!/usr/bin/tclsh # switch_cmd.tcl set domain x switch $domain { x { puts "x" } y { puts "y" } z { puts "z" } default { puts "unknown" } }
İç içe anahtar
İç içe switch ifadesi, bir switch ifadesinin içindeki switch ifadesi anlamına gelir.
Sözdizimi :-
switch <switchingstring1> { <matchstring1> { body1 switch <switchingstring2> { <matchstring2> { body2 } ... switch <switchingstringN> { <matchStringN> { bodyN } } }
Örnek E-posta: Aşağıdaki örnekte a'nın değeri 100'dür ve aynı kodla switch ifadesini başka bir b değeri için 200'e çeviriyoruz. Çıktı hem a hem de b için değeri gösterecektir.
#!/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" } } } }
Çıktı:-
a'nın değeri 100'dür
b'nin değeri 200
TCL Döngü bildirimi
Döngü ifadesi bir ifadenin veya ifade grubunun birden fazla kez yürütülmesine izin verir. Tcl aşağıdaki döngü ifadesi türlerini sağlar.
Komut verirken
Belirli bir koşul doğru olduğunda döngü gövdesindeki bir ifade veya ifade grubu tekrarlanır.
Sözdizimi:
While {condition} { Statements }
Eski :-
#!/usr/bin/tclsh Set a 10 While {$a < 12} { Puts "a is $a" incr a }
Çıktı:-
a 10'dur
a 11'dur
Yukarıdaki örnekte "incr" yerleşik komutu kullanılmıştır. Bu, 'a' değerinin maksimum değere (<1) kadar 12 artırılacağı anlamına gelir.
Komut için
Bir sayaç değerine bağlı olarak bir dizi ifadeyi birden çok kez yürütür. Döngünün her tekrarında otomatik olarak artırılır veya azaltılır.
Sözdizimi :-
For {start} {test} {next} { Body }
Örnek E-posta: Aşağıdaki örnekte 'i' değeri 0 olarak ayarlanmış ve <5 değerine kadar artırılmıştır.
#!/usr/bin/tclsh for {set i 0} {$i < 5} {incr i} { put $i }
Çıktı:-
0 1 2 3 4
Özet:
- TCL, dize tabanlı kodlama dili ve aynı zamanda prosedürel bir dildir
- Dil genellikle GUI'ler ve testler için kullanılır.
- TCL'de varsayılan olarak her şey dizedir
- TCL, TCL komutunu standart girişinden veya bir dosyadan okuyan ve istenen sonuçları veren kabuk uygulamasıdır.
- TCL programı .tcl uzantılı olmalıdır