@c Language: Brazilian Portuguese, Encoding: iso-8859-1
@c /Runtime.texi/1.21/Sat Jun  9 01:31:20 2007/-ko/
@menu
* Introdução a Ambiente em Tempo de Execução::  
* Interrupções::                  
* Funções e Variáveis Definidas para Ambiente em Tempo de Execução::  
@end menu


@node Introdução a Ambiente em Tempo de Execução, Interrupções, Ambiente em Tempo de Execução, Ambiente em Tempo de Execução
@section Introdução a Ambiente em Tempo de Execução
@c THIS DISCUSSION OF maxima-init.mac REPLACES AN EARLIER WRITE-UP. !!!
@c HOWEVER IT SEEMS THAT THIS TEXT REALLY WANTS TO BE UNDER A DIFFERENT HEADING. !!!
@code{maxima-init.mac} é um arquivo que é chamado automaticamente quando o Maxima inicia.
Você pode usar @code{maxima-init.mac} para personalizar seu ambiente Maxima.
@code{maxima-init.mac}, se existir, é tipicamente colocado no
diretório chamado por @code{maxima_userdir},
embora possa estar em qualquer outro diretório procurado pela função @code{file_search}.

Aqui está um exemplo do arquivo @code{maxima-init.mac}:

@example
setup_autoload ("specfun.mac", ultraspherical, assoc_legendre_p);
showtime:all;
@end example

Nesse Exemplo, @code{setup_autoload} diz ao Maxima para chamar o
arquivo especificado
(@code{specfun.mac}) se qualquer das funções (@code{ultraspherical},
@code{assoc_legendre_p}) forem chamadas sem estarem definidas.
Dessa forma você não precisa lembrar de chamar o arquivo antes das funções.

A declaração @code{showtime: all} diz ao Maxima escolher a variável @code{showtime}.
O arquivo @code{maxima-init.mac} pode conter qualquer outras atribuições ou
outras declarações do Maxima.

@node Interrupções, Funções e Variáveis Definidas para Ambiente em Tempo de Execução, Introdução a Ambiente em Tempo de Execução, Ambiente em Tempo de Execução
@section Interrupções

O usuário pode parar uma computação que consome muito tempo com o
caractere ^C (control-C).
A ação padrão é parar a computação
e mostrar outra linha de comando do usuário.
Nesse caso, não é possível continuar a computação interrompida.

Se a variável Lisp @code{*debugger-hook*} é escolhida para @code{nil}, através do comando

@example
:lisp (setq *debugger-hook* nil)
@end example

@noindent
então na ocasião do recebimento do ^C, Maxima iniciará o depurador Lisp,
e o usuário pode usar o depurador para inspecionar o ambiente Lisp.
A computação interrompida pode ser retomada através do comando
@code{continue} no depurador Lisp.
O método de retorno para ao Maxima partindo do depurador Lisp
(outro como executando a computação para complementação)
é diferente para cada versão do Lisp.

Em sistemas Unix, o caratere ^Z (control-Z) faz com que Maxima
pare tudo e aguarde em segundo plano, e o controle é retornado para a linha de comando do shell.
O comando @code{fg} faz com que o Maxima
retorne ao primeiro plano e continue a partir do ponto no qual foi interrompido.

@c end concepts Ambiente em Tempo de Execução
@node Funções e Variáveis Definidas para Ambiente em Tempo de Execução,  , Interrupções, Ambiente em Tempo de Execução
@section Funções e Variáveis Definidas para Ambiente em Tempo de Execução

@c NEEDS EXPANSION AND CLARIFICATION
@defvr {Declaração} feature
Maxima compreende dois tipos distintos de recurso,
recursos do sistema e recursos aplicados a expressões matemáticas.
Veja Também @code{status} para informações sobre recursos do sistema.
Veja Também @code{features} e @code{featurep} para informações sobre recursos matemáticos.
@c PROPERTIES, DECLARATIONS FALL UNDER THIS HEADING AS WELL
@c OTHER STUFF ??

