:TITLE: Informação sobre procs - info
;#
;# RCSID: $Header: /home/cvs/TclTutor3/lesson/Tcl_Portuguese/Tcl_Portuguese29.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: 12/01/2006
;#*********************************************************
:LESSON_TEXT_START_LEVEL 0:
O comando <B>info</B> inclui um conjunto de subcomandos que irão
fornecer toda a informação que você poderia querer sobre um proc.
Esses subcomandos irão retornar o corpo de um proc, os argumentos
para o proc, e o valor de qualquer argumento padrão.
<P>
<CENTER><B>Comandos info que retornam informação sobre um proc</B></CENTER>
<DL>
<B><DT>info args</B> <I>nomeProc</I>
<DD>Retorna uma lista dos nomes dos argumentos para o procedimento <I>nomeProc</I>.
<B><DT>info body</B> <I>nomeProc</I>
<DD>Retorna o corpo do procedimento <I>nomeProc</I>.
<B><DT>info default</B> <I>nomeProc arg nomeVar</I>
<DD>Retorna 1 se o argumento <I>arg</I> no procedimento <I>nomeProc</I> tem um
padrão, e atribui a <I>nomeVar</I> o padrão. Caso contrário, retorna 0.
</DL>
:TEXT_END:

:LESSON_TEXT_START_LEVEL 1:
O comando <B>info</B> inclui um conjunto de subcomandos que irão
fornecer toda a informação que você poderia querer sobre um proc.
Esses subcomandos irão retornar o corpo de um proc, os argumentos
para o proc, e o valor de qualquer argumento padrão.
<P>
Esses subcomandos podem ser usados para:
<UL COMPACT>
<LI> Acessar o conteúdo de um proc em um depurador de código;
<LI> Gerar procs customizados a partir de um modelo;
<LI> Exibir valores padrões enquanto se espera pela entrada.
</UL>
<P>
<CENTER><B>Comandos info que retornam informação sobre um proc</B></CENTER>
<DL>
<B><DT>info args</B> <I>nomeProc</I>
<DD>Retorna uma lista dos nomes dos argumentos para o procedimento <I>nomeProc</I>.
<B><DT>info body</B> <I>nomeProc</I>
<DD>Retorna o corpo do procedimento <I>nomeProc</I>.
<B><DT>info default</B> <I>nomeProc arg nomeVar</I>
<DD>Retorna 1 se o argumento <I>arg</I> no procedimento <I>nomeProc</I> tem um
padrão, e atribui a <I>nomeVar</I> o padrão. Caso contrário, retorna 0.
</DL>
:TEXT_END:

:LESSON_TEXT_START_LEVEL 2:
O comando <B>info</B> inclui um conjunto de subcomandos que irão
fornecer toda a informação que você poderia querer sobre um proc.
Esses subcomandos irão retornar o corpo de um proc, os argumentos
para o proc, e o valor de qualquer argumento padrão.
<P>
Esses subcomandos podem ser usados para:
<UL COMPACT>
<LI> Acessar o conteúdo de um proc em um depurador de código;
<LI> Gerar procs customizados a partir de um modelo;
<LI> Exibir valores padrões enquanto se espera pela entrada.
</UL>
<P>
O exemplo de código mostra esses subcomandos <B>info</B> sendo usados para
mostrar os argumentos e corpo para um simples proc de demonstração. Depois
que uma lista de argumentos é adquirida, <B>info default</B> é usado para
testar cada argumento para descobrir um valor padrão, e exibir esse valor
se ele existir.
<P>
Note que o comando <B>info body</B> não retorna as chaves delimitadoras
do corpo.
<P>
<CENTER><B>Comandos info que retornam informação sobre um proc</B></CENTER>
<DL>
<B><DT>info args</B> <I>nomeProc</I>
<DD>Retorna uma lista dos nomes dos argumentos para o procedimento <I>nomeProc</I>.
<B><DT>info body</B> <I>nomeProc</I>
<DD>Retorna o corpo do procedimento <I>nomeProc</I>.
<B><DT>info default</B> <I>nomeProc arg nomeVar</I>
<DD>Retorna 1 se o argumento <I>arg</I> no procedimento <I>nomeProc</I> tem um
padrão, e atribui a <I>nomeVar</I> o padrão. Caso contrário, retorna 0.
</DL>
:TEXT_END:

:CODE_START:
proc demonstracao {argumento1 {padrao "valorPadrao"} } {
  puts "Este é um procedimento de demonstração. É chamado com $argumento1 and $padrao"
}

puts "Os argumentos para o proc demonstracao são: [info args demonstracao]\n"
puts "O corpo do proc demonstracao é: [info body demonstracao]\n"

set listaArgs [info args demonstracao]

foreach arg $listaArgs {
  if {[info default demonstracao $arg valorPadrao]} {
    puts "$arg tem o valor padrão $valorPadrao"
    } else {
    puts "$arg não tem valor padrão"
    }
  }
:TEXT_END:

