¿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 da los resultados deseados.
TCL es un lenguaje de secuencias de comandos basado en cadenas y también un lenguaje procedimental. Fue creado por primera vez por John Osterhout en 1989. El propósito de desarrollar este lenguaje es fácil incrustar aplicaciones inti (). El lenguaje se usa comúnmente para Gui y pruebas. Por ejemplo, creación rápida de prototipos, interacción con la base de datos de pruebas, etc., En TCL por defecto Todo es una cadena.,
cómo ejecutar TCL
Hay dos formas de ejecutar código TCL
- La aplicación basada en Windows está disponible aquí archivo tcltutor exe
- aplicación basada en Linux
en el intérprete interactivo de Linux, podemos ejecutar los scripts TCL de la siguiente manera
para acceder a la sesión interactiva de TCL, ejecute el siguiente comando
los scripts TCL
el programa TCL debe tener un .,extensión tcl. Cada script en UNIX / LINUX comienza con TCL shell path
#!/usr/bin/tclsh
Ejemplo: –
#!/usr/bin/tclshPuts "Hello World"Script execution:-$ chmod +x helloworld.tcl$ ./helloworld.tcl
salida: Hola Mundo
en TCL, el comando «Puts» se usa para imprimir mensajes en la consola .la sintaxis de puts está debajo
puts?- ¿nonewline? ?¿channelId? string
- Nonewline: este parámetro opcional suprime el carácter de nueva línea por defecto. Pone una nueva línea a cada cadena
- Channelid: 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 comandos
- sustitución de variables
- sustitución de barra invertida
vamos a estudiar uno por uno
sustitución de comandos
los corchetes se utilizan para la sustitución de órdenes.
Ejemplo:
% puts % 3
Aquí el comando entre los corchetes se evalúa primero. Se devuelven los resultados .»expr» utilizado para realizar el cálculo aritmético.,
sustitución de variables
TCL realiza la sustitución de variables con la ayuda del signo$.
ejemplo:-
#!/usr/bin/tclshset a 10puts aputs $a
Aquí creamos una variable llamada «a» y le asignamos el valor «10».
- pone : se imprimirá la cadena «a», pero no el valor de ‘a’ a la consola
- pone $a : se imprimirá el valor de ‘a’ a la consola
Vamos a ejecutar y verificar. Obtendrá la salida de la siguiente manera.,
$ ./substitution.tcl
a
sustitución de barra invertida
en Tcl, la barra invertida se utiliza para escapar caracteres especiales, así como para difundir comandos largos a través de varias líneas. Cualquier carácter inmediatamente después de la barra invertida permanecerá sin sustitución. En el siguiente ejemplo, puede ver el carácter especial»», permanece después de la barra invertida.
vamos a verificar esto con un ejemplo
#!/usr/bin/tclshputs "This is my \"car\"$ ./backslashsubstitution.tclThis is my "car"
nota: – para comentar cualquier cadena en TCL » # » se utiliza. Todos los caracteres después del » # » son ignorados por el comando tclsh shell.,
TCL Variable
Una variable es un identificador que tiene 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 «set command» 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 para la variable sensible a 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
la Creación de las Variables TCL
Para crear variables en TCL, usted necesidad de utilizar «set» comando
Establecer un 10
Para obtener el valor de la variable tiene que usar símbolo «$» como
% pon $a
% 10
por Lo tanto obtenemos el valor de la variable ‘a’ 10.
TCL Command Info exist
el comando » set » se usa para crear y leer variables como se muestra arriba. El comando unset se usa para destruir una variable., El comando» info exists » devuelve 1 si varName existe como una variable (o un elemento array) en el contexto actual, de lo contrario devuelve 0. (ver ejemplo a continuación).
por ejemplo:-
% set a 20% puts $a% 20% puts % 1% unset a%puts % 0
Diferentes llaves y su comportamiento
{} -> llaves
llaves en TCL grupo de palabras juntos para convertirse en argumentos. Las llaves se usan para definir un bloque que está diferido, en otras palabras, puede ejecutarse después del resto del comando en la línea actual. Los caracteres dentro de llaves se pasan a un comando exactamente como está escrito.,
algunos puntos para recordar
- La sustitución de variables no está permitida dentro de {} llaves
- Se utiliza para crear el tipo de datos de Lista
ejemplo :-
% set x 10% puts {$x}% $x
%set number {1 2 3 4 5} -> aquí el número es un tipo de datos de Lista
%puts number number
%1 2 3 4 5
-> llaves cuadradas
Los corchetes se utilizan para crear comandos anidados. En pocas palabras, la salida de un comando 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.
Ex: –
% set x 10% puts "y : ]"%y : 10% puts "x : $x"%x : 10
() -> llaves redondas
Este comando se usa para crear el tipo de datos de la matriz y también indicar la precedencia del operador.
% set a(1) 10% set a(2) 20
Aquí » a » es un array con valor 10 y 20. Vea los comandos a continuación para imprimir claves, pares de valores de clave y valores de matriz.,
para imprimir el valor «n-ésimo» de la matriz a, usaremos Puts Puts a(N)
argumentos de línea de comandos TCL
Los Elementos de datos pasados a un script desde la línea de comandos se conocen como argumentos. El número de argumentos de la línea de comandos a un script Tcl se pasa como la variable global argc . El nombre de un script Tcl se pasa al script como la variable global argv0, y el resto de los argumentos de la línea de comandos 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: Ex
arg-script.tcl#!/usr/bin/tclsh$ ./arg-script.tcl 10 20 30salida:-
- Número de argumentos pasados a los scripts: 3
- lista de argumentos pasados al script: 10 20 30
- El nombre del script es : ARG – script.tcl
TCL Expression and Operator
Expression se construye a partir de operandos y operadores. Se evalúa con el comando «expr». Los operadores se evalúan en función de la precedencia y la asociatividad., El lenguaje TCL tiene operadores incorporados como a continuación
operador aritmético
una expresión TCL consiste en una combinación de operandos, operadores y paréntesis., Veamos ejemplo de operadores aritméticos en TCL
+ añadir dos o más operandos
Ex:-
%set a 10 %set b 20%puts 30
– restar dos o más operandos
Ex:-
%set a 20 %set b 10%puts 10
*multiplicar dos o más operandos
%set a 20 %set b 10%puts 200
/ dividir numerador por denumerador
%set a 20 %set b 10%puts 2
% Modulus operador divide numerador por de-numerador pero devuelve recordatorio
%set a 20 %set b 10%puts 0
operador relacional
comprueba si el valor del operando izquierdo es mayor que el valor del operando derecho., Si es así, entonces la condición se convierte en true y devuelve 1 Else devuelve 0.
%set a 20 %set b 10%puts 1
compruebe si el valor del operando izquierdo es menor que el valor del operando derecho., En caso afirmativo, la condición se convierte en verdadera y devuelve 1 else devuelve 0
%set a 10 %set b 20%puts 1
>= comprueba si el valor del operando izquierdo es mayor o igual que el valor del operando derecho, en caso afirmativo, la condición se convierte en verdadera y devuelve 1 Else devuelve 0
%set a 20 %set b 10%puts 1
<= comprueba si el valor del operando izquierdo es menor o igual al valor del operando derecho, si es así entonces la condición se vuelve verdadera y devuelve 1 Else devuelve 0
%set a 20 %set b 10%puts 0
!,re no iguales, entonces la condición es verdadera y return 1 else return 0
%set a 20 %set b 10%puts 1
== Comprueba si los valores de dos operandos son iguales o no, si sí, entonces la condición es verdadera y return 1 else return 0
%set a 20 %set b 10%puts 0
Operador Lógico
&& Si los dos operandos son no-cero, a continuación, la condición se convierte en verdadera y return 1 else return 0
%set a 20 %set b 10%puts 1
|| Si alguno de los dos operandos es distinto de cero, entonces la condición es verdadera y return 1 else return 0
%set a 0 %set b 10%puts 1
!, Se usa para invertir el resultado de cualquier expresión. Aquí en la salida, puede ver que el valor de ‘a’ ahora se ha convertido en 1 de 0. Mientras que el valor de ‘ b ‘ se ha convertido en 0 de 1.
%set a 0 %set b 1%puts 1%puts 0
Bitwise Operator
& (bitwise and) realice la operación bit a bit y siga la siguiente tabla para la operación.,/td>
Ex:-
%set A 10%set B 20Follow the sequence to convert decimal to binary number128 64 32 16 8 4 2 110 binary equivalents will be 128 64 32 16 8 4 2 1 à 0 0 0 0 1 0 1 020 binary equivalents will be 128 64 32 16 8 4 2 1 à 0 0 0 1 0 1 0 0So now as per above tabular rulesA ^ B will be 0 0 0 1 1 1 1 0 à 30
~ (bitwise negation) operator changes each 1 to 0 and 0 to 1, follow the table as reference
A | ~A |
---|---|
0 | 1 |
1 | 0 |
%set A 7%puts -8
Ternary Operator ( ?,:)
la sintaxis es
condition-expression? expression_1: expression_2
si la condición-exp es verdadera, exp1 se evalúa y se devuelve el resultado. Si el cond-exp es false, 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 %puts $resulttrue
Shift Operator
Shift operator se denota por<<>> operador de desplazamiento derecho., Para el operador de desplazamiento izquierdo <<, el valor de los operandos izquierdos se mueve a la izquierda por el número de bits especificado por el operando derecho.
%set A 7%set result %puts $result
Para el >> operador de desplazamiento a la derecha, la izquierda operandos valor se mueve a la derecha por el número de bits especificado por el operando derecho.
%set A 7%set result %puts $result
operador de comparación de cadenas
operador de comparación de cadenas compara el valor de ambos operandos. Si el valor del operando es el mismo, entonces devolverá 1 Else devolverá 0., En el ejemplo, el valor para A y B es 7, por lo tanto, el resultado devuelve 1.
Ex: –
%set A 7 %set B 7%set result %puts $result1
Ne (si el valor de ambos operando es diferente, devolverá 1 Else return 0)
%set A 7 %set B 8%set result %puts $result1
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 %puts $result49
List Operator
Si el valor requerido se encuentra en la lista definida, devuelve 1 Else return 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 ELSE devolverá 1.
Ex: –
set a {1 2 3}if {1 ni $a} {puts "ok"} else {puts "fail"}Output: fail
TCL control de flujo y toma de decisiones
Hay 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 la parte inferior.
si la instrucción consiste en una expresión booleana seguida de una o más instrucciones.
Si … sentencia
sintaxis: –
if expr ?entonces?, body
Si expr se evalúa a true, entonces se ejecuta el cuerpo del comando.
Ex: –
set age 10if {$age < 20} {puts "Age is less than 20"}Output: Age is less than 20
If … sentencia else
sintaxis: –
expresión If ? luego body_1 más body_2
Si la expresión se evalúa a verdadero, entonces regresará body_1 bien devolverá body_2
por ejemplo:–
set age 10if {$age < 20} {puts "Age is less than 20"} else {Puts "Age is greater than 20"}output: Age is less than 20
si Anidadas..declaración else
significa uno si o bien..si la declaración se puede poner dentro de otro si o bien..si declaraciones.,
sintaxis:-
If {expression_1} {Body_1If {expression_2} {Body_2}}
Ex: statement
instrucción Switch
la instrucción switch 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.tclset domain xswitch $domain { x { puts "x" } y { puts "y" } z { puts "z" } default { puts "unknown" }}
interruptor anidado
la instrucción switch anidado significa la instrucción switch dentro de una instrucción switch.,
sintaxis: –
Ejemplo: en el siguiente ejemplo, el valor de A es 100, y con el mismo código cambiamos la sentencia por otro valor de b es 200. La salida mostrará el valor tanto para a como para b.
#!/usr/bin/tclshset a 100set b 200switch $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
TCL loop statement
Loop statement permite ejecutar una instrucción o grupo de instrucciones varias veces. Tcl proporciona los siguientes tipos de instrucciones de bucle.,
While comando
Cuando una condición dada es verdadera, entonces una instrucción o grupo de instrucciones se repite que están en el cuerpo del bucle.
sintaxis:
While {condition} { Statements}
Ex: –
#!/usr/bin/tclshSet a 10While {$a < 12} { Puts "a is $a" incr a}
salida :
a es 10
a es 11
en el ejemplo anterior, se usa el comando integrado» incr». Significa que el valor de ‘A’ se incrementará en 1 hasta el valor máximo (< 12).
For command
ejecuta una secuencia de sentencias varias veces basadas en un valor de contador., Se incrementa 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/tclshfor {set i 0} {$i < 5} {incr i} {put $i}
Salida :-