Manual do Maxima 5.47.7.g39559bd: Definições para entrada e saída

Próximo: Definições para caracteres, Previous: Introdução a manipulação de sequências de caracteres, Acima: stringproc [Conteúdo][Índice]

### 69.2 Definições para entrada e saída

Exemplo:

    (%i1) load("stringproc")$
    (%i2) s: openw("E:/file.txt");
    (%o2)                     #<output stream E:/file.txt>
    (%i3) control:
    "~2tAn atom: ~20t~a~%~2tand a list: ~20t~{~r ~}~%~2tand an integer: ~20t~d~%"$
    (%i4) printf( s,control, 'true,[1,2,3],42 )$
    (%o4)                                false
    (%i5) close(s);
    (%o5)                                true
    (%i6) s: openr("E:/file.txt");
    (%o6)                     #<input stream E:/file.txt>
    (%i7) while stringp( tmp:readline(s) ) do print(tmp)$
      An atom:          true
      and a list:       one two three
      and an integer:   42
    (%i8) close(s)$

Função: close (fluxo)

  Fecha fluxo e retorna `true` se fluxo tiver sido aberto anteriormente.

Função: flength (fluxo)

  Retorna o número de elementos em fluxo.

Função: fposition (fluxo)
Função: fposition (fluxo, pos)

  Retorna a posição corrente em fluxo, se pos não está sendo usada. Se pos estiver sendo usada, `fposition` escolhe a posição em fluxo. pos tem que ser um número positivo, o primeiro elemento em fluxo está na posição 1.

Função: freshline ()
Função: freshline (fluxo)

  escreve uma nova linha (em fluxo), se a posição actual não for um início de linha. Veja também `newline`.

Função: newline ()
Função: newline (fluxo)

  Escreve uma nova linha (para fluxo). Veja `sprint` para um exemplo de uso de `newline()`. Note que existem alguns casos, onde `newline()`não trabalha como esperado.

Função: opena (ficheiro)

  Retorna um fluxo de saída para ficheiro. Se um ficheiro já existente tiver sido aberto, `opena` anexa os elementos ao final do ficheiro.

Função: openr (ficheiro)

  Retorna um fluxo para ficheiro. Se ficheiro não existir, ele será criado.

Função: openw (ficheiro)

  Retorna um fluxo de saída para ficheiro. Se ficheiro não existir, será criado. Se um ficheiro já existente for aberto, `openw` modifica destrutivametne o ficheiro.

Função: printf (dest, seq_caracte)
Função: printf (dest, seq_caracte, expr_1, ..., expr_n)

  Torna a função FORMAT do Lisp Comum disponível no Maxima. (Retirado de gcl.info: "format produces formatted output by outputting the caracteres of control-string string and observing that a tilde introduces a directive. The caractere after the tilde, possibly preceded by prefix parameters and modifiers, specifies what kind of formatting is desired. Most directives use one or more elements of args to create their output.")

  A seguinte descrição e oa exemplos podem fornecer uma idéia de uso de `printf`. Veja um referência de Lisp para maiores informações.

         ~%       nova linha
         ~&       novíssima line
         ~t       tabulação
         ~$       monetário
         ~d       inteiro decimal
         ~b       inteiro binário
         ~o       inteiro octal
         ~x       inteiro hexadecimal
         ~br      inteiro de base b
         ~r       soletra um inteiro
         ~p       plural
         ~f       ponto flutuante
         ~e       notação científica
         ~g       ~f ou ~e, dependendo  da magnitude
         ~a       como mostrado pela função print do Maxima
         ~s       sequências de caracteres entre "aspas duplas"
         ~~       ~
         ~<       justificação de texto, ~> terminador de justificação de texto
         ~(       conversão de caixa alta/baixa, ~) terminador de conversão de caixa
         ~[       selecção, ~] terminador de selecção
         ~{       iteração, ~} terminador de iteração

  Por favor note que não existe especificador de formato para grandes números em ponto flutuante. Todavia grandes números em ponto flutuante podem simplesmente serem mostrados por meio da directiva `~a`. `~s` mostra as sequências de caracteres entre "aspas duplas"; pode evitar isso usando `~a`. Note que a directiva de selecção `~[` é indexada em zero. Também note que existem algumas directivas, que não trabalham no Maxima. Por exemplo, `~:[` falha.

      (%i1) load("stringproc")$
      (%i2) printf( false, "~a ~a ~4f ~a ~@r",
                    "String",sym,bound,sqrt(12),144), bound = 1.234;
      (%o2)                 String sym 1.23 2*sqrt(3) CXLIV
      (%i3) printf( false,"~{~a ~}",["one",2,"THREE"] );
      (%o3)                          one 2 THREE
      (%i4) printf( true,"~{~{~9,1f ~}~%~}",mat ),
                    mat = args( matrix([1.1,2,3.33],[4,5,6],[7,8.88,9]) )$
            1.1       2.0       3.3
            4.0       5.0       6.0
            7.0       8.9       9.0
      (%i5) control: "~:(~r~) bird~p ~[is~;are~] singing."$
      (%i6) printf( false,control, n,n,if n=1 then 0 else 1 ), n=2;
      (%o6)                    Two birds are singing.

  Se dest for um fluxo ou `true`, então `printf` retorna `false`. De outra forma, `printf` retorna uma sequência de caracteres contendo a saída.

Função: readline (fluxo)

  Retorna uma sequência de caracteres contendo os caracteres a partir da posição corrente em fluxo até o fim de linha ou false se o fim de linha do ficheiro for encontrado.

Função: sprint (expr_1, ..., expr_n)

  Avalia e mostra seus argumentos um após o outro ‘sobre uma linha’ iniciando na posição mais à esquerda. Os números são mostrados com o ’-’ à direita do número, e isso desconsidera o comprimento da linha. `newline()`, que pode ser chamada a partir de `stringproc.lisp` pode ser útil, se desejar colocar uma parada de linha intermédia.

      (%i1) for n:0 thru 22 do sprint( fib(n) )$
      0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711
      (%i2) load("stringproc")$
      (%i3) for n:0 thru 22 do (
               sprint(fib(n)), if mod(n,10)=9 then newline() )$
      0 1 1 2 3 5 8 13 21 34
      55 89 144 233 377 610 987 1597 2584 4181
      6765 10946 17711

Próximo: Definições para caracteres, Previous: Introdução a manipulação de sequências de caracteres, Acima: stringproc [Conteúdo][Índice]