:TITLE: Avaliação e Substituições 2: Agrupando argumentos com {}
;#
;# RCSID: $Header: /home/cvs/TclTutor3/lesson/Tcl_Portuguese/Tcl_Portuguese4.lsn,v 1.1 2008/08/02 12:37:36 clif Exp $
;# Copyright (c) 1995 Clif Flynt
;# 9300 Fleming Rd.
;# Dexter, MI  48130
;# clif@cflynt.com
;# Veja o arquivo "AVISO" com os termos da licença.
;#
;#*********************************************************
;# Portuguese translation: Lucio Agostinho Rocha
;# E-mail: outrosdiasvirao@yahoo.com.br
;# Last update: 22/12/2005
;#*********************************************************
:LESSON_TEXT_START_LEVEL 0:
Durante a fase de substituição da avaliação do comando, os dois
operadores de agrupamento, as chaves ({}) e as aspas duplas ("") são
tratados diferentemente pelo interpretador Tcl.
<P>
Agrupar um conjunto de palavras com chaves desativa todas as 
substituições que possam ocorrer dentro do conjunto de palavras
agrupadas pelas chaves. Os caracteres dentro das chaves são
passados para o comando exatamente como eles foram escritos.
<P>
A única "Seqüência de Barra Invertida" que é processada dentro
das chaves é a barra invertida no final de uma linha. Este é ainda
um caracter de continuidade de linha.
<P>
Se você não apertou o botão <B>Executar exemplo</B> ainda, faça isso agora,
e examine os resultados do exemplo. Brinque um pouco com o código do exemplo, e
então siga adiante para a próxima lição.
:TEXT_END:
:LESSON_TEXT_START_LEVEL 1:
Durante a fase de substituição da avaliação do comando, os dois
operadores de agrupamento, as chaves ({}) e as aspas duplas (""), são
tratados diferentemente pelo interpretador Tcl.
<P>
Na última lição você viu que agrupar palavras com aspas duplas
permite que substituições ocorram dentro da delimitação pelas
aspas duplas. Todavia, agrupar palavras com chaves *desativa*
a substituição dentro da delimitação pelas chaves. Caracteres
dentro das chaves são passados para o comando exatamente como
foram escritos. A única "Seqüência de Barra Invertida" que é
processada dentro das chaves é a barra invertida no final de
uma linha. Este é ainda um caracter de continuidade de linha.
<P>
Note que chaves têm este efeito apenas quando elas são usadas
como um operador de agrupamento. Se uma string já estiver agrupada,
ou com aspas duplas ou com chaves, e chaves aparecerem dentro da
string agrupada, então essas chaves são tratadas como caracteres
ASCII. Se a string estiver agrupada com aspas duplas, as substituições
irão ocorrer, mesmo entre as chaves.
<P>
Se você não apertou o botão <B>Executar exemplo</B> ainda, faça isso agora,
e examine os resultados do exemplo. Brinque um pouco com o código do
exemplo, e então siga adiante para a próxima lição.
:TEXT_END:
<P>
:LESSON_TEXT_START_LEVEL 2:
Na última lição, você aprendeu que ambas, aspas duplas ("") e
chaves ({}) podem ser usadas para agrupar um conjunto de
palavras em uma única unidade. Todavia, esses dois operadores
de agrupamento não se comportam da mesma forma durante a
fase de avaliação do comando.
<P>
Onde aspas duplas permitem que substituições ocorram dentro
das strings delimitadas, chaves *desativam* a substituição.
O conjunto de palavras agrupadas pelas chaves é avaliado
exatamente como foi escrito. Por exemplo, a string
<PRE><CODE>
     {$nomeVariavel}
</CODE></PRE>
será passada ao comando como
<PRE><CODE>
      $nomeVariavel
</CODE></PRE>
e nenhuma substituição irá ocorrer. A única "Seqüência de Barra Invertida"
que é processada dentro de chaves é a barra invertida de
final de linha. Isso irá fazer com que ainda as duas
linhas sejam avaliadas como se não houvesse uma nova linha
depois da barra invertida.
<P>
Note que chaves têm este efeito apenas quando elas são usadas como
um operador de agrupamento. Se uma string já estiver agrupada, ou
com aspas duplas ou com chaves, e chaves ocorrerem dentro da string
delimitada, então as chaves são tratadas como caracteres ASCII. Se
a string é agrupada com aspas duplas, substituições irão ocorrer dentro
da string agrupada, mesmo entre as chaves.
<P>
Se você não apertou o botão <B>Executar exemplo</B> ainda, faça isso agora,
e examine os resultados do exemplo. Brinque um pouco com o código do exemplo,
e então siga adiante para a próxima lição.
:TEXT_END:
:CODE_START:
set Z "Araguari"
set Z_ROTULO "A capital do Brasil é:"

puts "\n................. exemplos das diferenças entre \" e \{"
puts "$Z_ROTULO $Z"
puts {$Z_ROTULO $Z}

puts "\n....... exemplos das diferenças em aninhar \{ e \" "
puts "$Z_ROTULO {$Z}"
puts {Quem disse, "O que esse país precisa é de um bom cigarro de R$0.05!"?}

puts "\n................. exemplos de \"seqüências de string de barra invertida\" "
puts {Não há substituições feitas dentro da delimitação com chaves \n \r \x0a \f \v}
puts {Mas, o caracter de nova linha no final de uma\
string é ainda avaliado como um espaço.}
:TEXT_END: