Tutorial de TCL TK: lenguaje de comandos de herramientas
¿Qué es TCL?
TCL es una aplicación de shell que lee el comando TCL desde su entrada estándar o desde un archivo y proporciona los resultados deseados.
TCL es un lenguaje de secuencias de comandos basado en cadenas y también un lenguaje de procedimientos. Fue creado por primera vez por John Osterhout en 1989. El propósito de desarrollar este lenguaje es integrar fácilmente aplicaciones enti (). El lenguaje se usa comúnmente para GUI y pruebas. Por ejemplo, la creación rápida de prototipos, Pruebas interacción de base de datos, etc. En TCL, por defecto, todo es una cadena.
En este tutorial, aprenderá-
- ¿Qué es TCL?
- Cómo ejecutar TCL
- secuencias de comandos TCL
- Tipo de sustitución TCL
- Variable TCL
- Expresión TCL y Operator
- Control de flujo TCL y toma de decisiones.
Cómo ejecutar TCL
Hay dos formas de ejecutar código TCL
- Windows La aplicación basada está disponible aquí. archivo exe tcltutor
- Aplicación basada en Linux
In Linux intérprete interactivo, podemos ejecutar los scripts TCL como se muestra a continuación
Para acceder a la sesión interactiva de TCL, ejecute el siguiente comando
secuencias de comandos TCL
El programa TCL debe tener una extensión .tcl. Cada script en UNIX/LINUX comienza con la ruta del shell TCL
#!/usr/bin/tclsh
Ejemplo:-
#!/usr/bin/tclsh Puts "Hello World" Script execution:- $ chmod +x helloworld.tcl $ ./helloworld.tcl
Salida: Hola Mundo
En TCL, el comando "Puts" se utiliza para imprimir mensajes en la consola. La sintaxis de las ventas se encuentra a continuación.
pone?-ninguna nueva línea? ?¿Canal ID? cadena
- Sin nueva línea: este parámetro opcional suprime el carácter de nueva línea mediante el comando predeterminado. Pone una nueva línea a cada cadena.
- Canal ID: Este parámetro se utiliza para el canal de entrada estándar (stdin) y el canal de salida estándar (stdout).
Ex:-
%puts "Hello World" % Hello World %puts stdout "Hello World" % Hello World
Tipo de sustitución TCL
Hay tres tipos de sustituciones en TCL
- Sustitución de mando
- Sustitución variable
- sustitución de barra invertida
Estudiemos uno por uno
Sustitución de mando
Los corchetes se utilizan para sustituir comandos.
Ejemplo:-
% puts [expr 1*3] % 3
Aquí se evalúa primero el comando entre corchetes. El resultado es ”expr”, que se utiliza para realizar el cálculo aritmético.
Sustitución variable
TCL realiza la sustitución de variables con la ayuda de $ firmar.
Ejemplo:-
#!/usr/bin/tclsh set a 10 puts a puts $a
Aquí creamos una variable llamada "a" y le asignamos el valor "10".
- pone a: Imprimirá la cadena "a" pero no el valor de "a" en la consola
- pone $a: Imprimirá el valor de 'a' en la consola
Ejecutémoslo y verifiquémoslo. Obtendrá el resultado como se muestra a continuación.
$ ./substitution.tcl
a
10
sustitución de barra invertida
En Tcl, la barra invertida se utiliza para escapar caracteres especiales, así como para distribuir comandos largos en varias líneas. Cualquier carácter que aparezca inmediatamente después de la barra invertida se mantendrá sin sustitución. En el siguiente ejemplo, puede ver que el carácter especial " " permanece después de la barra invertida.
Comprobemos esto con un ejemplo.
#!/usr/bin/tclsh puts "This is my \"car\" $ ./backslashsubstitution.tcl This is my "car"
NOTA: -Para comentar se utiliza cualquier cadena en TCL “#”. Todos los caracteres después del "#" son ignorados por el comando tclsh shell.
Variable TCL
Una variable es un identificador que contiene un valor. En otras palabras, una variable es una referencia a la memoria de una computadora, donde se almacena el valor.
Las variables se crean mediante el "comando set" y todos los nombres de las variables distinguen entre mayúsculas y minúsculas. Significa hola, hola, HOLA, todos son diferentes en TCL. Mire algún ejemplo de variable que distingue entre mayúsculas y minúsculas.
% set name Techoit % set Name Technoit_1 % set NAME Technoit_2
Salida:-
% puts $name % Technoit %puts $Name %Technoit_1 %puts $NAME %Technoit_2
Creando variables TCL
Para crear variables en TCL, debe usar "colocar" comando
juego de 10
Para obtener el valor de la variable hay que utilizar el símbolo “$” como
% poner $a
10%
Entonces obtenemos el valor de la variable 'a' como 10.
La información del comando TCL existe
El comando “set” se utiliza para crear y leer variables como se muestra arriba. El comando unset se utiliza para destruir una variable. El comando “info exist” devuelve 1 si varName existe como una variable (o un elemento de matriz) en el contexto actual; de lo contrario, devuelve 0 (ver el ejemplo a continuación).
Hay varios comandos de "información" en TCL como "existe información", "funciones de información", "información global", etc. Aquí veremos un ejemplo de “la información existe”.
Ex:-
% set a 20 % puts $a % 20 % puts [info exists a] % 1 % unset a %puts [info exists a] % 0
Diferentes brackets y su comportamiento.
{} -> Llaves
Las llaves en TCL agrupan palabras para convertirse en argumentos. Las llaves se utilizan para definir un bloque que se aplaza; en otras palabras, se puede ejecutar DESPUÉS del resto del comando en la línea actual. Los caracteres entre llaves se pasan a un comando exactamente como están escritos.
Algunos puntos para recordar
- No se permite la sustitución de variables dentro de {} llaves
- Solía crear el tipo de datos de lista.
Ejemplo:-
% set x 10 % puts {$x} % $x
% establecer número {1 2 3 4 5} -> Aquí el número es un tipo de datos de lista
%pone $número
% 1 2 3 4 5
[] -> llaves cuadradas
Los corchetes se utilizan para crear comandos anidados. En pocas palabras, la salida de un comando se pasa como argumento a otro comando. Los corchetes se utilizan para definir un bloque que se ejecuta ANTES del resto del comando en la línea actual y el resultado se sustituye en la línea.
Ej .: -
% set x 10 % puts "y : [set y [set x 10]]" %y : 10 % puts "x : $x" %x : 10
() -> llaves redondas
Este comando se utiliza para crear un tipo de datos de matriz y también para indicar la precedencia del operador.
% set a(1) 10 % set a(2) 20
Aquí "a" es una matriz con valores 10 y 20. Consulte los comandos a continuación para imprimir claves, pares clave-valor y valores de la matriz.
% 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
Para imprimir el valor “Nth” de la matriz a, usaremos Puts $a(N)
Argumentos de la línea de comandos TCL
Los elementos de datos pasados a un script desde la línea de comando se conocen como argumentos. El número de argumentos de la línea de comando para un script Tcl se pasa como variable global argc . El nombre de un script Tcl se pasa al script como variable global argv0 , y el resto de los argumentos de la línea de comando se pasan como una lista en argv.
TCL tiene 3 variables predefinidas como
$argc -> indicates the number of arguments passed to the script $argv -> indicates list of arguments $argv0 -> indicates the name of script
Ex:-
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
salida:-
- Número de argumentos pasados a los scripts: 3
- La lista de argumentos se pasa al script: 10 20 30
- El nombre del script es: arg-script.tcl
Expresión TCL y Operator
La expresión se construye a partir de operandos y operadores. Se evalúa con el comando "expr". OperaLos operadores se evalúan en función de la precedencia y la asociatividad. El lenguaje TCL tiene operadores integrados como los siguientes
Operacategoría de motor | Símbolo | Prioridad/Asociatividad |
---|---|---|
Aritmética Operator | + - * / % | De izquierda a derecha |
Relacional Operator | == != = | De izquierda a derecha |
lógico Operator | && || ! | De izquierda a derecha |
Bitwise Operator | & | ^ ~ | De izquierda a derecha |
Ternario Operator | ?: | De derecha a izquierda |
Shift Operator | > | De izquierda a derecha |
Comparación de cadenas Operator | ecuación ne | De izquierda a derecha |
Exponenciación Operator | ** | De izquierda a derecha |
Lista Operator | en ni | De izquierda a derecha |
Aritmética Operator
Una expresión TCL consta de una combinación de operandos, operadores y paréntesis. Veamos un ejemplo de operadores aritméticos en TCL
+ Agregar dos o más operandos
Ex:-
%set a 10 %set b 20 %puts [expr $a + $b] 30
- Resta dos o más operandos
Ex:-
%set a 20 %set b 10 %puts [expr $a - $b] 10
*Multiplica dos o más operandos
%set a 20 %set b 10 %puts [expr $a * $b] 200
/ Dividir numerador por denumerador
%set a 20 %set b 10 %puts [expr $a / $b] 2
El operador de módulo divide el numerador por el desnumerador pero devuelve un recordatorio
%set a 20 %set b 10 %puts [expr $a % $b] 0
Relacional Operator
Comprueba si el valor del operando izquierdo es mayor que el valor del operando derecho. Si es así, la condición se vuelve verdadera y devuelve 1; de lo contrario, devuelve 0.
%set a 20 %set b 10 %puts [expr $a > $b] 1
Comprueba si el valor del operando izquierdo es menor que el valor del operando derecho. Si es así, la condición se vuelve verdadera y devuelve 1; de lo contrario, devuelve 0.
%set a 10 %set b 20 %puts [expr $a < $b] 1
>= Comprueba si el valor del operando izquierdo es mayor o igual que el valor del operando derecho, si es así, la condición se vuelve verdadera y devuelve 1, de lo contrario devuelve 0
%set a 20 %set b 10 %puts [expr $a >= $b] 1
<= Comprueba si el valor del operando izquierdo es menor o igual que el valor del operando derecho, si es así, la condición se vuelve verdadera y devuelve 1, de lo contrario devuelve 0
%set a 20 %set b 10 %puts [expr $a <= $b] 0
!= Comprueba si los valores de dos operandos son iguales o no, si los valores no son iguales, la condición se vuelve verdadera y devuelve 1, de lo contrario devuelve 0
%set a 20 %set b 10 %puts [expr $a != $b] 1
== Comprueba si los valores de dos operandos son iguales o no, si es así, la condición se vuelve verdadera y devuelve 1, de lo contrario devuelve 0
%set a 20 %set b 10 %puts [expr $a == $b] 0
lógico Operator
&& Si ambos operandos son distintos de cero, entonces la condición se vuelve verdadera y devuelve 1; de lo contrario, devuelve 0.
%set a 20 %set b 10 %puts [expr $a && $b] 1
|| Si alguno de los dos operandos no es cero, entonces la condición se vuelve verdadera y devuelve 1; de lo contrario, devuelve 0.
%set a 0 %set b 10 %puts [expr $a || $b] 1
! Se utiliza para invertir el resultado de cualquier expresión. Aquí en el resultado, puede ver que el valor de 'a' ahora pasó a ser 1 de 0. Mientras que el valor de 'b' pasó de 0 a 1.
%set a 0 %set b 1 %puts [expr !$a] 1 %puts [expr !$b] 0
Bitwise Operator
& (bit a bit y) realiza la operación bit a bit y sigue la siguiente tabla para la operación.
A | B | A y B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
1 | 0 | 0 |
Ex:-
%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 a bit o) realice la operación bit a bit y siga la siguiente tabla
A | B | un | B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 1 | 1 |
1 | 0 | 1 |
Ex:-
%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 a bit exclusivo o) realiza la operación bit a bit y sigue la siguiente tabla
A | B | A^B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 1 | 0 |
1 | 0 | 1 |
Ex:-
%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
El operador ~ (negación bit a bit) cambia cada 1 a 0 y 0 a 1, siga la tabla como referencia
A | ~A |
---|---|
0 | 1 |
1 | 0 |
%set A 7 %puts [expr ~$A] -8
Ternario Operator (?:)
La sintaxis es
condition-expression? expression_1: expression_2
Si condition-exp es verdadera, se evalúa exp1 y se devuelve el resultado. Si cond-exp es falso, se evalúa exp2 y se devuelve su resultado. En nuestro ejemplo, exp1 es verdadero ya que el valor de A es mayor que 6.
%set A 7 %set result [expr $A > 6 ? true : false] %puts $result true
Shift Operator
Shift El operador se denota por el operador de desplazamiento a la izquierda << o por el operador de desplazamiento a la derecha >>. Para el operador de desplazamiento a la izquierda <<, el valor del operando izquierdo se mueve a la izquierda la cantidad de bits especificada por el operando derecho.
%set A 7 %set result [expr $A << 2] %puts $result
Para el operador de desplazamiento a la derecha >>, el valor del operando izquierdo se mueve a la derecha la cantidad de bits especificada por el operando derecho.
%set A 7 %set result [expr $A >> 2] %puts $result
Comparación de cadenas Operator
El operador de comparación de cadenas compara el valor de ambos operandos. Si el valor de los operandos es el mismo, devolverá 1; de lo contrario, devolverá 0. En el ejemplo, el valor de A y B es 7, por lo que el resultado devuelve 1.
Ex:-
%set A 7 %set B 7 %set result [expr $A eq $B] %puts $result 1
Ne (si el valor de ambos operandos es diferente, devolverá 1; de lo contrario, devolverá 0)
%set A 7 %set B 8 %set result [expr $A ne $B] %puts $result 1
Operador de exponenciación
Pow () y ** ambos son iguales. Siempre devuelve un valor flotante.
** indica la potencia del operando deseado.
Ex:-
%set A 7 %set result [expr $A ** 2] %puts $result 49
Lista Operator
Si el valor requerido se encuentra en la lista definida, devuelve 1; de lo contrario, devuelve 0. En el ejemplo, el valor 1 existe en la variable 'a', por lo que devolverá 1.
set a {1 2 3} if {1 in $a} { puts "ok" } else { puts "fail" } Output: ok
ni, si el valor requerido se encuentra en la lista definida, devolverá 0; de lo contrario, devolverá 1.
Ex :-
set a {1 2 3} if {1 ni $a} { puts "ok" } else { puts "fail" } Output: fail
Control de flujo TCL y toma de decisiones.
Existen varios comandos de control de flujo y toma de decisiones que se utilizan para alterar el flujo de un programa. Las ejecuciones del programa siempre comienzan desde la parte superior del archivo fuente hasta el final.
La declaración If consta de una expresión booleana seguida de una o más declaraciones.
Si... declaración
Sintaxis:-
si expr? entonces? cuerpo
Si expr se evalúa como verdadero, entonces se ejecuta el cuerpo del comando.
Ex:-
set age 10 if {$age < 20} { puts "Age is less than 20" } Output: Age is less than 20
Si... otra declaración
Sintaxis:-
Si expresión? entonces cuerpo_1 más cuerpo_2
Si la expresión se evalúa como verdadera, devolverá cuerpo_1; de lo contrario, devolverá cuerpo_2
Ex:--
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
Declaración anidada if...else
Significa que una declaración si o si no... si se puede poner dentro de otra declaración si o si no... si.
Sintaxis:-
If {expression_1} { Body_1 If {expression_2} { Body_2 } }
Ex:--
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
Declaración de cambio
La declaración de cambio permite probar la igualdad de una variable con una lista de valores. Evalúa la lista de valores y devuelve el resultado de esa evaluación. Si ningún valor coincide, se devolverán los valores predeterminados.
Ejemplo:
#!/usr/bin/tclsh # switch_cmd.tcl set domain x switch $domain { x { puts "x" } y { puts "y" } z { puts "z" } default { puts "unknown" } }
Interruptor anidado
La declaración de cambio anidada significa una declaración de cambio dentro de una declaración de cambio.
Sintaxis :-
switch <switchingstring1> { <matchstring1> { body1 switch <switchingstring2> { <matchstring2> { body2 } ... switch <switchingstringN> { <matchStringN> { bodyN } } }
Ejemplo:En el siguiente ejemplo, el valor de a es 100, y con el mismo código cambiamos la declaración por otro valor de b que es 200. La salida mostrará el valor tanto de a como de 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" } } } }
Salida:-
el valor de a es 100
el valor de b es 200
Declaración de bucle TCL
La instrucción de bucle permite ejecutar una instrucción o un grupo de instrucciones varias veces. Tcl ofrece los siguientes tipos de instrucciones de bucle.
mientras comando
Cuando una condición dada es verdadera, se repite una declaración o un grupo de declaraciones que están en el cuerpo del bucle.
Sintaxis:
While {condition} { Statements }
Ex :-
#!/usr/bin/tclsh Set a 10 While {$a < 12} { Puts "a is $a" incr a }
Salida:-
un es 10
un es 11
En el ejemplo anterior, se utiliza el comando integrado "incr". Significa que el valor de 'a' se incrementará en 1 hasta el valor máximo (<12).
Para el mando
Ejecuta una secuencia de declaraciones varias veces en función de un valor de contador. Aumenta o disminuye automáticamente durante cada repetición del bucle.
Sintaxis :-
For {start} {test} {next} { Body }
Ejemplo: En el siguiente ejemplo, el valor de 'i' se establece en 0 y se incrementa hasta el valor <5.
#!/usr/bin/tclsh for {set i 0} {$i < 5} {incr i} { put $i }
Salida:-
0 1 2 3 4
Resumen:
- TCL es un lenguaje de secuencias de comandos basado en cadenas y también un lenguaje de procedimientos.
- El lenguaje se usa comúnmente para GUI y pruebas.
- En TCL por defecto todo es cadena
- TCL es una aplicación de shell que lee el comando TCL desde su entrada estándar o desde un archivo y proporciona los resultados deseados.
- El programa TCL debe tener la extensión .tcl