Samouczek Tcl/Tk

โšก Inteligentne podsumowanie

TCL (Tool Command Language) to oparty na ciฤ…gach znakรณw jฤ™zyk skryptowy i proceduralny stworzony przez Johna Osterhouta w 1989 roku, szeroko stosowany w interfejsach graficznych i szybkich prototypach.pingi testowania, w ktรณrym domyล›lnie kaลผda wartoล›ฤ‡ traktowana jest jako ciฤ…g znakรณw.

  • ๐Ÿงต Definicja TCL: Jฤ™zyk skryptowy i proceduralny oparty na ciฤ…gach znakรณw, w ktรณrym domyล›lnie wszystko jest ciฤ…giem znakรณw.
  • โ–ถ ๏ธ Wykonanie: Uruchom skrypty Tcl za pomocฤ… powล‚oki tclsh na Windows lub Linux, z plikami o rozszerzeniu .tcl.
  • ๐Ÿ”„ Podstawienie: Obsล‚uguje podstawienie poleceล„ (nawiasy kwadratowe), zmiennych ($) i ukoล›nikรณw odwrotnych.
  • ๐Ÿ“ฆ Zmienne: Utworzono za pomocฤ… set, odczytano za pomocฤ… $, usuniฤ™to za pomocฤ… unset i sprawdzono za pomocฤ… info exists.
  • โž— Wyraลผenia: Polecenie expr ocenia operatory arytmetyczne, relacyjne, logiczne, bitowe i inne.
  • ๐Ÿ”€ Kontrola przepล‚ywu: Zapewnia instrukcje if/else, switch, while i for do podejmowania decyzji oraz pฤ™tle.

Samouczek TCL/Tk

Co to jest TCL?

TCL to aplikacja powล‚oki, ktรณra odczytuje polecenia TCL ze standardowego wejล›cia lub z pliku i daje poลผฤ…dane wyniki.

TCL to jฤ™zyk skryptowy oparty na ล‚aล„cuchach znakรณw, a jednoczeล›nie jฤ™zyk proceduralny. Zostaล‚ stworzony przez Johna Osterhouta w 1989 roku. Celem rozwojuping Ten jฤ™zyk moลผna ล‚atwo osadziฤ‡ w aplikacjach. Jest powszechnie uลผywany w interfejsach graficznych i testach. Na przykล‚ad w szybkim prototypowaniu.ping, Testy interakcja z bazฤ… danych itp. W TCL domyล›lnie wszystko jest ciฤ…giem znakรณw.

Jak wykonaฤ‡ TCL

Istniejฤ… dwa sposoby wykonania kodu TCL:

  1. Windows aplikacja jest dostฤ™pna tutaj plik exe tcltutor
  2. Aplikacja oparta na Linuksie

In Linux interaktywny interpreter, moลผemy wykonaฤ‡ skrypty TCL jak poniลผej

Aby uzyskaฤ‡ dostฤ™p do sesji interaktywnej TCL, wykonaj nastฤ™pujฤ…ce polecenie

Samouczek TCL: Jฤ™zyk poleceล„ narzฤ™dzi

Skrypty TCL

Program TCL powinien mieฤ‡ rozszerzenie .tcl. Kaลผdy skrypt w UNIX/LINUX zaczyna siฤ™ od ล›cieลผki powล‚oki TCL

#!/usr/bin/tclsh

Przykล‚ad:-

#!/usr/bin/tclsh
Puts "Hello World"
Script execution:-
$ chmod +x helloworld.tcl
$ ./helloworld.tcl

Wydajnoล›ฤ‡: Witaj ล›wiecie

W TCL polecenie โ€žPutsโ€ sล‚uลผy do drukowania wiadomoล›ci na konsoli. Skล‚adnia polecenia puts znajduje siฤ™ poniลผej

umieszcza ?-nonewline? ?channelId? string

  • Brak linii: Ten opcjonalny parametr domyล›lnie pomija znak nowego wiersza. Umieszcza nowฤ… liniฤ™ do kaลผdego ciฤ…gu
  • ID kanaล‚u: Ten parametr uลผywany dla standardowego kanaล‚u wejล›ciowego (stdin) i standardowego kanaล‚u wyjล›ciowego (stdout).

