In documentation for lreduce and rreduce, supply second argument as an explicit list
[maxima.git] / doc / info / pt_BR / defstruct.texi.update
blob371e1aaa599625fe478b7869f3cf9ac5bca4cd79
1 @c
2 @c versao pt_BR baseada no md5sum abaixo:
3 @c 400c5c7ab963bd345661eee17f3fd94c  defstruct.texi
4 @c
5 @c -----------------------------------------------------------------------------
6 @page
7 @node Structures,  , Arrays, Data Types and Structures
8 @section Structures
9 @c -----------------------------------------------------------------------------
11 @menu
12 * Introduction to Structures::       
13 * Functions and Variables for Structures::       
14 @end menu
16 @c -----------------------------------------------------------------------------
17 @node Introduction to Structures, Functions and Variables for Structures, Structures, Structures
18 @subsection Introduction to Structures
19 @c -----------------------------------------------------------------------------
21 Maxima fornece uma agrega@,{c}@~{a}o simples de dados chamada de uma estrutura.
22 Uma estrutura @'{e} uma express@~{a}o na qual argumentos s@~{a}o identificados pelo nome (o campo nome)
23 e a express@~{a}o como um todo @'{e} identificada por seu operador (o nome da estrutura).
24 Um valor de campo pode ser qualquer express@~{a}o.
26 Uma estrutura @'{e} definida pela fun@,{c}@~{a}o @code{defstruct};
27 A vari@'{a}vel global @code{structures} @'{e} a lista das estruturas definidas pelo usu@'{a}rio.
28 A fun@,{c}@~{a}o @code{new} cria inst@^{a}ncias de estruturas.
29 O operador @code{@@} refere-se a campos.
30 O comando @code{kill(@var{S})} remove a defini@,{c}@~{a}o da estrutura @var{S},
31 e @code{kill(@var{x}@@ @var{a})} desassocia o campo @var{a} da inst@^{a}ncia de estrutura chamada @var{x}.
33 Na impress@~{a}o bonita do console de exibi@,{c}@~{a}o (com @code{display2d} igual a @code{true}),
34 inst@^{a}ncias de estruturas s@~{a}o mostradas com o valor de cada campo
35 representado como uma equa@,{c}@~{a}o, com o nome do campo no primeiro membro da equa@,{c}@~{a}o
36 e o valor no segundo membro.
37 (A equ@,{c}@~{a}o @'{e} somente uma constru@,{c}@~{a}o visual; somente o valor @'{e} armazenado atualmente.)
38 Na exibi@,{c}@~{a}o em uma linha (via @code{grind} ou com @code{display2d} igual a @code{false}),
39 inst@^{a}ncias de estrutura s@~{a}o mostradas sem os nomes dos capos.
41 N@~{a}o existe maneira de usar um nome de campo como um nome de fun@,{c}@~{a}o,
42 embora um valor de campo possa ser uma express@~{a}o lambda.
43 Tamb@'{e}m n@~{a}o podem os valores de campo serem restricos a certos tipos; qualquer campo pode receber qualqur tipo de express@~{a}o.
44 N@~{a}o existe maneira de fazer alguns campos acess@'{i}veis ou bloqueados em contextos diferentes;
45 todos os campos s@~{a}o sempre vis@'{i}veis.
47 @c -----------------------------------------------------------------------------
48 @node Functions and Variables for Structures,  , Introduction to Structures, Structures
49 @subsection Functions and Variables for Structures
50 @c -----------------------------------------------------------------------------
52 @c -----------------------------------------------------------------------------
53 @defvr {Vari@'{a}vel global} structures
55 A vari@'{a}vel global @code{structures} @'{e} a lista de estruturas definidas pelo usu@'{a}rio e @'{e} criada por @code{defstruct}.
57 @opencatbox
58 @category{Estruturas} @category{Vari@'{a}veis globais}
59 @closecatbox
60 @end defvr
62 @c -----------------------------------------------------------------------------
63 @deffn  {Fun@,{c}@~{a}o} defstruct @
64 @fname{defstruct} (@var{S}(@var{a_1}, @dots{}, @var{a_n})) @
65 @fname{defstruct} (@var{S}(@var{a_1} = @var{v_1}, @dots{}, @var{a_n} = @var{v_n}))
67 Define uma estrutura, que @'{e} uma lista de campos nomeados como @var{a_1}, @dots{},
68 @var{a_n} associada a um s@'{i}mbolo @var{S}.
69 Uma inst@^{a}ncia de uma estrutura @'{e} apenas uma express@~{a}o que tem um operador @var{S}
70 e exatamente @code{n} argumentos.
71 O comando @code{new(@var{S})} cria uma nova inst@^{a}ncia da estrutura @var{S}.
73 Um argumento que seja apenas um s@'{i}mbolo @var{a} especifica o nome de um campo.
74 Um argumento que @'{e} uma equa@,{c}@~{a}o @code{@var{a} = @var{v}} especifica o nome de campo @var{a}
75 e seu valor padr@~{a}o @var{v}.
76 O valor padr@~{a}o pode ser qualquer express@~{a}o.
78 A fun@,{c}@~{a}o @code{defstruct} coloca @var{S} na lista de estruturas definidas pelo usu@'{a}rio, @code{structures}.
80 O comando @code{kill(@var{S})} remove @var{S} da lista de estruturas definidas pelo usu@'{a}rio,
81 e remove a defini@,{c}@~{a}o da estrutura.
83 Exemplos:
85 @c ===beg===
86 @c defstruct (foo (a, b, c));
87 @c structures;
88 @c new (foo);
89 @c defstruct (bar (v, w, x = 123, y = %pi));
90 @c structures;
91 @c new (bar);
92 @c kill (foo);
93 @c structures;
94 @c ===end===
95 @example
96 (%i1) defstruct (foo (a, b, c));
97 (%o1)                    [foo(a, b, c)]
98 (%i2) structures;
99 (%o2)                    [foo(a, b, c)]
100 (%i3) new (foo);
101 (%o3)                     foo(a, b, c)
102 (%i4) defstruct (bar (v, w, x = 123, y = %pi));
103 (%o4)             [bar(v, w, x = 123, y = %pi)]
104 (%i5) structures;
105 (%o5)      [foo(a, b, c), bar(v, w, x = 123, y = %pi)]
106 (%i6) new (bar);
107 (%o6)              bar(v, w, x = 123, y = %pi)
108 (%i7) kill (foo);
109 (%o7)                         done
110 (%i8) structures;
111 (%o8)             [bar(v, w, x = 123, y = %pi)]
112 @end example
114 @opencatbox
115 @category{Estruturas}
116 @closecatbox
117 @end deffn
119 @c -----------------------------------------------------------------------------
120 @deffn {Fun@,{c}@~{a}o} new @
121 @fname{new} (@var{S}) @
122 @fname{new} (@var{S} (@var{v_1}, @dots{}, @var{v_n}))
124 A fun@,{c}@~{a}o @code{new} cria novas inst@^{a}ncias de estruturas.
126 O comando @code{new(@var{S})} cria uma nova inst@^{a}ncia da estrutura @var{S}
127 na qual a cada campo @'{e} atribu@'{i}do seu valor padr@~{a}o, se ouver algum,
128 ou nenhum valor se nenhum valor padr@~{a}o for especificado na defini@,{c}@~{a}o da estrutura.
130 O comando @code{new(@var{S}(@var{v_1}, ..., @var{v_n}))} cria uma nova inst@^{a}ncia de @var{S}
131 na qual a campos s@~{a}o atribu@'{i}dos os valores @var{v_1}, @dots{}, @var{v_n}.
133 Exemplos:
135 @c ===beg===
136 @c defstruct (foo (w, x = %e, y = 42, z));
137 @c new (foo);
138 @c new (foo (1, 2, 4, 8));
139 @c ===end===
140 @example
141 (%i1) defstruct (foo (w, x = %e, y = 42, z));
142 (%o1)              [foo(w, x = %e, y = 42, z)]
143 (%i2) new (foo);
144 (%o2)               foo(w, x = %e, y = 42, z)
145 (%i3) new (foo (1, 2, 4, 8));
146 (%o3)            foo(w = 1, x = 2, y = 4, z = 8)
147 @end example
149 @opencatbox
150 @category{Estruturas}
151 @closecatbox
152 @end deffn
154 @c -----------------------------------------------------------------------------
155 @deffn {Operador} @@
157 O operador @code{@@} @'{e} o operador de acesso a campo de estrutura.
158 A express@~{a}o @code{@var{x}@@ @var{a}} refere-se ao valor do campo @var{a} da inst@^{a}ncia de estrutura @var{x}.
159 O nome de campo @var{a} n@~{a}o @'{e} avaliado.
161 Se ao campo @var{a} na inst@^{a}ncia @var{x} n@~{a}o tiver sido atribu@'{i}do nenhum valor,
162 a express@~{a}o @code{@var{x}@@ @var{a}} avalia para si mesma.
164 O comando @code{kill(@var{x}@@ @var{a})} remove o valor do campo @var{a} na inst@^{a}ncia @var{x}.
166 Exemplos:
168 @c ===beg===
169 @c defstruct (foo (x, y, z));
170 @c u : new (foo (123, a - b, %pi));
171 @c u@z;
172 @c u@z : %e;
173 @c u;
174 @c kill (u@z);
175 @c u;
176 @c u@z;
177 @c ===end===
178 @example
179 (%i1) defstruct (foo (x, y, z));
180 (%o1)                    [foo(x, y, z)]
181 (%i2) u : new (foo (123, a - b, %pi));
182 (%o2)           foo(x = 123, y = a - b, z = %pi)
183 (%i3) u@@z;
184 (%o3)                          %pi
185 (%i4) u@@z : %e;
186 (%o4)                          %e
187 (%i5) u;
188 (%o5)            foo(x = 123, y = a - b, z = %e)
189 (%i6) kill (u@@z);
190 (%o6)                         done
191 (%i7) u;
192 (%o7)              foo(x = 123, y = a - b, z)
193 (%i8) u@@z;
194 (%o8)                          u@@z
195 @end example
197 O nome de campo n@~{a}o @'{e} avaliado.
199 @c ===beg===
200 @c defstruct (bar (g, h));
201 @c x : new (bar);
202 @c x@h : 42;
203 @c h : 123;
204 @c x@h;
205 @c x@h : 19;
206 @c x;
207 @c h;
208 @c ===end===
209 @example
210 (%i1) defstruct (bar (g, h));
211 (%o1)                      [bar(g, h)]
212 (%i2) x : new (bar);
213 (%o2)                       bar(g, h)
214 (%i3) x@@h : 42;
215 (%o3)                          42
216 (%i4) h : 123;
217 (%o4)                          123
218 (%i5) x@@h;
219 (%o5)                          42
220 (%i6) x@@h : 19;
221 (%o6)                          19
222 (%i7) x;
223 (%o7)                    bar(g, h = 19)
224 (%i8) h;
225 (%o8)                          123
226 @end example
228 @opencatbox
229 @category{Estruturas} @category{Operadores}
230 @closecatbox
231 @end deffn