Tcl/Tk
Curso On-Line de Programação

Introdução

A linguagem Tcl/Tk foi desenvolvida pelo Dr. John K. Ousterhout e sua equipe da Universidade da California, tendo sido mantida pela Sun Microsystems e posteriormente pela Scriptics e atualmente pela Ajuba Solutions.

A linguagem Tcl é essencialmente uma linguagem de script, podendo ser compilada para criar um executável em formato binário. Tk é o seu Tool Kit, sua biblioteca gráfica.

O uso mais comum para o Tcl é na criação de programa para os sistemas UNIX, Windows e Mac. Entretanto vem crescendo o número de empresas que utilizam a linguagem Tcl em seus servidores de Web, entre elas a America On-Line( AOL ).

Tcl é uma linguagem poderosa, aliando um eficiente compilador JIT, a uma sintaxe extremamente simples. O compilador Tcl é tão eficiente, que há pouca diferença em velocidade, entre um programa Tcl interpretado e sua versão compilada.
 

O Interpretador Tcl

Os interpretadores Tcl mais usados são o wish e o tclsh. O wish é o interpretador para o X-Window, ou o Windows, enquanto o tclsh é o interpretador para o modo texto, sendo mais usado em scripts CGI.

Para executar um programa em Tcl digite na linha de comando:

$ wish nome_do_programa.tcl
ou
$ tclsh nome_do_programa.tcl
ou coloque na primeira linha do programa o comentário:
#!/usr/bin/wish
ou
#!/usr/bin/tclsh
e mude a permissão de acesso do programa para executável ou 755:
# chmod 755 nome_do_programa.tcl
Então, para executar o programa, simplesmente digite o nome do programa na linha de comando do shell.

Note que este procedimento se aplica somente ao UNIX. No Windows, simplesmente dê um duplo clique em um arquivo com a extensão *.TCL que o programa será executado.

De um modo geral o interpretador Tcl no Windows oferece mais recursos que no UNIX, entretanto, a versão UNIX é mais rápida.
 

Variáveis

Em Tcl só existe um tipo de dado: strings, ou cadeias de caracteres. Contudo, alguns comandos, especialmente os que realizam cálculos, interpretam seus arqumentos como valores numéricos ou booleanos. Nesse caso os dados estarão nos seguintes formatos:
 

Tipo Exemplo
Inteiro 123( decimal ), 0xFF( hexadecimal), 0377( octal )
Ponto flutuante 1.2, 2., 3e5, 1.23e+5
Booleano( lógico ) true, false, 0, 1, yes, no

Uma variável pode ter qualquer nome.

Para atribuir um valor a uma variável utiliza-se o comando set:

set x 0
O comando anterior atribui o valor 0( zero ) à variável x.

Para ler o valor de uma variável basta colocar o caractere $, antes do nome da variável:

puts $x
Exibe o valor da variável x no console.

Você não precisa declarar variáveis, elas são criadas à medida em que são referenciadas.
 

Substituições

Quando você passa argumentos para um comando ou atribui uma string a uma variável, Tcl primeiro interpreta o conteúdo da string passada e substitui as chamadas de funções por seus valores de retorno. Por exemplo, ao executar o comando abaixo, Tcl primeiro avaliará a string, expandindo-a, e em seguida passará a string resultante para o comando puts:

puts "O valor de 2 + 4 é [expr 2 + 4]"
Ao ler e expandir a expressão Tcl terá como resultado:
puts "O valor de 2 + 4 é 7"
e no console será exibido:
O valor de 2 + 4 é 7
Quando Tcl realiza substituções, algumas sequências de caracteres são interpretadas de forma especial. São elas:
 
Sequência Significado
\a Um beep( 0x7 )
\b Backspace( 0x8 )
\f Avanço de página( 0xC )
\n Nova linha( 0xA )
\r Retorno de carro( 0xD )
\t Tabulação horizontal( 0x9 )
\v Tabulação vertical( 0xB )
\space Espaço
\newline Espaço
\ddd Um valor octal( d=0-7 )
\xdd Um valor hexadecimal( d=0-9, a-f, A-F )
\c o próprio caractere c
\\ A própria barra \