Byล‚y:-

%puts "Hello World"
% Hello World
%puts stdout  "Hello World"
% Hello World

TCL Rodzaj podstawienia

W TCL wystฤ™pujฤ… trzy rodzaje podstawieล„

  1. Zastฤ™powanie poleceล„
  2. Podstawianie zmiennych
  3. Podstawienie ukoล›nika odwrotnego

Studiujmy jeden po drugim

Zastฤ™powanie poleceล„

Do podstawienia poleceล„ uลผywa siฤ™ nawiasรณw kwadratowych.

Przykล‚ad:-

% puts [expr 1*3]
% 3

Tutaj polecenie w nawiasach kwadratowych jest najpierw przetwarzane. Zwracane sฤ… wyniki. โ€žexprโ€ sล‚uลผy do wykonywania obliczeล„ arytmetycznych.

Podstawianie zmiennych

TCL dokonuje podstawienia zmiennych za pomocฤ… $ znak.

Przykล‚ad:-

#!/usr/bin/tclsh
set  a  10
puts  a
puts  $a

Tutaj tworzymy zmiennฤ… o nazwie โ€žaโ€ i ustawiamy dla niej wartoล›ฤ‡ โ€ž10โ€.

  • puts a : Wypisuje na konsoli ciฤ…g โ€žaโ€, ale nie wartoล›ฤ‡ โ€žaโ€.
  • puts $a: Wypisuje wartoล›ฤ‡ โ€žaโ€ na konsoli

Wykonajmy to i zweryfikujmy. Otrzymasz wynik jak poniลผej.

$ ./substitution.tcl

a

10

Podstawienie ukoล›nika odwrotnego

W Tcl ukoล›nik odwrotny sล‚uลผy do escaping Znaki specjalne, a takลผe do rozkล‚adania dล‚ugich poleceล„ na wiele wierszy. Kaลผdy znak bezpoล›rednio po ukoล›niku odwrotnym pozostanie bez zmian. W poniลผszym przykล‚adzie widaฤ‡, ลผe znak specjalny โ€ž โ€œ pozostaje po ukoล›niku odwrotnym.

Sprawdลบmy to na przykล‚adzie

#!/usr/bin/tclsh

puts "This  is my  \"car\""

$ ./backslashsubstitution.tcl
This is my "car"

NOTATKA: -Do komentowania dowolnego ciฤ…gu znakรณw w TCL uลผywany jest znak โ€ž#โ€. Wszystkie znaki po โ€ž#โ€ sฤ… ignorowane przez polecenie powล‚oki tclsh.

Zmienna TCL

Zmienna to identyfikator przechowujฤ…cy wartoล›ฤ‡. Innymi sล‚owy, zmienna to odwoล‚anie do pamiฤ™ci komputera, w ktรณrej przechowywana jest wartoล›ฤ‡.

Zmienne sฤ… tworzone za pomocฤ… polecenia โ€žsetโ€, a w nazwach zmiennych rozrรณลผniana jest wielkoล›ฤ‡ liter. Oznacza to: czeล›ฤ‡, czeล›ฤ‡, czeล›ฤ‡, w TCL wszystko jest inne. Spรณjrz na przykล‚ad zmiennej rozrรณลผniajฤ…cej wielkoล›ฤ‡ liter.

% set  name  Techoit
% set  Name  Technoit_1
% set  NAME  Technoit_2

Wynik:-

% puts $name
% Technoit

%puts  $Name
%Technoit_1

%puts $NAME
%Technoit_2

Tworzenie zmiennych TCL

Aby utworzyฤ‡ zmienne w TCL, musisz uลผyฤ‡ "ustawiฤ‡" komenda

Ustaw 10

Aby uzyskaฤ‡ wartoล›ฤ‡ zmiennej, naleลผy uลผyฤ‡ symbolu โ€ž$โ€, np

% umieล›ciฤ‡ $a

% 10

Otrzymujemy wiฤ™c wartoล›ฤ‡ zmiennej โ€žaโ€ jako 10.

Istniejฤ… informacje o poleceniu TCL

