1 @c /numericalio.texi/1.1/Mon Feb 27 22:09:17 2006//
3 * Introdução a numericalio::
4 * Definições para numericalio::
7 @node Introdução a numericalio, Definições para numericalio, numericalio, numericalio
8 @section Introdução a numericalio
10 @code{numericalio} é uma colecção de funções para ler e escrever ficheiros de dados.
11 O ficheiro é lido completamente para construir um objecto;
12 leituras parciais não são suportadas.
14 É assumido que cada item a ler ou escrever é at@^omico:
15 um número inteiro, número em ponto flutuante, grande número em ponto flutuante, sequência de caracteres, ou símbolo,
16 e não um número racional ou um número complexo ou qualquer outro tipo de expressão não at@^omica.
17 Essas funções podem tentar fazer alguma coisa levemente parecida com expressões não at@^omicas,
18 mas os resultados não são especificados aqui e são sujeitos a mudanças.
20 Átomos em ambos os ficheiros de entrada e saída possuem o mesmo formato que
21 em ficheiros de lote do Maxima ou no console interativo.
22 Em particular, sequência de caracteres são contidas dentro de aspas duplas,
23 contrabarra @code{\} evita qualquer interpretação especial do caractere seguinte,
24 e o ponto de interrogação @code{?} é reconhecido no início de um símbolo
25 para significar um símbolo do Lisp (em oposição a um símbolo do Maxima).
26 Nenhum caractere de continuação (para continuar linhas quebradas) é reconhecido.
28 @var{separator_flag} diz que caracteres separa elementos.
29 @var{separator_flag} é um argumento opcional para todas as funções de leitura e escrita.
31 Para entrada, os valores de @var{separator_flag} reconhecidos são:
32 @code{comma} para valores separados por vírgula,
33 @code{pipe} para valores separados pelo caractere barra vertical @code{|},
34 @code{semicolon} para valores separados por ponto e vírgula @code{;},
35 e @code{space} para valores separados pelos caracteres de espaço e de tabulação.
36 Se o nome do ficheiro a ser lido/escrito termina em @code{.csv} e @var{separator_flag} não for especificado,
37 @code{comma} é assumido.
38 Se o nome do ficheiro termina em alguma outra coisa que não @code{.csv} e @code{separator_flag} não for especificado,
39 @code{space} é assumido.
41 Para saída, os mesmos quatro sinalizadores são reconhecidos como na entrada,
42 e também @code{tab}, para valores separados pelo caractere de tabulaçao.
44 Em entrada, múltiplos espaços e múltiplas tabulações sucessivas contam como um separador simples.
45 Todavia, múltiplas vírgulas, barras verticais, ou ponto-e-vírgulas são significativos.
46 Sucessivas vírgulas, barras verticais, ou ponto-e-vírgulas (com ou sem intercalação de espaços ou tabulações)
47 são considerados como tendo @code{false} entre os separadores.
48 Por exemplo, @code{1234,,Foo} é tratado da mesma forma que @code{1234,false,Foo}.
49 Em saídas, os átomos @code{false} são escritos como tais;
50 uma lista @code{[1234, false, Foo]} é escrita @code{1234,false,Foo},
51 e não é tentado colapsar a saída para @code{1234,,Foo}.
53 @node Definições para numericalio, , Introdução a numericalio, numericalio
54 @section Definições para numericalio
56 @deffn {Função} read_matrix (@var{nomeficheiro})
57 @deffnx {Função} read_matrix (@var{nomeficheiro}, @var{separator_flag})
58 Lê o ficheiro @var{nomeficheiro} e retorna seu conteúdo completo como uma matriz.
59 Se @var{separator_flag} não for especificado, o ficheiro é assumido como delimitado por espaços em branco.
61 @code{read_matrix} infere o tamanho da matriz dos dados de entrada.
62 Cada linha do ficheiro inicia uma linha da matriz.
63 Se algumas linhas possuirem diferentes comprimentos, @code{read_matrix} reclama.
67 @deffn {Função} read_lisp_array (@var{nomeficheiro}, @var{A})
68 @deffnx {Função} read_lisp_array (@var{nomeficheiro}, @var{A}, @var{separator_flag})
70 @code{read_lisp_array} exige que o array
71 seja declarado através de @code{make_array} antes de chamar
72 a função de leitura. (Isso obviamente é necessário para inferir a dimensão
73 do array, que pode ser um problema para arrays com múltiplas dimensões.)
75 @code{read_lisp_array} não verifica para ver se o
76 ficheiro de entrada está de acordo com as dimensãoes do array; a entrada
77 é lida como uma lista monótona, então o array é preenchido usando @code{fillarray}.
81 @deffn {Função} read_maxima_array (@var{nomeficheiro}, @var{A})
82 @deffnx {Função} read_maxima_array (@var{nomeficheiro}, @var{A}, @var{separator_flag})
84 @code{read_maxima_array} requer que o array
85 seja declarado através de @code{array} antes de chamar
86 a função de leitura. (Isso obviamente é necessário para inferir a dimensão
87 do array, que pode ser uma hassle para arrays com múltiplas dimensões.)
89 @code{read_maxima_array} não verifica para ver se o
90 ficheiro de entrada está de acordo com as dimensãoes do array; a entrada
91 é lida como uma lista monótona, então o array é preenchido usando @code{fillarray}.
95 @deffn {Função} read_hashed_array (@var{nomeficheiro}, @var{A})
96 @deffnx {Função} read_hashed_array (@var{nomeficheiro}, @var{A}, @var{separator_flag})
98 @code{read_hashed_array} trata o primeiro item sobre uma linha como uma
99 chave hash, e associa o restante da linha (como uma lista) com a chava.
101 a linha @code{567 12 17 32 55} é equivalente a @code{A[567]: [12, 17, 32, 55]$}.
102 Linhas não precisam ter o mesmo número de elementos.
106 @deffn {Função} read_nested_list (@var{nomeficheiro})
107 @deffnx {Função} read_nested_list (@var{nomeficheiro}, @var{separator_flag})
109 @code{read_nested_list} retorna uma lista que tem uma sublista para cada
110 linha de entrada. Linhas não precisam ter o mesmo número de elementos.
111 Linhas vazias @i{não} são ignoradas: uma linha vazia retorna uma sublista vazia.
115 @deffn {Função} read_list (@var{nomeficheiro})
116 @deffnx {Função} read_list (@var{nomeficheiro}, @var{separator_flag})
118 @code{read_list} lê todas as entradas em uma lista monótona.
119 @code{read_list} ignora o caractere de fim de linha.
123 @deffn {Função} write_data (@var{X}, @var{nomeficheiro})
124 @deffnx {Função} write_data (@var{object}, @var{nomeficheiro}, @var{separator_flag})
126 @code{write_data} escreve o objecto @var{X} no ficheiro @var{nomeficheiro}.
128 @code{write_data} escreve matrizes da forma usual,
129 com uma linha por fileira.
131 @code{write_data} escreve arrays declarados do Lisp e do Maxima da
132 forma usual, com um caractere de nova linha no final de todo pedaço.
133 Pedaços dimensionais muito grandes são separados por meio de novas linhas adicionais.
135 @code{write_data} escreve arrays desordenados com uma chave seguida por
136 a lista associada sobre cada linha.
138 @code{write_data} escreve a lista seguinte com cada sublista em uma linha.
140 @code{write_data} escreve uma lista monótona toda em uma linha.
142 Se @code{write_data} anexa ao final ou abandona os excessos em seus ficheiros de saída
143 é governado através da variável global @code{file_output_append}.