![]() |
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.tclou
$ tclsh nome_do_programa.tclou coloque na primeira linha do programa o comentário:
#!/usr/bin/wishou
#!/usr/bin/tclshe mude a permissão de acesso do programa para executável ou 755:
# chmod 755 nome_do_programa.tclEntã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 0O 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 $xExibe 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 é 7Quando 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
Para maiores informações
envie e-mail para info@souzamonteiro.com.
| http://www.souzamonteiro.com |
Copyright(C) 2000 by Roberto Luiz Souza Monteiro