Polecenie โ€žsetโ€ sล‚uลผy do tworzenia i odczytywania zmiennych, jak pokazano powyลผej. Polecenie unset sล‚uลผy do usuwania zmiennych. Polecenie โ€žinfo existsโ€ zwraca 1, jeล›li zmienna varName istnieje jako zmienna (lub element tablicy) w bieลผฤ…cym kontekล›cie, w przeciwnym razie zwraca 0 (patrz przykล‚ad poniลผej).

W TCL istniejฤ… rรณลผne polecenia โ€žinfoโ€, takie jak โ€žinfo existsโ€, โ€žinfo featuresโ€, โ€žinfo globalโ€ i tak dalej. Tutaj zobaczymy przykล‚ad polecenia โ€žinfo existsโ€.

Byล‚y:-

% set a 20
% puts $a
% 20
% puts [info exists a]
% 1
% unset a
%puts [info exists a]
% 0

Rรณลผne aparaty ortodontyczne i ich zachowanie

{} -> Nawiasy klamrowe

Nawiasy klamrowe w jฤ™zyku TCL grupujฤ… sล‚owa, tworzฤ…c argumenty. Sล‚uลผฤ… one do definiowania bloku, ktรณry jest odroczony โ€“ innymi sล‚owy, moลผe zostaฤ‡ uruchomiony PO reszcie polecenia w bieลผฤ…cym wierszu. Znaki w nawiasach klamrowych sฤ… przekazywane do polecenia dokล‚adnie tak, jak zostaล‚y napisane.

Kilka punktรณw do zapamiฤ™tania

  1. Podstawianie zmiennych nie jest dozwolone w nawiasach klamrowych {}
  2. Sล‚uลผyล‚ do tworzenia typu danych listy

Przykล‚ad:-

% set x 10
% puts {$x}
% $x

%set liczba {1 2 3 4 5} -> Tutaj liczba jest typem danych listy

%wstawia liczbฤ™ $

%1 2 3 4 5

[] -> nawiasy kwadratowe

Nawiasy kwadratowe sล‚uลผฤ… do tworzenia zagnieลผdลผonych poleceล„. Mรณwiฤ…c proล›ciej, wynik jednego polecenia jest przekazywany jako argument do innego polecenia. Nawiasy kwadratowe sล‚uลผฤ… do definiowania bloku, ktรณry jest uruchamiany PRZED resztฤ… polecenia w bieลผฤ…cym wierszu, a wynik jest wstawiany do wiersza.

Byล‚y: -

% set x 10
% puts "y : [set y [set x 10]]"
%y : 10
% puts "x : $x"
%x : 10

() -> nawiasy okrฤ…gล‚e

To polecenie sล‚uลผy do tworzenia typu danych tablicowych oraz okreล›lania pierwszeล„stwa operatorรณw.

% set a(1) 10
% set a(2) 20

Tutaj โ€žaโ€ jest tablicฤ… o wartoล›ciach 10 i 20. Zobacz poniลผsze polecenia, aby wydrukowaฤ‡ klucze, pary klucz-wartoล›ฤ‡ i wartoล›ci tablicy.

% 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

Aby wydrukowaฤ‡ โ€žN-tฤ…โ€ wartoล›ฤ‡ tablicy a, uลผyjemy Puts $a(N)

Argumenty wiersza poleceล„ TCL

Elementy danych przekazywane do skryptu z wiersza poleceล„ nazywane sฤ… argumentami. Liczba argumentรณw wiersza poleceล„ do skryptu Tcl jest przekazywana jako zmienna globalna argc. Nazwa skryptu Tcl jest przekazywana do skryptu jako zmienna globalna argv0, a pozostaล‚e argumenty wiersza poleceล„ sฤ… przekazywane jako lista argumentacja.

TCL ma 3 predefiniowane zmienne, takie jak

$argc   -> indicates the number of arguments passed to the script

$argv   -> indicates list of arguments

$argv0  -> indicates the name of script

Byล‚y:-

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

wydajnoล›ฤ‡:-

  • Liczba argumentรณw przekazanych do skryptรณw: 3
  • Do skryptu przekazywana jest lista argumentรณw: 10 20 30
  • Nazwa skryptu to: arg-script.tcl