@code{feature} por si mesmo não é o nome de uma função ou variável.

@end defvr

@c NEEDS CLARIFICATION, ESPECIALLY WRT THE EXTENT OF THE FEATURE SYSTEM
@c (I.E. WHAT KINDS OF THINGS ARE FEATURES ACCORDING TO featurep)
@deffn {Função} featurep (@var{a}, @var{f})
Tenta determinar se o objeto @var{a} tem o
recurso @var{f} na base dos fatos dentro base de dados corrente.  Se possue,
é retornado @code{true}, de outra forma é retornado @code{false}.

Note que @code{featurep} retorna @code{false} quando nem @var{f}
nem a negação de @var{f} puderem ser estabelecidas.

@code{featurep} avalia seus argumentos.

Veja também @code{declare} e @code{features}.
       
@example
(%i1) declare (j, even)$
(%i2) featurep (j, integer);
(%o2)                           true
@end example

@end deffn

@defvr {Variável de sistema} maxima_tempdir

@code{maxima_tempdir} nomeia o diretório no qual Maxima cria alguns arquivos temporários.
Em particular, arquivos temporários para impressão são criados no @code{maxima_tempdir}.

O valor inicial de @code{maxima_tempdir} é o diretório do usuário,
se o maxima puder localizá-lo; de outra forma Maxima supõe um diretório adequado.

A @code{maxima_tempdir} pode ser atribuído uma seq@"{u}ência de caracteres que corresponde a um diretório.

@end defvr

@defvr {Variável de sistema} maxima_userdir

@code{maxima_userdir} nomeia um diretório no qual Maxima espera encontrar seus próprios arquivos e os do arquivos do Lisp.
(Maxima procura em alguns outros diretórios também;
@code{file_search_maxima} e @code{file_search_lisp} possuem a lista completa.)

O valor inicial de @code{maxima_userdir} é um subdiretório do diretório do usuário,
se Maxima puder localizá-lo; de outra forma Maxima supõe um diretório adequado.

A @code{maxima_userdir} pode ser atribuído uma seq@"{u}ência de caracteres que corresponde a um diretório.
Todavia, fazendo uma atribuição a @code{maxima_userdir} não muda automaticamente o valor de
@code{file_search_maxima} e de @code{file_search_lisp};
Essas variáveis devem ser modificadas separadamente.

@end defvr

@deffn {Função} room ()
@deffnx {Função} room (true)
@deffnx {Função} room (false)
Mostra uma descrição do estado de armazenamento e
gerenciamento de pilha no Maxima. @code{room} chama a função Lisp de
mesmo nome.

@itemize @bullet
@item
@code{room ()} mostra uma descrição moderada.
@item
@code{room (true)} mostra uma descrição detalhada.
@item
@code{room (false)} mostra uma descrição resumida.
@end itemize

@end deffn

@deffn {Função} status (feature)
@deffnx {Função} status (feature, @var{recurso_ativo})
@deffnx {Função} status (status)
Retorna informações sobre a presença ou ausência de certos
recursos dependentes do sistema operacional.

@itemize @bullet
@item
@code{status (feature)} retorna uma lista dos recursos do sistema.
Inclui a versão do Lisp, tipo de sistema operacional, etc.
A lista pode variar de um tipo de Lisp para outro.
@item @code{status (feature, @var{recurso_ativo})} retorna @code{true} se @var{recurso_ativo}
está na lista de ítens retornada através de @code{status (feature)} e @code{false} de outra forma.
@code{status} não avalia o argumento @var{recurso_ativo}.
O operador apóstrofo-apóstrofo, @code{'@w{}'}, evita a avaliação.
Um recurso cujo nome contém um caractere especial, tal como um hífem,
deve ser fornecido como um argumento em forma de seq@"{u}ência de caracteres. Por Exemplo,
@code{status (feature, "ansi-cl")}.
@item
@code{status (status)} retorna uma lista de dois elementos @code{[feature, status]}.
@code{feature} e @code{status} são dois argumentos aceitos pela função @code{status};
Não está claro se essa lista tem significância adicional.
@end itemize