É possível representar cadeias de caracteres entre aspas("), apóstrofos('), ou chaves({}), entretanto, Tcl não fará nenhuma substituição caso a cadeia de caracteres esteja entre chaves. Por exemplo:

puts {O valor de 2 + 4 é [expr 2 + 4]}
produzirá como saída no console:
O valor de 2 + 4 é [expr 2 + 4]}
Sem realizar nenhuma substituição.
 

Blocos de comandos

Pode-se agrupar comandos em blocos, colocando-se todos os comando entre chaves:

if {$x == 1}  {
    set y 1
    set z 2
}
O comando anterior execurá o bloco {set y 0; set z 2} caso o conteúdo da variável x seja 1.
 

Operadores

Os operadores matemáticos e lógicos suportados por Tcl são os seguintes, em órdem de precedência:
 

Operador Significado
- ~ ! Negativo, Não bit a bit, Negação lógica
* / % Multiplicação, divisão, parte inteira da divisão
<< >> Deslocamento de bits à esquerda, Deslocamento de bits à direita
< > <= >= Menor, Maior, menor ou igual, maior ou igual
== != Igual( comparação lógica ), diferente
& E( AND ) bit a bit
^ OU EXCLUSIVO( XOR ) bit a bit
| OU( OR ) bit a bit
&& E lógico( AND )
|| OU lógico( OR )
x ? y : z Se x então y, caso contrário, z

Tcl também suporta as seguintes funções matemáticas através do comando expr:
 

Função Significado
abs Módulo
acos Arco-cosseno
asin Arco-seno
atan Arco-tangente
atan2 Arco-tangente
ceil Arredonda para maior
cos Cosseno
cosh Cosseno hyperbólico
double Transforma em um número de dupla precisão
exp Calcula o número e elevado a x
floor Arredonda para menor
fmod Calcula o resto de uma divisão
hypot Calcula a hypotenusa de um triângulo retângulo
int Converte em inteiro
log Calcula o logarítimo natural de x
log10 Calcula o logarítimo na base 10 de x
pow x elevado a y
rand Gera um número aleatório
round Arredonda um número
sin Seno
sinh Seno hyperbólico
sqrt Raiz quadrada
tan Tangente
tanh Tangente hyperbólica

Para realizar uma operação matemática basta passar a expressão para o comando expr:

puts [expr 2 + 3 * (1 + sin(32))]
Exibirá no console:
6.65428004373


Exibindo saída no console

Para exibir saída no console, utiliza-se o comando puts:

puts "Alô Mundo!\n"
Exibira no console:
Alô Mundo!


Comentários

Comentários em Tcl começam com o caractere sustenido(#). Comentários podem vir em qualquer parte do programa, contudo, se vierem no final de uma linha de código, deve ser precedidos do um caractere ponto-e-vírgula(;):

puts "Esta linha contém um comentário\n"; # Este é um comentário
puts "Esta linha contém um comentário incorreto\n" # Este comentário não foi precedido do sial (;) e gerará um erro
# Este comentário é válido
puts "OK!"


Pontuação

Todos os comandos em Tcl devem ser terminados por um ponto-e-vírgula ou por uma nova linha:

puts "Esta é uma linha\n"; puts "Esta é uma outra linha\n"
é equivalente a:
puts "Esta é uma linha\n"
puts "Esta é uma outra linha\n"


Exercícios

  1. Escreva um programa em Tcl que calcule a hypotenusa de um triângulo retângulo com catetos 4 e 5.
  2. Escreva um programa que calcule a média entre os números 12 e 46.
Respostas
  1. puts "A hypotenusa do triângulo retângulo cujos catetos são 4 e 5 é [expr hypot(4,5)]"
  2. puts "A média dos números 12 e 46 é [expr (12 + 46) / 2]"


Para maiores informações envie e-mail para info@souzamonteiro.com.


http://www.souzamonteiro.com
info@souzamonteiro.com

Copyright(C) 2000 by Roberto Luiz Souza Monteiro