Wyraลผenie TCL i OperaTor

Wyraลผenie jest konstruowane z operandรณw i operatorรณw. Jest ono obliczane za pomocฤ… polecenia โ€žexprโ€. Operatory sฤ… oceniane na podstawie pierwszeล„stwa i asocjatywnoล›ci. Jฤ™zyk TCL ma wbudowane operatory, jak poniลผej

OperaKategoria tor symbol Pierwszeล„stwo/ล‚ฤ…cznoล›ฤ‡
Arytmetyka OperaTor + โ€“ * / % Od lewej do prawej
Relacyjny OperaTor == != < > <= >= Od lewej do prawej
logiczny OperaTor && || ! Od lewej do prawej
Bitowy OperaTor & | ^ ~ Od lewej do prawej
Potrรณjny OperaTor ?: Od prawej do lewej
Shift OperaTor << >> Od lewej do prawej
Porรณwnanie ciฤ…gรณw OperaTor rรณwnanie ne Od lewej do prawej
Potฤ™gowanie OperaTor ** Od lewej do prawej
Lista OperaTor w ni Od lewej do prawej

Arytmetyka OperaTor

Wyraลผenie TCL skล‚ada siฤ™ z kombinacji operandรณw, operatorรณw i nawiasรณw. Zobaczmy przykล‚ad operatorรณw arytmetycznych w TCL

+ Dodaj dwa lub wiฤ™cej operandรณw

Byล‚y:-

%set a 10
%set b 20
%puts [expr $a + $b]
30

โ€“ Subtracts dwa lub wiฤ™cej operandรณw

Byล‚y:-

%set a 20
%set b 10
%puts [expr $a - $b]
10

*Mnoลผenie dwรณch lub wiฤ™cej operandรณw

%set a 20
%set b 10
%puts [expr $a * $b]
200

/ Podziel licznik przez mianownik

%set a 20
%set b 10
%puts [expr $a / $b]
2

Operator modulo dzieli licznik przez dzielnik, ale zwraca przypomnienie

%set a 20
%set b 10
%puts [expr $a % $b]
0

Relacyjny OperaTor

Sprawdza, czy wartoล›ฤ‡ lewego operandu jest wiฤ™ksza od wartoล›ci prawego operandu. Jeล›li tak, warunek staje siฤ™ prawdziwy i zwraca 1, w przeciwnym razie zwraca 0.

%set a 20
%set b 10
%puts [expr $a > $b]
1

Sprawdลบ, czy wartoล›ฤ‡ lewego operandu jest mniejsza od wartoล›ci prawego operandu. Jeล›li tak, warunek staje siฤ™ prawdziwy i zwraca 1, w przeciwnym razie zwraca 0.

%set a 10
%set b 20
%puts [expr $a < $b]
1

>= Sprawdza, czy wartoล›ฤ‡ lewego operandu jest wiฤ™ksza lub rรณwna wartoล›ci prawego operandu. Jeล›li tak, warunek staje siฤ™ prawdziwy i zwraca 1, w przeciwnym razie zwraca 0.

%set a 20
%set b 10
%puts [expr $a >= $b]
1

<= Sprawdza, czy wartoล›ฤ‡ lewego operandu jest mniejsza lub rรณwna wartoล›ci prawego operandu. Jeล›li tak, warunek staje siฤ™ prawdziwy i zwraca 1, w przeciwnym razie zwraca 0.

%set a 20
%set b 10
%puts [expr $a <= $b]
0

!= Sprawdza, czy wartoล›ci dwรณch operandรณw sฤ… rรณwne, czy nie. Jeล›li wartoล›ci nie sฤ… rรณwne, warunek staje siฤ™ prawdziwy i zwraca 1, w przeciwnym razie zwraca 0.

%set a 20
%set b 10
%puts [expr $a != $b]
1

== Sprawdza, czy wartoล›ci dwรณch operandรณw sฤ… rรณwne, czy nie. Jeล›li tak, warunek staje siฤ™ prawdziwy i zwraca 1, w przeciwnym razie zwraca 0.

%set a 20
%set b 10
%puts [expr $a == $b]
0

logiczny OperaTor

&& Jeล›li oba operandy sฤ… rรณลผne od zera, warunek staje siฤ™ prawdziwy i zwraca 1, w przeciwnym razie zwraca 0

%set a 20
%set b 10
%puts [expr $a && $b]
1

|| Jeล›li ktรณrykolwiek z dwรณch operandรณw jest rรณลผny od zera, warunek staje siฤ™ prawdziwy i zwraca 1, w przeciwnym razie zwraca 0

%set a 0
%set b 10
%puts [expr $a || $b]
1

! Sล‚uลผy do odwracania wyniku dowolnego wyraลผenia. Tutaj, na wyjล›ciu, widaฤ‡, ลผe wartoล›ฤ‡ โ€žaโ€ zmieniล‚a siฤ™ z 0 na 1. Natomiast wartoล›ฤ‡ โ€žbโ€ zmieniล‚a siฤ™ z 1 na 0.

%set a 0
%set b 1
%puts [expr !$a]
1
%puts [expr !$b]
0

Bitowy OperaTor

& (bitowe i) wykonujฤ… operacjฤ™ bitowฤ… i postฤ™pujฤ… zgodnie z poniลผszฤ… tabelฤ….

A B A i B.
0 0 0
0 1 0
1 1 1
1 0 0

Byล‚y:-

%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

| (bitowo lub) wykonaj operacjฤ™ bit po bicie i postฤ™puj zgodnie z poniลผszฤ… tabelฤ…

A B | b
0 0 0
0 1 1
1 1 1
1 0 1

Byล‚y:-

%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

^ (wyล‚ฤ…cznie bitowe lub) wykonaj operacjฤ™ bit po bicie i postฤ™puj zgodnie z poniลผszฤ… tabelฤ…

A B A^B
0 0 0
0 1 1
1 1 0
1 0 1

Byล‚y:-

%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 ~ (negacji bitowej) zmienia kaลผde 1 na 0 i 0 na 1, patrz tabela jako odniesienie

A ~A
0 1
1 0
%set A 7
%puts [expr ~$A]
-8

Potrรณjny Operator (?:)

Skล‚adnia jest

condition-expression?  expression_1: expression_2

Jeลผeli warunek-wyr jest prawdziwy, obliczane jest wyr1 i zwracany jest wynik. Jeลผeli cond-exp ma wartoล›ฤ‡ false, obliczane jest wyraลผenie exp2 i zwracany jest jego wynik. W naszym przykล‚adzie wyraลผenie 1 jest prawdziwe, poniewaลผ wartoล›ฤ‡ A jest wiฤ™ksza niลผ 6.

%set A 7
%set result [expr $A > 6 ? true : false]
%puts $result
true

Shift OperaTor

Shift operator jest oznaczony albo operatorem przesuniฤ™cia w lewo <<, albo operatorem przesuniฤ™cia w prawo >>. W przypadku operatora przesuniฤ™cia w lewo << wartoล›ฤ‡ lewego operandu jest przesuwana w lewo o liczbฤ™ bitรณw okreล›lonฤ… przez prawy operand.

%set A 7
%set result [expr $A << 2]
%puts $result

W przypadku operatora przesuniฤ™cia w prawo >> wartoล›ฤ‡ lewego operandu jest przesuwana w prawo o liczbฤ™ bitรณw okreล›lonฤ… przez prawy operand.

%set A 7
%set result [expr $A >> 2]
%puts $result

Porรณwnanie ciฤ…gรณw OperaTor

Operator porรณwnania ciฤ…gรณw znakรณw porรณwnuje wartoล›ci obu operandรณw. Jeล›li wartoล›ci operandรณw sฤ… takie same, zwrรณci 1, w przeciwnym razie zwrรณci 0. W przykล‚adzie wartoล›ฤ‡ dla A i B wynosi 7, zatem wynik zwrรณci 1.

Byล‚y:-

%set A 7
%set B 7
%set result [expr $A eq $B]
%puts $result
1