A variável @code{features} contém uma lista de recursos que se aplicam a
expressões matemáticas. Veja @code{features} e @code{featurep} para maiores informações.

@end deffn

@deffn {Função} time (%o1, %o2, %o3, ...)
Retorna uma lista de tempos, em segundos, usados para calcular as linhas
de saída @code{%o1}, @code{%o2}, @code{%o3}, .... O tempo retornado é uma estimativa do Maxima do
tempo interno de computação, não do tempo decorrido. @code{time} pode somente
ser aplicado a variáveis(rótulos) de saída de linha; para quaisquer outras variáveis, @code{time}
retorna @code{unknown} (tempo desconhecido).

Escolha @code{showtime: true} para fazer com que Maxima moste o tempo de computação
e o tempo decorrido a cada linha de saída.

@end deffn

@deffn {Função} timedate ()
Retorna uma seq@"{u}ência de caracteres representando a data e hora atuais.
A seq@"{u}ência de caracteres tem o formato @code{HH:MM:SS Dia, mm/dd/aaaa (GMT-n)},
Onde os campos são
horas, minutos, segundos, dia da semana, mês, dia do mês, ano, e horas que diferem da hora GMT.

O valor de retorno é uma seq@"{u}ência de caracteres Lisp.

Exemplo:

@c ===beg===
@c d: timedate ();
@c print ("timedate mostra o tempo atual", d)$
@c ===end===
@example
(%i1) d: timedate ();
(%o1) 08:05:09 Wed, 11/02/2005 (GMT-7)
(%i2) print ("timedate mostra o tempo atual", d)$
timedate reports current time 08:05:09 Wed, 11/02/2005 (GMT-7)
@end example

@end deffn

@deffn {Função} absolute_real_time ()

Retorna o número de segundos desde a meia noite do dia primeiro de janeiro de 1900 (UTC).
O valor de retorno é um inteiro.

Veja também @code{elapsed_real_time} e @code{elapsed_run_time}.

Exemplo:

@c ===beg===
@c absolute_real_time ();
@c 1900 + absolute_real_time () / (365.25 * 24 * 3600);
@c ===end===
@example
(%i1) absolute_real_time ();
(%o1)                      3385045277
(%i2) 1900 + absolute_real_time () / (365.25 * 24 * 3600);
(%o2)                   2007.265612087104
@end example

@end deffn

@deffn {Função} elapsed_real_time ()

Retorna o n;umero de segundos (incluindo frações de segundo)
desde que Maxima tenha sido recentemente iniciado ou reiniciado.
O valor de retorno é um número em ponto flutuante.

Veja também @code{absolute_real_time} e @code{elapsed_run_time}.

Exemplo:

@c ===beg===
@c elapsed_real_time ();
@c expand ((a + b)^500)$
@c elapsed_real_time ();
@c ===end===
@example
(%i1) elapsed_real_time ();
(%o1)                       2.559324
(%i2) expand ((a + b)^500)$
(%i3) elapsed_real_time ();
(%o3)                       7.552087
@end example

@end deffn

@deffn {Função} elapsed_run_time ()

Retorna uma estimativa do número de segundos (incluindo frações de segundo)
que o Maxima gastou em computações desde que Maxima tenha sido recentemente iniciado ou reiniciado.
O valor de retorno é um número em ponto flutuante.

Veja também @code{absolute_real_time} e @code{elapsed_real_time}.

Exemplo:

@c ===beg===
@c elapsed_run_time ();
@c expand ((a + b)^500)$
@c elapsed_run_time ();
@c ===end===
@example
(%i1) elapsed_run_time ();
(%o1)                         0.04
(%i2) expand ((a + b)^500)$
(%i3) elapsed_run_time ();
(%o3)                         1.26
@end example

@end deffn

