2 @c versao pt_BR baseada no md5sum abaixo:
3 @c cd5fc72f73b73126c0df537308441a1c DataTypes.texi
14 @c -----------------------------------------------------------------------------
15 @node Numbers, Strings, Data Types and Structures, Data Types and Structures
17 @c -----------------------------------------------------------------------------
20 * Introduction to Numbers::
21 * Functions and Variables for Numbers::
24 @c -----------------------------------------------------------------------------
25 @node Introduction to Numbers, Functions and Variables for Numbers, Numbers, Numbers
26 @subsection Introduction to Numbers
27 @c -----------------------------------------------------------------------------
29 @c -----------------------------------------------------------------------------
30 @subheading Complex numbers
31 @c -----------------------------------------------------------------------------
33 Uma express@~{a}o complexa @'{e} especificada em Maxima por meio da adi@,{c}@~{a}o da parte real da
34 express@~{a}o a @code{%i} vezes a parte imagin@'{a}ria. Dessa forma as ra@'{i}zes da
35 equa@,{c}@~{a}o @code{x^2 - 4*x + 13 = 0} s@~{a}o @code{2 + 3*%i} e @code{2 - 3*%i}.
36 Note que simplifica@,{c}@~{a}o de produtos de express@~{o}es complexas pode ser feita atrav@'{e}s da
37 expans@~{a}o do produto. Simplifica@,{c}@~{a}o de quocientes, ra@'{i}zes, e outras fun@,{c}@~{o}es
38 de express@~{o}es complexas pode usualmente ser acompanhada do uso das fun@,{c}@~{o}es @code{realpart},
39 @code{imagpart}, @code{rectform}, @code{polarform}, @code{abs},
43 @category{Vari@'{a}veis complexas}
47 @c -----------------------------------------------------------------------------
48 @subheading Floating point numbers
49 @c -----------------------------------------------------------------------------
51 Maxima tem dois tipos de n@'{u}meros em ponto flutuante. O primeiro @'{e} apenas
52 chamado um ``float'' (mas passar@'{a} a se chamar ``float da m@'{a}quina'' de
53 agora em diante nessa se@,{c}@~{a}o para evitar ambiquidade). O ``float da m@'{a}quina'' @'{e} armazenado no
54 no tipo subjacente tipo DOUBLE-FLOAT do lisp que ir@'{a} quase sempre certamente ser
55 o ponto flutuante com precis@~{a}o dupla da IEEE 754. Para digitar um n@'{u}mero em ponto
56 flutuante literal, apenas digite sua expans@~{a}o decimal (por exemplo,
57 @code{0.01}) ou digite esse n@'{u}mer com um expoente expl@'{i}cito (tal como @code{1e-2}
60 O segundo tipo de n@'{u}mero em ponto flutuante no Maxima @'{e} chamado um
61 ``bigfloat''. Bigfloats s@~{a}o armazenados como uma mantissa e um expoente
62 da mesma forma que ``floats da m@'{a}quina'' mas o expoente @'{e} um inteiro de precis@~{a}o
63 arbitr@'{a}ria, de forma que o ``bigfloat'' pode representar n@'{u}meros
64 arbitrariamente grandes ou arbitr@'{a}riamente pequenos. O
65 usu@'{a}rio pode tamb@'{e}m personalizar a precis@~{a}o do bigfloat aritim@'{e}tico (o que
66 corresponde a mudar o intervalo da mantissa). Veja @mref{fpprec}
67 para mais informa@,{c}@~{a}o. Para digitar um bigfloat literal, use a nota@,{c}@~{a}o de
68 expoente como acima mas com o caractere @code{b} no lugar do
69 @code{e}. O exemplo de @code{0.01} usado acima pode ser informado como um
70 bigfloat com @code{1b-2} ou @code{0.001b0}.
72 C@'{a}lculos usando floats de m@'{a}quina podem ser significativamente mas r@'{a}pidos que
73 os mesmo c@'{a}lculos usando bigfloats uma vez que processadores dos computadores modernos possuem
74 hardware dedicados aos floats de m@'{a}quina. Essa afirma@,{c}@~{a}o @'{e} particularmente verificada quando o c@'{o}digo do Maxima
75 compilado localmente. Todavia, os n@'{u}meros em ponto flutuante de m@'{a}quina posuem o problema do
76 overflow, onde um n@'{u}mero pode tornar-se muito grande para seu expoente ser
77 representado na mem@'{o}ria dispon@'{i}vel. No c@'{o}digo interpretado, o comportamento
78 padr@~{a}o @'{e} que um c@'{a}lculo que pode causar um overflow de ponto
79 flutuante ao inv@'{e}s de gerar um n@'{u}mero bigfloat. Para configurar esse comportamento, veja
80 a vari@'{a}vel @mref{promote_float_to_bigfloat}.
82 @c -----------------------------------------------------------------------------
83 @node Functions and Variables for Numbers, , Introduction to Numbers, Numbers
84 @subsection Functions and Variables for Numbers
85 @c -----------------------------------------------------------------------------
87 @c -----------------------------------------------------------------------------
89 @deffn {Fun@,{c}@~{a}o} bfloat (@var{expr})
91 Converte todos os n@'{u}meros e fun@,{c}@~{o}es de n@'{u}meros em @var{expr} para o formato de grandes n@'{u}meros em ponto flutuante.
92 O n@'{u}mero de d@'{i}gitos significativos nos bigfloats resultantes @'{e} especificado pela
93 vari@'{a}vel global @mrefdot{fpprec}
95 Quando @mref{float2bf}
96 for @code{false} uma mensagem de alerta @'{e} mostrada quando
97 um n@'{u}mero em ponto flutuante @'{e} convertido em um n@'{u}mero bigfloat (uma vez que
98 isso pode levar a perda de precis@~{a}o).
101 @category{Avalia@,{c}@~{a}o num@'{e}rica}
105 @c -----------------------------------------------------------------------------
107 @deffn {Fun@,{c}@~{a}o} bfloatp (@var{expr})
109 Retorna @code{true} se @var{expr} for um n@'{u}mero bigfloat, de outra forma retorna @code{false}.
112 @category{Avalia@,{c}@~{a}o num@'{e}rica} @category{Fun@,{c}@~{o}es predicado}
116 @c --- 03.11.2011 --------------------------------------------------------------
118 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} bftorat
119 Valor padr@~{a}o: @code{false}
121 A vari@'{a}vel de op@,{c}@~{a}o @code{bftorat} controla a convers@~{a}o de bfloats para n@'{u}meros racionais. Quando
122 @code{bftorat} for @code{false}, @mref{ratepsilon}
123 ser@'{a} usada para controlar a
124 convers@~{a}o (esse resulta n@'{u}meros racionais relativamente pequenos). Quando
125 @code{bftorat} for @code{true}, o n@'{u}mero racional gerado representar@'{a} o bfloat
128 Nota: @code{bftorat} n@~{a}o tem efeito sobre a transforma@,{c}@~{a}o para n@'{u}meros racionais
129 catrav@'{e}s da fun@,{c}@~{a}o @mrefdot{rationalize}
134 (%i1) ratepsilon:1e-4;
136 (%i2) rat(bfloat(11111/111111)), bftorat:false;
137 `rat' replaced 9.99990999991B-2 by 1/10 = 1.0B-1
141 (%i3) rat(bfloat(11111/111111)), bftorat:true;
142 `rat' replaced 9.99990999991B-2 by 11111/111111 = 9.99990999991B-2
149 @category{Avalia@,{c}@~{a}o num@'{e}rica}
153 @c -----------------------------------------------------------------------------
155 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} bftrunc
156 Valor padr@~{a}o: @code{true}
158 A vari@'{a}vel de op@,{c}@~{a}o @code{bftrunc} faz com que zeros @`{a} direita em n@'{u}meros bigfloat diferentes de zero n@~{a}o sejam
159 mostrados. Dessa forma, se @code{bftrunc} for @code{false}, @code{bfloat (1)}
160 @'{e} mostrado como @code{1.000000000000000B0}. De outra forma, @code{bfloat (1)} @'{e} mostrado como
164 @category{Avalia@,{c}@~{a}o num@'{e}rica}
168 @c -----------------------------------------------------------------------------
170 @deffn {Fun@,{c}@~{a}o} evenp (@var{expr})
172 Retorna @code{true} se @var{expr} for um inteiro para.
173 @c THIS IS STRANGE -- SHOULD RETURN NOUN FORM IF INDETERMINATE
174 @code{false} @'{e} retornado em todos os outros casos.
177 @category{Fun@,{c}@~{o}es predicado}
181 @c -----------------------------------------------------------------------------
183 @deffn {Fun@,{c}@~{a}o} float (@var{expr})
185 Converte n@'{u}meros inteiros, n@'{u}meros racionais e bigfloats em @var{expr} para n@'{u}meros em
186 ponto flutuante. Da mesma forma um @mrefcomma{evflag}
187 @code{float} faz com que
188 n@'{u}meros racionais n@~{a}o inteiros e n@'{u}meros bigfloat sejam convertidos para n@'{u}meros em
192 @category{Avalia@,{c}@~{a}o num@'{e}rica} @category{Sinalizadores de avalia@,{c}@~{a}o}
196 @c --- 08.10.2010 DK -----------------------------------------------------------
198 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} float2bf
199 Valor padr@~{a}o: @code{true}
201 Quando @code{float2bf} for @code{false}, uma mensagem de alerta @'{e} mostrada sempre que
202 um n@'{u}mero em ponto flutuante @'{e} convertido em um n@'{u}mero bigfloat (uma vez que
203 isso pode levar a perda de precis@~{a}o).
206 @category{Avalia@,{c}@~{a}o num@'{e}rica}
210 @c -----------------------------------------------------------------------------
212 @deffn {Fun@,{c}@~{a}o} floatnump (@var{expr})
214 Retorna @code{true} se @var{expr} for um n@'{u}mero em ponto flutuante, de outra forma retorna
218 @category{Avalia@,{c}@~{a}o num@'{e}rica} @category{Fun@,{c}@~{o}es predicado}
222 @c -----------------------------------------------------------------------------
224 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} fpprec
227 @code{fpprec} @'{e} o n@'{u}mero de d@'{i}gitos significativos para opera@,{c}@~{o}es aritm@'{e}ticas usando n@'{u}meros
228 bigfloat. A vari@'{a}vel de op@,{c}@~{a}o @code{fpprec} n@~{a}o afeta c@'{a}lculos computacionais sobre n@'{u}meros comuns
231 Veja tamb@'{e}m @mref{bfloat}
232 e @mrefdot{fpprintprec}
235 @category{Avalia@,{c}@~{a}o num@'{e}rica}
239 @c -----------------------------------------------------------------------------
241 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} fpprintprec
244 @code{fpprintprec} @'{e} o n@'{u}mero de d@'{i}gitos a serem mostrados na exibi@,{c}@~{a}o de n@'{u}meros
245 comuns em ponto flutuante ou na exibi@,{c}@~{a}o de n@'{u}meros bigfloat.
247 Para n@'{u}meros comuns em ponto flutuante,
248 quando @code{fpprintprec} tiver um valor entre 2 e 16 (inclusive),
249 o n@'{u}mero de d@'{i}gitos mostrados @'{e} igual a @code{fpprintprec}.
250 De outra forma, @code{fpprintprec} @'{e} 0, ou maior que 16,
251 e o n@'{u}mero de d@'{i}gitos mostrados @'{e} 16.
253 Para n@'{u}meros bigfloat,
254 quando @code{fpprintprec} tiver um valor entre 2 e @code{fpprec} (inclusive),
255 o n@'{u}mero de d@'{i}gitos mostrados @'{e} igual a @code{fpprintprec}.
256 De outra forma, @code{fpprintprec} @'{e} 0, ou maior que @code{fpprec},
257 e o n@'{u}mero de d@'{i}gitos mostrados @'{e} igual a @code{fpprec}.
259 Para ambos floats comuns e bigfloats,
260 zeros iniciais s@~{a}o suprimidos.
261 O n@'{u}mero de d@'{i}gitos atuais mostrado @'{e} menor que @code{fpprintprec}
262 se ouverem d@'{i}gitos zeros iniciais.
264 @code{fpprintprec} n@~{a}o pode ser 1.
267 @category{Avalia@,{c}@~{a}o num@'{e}rica} @category{Sinalizadores e vari@'{a}veis de exibi@,{c}@~{a}o}
271 @c -----------------------------------------------------------------------------
273 @deffn {Fun@,{c}@~{a}o} integerp (@var{expr})
275 Retorna @code{true} se @var{expr} for um inteiro num@'{e}rico literal, de outra forma retorna
278 @code{integerp} retorna @code{false} se seu argumento for um s@'{i}mbolo,
279 mesmo se o argumento for declarado inteiro.
288 (%i3) integerp (-17);
290 (%i4) integerp (0.0);
292 (%i5) integerp (1.0);
294 (%i6) integerp (%pi);
298 (%i8) declare (n, integer);
305 @category{Fun@,{c}@~{o}es predicado}
309 @c -----------------------------------------------------------------------------
311 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} m1pbranch
312 Valor padr@~{a}o: @code{false}
314 A vari@'{a}vel de op@,{c}@~{a}o @code{m1pbranch} @'{e} o ramo principal para @code{-1} elevado a um expoente.
315 Quantidade tais como @code{(-1)^(1/3)} (isto @'{e}, um expoente racional com denominador @'{i}mpar) e
316 @code{(-1)^(1/4)} (isto @'{e}, um expoente racional com denominador par) s@~{a}o tratadas como segue:
318 @c REDRAW THIS AS A TABLE
323 (-1)^(1/4): (-1)^(1/4)
326 m1pbranch:false m1pbranch:true
327 (-1)^(1/3) 1/2+%i*sqrt(3)/2
328 (-1)^(1/4) sqrt(2)/2+%i*sqrt(2)/2
332 @category{Express@~{o}es} @category{Global flags}
336 @c -----------------------------------------------------------------------------
337 @deffn {Fun@,{c}@~{a}o} nonnegintegerp (@var{n})
339 Retorna @code{true} se e somente se @code{@var{n} >= 0} e @var{n} for um inteiro.
342 @category{Pacote linearalgebra} @category{Fun@,{c}@~{o}es predicado}
346 @c -----------------------------------------------------------------------------
348 @deffn {Fun@,{c}@~{a}o} numberp (@var{expr})
350 Retorna @code{true} se @var{expr} for um inteiro literal, n@'{u}mero racional,
351 n@'{u}mero em ponto flutuante, ou bigfloat, de outra forma retorna @code{false}.
353 A fun@,{c}@~{a}o @code{numberp} retorna @code{false} se seu argumento for um s@'{i}mbolo, mesmo se o
354 argumento for um n@'{u}mero simb@'{o}lico tal como @code{%pi} ou @code{%i}, ou declarado ser
355 @code{even}, @code{odd}, @code{integer}, @code{rational}, @code{irrational},
356 @code{real}, @code{imaginary}, ou @code{complex}.
363 (%i2) numberp (-13/19);
365 (%i3) numberp (3.14159);
367 (%i4) numberp (-1729b-4);
369 (%i5) map (numberp, [%e, %pi, %i, %phi, inf, minf]);
370 (%o5) [false, false, false, false, false, false]
371 (%i6) declare (a, even, b, odd, c, integer, d, rational,
372 e, irrational, f, real, g, imaginary, h, complex);
374 (%i7) map (numberp, [a, b, c, d, e, f, g, h]);
375 (%o7) [false, false, false, false, false, false, false, false]
379 @category{Fun@,{c}@~{o}es predicado}
383 @c NEEDS CLARIFICATION, EXAMPLES
384 @c WHAT ARE THE FUNCTIONS WHICH ARE EVALUATED IN FLOATING POINT ??
385 @c WHAT IS A "NUMERVAL" ?? (SOMETHING DIFFERENT FROM A NUMERIC VALUE ??)
386 @c NEED TO MENTION THIS IS AN evflag
388 @c -----------------------------------------------------------------------------
390 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} numer
392 A vari@'{a}vel de op@,{c}@~{a}o @code{numer} faz com que algumas fun@,{c}@~{o}es matem@'{a}ticas (incluindo exponencia@,{c}@~{a}o)
393 com argumentos num@'{e}ricos sejam tratadas como n@'{u}meros em ponto flutuante. A vari@'{a}vel de op@,{c}@~{a}o @code{numer} faz com que
394 vari@'{a}veis em @code{expr} que resultem em n@'{u}meros sejam substitu@'{i}das pelos
395 seus valores. A vari@'{a}vel de op@,{c}@~{a}o @code{numer} tamb@'{e}m ajusta o comutador @mref{float}
398 Veja tamb@'{e}m @mrefdot{%enumer}
403 @c [sqrt(2), sin(1), 1/(1+sqrt(3))];
404 @c [sqrt(2), sin(1), 1/(1+sqrt(3))],numer;
407 (%i1) [sqrt(2), sin(1), 1/(1+sqrt(3))];
409 (%o1) [sqrt(2), sin(1), -----------]
411 (%i2) [sqrt(2), sin(1), 1/(1+sqrt(3))],numer;
412 (%o2) [1.414213562373095, .8414709848078965, .3660254037844387]
416 @category{Avalia@,{c}@~{a}o num@'{e}rica} @category{Sinalizadores de avalia@,{c}@~{a}o}
420 @c -----------------------------------------------------------------------------
421 @anchor{numer_pbranch}
422 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} numer_pbranch
423 Valor padr@~{a}o: @code{false}
425 A vari@'{a}vel de op@,{c}@~{a}o @code{numer_pbranch} controla a avalia@,{c}@~{a}o num@'{e}rica da
426 de um inteiro negativo elevado a um expoente, de um racional elevado a um expoente, ou de um n@'{u}mero em ponto flutuante elevado a um expoente. Quando
427 @code{numer_pbranch} for @code{true} e o expoente for um n@'{u}mero em ponto flutuante
428 ou a vari@'{a}vel de op@,{c}@~{a}o @mref{numer}
429 for @code{true} tamb@'{e}m, Maxima avalia
430 o resultado num@'{e}rico usando o ramo principal. De outra forma um resultado simplificado, mas
431 n@~{a}o um resultado avaliado, @'{e} retornado.
437 @c (-2)^0.75,numer_pbranch:true;
440 @c (-2)^(3/4),numer,numer_pbranch:true;
446 (%i2) (-2)^0.75,numer_pbranch:true;
447 (%o2) 1.189207115002721*%i-1.189207115002721
450 (%o3) (-1)^(3/4)*2^(3/4)
452 (%i4) (-2)^(3/4),numer;
453 (%o4) 1.681792830507429*(-1)^0.75
455 (%i5) (-2)^(3/4),numer,numer_pbranch:true;
456 (%o5) 1.189207115002721*%i-1.189207115002721
460 @category{Avalia@,{c}@~{a}o num@'{e}rica}
464 @c NEEDS CLARIFICATION, EXAMPLES
465 @c HOW TO FIND ALL VARIABLES WHICH HAVE NUMERVALS ??
467 @c -----------------------------------------------------------------------------
469 @deffn {Fun@,{c}@~{a}o} numerval (@var{x_1}, @var{expr_1}, @dots{}, @var{var_n}, @var{expr_n})
471 Declara as vari@'{a}veis @code{x_1}, @dots{}, @var{x_n} como tendo
472 valores num@'{e}ricos iguas a @code{expr_1}, @dots{}, @code{expr_n}.
473 O valor num@'{e}rico @'{e} avaliado e a vari@'{a}vel @'{e} substitu@'{i}da
474 em quaisquer express@~{a}o na qual a vari@'{a}vel ocorra se o sinalizador @code{numer} for
475 @code{true}. Veja tamb@'{e}m @mrefdot{ev}
477 As express@~{o}es @code{expr_1}, @dots{}, @code{expr_n} podem ser quaisquer express@~{o}es,
478 n@~{a}o necess@'{a}riamente num@'{e}ricas.
481 @category{Declara@,{c}@~{o}es e infer@^{e}ncias} @category{Avalia@,{c}@~{a}o num@'{e}rica}
485 @c -----------------------------------------------------------------------------
487 @deffn {Fun@,{c}@~{a}o} oddp (@var{expr})
489 @'{e} @code{true} se @var{expr} for um inteiro @'{i}mpar.
490 @c THIS IS STRANGE -- SHOULD RETURN NOUN FORM IF INDETERMINATE
491 @code{false} @'{e} retornado em todos os outros casos.
494 @category{Fun@,{c}@~{o}es predicado}
498 @c -----------------------------------------------------------------------------
499 @anchor{promote_float_to_bigfloat}
500 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} promote_float_to_bigfloat
501 Valor padr@~{a}o: @code{true}
503 Quando @code{promote_float_to_bigfloat} for @code{true}, o resultado de qualquer
504 c@'{a}lculo com ponto flutuante que possa vir a causar uma sobrecarga de ponto
505 flutuane @'{e} substitu@'{i}do por um n@'{u}mero bigfloat qye representa o
506 resultado. Note que essa promo@,{c}@~{a}o @'{e} autom@'{a}tica somente acontece no c@'{o}digo
507 interpretado: c@'{o}digo compilado n@~{a}o @'{e} afetado.
509 Essa convers@~{a}o autom@'{a}tica @'{e} muitas vezes conveniente, mas pode atrapalhar em
510 alguns casos. Por exemplo, pode causar perda de precis@~{a}o se
511 @mref{fpprec} for atualmente menor que a precis@~{a}o de n@'{u}em em
512 ponto flutuante. Para desabilitar esse comportamento, ajuste
513 @code{promote_float_to_bigfloat} para @code{false}.
516 @category{Avalia@,{c}@~{a}o num@'{e}rica}
520 @c --- 03.11.2011 --------------------------------------------------------------
522 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} ratepsilon
523 Valor padr@~{a}o: @code{2.0e-15}
525 A vari@'{a}vel de op@,{c}@~{a}o @code{ratepsilon} @'{e} a toler@^{a}ncia usada na convers@~{a}o
526 de n@'{u}meros em ponto flutuante em n@'{u}meros racionais, quando a vari@'{a}vel de op@,{c}@~{a}o
528 tiver o valor @code{false}. Veja @code{bftorat} para um exemplo.
531 @category{Avalia@,{c}@~{a}o num@'{e}rica} @category{Rational expressions}
535 @c -----------------------------------------------------------------------------
537 @deffn {Fun@,{c}@~{a}o} rationalize (@var{expr})
539 Converte todos os n@'{u}meros em ponto flutuante de precis@~{a}o dupla e todos os grandes n@'{u}meros em ponto flutuante (big floats) na express@~{a}o do Maxima @var{expr} para
540 seus equivalentes racionais exatos. Se voc@^{e} n@~{a}o est@'{a} faminiarizado com a representa@,{c}@~{a}o
541 bin@'{a}ria de n@'{u}meros em ponto flutuante, voc@^{e} pode se surpreender com o fato de
542 @code{rationalize (0.1)} n@~{a}o ser igual a 1/10. Esse comportamento n@~{a}o ocorre somente com
543 Maxima -- o n@'{u}mero 1/10 tem uma repetitiva, infinita, representa@,{c}@~{a}o
547 @c rationalize (0.5);
548 @c rationalize (0.1);
550 @c rationalize (0.1b0);
552 @c rationalize (0.1b0);
553 @c rationalize (sin (0.1*x + 5.6));
556 (%i1) rationalize (0.5);
560 (%i2) rationalize (0.1);
565 (%i4) rationalize (0.1b0);
570 (%i6) rationalize (0.1b0);
571 236118324143482260685
572 (%o6) ----------------------
573 2361183241434822606848
574 (%i7) rationalize (sin (0.1*x + 5.6));
581 @category{Avalia@,{c}@~{a}o num@'{e}rica}
585 @c -----------------------------------------------------------------------------
587 @deffn {Fun@,{c}@~{a}o} ratnump (@var{expr})
589 Retorna @code{true} se @var{expr} for um inteiro literal ou raz@~{a}o de inteiros
590 literais, de outra forma retorna @code{false}.
593 @category{Fun@,{c}@~{o}es predicado} @category{Rational expressions}
598 @c -----------------------------------------------------------------------------
600 @node Strings, Constants, Numbers, Data Types and Structures
602 @c -----------------------------------------------------------------------------
605 * Introduction to Strings::
606 * Functions and Variables for Strings::
609 @c -----------------------------------------------------------------------------
610 @node Introduction to Strings, Functions and Variables for Strings, Strings, Strings
611 @subsection Introduction to Strings
612 @c -----------------------------------------------------------------------------
619 @c adding the backslash to the index here breaks the LaTeX syntax of the file
620 @c maxima.fns that is created by the first pdfLaTeX run by "make pdf".
622 Strings (sequ@^{e}ncias de caractere) s@~{a}o colocadas entre aspas duplas @code{"}
623 para entrada, e mostradas com ou sem as aspas duplas, dependendo do valor da
624 vari@'{a}vel global @mrefdot{stringdisp}
626 Sequ@^{e}ncias de caractere podem conter quaisquer caracteres, incluindo caracteres detabula@,{c}@~{a}o,
627 nova linha, e de retorno de carro. A sequ@^{e}ncia @code{\"} @'{e} reconhecida como o caractere de aspas duplas
628 propriamente ditas, e @code{\\} como o caractere barra invertida. Quando a barra invertida aparece no
629 final de uma linha, a barra invertida e o terminador de linha (ou nova linha ou
630 retorno de carro junto com nova linha) s@~{a}o ignorados, de forma que a sequ@^{e}ncia de caracteres continua na
631 linha seguinte. Nenhuma outra combina@,{c}@~{a}o especial de barra invertida com outro caractere
632 @'{e} reconhecida; quando a barra invertida aparece antes de qualquer outro caractere que n@~{a}o @code{"},
633 @code{\}, ou um terminador de linha, a barra invertida @'{e} ignorada. N@~{a}o existe uma forma de
634 representar um caractere especial (tais como tabula@,{c}@~{a}o, nova linha, ou retorno de carro)
635 a n@~{a}o ser o de embutir o caractere literal na sequ@^{e}ncia de caracteres.
637 N@~{a}o existe o o tipo caracteres no Maxima; um caractere sozinho @'{e} representado como uma
638 sequ@^{e}ncia de caracteres de tamanho um.
640 O pacote adicional @code{stringproc} cont@'{e}m muitas fun@,{c}@~{o}es para trabalhar com
641 sequ@^{e}ncias de caractere.
646 @c s_1 : "This is a string.";
647 @c s_2 : "Embedded \"double quotes\" and backslash \\ characters.";
648 @c s_3 : "Embedded line termination
650 @c s_4 : "Ignore the \
651 @c line termination \
654 @c stringdisp : false;
656 @c stringdisp : true;
660 (%i1) s_1 : "This is a string.";
661 (%o1) This is a string.
662 (%i2) s_2 : "Embedded \"double quotes\" and backslash \\ characters.";
663 (%o2) Embedded "double quotes" and backslash \ characters.
664 (%i3) s_3 : "Embedded line termination
666 (%o3) Embedded line termination
668 (%i4) s_4 : "Ignore the \
672 (%o4) Ignore the line termination characters in this string.
673 (%i5) stringdisp : false;
676 (%o6) This is a string.
677 (%i7) stringdisp : true;
680 (%o8) "This is a string."
687 @c -----------------------------------------------------------------------------
688 @node Functions and Variables for Strings, , Introduction to Strings, Strings
689 @subsection Functions and Variables for Strings
690 @c -----------------------------------------------------------------------------
692 @c -----------------------------------------------------------------------------
694 @deffn {Fun@,{c}@~{a}o} concat (@var{arg_1}, @var{arg_2}, @dots{})
696 Concatena seus argumentos. Os argumentos devem avaliar para @'{a}tomos. O valor de
697 retorno @'{e} um s@'{i}mbolo se o primeiro argumento for um s@'{i}mbolo e o valor de retorno @'{e} uma sequ@^{e}ncia de caracteres nos outros casos.
699 @code{concat} avalia seus argumentos. O ap@'{o}strofo @code{'} evita a
705 (%i3) concat (y, z/2);
707 (%i4) concat ('y, z/2);
711 Um s@'{i}mbolo constru@'{i}do atrav@'{e}s de @code{concat} pode receber um valor e aparecer em
712 express@~{o}es. O operador de atribui@,{c}@~{a}o @mref{::}
713 (duplo dois pontos) avalia seu
717 (%i5) a: concat ('y, z/2);
733 Note that although @code{concat (1, 2)} looks like a number, it is a string.
736 (%i10) concat (1, 2) + 3;
741 @category{Express@~{o}es} @category{Sequ@^{e}ncias de caractere}
745 @c -----------------------------------------------------------------------------
747 @deffn {Fun@,{c}@~{a}o} sconcat (@var{arg_1}, @var{arg_2}, @dots{})
749 Concatena seus argmentos em uma sequ@^{e}ncia de caracteres. A menos que @mrefcomma{concat}
750 os argumentos @i{n@~{a}o} precisem ser @'{a}tomos.
753 (%i1) sconcat ("xx[", 3, "]:", expand ((x+y)^3));
754 (%o1) xx[3]:y^3+3*x*y^2+3*x^2*y+x^3
758 @category{Express@~{o}es} @category{Sequ@^{e}ncias de caractere}
762 @c NEEDS CLARIFICATION AND EXAMPLES
764 @c -----------------------------------------------------------------------------
766 @deffn {Fun@,{c}@~{a}o} string (@var{expr})
768 Converte @code{expr} para a nota@,{c}@~{a}o linear do Maxima como se @code{expr} tivesse sido
771 O valor de retorno de @code{string} @'{e} uma sequ@^{e}ncia de caracteres, e n@~{a}o pode ser usado em um
775 @category{Sequ@^{e}ncias de caractere}
779 @c SHOULD BE WRITTEN WITH LEADING ? BUT THAT CONFUSES CL-INFO SO WORK AROUND
781 @c -----------------------------------------------------------------------------
783 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} stringdisp
784 Valor padr@~{a}o: @code{false}
786 Quando @code{stringdisp} for @code{true}, sequ@^{e}ncias de caractere s@~{a}o mostras entre
787 aspas duplas. De outra forma, as aspas duplas n@~{a}o s@~{a}o mostradas.
789 @code{stringdisp} @'{e} sempre @code{true} na sa@'{i}da que segue imediatamente a uma entrada que define uma fun@,{c}@~{a}o.
794 @c stringdisp: false$
795 @c "Isso @'{e} uma sequ@^{e}ncia de caracteres exemplo.";
796 @c qualquercoisa () :=
797 @c print ("Isso @'{e} uma sequ@^{e}ncia de caracteres dentro de uma defini@,{c}@~{a}o de fun@,{c}@~{a}o.");
799 @c "Isso @'{e} uma sequ@^{e}ncia de caracteres exemplo.";
802 (%i1) stringdisp: false$
803 (%i2) "Isso @'{e} uma sequ@^{e}ncia de caracteres exemplo.";
804 (%o2) Isso @'{e} uma sequ@^{e}ncia de caracteres exemplo.
806 (%i3) qualquercoisa () :=
807 print ("Isso @'{e} uma sequ@^{e}ncia de caracteres dentro de uma defini@,{c}@~{a}o de fun@,{c}@~{a}o.");
809 (%o3) qualquercoisa() :=
810 print("Isso @'{e} uma sequ@^{e}ncia de caracteres dentro de uma defini@,{c}@~{a}o de fun@,{c}@~{a}o.")
811 (%i4) stringdisp: true$
812 (%i5) "Isso @'{e} uma sequ@^{e}ncia de caracteres exemplo.";
813 (%o5) "Isso @'{e} uma sequ@^{e}ncia de caracteres exemplo."
817 @category{Sinalizadores e vari@'{a}veis de exibi@,{c}@~{a}o}