Ne (jeล›li wartoล›ci obu operandรณw sฤ… rรณลผne, zwrรณcona zostanie wartoล›ฤ‡ 1, w przeciwnym wypadku zwrรณcona zostanie wartoล›ฤ‡ 0)

%set A 7
%set B 8
%set result [expr $A ne $B]
%puts $result
1

Operator potฤ™gowania

Pow () i ** oba sฤ… takie same. Zawsze zwraca wartoล›ฤ‡ zmiennoprzecinkowฤ….

** wskazuje moc ลผฤ…danego operandu.

Byล‚y:-

%set A 7
%set result [expr $A ** 2]
%puts $result
49

Lista OperaTor

Jeล›li wymagana wartoล›ฤ‡ zostanie znaleziona na zdefiniowanej liล›cie, funkcja zwraca 1, w przeciwnym razie zwraca 0. W przykล‚adzie wartoล›ฤ‡ 1 istnieje w zmiennej โ€žaโ€, zatem funkcja zwrรณci 1.

set a {1 2 3}
if {1 in $a} {
puts "ok"
} else {
puts "fail"
}
Output: ok

ni, jeล›li ลผฤ…dana wartoล›ฤ‡ zostanie znaleziona na zdefiniowanej liล›cie, zwrรณci 0, w przeciwnym razie zwrรณci 1.

Byล‚y :-

set a {1 2 3}
if {1 ni $a} {
puts "ok"
} else {
puts "fail"
}
Output: fail

Kontrola przepล‚ywu TCL i podejmowanie decyzji

Istniejฤ… rรณลผne polecenia sterujฤ…ce przepล‚ywem i podejmowania decyzji, ktรณre sฤ… uลผywane do zmiany przebiegu programu. Wykonania programu zawsze rozpoczynajฤ… siฤ™ od gรณry pliku ลบrรณdล‚owego w dรณล‚.

Instrukcja if skล‚ada siฤ™ z wyraลผenia logicznego, po ktรณrym nastฤ™puje jedna lub wiฤ™cej instrukcji.

Jeล›liโ€ฆ oล›wiadczenie

Skล‚adnia:-

jeล›li wyraลผenie? to? ciaล‚o

jeล›li wyraลผenie ma wartoล›ฤ‡ true, wรณwczas wykonywana jest treล›ฤ‡ polecenia.

Byล‚y:-

set age 10

if {$age < 20} {
puts "Age is less than 20"
}

Output: Age is less than 20

Instrukcja if โ€ฆ else

Skล‚adnia :-

Jeล›li wyraลผenie? nastฤ™pnie body_1, w przeciwnym razie body_2

Jeล›li wyraลผenie ma wartoล›ฤ‡ true, zwrรณci treล›ฤ‡_1, w przeciwnym razie zwrรณci treล›ฤ‡_2

Byล‚y:-

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

Zagnieลผdลผona instrukcja if..else

Oznacza to, ลผe jednฤ… instrukcjฤ™ if lub else..if moลผna umieล›ciฤ‡ w innej instrukcji if lub else..if.

Skล‚adnia:-

If  {expression_1} {
Body_1
If {expression_2} {
Body_2
}
}

Byล‚y:-

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

Instrukcja zamiany

Instrukcja switch umoลผliwia sprawdzenie rรณwnoล›ci zmiennej z listฤ… wartoล›ci. Ocenia listฤ™ wartoล›ci i zwraca wynik tej oceny. Jeล›li ลผadna wartoล›ฤ‡ nie pasuje, zostanฤ… zwrรณcone wartoล›ci domyล›lne.

Przykล‚ad:

#!/usr/bin/tclsh

# switch_cmd.tcl

set domain x
switch $domain {

    x { puts "x" }
    y { puts "y" }
    z { puts "z" }
    default { puts "unknown" }
}

Przeล‚ฤ…cznik zagnieลผdลผony

Zagnieลผdลผona instrukcja switch oznacza instrukcjฤ™ switch wewnฤ…trz instrukcji switch.

Skล‚adnia :-

switch <switchingstring1> {
   <matchstring1> {
      body1
      switch <switchingstring2> {
        <matchstring2> {
           body2
         }
          ...
    switch <switchingstringN> {
          <matchStringN> {
           bodyN
         }
      }
   }

Przykล‚ad:W poniลผszym przykล‚adzie wartoล›ฤ‡ a wynosi 100, a za pomocฤ… tego samego kodu przeล‚ฤ…czamy instrukcjฤ™, aby zmieniฤ‡ wartoล›ฤ‡ b na 200. Polecenie out wyล›wietli wartoล›ฤ‡ zarรณwno dla a, jak i 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"
        }
     }
   }
}

Wynik:-

Wartoล›ฤ‡ a wynosi 100

Wartoล›ฤ‡ b wynosi 200

Instrukcja pฤ™tli TCL

Instrukcja pฤ™tli umoลผliwia wielokrotne wykonanie instrukcji lub grupy instrukcji. Tcl udostฤ™pnia nastฤ™pujฤ…ce typy instrukcji pฤ™tli:ping komunikat.

Podczas wykonywania polecenia

Gdy dany warunek jest prawdziwy, wรณwczas powtarza siฤ™ instrukcja lub grupa instrukcji znajdujฤ…cych siฤ™ w treล›ci pฤ™tli.

Skล‚adnia:

While  {condition} {
    Statements
}

Byล‚y :-

#!/usr/bin/tclsh

Set a 10

While {$a < 12} {
    Puts "a is $a"
    incr a
}

Wynik:-

a wynosi 10

a wynosi 11

W powyลผszym przykล‚adzie uลผyto wbudowanego polecenia โ€žincrโ€. Oznacza to, ลผe wartoล›ฤ‡ โ€žaโ€ bฤ™dzie zwiฤ™kszana o 1, aลผ do osiฤ…gniฤ™cia wartoล›ci maksymalnej (<12).

Na polecenie

Wykonuje sekwencjฤ™ instrukcji wielokrotnie w oparciu o wartoล›ฤ‡ licznika. Jest ona automatycznie zwiฤ™kszana lub zmniejszana podczas kaลผdego powtรณrzenia pฤ™tli.

Skล‚adnia :-

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

Przykล‚ad:W poniลผszym przykล‚adzie wartoล›ฤ‡ 'i' jest ustawiona na 0 i zwiฤ™kszana do wartoล›ci <5.

#!/usr/bin/tclsh

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

Wynik:-

0
1
2
3
4

FAQ

Tak. Tcl jest nadal uลผywany do automatyzacji, testowania, narzฤ™dzi EDA, tworzenia skryptรณw urzฤ…dzeล„ sieciowych i osadzania w aplikacjach. Narzฤ™dzie Expect i wiele frameworkรณw testowych opiera siฤ™ na Tcl, choฤ‡ jest on mniej popularny w przypadku nowych aplikacji webowych.

Tcl to jฤ™zyk skryptowy, a Tk to towarzyszฤ…cy mu graficzny zestaw narzฤ™dzi do tworzenia interfejsรณw graficznych (GUI). Razem, jako Tcl/Tk, umoลผliwiajฤ… one tworzenie wieloplatformowych aplikacji desktopowych za pomocฤ… prostych poleceล„.

Polecenie expr oblicza wyraลผenia matematyczne i logiczne w Tcl. Poniewaลผ Tcl traktuje wszystko jako ciฤ…g znakรณw, polecenie expr jest wymagane do wykonywania operacji arytmetycznych, porรณwnaล„ i operacji boolowskich.

Asystenci AI mogฤ… generowaฤ‡ kod Tcl, wyjaล›niaฤ‡ polecenia takie jak set, puts i expr, konwertowaฤ‡ pseudokod na Tcl i debugowaฤ‡ bล‚ฤ™dy skล‚adniowe, helping poczฤ…tkujฤ…cy uczฤ… siฤ™ jฤ™zyka szybciej.

Tak. Narzฤ™dzia AI potrafiฤ… tล‚umaczyฤ‡ skrypty Tcl na takie jฤ™zyki jak Python lub Perl, mapaping poleceล„ i struktur kontrolnych, jednak programiล›ci powinni sprawdziฤ‡ poprawnoล›ฤ‡ wynikรณw.

Podsumuj ten post nastฤ™pujฤ…co: