~ubuntu-branches/ubuntu/lucid/kde-l10n-es/lucid

« back to all changes in this revision

Viewing changes to docs/kdeedu/kturtle/programming-reference.docbook

  • Committer: Bazaar Package Importer
  • Author(s): Harald Sitter
  • Date: 2010-03-31 04:52:10 UTC
  • mfrom: (1.1.23 upstream)
  • Revision ID: james.westby@ubuntu.com-20100331045210-dyn6hc2z42piw6oa
Tags: 4:4.4.2-0ubuntu1
* New upstream release
* Base all kde-l10n packages on a common packaging
  + add build script debian/build-l10n.sh to fetch source from upstream and
    build source packages from that
  + revise all files to be more auto-editable and include warnings
    where possible, to ensure that out-of-branch edits do not happen
* Switch to source format 3
  + add quilt as build-dep (get-desktop causes changes that end up as patches)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<!--Dear translator: please NEVER translate the id or anything inside the tags as they are needed in english by the application
2
 
     Thanks a lot in advance.-->
3
1
<chapter id="reference">
4
2
<title
5
 
>Guía de referencia del programador de &kturtle; &logo;</title>
 
3
>Guía del lenguaje de programación &turtlescript; </title>
6
4
<para
7
 
>Esta es la guía de referencia para el programador de &kturtle; &logo;. Comenzaremos, en este capítulo, introduciendo brevemente los <link linkend="different-instructions"
8
 
>diferentes tipos de instrucciones</link
9
 
>. Luego, seguiremos uno a uno con la explicación de los <link linkend="commands"
10
 
>comandos</link
11
 
>. Más adelante, nos referiremos a las <link linkend="containers"
12
 
> variables</link
13
 
>, <link linkend="math"
14
 
>los operadores matemáticos</link
15
 
>, <link linkend="questions"
16
 
>los condicionales</link
17
 
> y los <link linkend="controlling-execution"
18
 
>estructuras de control</link
19
 
>. Finalmente, aprenderemos a crear nuestras propias funciones, mediante el comando <link linkend="learn"
 
5
>Esta es la guía del lenguaje de programación &turtlescript; de &kturtle;. La primera sección de este capítulo está dedicada a aspectos relacionados con la <link linkend="grammar"
 
6
>gramática</link
 
7
> de los programas de &turtlescript;. La segunda sección trata exclusivamente los <link linkend="mathematical-operators"
 
8
>operadores aritméticos</link
 
9
>, los <link linkend="boolean-operators"
 
10
>operadores lógicos (verdadero/falso)</link
 
11
> y los <link linkend="comparing-operators"
 
12
>operadores de comparación</link
 
13
>. La tercera sección es, básicamente, una gran lista con todos las <link linkend="commands"
 
14
>órdenes</link
 
15
> explicadas una a una. La cuarta sección explica cómo  <link linkend="assignment-of-variables"
 
16
>asignar valores a las variables</link
 
17
>. Finalmente, en la quinta sección se explica cómo organizar la ejecución de órdenes usando <link linkend="controlling-execution"
 
18
>declaraciones de control de la ejecución</link
 
19
> y, en la sexta, cómo puede crear sus propias órdenes con <link linkend="learn"
20
20
>aprender</link
21
21
>.</para>
22
22
 
23
 
<sect1 id="different-instructions">
24
 
<title
25
 
>Los diferentes tipos de instrucciones</title>
26
 
<para
27
 
>Como cualquier otro lenguaje, LOGO tiene diferentes tipos de palabras y símbolos. Aquí se explican brevemente las características de los distintos grupos y las diferencias existentes entre ellos.</para>
 
23
<sect1 id="grammar">
 
24
<title
 
25
>La gramática de &turtlescript;</title>
 
26
<para
 
27
>Como ocurre con todos los lenguajes, &turtlescript; consta de diferentes tipos de palabras y símbolos. En español distinguimos entre verbos (como «caminar» y «cantar») y sustantivos (como «hermana» o «casa»), que se usan para distintos propósitos. &turtlescript; es un lenguaje de programación que se usa para dar instrucciones a la tortuga sobre lo que tiene que hacer.</para>
 
28
<para
 
29
>En esta sección se explican brevemente los distintos tipos de palabras que usa &turtlescript;. Se introduce lo que son <link linkend="comment"
 
30
>comentarios</link
 
31
>, <link linkend="command"
 
32
>órdenes</link
 
33
> y los tres diferentes tipos de literales: <link linkend="number"
 
34
>números</link
 
35
>, <link linkend="string"
 
36
>cadenas</link
 
37
> y <link linkend="boolean-value"
 
38
>valores lógicos (verdadero/falso)</link
 
39
>.</para>
 
40
 
 
41
 
 
42
<sect2 id="comment">
 
43
<title
 
44
>Comentarios</title>
 
45
<para
 
46
>Un programa consiste de instrucciones (que es lo que se ejecuta) y de los denominados comentarios. Los comentarios no se ejecutan. Es decir, &kturtle; los ignora por completo cuando se ejecuta un programa. Los comentarios están ahí para que otros programadores puedan comprender mejor el programa. Todo lo que aparece después de un símbolo <userinput
 
47
>#</userinput
 
48
> se considera como un comentario en  &turtlescript;. Un ejemplo es este programa que no hace nada:  <screen>
 
49
# este programa no hace nada, es solo un comentario
 
50
</screen
 
51
> Es un programa inútil, pero permite explicar bien el asunto.</para>
 
52
<para
 
53
>Los comentarios son especialmente útiles en el caso de programas más complejos, ya que permiten dar consejos a otros programadores. En el siguiente programa verá comentarios que se usan junto con la orden <link linkend="print"
 
54
>escribir</link
 
55
>. <screen>
 
56
# este programa ha sido creado por Cies Breijs
 
57
escribir "este texto aparecerá escrito en el lienzo"
 
58
# la línea anterior no es un comentario, pero la siguiente sí que lo es:
 
59
# escribir "¡este texto no aparecerá escrito!"
 
60
</screen
 
61
> La primera línea describe el programa. La segunda línea es ejecutada por &kturtle;, que escribe en el lienzo <userinput
 
62
>este texto aparecerá escrito en el lienzo</userinput
 
63
>. La tercera línea es un comentario. Y la cuarta es un comentario que contiene una orden de &turtlescript;. Si de esta cuarta línea se eliminara el símbolo <userinput
 
64
>#</userinput
 
65
>, &kturtle; ejecutaría la orden de escribir.  Lo que los programadores suelen decir es que la orden de escribir se ha «comentado».</para>
 
66
<para
 
67
>Las líneas comentadas aparecen <glossterm
 
68
>resaltadas</glossterm
 
69
> en gris claro en el <link linkend="the-editor"
 
70
>editor de código</link
 
71
>.</para>
 
72
</sect2>
28
73
 
29
74
<sect2 id="command">
30
75
<title
31
 
>Comandos</title>
 
76
>Órdenes</title>
32
77
<para
33
 
>Los comandos nos permiten pedirle a la tortuga (o &kturtle;) que realice una acción determinada. Algunos comandos requieren información (parámetros), mientras que otros devuelven información. <screen
34
 
># avanzar solicita un número como parámetro (en este caso, pasaremos el 100):
 
78
>Con las órdenes puede decirle a la tortuga o a &kturtle; lo que tiene que hacer. Algunas órdenes necesitan un parámetro de entrada, mientras que otras devuelven un parámetro de salida. <screen>
 
79
# avanzar es una orden que requiere de un parámetro de entrada, en este caso el número 100:
35
80
avanzar 100
36
 
</screen>
37
 
</para>
 
81
</screen
 
82
> La primera línea es un  <link linkend="comment"
 
83
>comentario</link
 
84
>. La segunda línea contiene la orden <userinput
 
85
>avanzar</userinput
 
86
> y el <link linkend="number"
 
87
>número</link
 
88
> <userinput
 
89
>100</userinput
 
90
>. El número no es parte de la orden, es solo su parámetro de entrada.</para>
38
91
<para
39
 
>Podemos ver una descripción detallada de todos los comandos que &kturtle; soporta <link linkend="commands"
 
92
>Para una descripción detallada de todas las órdenes que reconoce &kturtle;, vaya <link linkend="commands"
40
93
>aquí</link
41
 
>.</para>
 
94
>. Las órdenes integradas en &kturtle; aparecen <glossterm
 
95
>resaltadas</glossterm
 
96
> en azul oscuro.</para>
42
97
</sect2>
43
98
 
44
99
<sect2 id="number">
45
100
<title
46
101
>Números</title>
47
102
<para
48
 
>Seguramente ya conocerás bastante acerca de los números. De hecho, la forma en la cual utilizaremos los números en &kturtle; no es muy diferente de como lo hacemos en el habla o las matemáticas. </para>
 
103
>Lo más probable es que ya sepa bastante de números. La forma en que &kturtle; usa los números no es muy diferente a cómo se hace en el idioma hablado o en las matemáticas. </para>
49
104
<para
50
 
>Tenemos los llamados números naturales: <userinput
 
105
>Tenemos los llamados números naturales («<userinput
51
106
>0</userinput
52
 
>, <userinput
 
107
>», «<userinput
53
108
>1</userinput
54
 
>, <userinput
 
109
>», «<userinput
55
110
>2</userinput
56
 
>, <userinput
 
111
>», «<userinput
57
112
>3</userinput
58
 
>, <userinput
 
113
>», «<userinput
59
114
>4</userinput
60
 
>, <userinput
 
115
>», «<userinput
61
116
>5</userinput
62
 
>, etc. Los enteros negativos: <userinput
 
117
>», etc.), los enteros negativos («<userinput
63
118
>-1</userinput
64
 
>, <userinput
 
119
>», «<userinput
65
120
>-2</userinput
66
 
>, <userinput
 
121
>», «<userinput
67
122
>-3</userinput
68
 
>, etc. Y los números con decimales <userinput
69
 
>0.1</userinput
70
 
>, <userinput
71
 
>3.14</userinput
72
 
>, <userinput
73
 
>33.3333</userinput
74
 
>, <userinput
75
 
>-5.05</userinput
76
 
>, <userinput
77
 
>-1.0</userinput
78
 
>. </para>
 
123
>», etc.), y los números con decimales («<userinput
 
124
>0,1</userinput
 
125
>», «<userinput
 
126
>3,14</userinput
 
127
>», «<userinput
 
128
>33,3333</userinput
 
129
>», «<userinput
 
130
>-5,05</userinput
 
131
>», «<userinput
 
132
>-1,0</userinput
 
133
>», etc.). </para>
79
134
<para
80
 
>Los números pueden utilizarse en <link linkend="questions"
81
 
>condicionales</link
82
 
> y <link linkend="math"
83
 
>cálculos matemáticos</link
84
 
>.. Y también pueden ponerse dentro de <link linkend="containers"
 
135
>Los números pueden utilizarse en conjunción con <link linkend="mathematical-operators"
 
136
>operadores aritméticos</link
 
137
> y <link linkend="comparing-operators"
 
138
>operadores de comparación</link
 
139
>. También pueden guardarse en <link linkend="assignment-of-variables"
85
140
>variables</link
86
 
>.</para>
87
 
<para
88
 
>Los números se <glossterm
89
 
>resaltan</glossterm
90
 
> con azul en el <link linkend="the-code-editor"
91
 
>editor de código</link
92
 
>.</para>
 
141
>. Los números aparecen <glossterm
 
142
>resaltados</glossterm
 
143
> en rojo oscuro.</para>
93
144
</sect2>
94
145
 
 
146
<!-- constants like pi? -->
 
147
 
95
148
<sect2 id="string">
96
149
<title
97
150
>Cadenas</title>
98
151
<para
99
 
>Comenzaremos con un ejemplo:<screen>
 
152
>Primero un ejemplo: <screen>
100
153
escribir "Hola, soy una cadena."
101
154
</screen
102
 
> En nuestro ejemplo, <userinput
 
155
> En este ejemplo, <userinput
103
156
>escribir</userinput
104
 
> es un comando. Este comando toma como parámetro de entrada una cadena: "Hola, soy una cadena." (la forma de indicarle a &kturtle; que estamos trabajando con una cadena, es delimitar el texto en cuestión entre comillas dobles: "...").</para>
105
 
<para
106
 
>Las cadenas pueden utilizarse dentro de <link linkend="containers"
107
 
>variables</link
108
 
>. Pero no es posible utilizarlas en <link linkend="questions"
109
 
>condicionales</link
110
 
> y cálculos matemáticos..</para>
111
 
<para
112
 
>Las cadenas se <glossterm
113
 
>resaltan</glossterm
114
 
> con rojo oscuro en el <link linkend="the-code-editor"
115
 
>editor de código</link
116
 
>.</para>
117
 
</sect2>
118
 
 
119
 
 
120
 
<sect2 id="name">
121
 
<title
122
 
>Nombres</title>
123
 
<para
124
 
>A medida que utilicemos el lenguaje de programación &logo;, iremos generando nuestras propias estructuras. Con frecuencia, haremos uso de las <link linkend="containers"
125
 
>variables</link
126
 
>, y en muchos casos invocaremos al comando <link linkend="learn"
127
 
>aprender</link
128
 
> para crear nuestras nuevas funciones. Al crear un <link linkend="containers"
129
 
>variable</link
130
 
> o una nueva función con <link linkend="learn"
131
 
>aprender</link
132
 
>, tendremos que darle un nombre a nuestra nueva estructura.</para>
133
 
<para
134
 
>Así, podremos utilizar cualquier nombre, siempre y cuando no este siendo ya utilizado por algún comando (es decir, un nombre no puede ser una palabra reservada para un comando de KTurtle). Por ejemplo, no es posible utilizar el nombre <link linkend="forward"
135
 
>avanzar</link
136
 
> por ser este el nombre de un comando KTurtle. 
137
 
<screen>
138
 
#Lo siguiente, nos daría un mensaje de error: avanzar = 20
139
 
#Como avanzar es un comando, lo que corresponde es: avanzar 20
140
 
</screen>
141
 
Todo nombre debe comenzar con una letra. A partir de allí, pueden contener tanto letras, como números o guiones bajos (_). </para>
142
 
<para
143
 
>Más adelante veremos a las <link linkend="containers"
144
 
>variables</link
145
 
> y al comando <link linkend="learn"
146
 
>aprender</link
147
 
> en más detalle. </para>
148
 
</sect2>
149
 
 
150
 
<sect2 id="assignment">
151
 
<title
152
 
>Asignaciones</title>
153
 
<para
154
 
>Las asignaciones se realizan con el símbolo <userinput
155
 
>=</userinput
156
 
>. En los lenguajes de programación entendemos el símbolo <userinput
157
 
>=</userinput
158
 
>, diciendo que tal variable toma el valor de, y no diciendo que tal variable es igual a. Decir que una variable es igual a, es más apropiado para el símbolo <userinput
159
 
>==</userinput
160
 
> que no es una asignación sino un <link linkend="questions"
161
 
>condicional</link
162
 
>.</para>
163
 
<para
164
 
>Las asignaciones se utilizan por lo general por dos motivos: (1) para dar contenido a una <link linkend="containers"
165
 
>variable</link
166
 
>, y (2) para modificar el contenido de una variable. Por ejemplo: <screen
167
 
>x = 10
168
 
# la variable x toma el valor del número 10
169
 
W = "Mi edad es: "
170
 
# la variable W toma ahora el valor de la cadena "Mi edad es: "
171
 
# Ahora, imprimimos el valor de ambas variables en el área de dibujo.
172
 
escribir W + x
173
 
</screen>
174
 
</para>
175
 
<para
176
 
>Para ver más ejemplos podemos consultar la sección <link linkend="containers"
177
 
>variables</link
178
 
>.</para>
179
 
</sect2>
180
 
 
181
 
<sect2 id="math-symbols">
182
 
<title
183
 
>Símbolos matemáticos</title>
184
 
<para
185
 
>&kturtle; soporta todas las  operaciones matemáticas básicas: suma (<userinput
 
157
> es una orden y <userinput
 
158
>"Hola, soy una cadena."</userinput
 
159
> es una cadena. Las cadenas comienzan y terminan con dobles comillas (<userinput
 
160
>"</userinput
 
161
>); es esto lo que hace que &kturtle; las identifique como tal.</para>
 
162
<para
 
163
>Al igual que ocurre con los <link linkend="number"
 
164
>números</link
 
165
>, las cadenas también pueden ser guardadas en <link linkend="assignment-of-variables"
 
166
>variables</link
 
167
>. Sin embargo, al contrario que los números, las cadenas no pueden usarse con <link linkend="mathematical-operators"
 
168
>operadores aritméticos </link
 
169
> o con <link linkend="comparing-operators"
 
170
>operadores de comparación</link
 
171
>. Las cadenas aparecen <glossterm
 
172
>resaltadas</glossterm
 
173
> en rojo. </para>
 
174
</sect2>
 
175
 
 
176
<sect2 id="boolean-value">
 
177
<title
 
178
>Valores lógicos (verdadero/falso)</title>
 
179
<para
 
180
>Hay solo dos valores lógicos: <userinput
 
181
>verdadero</userinput
 
182
> y <userinput
 
183
>falso</userinput
 
184
>, aunque en ocasiones se los denomina «sí» y «no», o «uno» y «cero». Pero en &turtlescript; siempre los llamaremos  <userinput
 
185
>verdadero</userinput
 
186
> y <userinput
 
187
>falso</userinput
 
188
>. Fíjese en este código de &turtlescript;: <screen>
 
189
$a = verdadero
 
190
</screen
 
191
> Si le echa un vistazo al <link linkend="the-inspector"
 
192
>inspector</link
 
193
> verá que a la <link linkend="assignment-of-variables"
 
194
>variable</link
 
195
> <userinput
 
196
>$a</userinput
 
197
> le corresponde el valor <userinput
 
198
>verdadero</userinput
 
199
> y que es de tipo lógico.</para>
 
200
<para
 
201
>Con frecuencia, los valores lógicos son el resultado de un <link linkend="comparing-operators"
 
202
>operador de comparación</link
 
203
>, como ocurre en el siguiente ejemplo: <screen>
 
204
$respuesta = 10 &gt; 3
 
205
</screen
 
206
> A la <link linkend="assignment-of-variables"
 
207
>variable</link
 
208
> <userinput
 
209
>$respuesta</userinput
 
210
> le corresponde el valor <userinput
 
211
>verdadero</userinput
 
212
> porque <userinput
 
213
>10</userinput
 
214
> es mayor que <userinput
 
215
>3</userinput
 
216
>. </para>
 
217
<para
 
218
>Los valores lógicos <userinput
 
219
>verdadero</userinput
 
220
> y <userinput
 
221
>falso</userinput
 
222
> aparecen <glossterm
 
223
>resaltados</glossterm
 
224
> en rojo oscuro.</para>
 
225
</sect2>
 
226
 
 
227
</sect1>
 
228
 
 
229
 
 
230
 
 
231
<sect1 id="operators">
 
232
<title
 
233
>Operadores aritméticos, lógicos y de comparación</title>
 
234
<para
 
235
>Aunque el título de esta sección parezca complejo, verá como el contenido no es tan difícil como parece.</para>
 
236
 
 
237
<sect2 id="mathematical-operators">
 
238
<title
 
239
>Operadores aritméticos</title>
 
240
<para
 
241
>Estos son los símbolos aritméticos básicos: suma (<userinput
186
242
>+</userinput
187
243
>), resta (<userinput
188
244
>-</userinput
190
246
>*</userinput
191
247
>), división (<userinput
192
248
>/</userinput
193
 
>) y los parentesis, <userinput
194
 
>(</userinput
 
249
>) y potenciación (<userinput
 
250
>^</userinput
 
251
>).</para>
 
252
 
 
253
<para
 
254
>Este es un ejemplo de cómo usar los operadores aritméticos en &turtlescript;: <screen>
 
255
$sumar = 1 + 1
 
256
$restar = 20 - 5
 
257
$multiplicar = 15 * 2
 
258
$dividir = 30 / 30
 
259
$potencia = 2 ^ 2
 
260
</screen
 
261
> Los valores resultantes de estas operaciones aritméticos son <link linkend="assignment-of-variables"
 
262
>asignados a variables</link
 
263
>. Puede ver los valores resultantes en el <link linkend="the-inspector"
 
264
>inspector</link
 
265
>.</para>
 
266
<para
 
267
>Si lo que quiere es realizar un cálculo simple, puede hacer algo como esto: <screen
 
268
>escribir 2010-12
 
269
</screen
 
270
></para>
 
271
<para
 
272
>Ahora veamos un ejemplo con paréntesis: <screen>
 
273
escribir ( ( 20 - 5 ) * 2 / 30 ) + 1
 
274
</screen
 
275
> Las operaciones dentro de los paréntesis se calculan primero. En este ejemplo, primero se calcula 20 - 5; el resultado se multiplica por 2, luego se divide por 30 y, por último, se le suma 1. El resultado final es 2. Los paréntesis pueden también usarse en otros casos.</para>
 
276
<para
 
277
>&kturtle; también tiene otras funciones aritméticas en forma de órdenes. Eche un vistazo a las siguientes órdenes, eso sí, teniendo en cuenta que se trata de operaciones avanzadas: <link linkend="round"
 
278
>redondear</link
 
279
>, <link linkend="random"
 
280
>aleatorio</link
 
281
>, <link linkend="sqrt"
 
282
>raíz</link
 
283
>, <link linkend="pi"
 
284
>pi</link
 
285
>, <link linkend="sin"
 
286
>sen</link
 
287
>, <link linkend="cos"
 
288
>cos</link
 
289
>, <link linkend="tan"
 
290
>tan</link
 
291
>, <link linkend="arcsin"
 
292
>arcsen</link
 
293
>, <link linkend="arccos"
 
294
>arccos</link
 
295
>, <link linkend="arctan"
 
296
>arctan</link
 
297
>.</para>
 
298
</sect2>
 
299
 
 
300
<sect2 id="boolean-operators">
 
301
<title
 
302
>Operadores lógicos (verdadero/falso)</title>
 
303
<para
 
304
>Mientras que los <link linkend="mathematical-operators"
 
305
>operadores aritméticos</link
 
306
> se usan principalmente con <link linkend="number"
 
307
>números</link
 
308
>, los operadores lógicos están pensados para ser usados con <link linkend="boolean-value"
 
309
>valores lógicos</link
 
310
> (<userinput
 
311
>verdadero</userinput
195
312
> y <userinput
196
 
>)</userinput
197
 
>.</para>
198
 
<para
199
 
>Para una explicación más completa, podemos consultar la sección <link linkend="math"
200
 
>matemática</link
201
 
>.</para>
202
 
</sect2>
203
 
 
204
 
<sect2 id="question">
205
 
<title
206
 
>Condicionales</title>
207
 
<para
208
 
>Podemos establecer condiciones simples en las cuales la respuesta será simplemente verdadero o falso.</para>
209
 
<para
210
 
>El uso de los condicionales se explica detalladamente en la sección <link linkend="questions"
211
 
>condicionales</link
212
 
></para>
213
 
</sect2>
214
 
 
215
 
<sect2 id="questions-glue">
216
 
<title
217
 
>Operadores lógicos</title>
218
 
<para
219
 
>Mediante los operadores lógicos se pueden combinar condicionales. Los operadores lógicos están representados por <userinput
 
313
>falso</userinput
 
314
>). Hay solo tres operadores lógicos: <userinput
220
315
>y</userinput
221
316
>, <userinput
222
 
>or</userinput
 
317
>o</userinput
223
318
> y <userinput
224
319
>no</userinput
225
 
>.</para>
226
 
<para
227
 
>El uso de los operadores lógicos se explica detalladamente en la sección <link linkend="questions"
228
 
>questions</link
 
320
>. El siguiente código de &turtlescript; muestra cómo usarlos: <screen>
 
321
$y_1_1 = verdadero y verdadero  # -> verdadero
 
322
$y_1_0 = verdadero y falso  # -> falso
 
323
$y_0_1 = falso y verdadero  # -> falso
 
324
$y_0_0 = falso y falso  # -> falso
 
325
 
 
326
$o_1_1 = verdadero o verdadero # -> verdadero
 
327
$o_1_0 = verdadero o falso  # -> verdadero
 
328
$o_0_1 = falso o verdadero  # -> verdadero
 
329
$o_0_0 = falso o falso  # -> falso
 
330
 
 
331
$no_1 = no verdadero  # -> falso
 
332
$no_0 = no falso  # -> verdadero
 
333
</screen
 
334
> Puede ver los valores resultantes en el <link linkend="the-inspector"
 
335
>inspector</link
 
336
>, aunque también se le proporcionan pequeños comentarios al final de las líneas. <userinput
 
337
>y</userinput
 
338
> resulta en <userinput
 
339
>verdadero</userinput
 
340
> solo si ambos lados son <userinput
 
341
>verdaderos</userinput
 
342
>. <userinput
 
343
>o</userinput
 
344
> resulta en <userinput
 
345
>verdadero</userinput
 
346
> si uno de los dos lados es <userinput
 
347
>verdadero</userinput
 
348
>. Y <userinput
 
349
>no</userinput
 
350
> transforma <userinput
 
351
>verdadero</userinput
 
352
> en <userinput
 
353
>falso</userinput
 
354
> y<userinput
 
355
>falso</userinput
 
356
> en <userinput
 
357
>verdadero</userinput
 
358
>. </para>
 
359
<para
 
360
>Los operadores lógicos aparecen <glossterm
 
361
>resaltados</glossterm
 
362
> en rosado.</para>
 
363
 
 
364
<sect3 id="boolean-operators-advanced-examples">
 
365
<title
 
366
>Unos ejemplos más complejos:</title>
 
367
<para
 
368
>Considere el siguiente ejemplo con <userinput
 
369
>and</userinput
 
370
>: <screen>
 
371
$a = 1
 
372
$b = 5
 
373
si (($a &lt; 10) y ($b == 5)) y ($a &lt; $b) {
 
374
  escribir "hola"
 
375
}
 
376
</screen
 
377
> En este código de &turtlescript;, el resultado de los tres <link linkend="comparing-operators"
 
378
>operadores de comparación</link
 
379
> están agrupados mediante los operadores <userinput
 
380
>y</userinput
 
381
>. Esto significa que los tres resultados tienen que ser iguales a «verdadero» para que se escriba la palabra «hola».</para>
 
382
 
 
383
<para
 
384
>Un ejemplo con <userinput
 
385
>o</userinput
 
386
>: <screen>
 
387
$n = 1
 
388
si ($n &lt; 10) o ($n == 2) {
 
389
  escribir "hola"
 
390
}
 
391
</screen
 
392
> En este código de &turtlescript;, la parte izquierda del operador <userinput
 
393
>o</userinput
 
394
> es «verdadera», mientras que la derecha es «falsa». Ya que una de las dos partes del operador <userinput
 
395
>o</userinput
 
396
> es «verdadera», el resultado de la operación también lo es. Esto quiere decir que se escribe la palabra «hola».</para>
 
397
 
 
398
<para
 
399
>Finalmente, un ejemplo con <userinput
 
400
>no</userinput
 
401
>, que transforma «verdadero» en «falso» y «falso» en verdadero». Fíjese:  <screen
 
402
>$n = 1
 
403
si no ($n == 3) {
 
404
  escribir "hola"
 
405
} sino {
 
406
  escribir "no hola ;-)"
 
407
}
 
408
</screen
229
409
></para>
 
410
</sect3>
230
411
</sect2>
231
412
 
232
 
 
233
 
<sect2 id="comment">
 
413
<sect2 id="comparing-operators">
234
414
<title
235
 
>Comentarios</title>
 
415
>Operadores de comparación</title>
236
416
<para
237
 
>Los comentarios son líneas que comienzan con <userinput
238
 
>#</userinput
239
 
>. Por ejemplo:<screen>
240
 
#Esto es un comentario
241
 
escribir "Esto no es un comentario"
242
 
#Así, la línea anterior no era un comentario, pero la próxima lo será:
243
 
#escribir "Esto no se mostrará porque es un comentario."
 
417
>Considere esta comparación sencilla: <screen>
 
418
$respuesta = 10 &gt; 3
244
419
</screen
245
 
> La utilidad de los comentarios reside tanto en la posibilidad de dar una breve explicación acerca del código, como en la de apartar momentáneamente ciertas líneas de la ejecución, sin tener que borrarlas.</para>
246
 
<para
247
 
>Las líneas comentadas se <glossterm
248
 
>resaltan</glossterm
249
 
> en amarillo oscuro en el <link linkend="the-code-editor"
250
 
>editor de código</link
 
420
> Aquí, <userinput
 
421
>10</userinput
 
422
> se compara con <userinput
 
423
>3</userinput
 
424
> usando el operador «más grande que». El resultado de esta operación, es decir, el <link linkend="boolean-value"
 
425
>valor lógico</link
 
426
> <userinput
 
427
>verdadero</userinput
 
428
>, se guarda en la <link linkend="assignment-of-variables"
 
429
>variable</link
 
430
> <userinput
 
431
>$respuesta</userinput
251
432
>.</para>
 
433
<para
 
434
>Todos los <link linkend="number"
 
435
>números</link
 
436
> y <link linkend="assignment-of-variables"
 
437
>variables</link
 
438
> (que contengan números) pueden ser comparados entre sí usando operadores de comparación.</para>
 
439
<para
 
440
>Estos son todos los posibles operadores de comparación: <table
 
441
> <title
 
442
>Tipos de preguntas</title
 
443
> <tgroup cols="3"
 
444
> <tbody
 
445
> <row
 
446
> <entry
 
447
><userinput
 
448
>A == B</userinput
 
449
></entry
 
450
> <entry
 
451
>igual a</entry
 
452
> <entry
 
453
>la respuesta es «verdadera» si <userinput
 
454
>A</userinput
 
455
> es igual a <userinput
 
456
>B</userinput
 
457
></entry
 
458
> </row
 
459
> <row
 
460
> <entry
 
461
><userinput
 
462
>A != B</userinput
 
463
></entry
 
464
> <entry
 
465
>no igual a</entry
 
466
> <entry
 
467
>la respuesta es «verdadera» si <userinput
 
468
>A</userinput
 
469
> no es igual a <userinput
 
470
>B</userinput
 
471
></entry
 
472
> </row
 
473
> <row
 
474
> <entry
 
475
><userinput
 
476
>A &gt; B</userinput
 
477
></entry
 
478
> <entry
 
479
>más grande que</entry
 
480
> <entry
 
481
>la respuesta es «verdadera» si <userinput
 
482
>A</userinput
 
483
> es más grande que <userinput
 
484
>B</userinput
 
485
></entry
 
486
> </row
 
487
> <row
 
488
> <entry
 
489
><userinput
 
490
>A &lt; B</userinput
 
491
></entry
 
492
> <entry
 
493
>más pequeño que</entry
 
494
> <entry
 
495
>la respuesta es «verdadera» si <userinput
 
496
>A</userinput
 
497
> es más pequeño que <userinput
 
498
>B</userinput
 
499
></entry
 
500
> </row
 
501
> <row
 
502
> <entry
 
503
><userinput
 
504
>A &gt;= B</userinput
 
505
></entry
 
506
> <entry
 
507
>más grande o igual que</entry
 
508
> <entry
 
509
>la respuesta es «verdadera» si <userinput
 
510
>A</userinput
 
511
> es más grande o igual que <userinput
 
512
>B</userinput
 
513
></entry
 
514
> </row
 
515
> <row
 
516
> <entry
 
517
><userinput
 
518
>A &lt;= B</userinput
 
519
></entry
 
520
> <entry
 
521
>más pequeño o igual que</entry
 
522
> <entry
 
523
>la respuesta es «verdadera» si <userinput
 
524
>A</userinput
 
525
> es más pequeño o igual que <userinput
 
526
>B</userinput
 
527
></entry
 
528
> </row
 
529
> </tbody
 
530
> </tgroup
 
531
> </table
 
532
> Tenga en cuenta que A y B tienen que ser <link linkend="number"
 
533
>números</link
 
534
> o <link linkend="assignment-of-variables"
 
535
>variables</link
 
536
> que contengan números.</para>
252
537
</sect2>
253
538
 
 
539
 
254
540
</sect1>
255
541
 
256
542
 
 
543
 
257
544
<sect1 id="commands">
258
545
<title
259
 
>Comandos</title>
 
546
>Órdenes</title>
260
547
<para
261
 
>Los comandos nos permiten pedirle a la tortuga de &kturtle;, que realice una acción determinada. De este modo, algunos comandos requieren tomar información (parámetros), mientras que otros devuelven información. A partir de aquí, y hasta el final de esta sección, explicaremos todos los comandos de &kturtle;, los cuales aparecerán <glossterm
262
 
>resaltados</glossterm
263
 
> en el <link linkend="the-code-editor"
264
 
>editor de código</link
265
 
> en verde oscuro.</para>
 
548
>Con las órdenes podemos decirle a la tortuga o a &kturtle; lo que tiene que hacer. Algunas órdenes requieren de parámetros de entrada, mientras que otras devuelven parámetros de salida. En esta sección se explican todas las órdenes integradas en &kturtle;. Alternativamente, puede usar <link linkend="learn"
 
549
>aprender</link
 
550
> para crear sus propias órdenes. Las órdenes que van a detallarse aquí aparecen <glossterm
 
551
>resaltadas</glossterm
 
552
> en azul oscuro.</para>
266
553
 
267
554
<sect2 id="moving-the-turtle">
268
555
<title
269
 
>Moviendo la tortuga</title>
 
556
>Cómo mover la tortuga</title>
270
557
<para
271
 
>Disponemos de varios comandos que nos permitirán desplazar a la tortuga a lo largo y ancho de la pantalla.</para>
272
 
  
273
 
<sect3 id="forward">
274
 
  <title
275
 
>avanzar (avz)</title>
 
558
>Hay varias órdenes que permiten mover la tortuga por la pantalla.</para>
 
559
 
276
560
  <variablelist>
 
561
    <anchor id="forward"/>
277
562
    <varlistentry
278
563
279
564
      <term
280
 
>avanzar</term>
 
565
>avanzar (avz)<indexterm
 
566
><primary
 
567
>avanzar (avz)</primary
 
568
></indexterm
 
569
></term>
281
570
      <listitem
282
571
><para
283
572
><screen
284
 
>avanzar</screen>
 
573
>avanzar X</screen>
285
574
<userinput
286
575
>avanzar</userinput
287
 
> hace que la tortuga se adelante X pixels. Cuando la pluma esté abajo, la tortuga dejará un trazo. <userinput
 
576
> desplaza la tortuga hacia delante X píxeles. Cuando el pincel está bajado, la tortuga deja a su paso un trazo. <userinput
288
577
>avanzar</userinput
289
578
> puede abreviarse como <userinput
290
579
>avz</userinput
291
 
></para
 
580
>.</para
292
581
></listitem>
293
582
    </varlistentry>
294
583
  </variablelist>
295
 
</sect3>
296
 
<sect3 id="backward">
297
 
  <title
298
 
>retroceder (rtd)</title>
299
584
  <variablelist>
 
585
    <anchor id="backward"/>
300
586
    <varlistentry
301
587
>  
302
588
      <term
303
 
>retroceder</term>
 
589
>retroceder (ret)<indexterm
 
590
><primary
 
591
>retroceder (ret)</primary
 
592
></indexterm
 
593
></term>
304
594
      <listitem
305
595
><para
306
596
><screen
307
597
>retroceder X</screen>
308
598
<userinput
309
599
>retroceder</userinput
310
 
> hace retroceder la tortuga X pixels. Cuando la pluma esté abajo, la tortuga dejará un trazo. <userinput
 
600
> hace retroceder la tortuga X píxeles. Cuando el pincel está bajado, la tortuga deja a su paso un trazo. <userinput
311
601
>retroceder</userinput
312
602
> puede abreviarse como <userinput
313
 
>rtd</userinput
 
603
>ret</userinput
314
604
>.</para
315
605
></listitem>
316
606
    </varlistentry>
317
607
  </variablelist>
318
 
</sect3>
319
 
<sect3 id="turnleft">
320
 
  <title
321
 
>izquierda (izq)</title>
322
608
  <variablelist>
 
609
    <anchor id="turnleft"/>
323
610
    <varlistentry
324
611
325
612
      <term
326
 
>izquierda</term>
 
613
>izquierda (izq)<indexterm
 
614
><primary
 
615
>izquierda (izq)</primary
 
616
></indexterm
 
617
></term>
327
618
      <listitem
328
619
><para
329
620
><screen
330
621
>izquierda X</screen>
331
622
<userinput
332
623
>izquierda</userinput
333
 
> le pide a la tortuga que rote X grados hacia la izquierda. <userinput
 
624
> le ordena a la tortuga que rote X grados hacia la izquierda. <userinput
334
625
>izquierda</userinput
335
626
> puede abreviarse como <userinput
336
627
>izq</userinput
338
629
></listitem>
339
630
    </varlistentry>
340
631
  </variablelist>
341
 
</sect3>
342
 
<sect3 id="turnright">
343
 
  <title
344
 
>derecha (dch)</title>
345
632
  <variablelist>
 
633
    <anchor id="turnright"/>
346
634
    <varlistentry
347
635
348
636
      <term
349
 
>derecha</term>
 
637
>derecha (der)<indexterm
 
638
><primary
 
639
>derecha (der)</primary
 
640
></indexterm
 
641
></term>
350
642
      <listitem
351
643
><para
352
644
><screen
353
645
>derecha X</screen>
354
646
<userinput
355
647
>derecha</userinput
356
 
> le pide a la tortuga que rote X grados hacia la derecha. <userinput
 
648
> le ordena a la tortuga que rote X grados hacia la derecha. <userinput
357
649
>derecha</userinput
358
650
> puede abreviarse como <userinput
359
 
>dch</userinput
 
651
>der</userinput
360
652
>.</para
361
653
></listitem>
362
654
    </varlistentry>
363
655
  </variablelist>
364
 
</sect3>
365
 
<sect3 id="direction">
366
 
  <title
367
 
>dirección (dir)</title>
368
656
  <variablelist>
 
657
    <anchor id="direction"/>
369
658
    <varlistentry
370
659
371
660
      <term
372
 
>dirección</term>
 
661
>dirección (dir)<indexterm
 
662
><primary
 
663
>dirección (dir)</primary
 
664
></indexterm
 
665
></term>
373
666
      <listitem
374
667
><para
375
668
><screen
376
669
>dirección X</screen>
377
670
<userinput
378
671
>dirección</userinput
379
 
> determina el ángulo de dirección de la tortuga medido en X grados, contando desde cero. Es decir, que no es relativo a la dirección anterior de la tortuga. <userinput
 
672
> determina el ángulo de dirección de la tortuga, que será X grados contando a partir de cero. No se tiene en cuenta la dirección anterior de la tortuga. <userinput
380
673
>dirección</userinput
381
 
> se puede abreviar como <userinput
 
674
> puede abreviarse como <userinput
382
675
>dir</userinput
383
676
>.</para
384
677
></listitem>
385
678
    </varlistentry>
386
679
  </variablelist>
387
 
</sect3>
388
 
<sect3 id="center">
389
 
  <title
390
 
>centro</title>
391
 
  <variablelist>
392
 
    <varlistentry
393
 
394
 
      <term
395
 
>centro</term>
396
 
      <listitem
397
 
><para
398
 
><screen
399
 
>centro</screen>
400
 
<screen
401
 
>centro</screen
402
 
> desplaza la tortuga al centro del área de dibujo (lienzo).</para
403
 
></listitem>
404
 
    </varlistentry>
405
 
  </variablelist>
406
 
</sect3>
407
 
<sect3 id="go">
408
 
  <title
409
 
>ir</title>
410
 
  <variablelist>
411
 
    <varlistentry
412
 
413
 
      <term
414
 
>ir</term>
415
 
      <listitem
416
 
><para
417
 
><screen
418
 
>ir X, Y</screen>
419
 
<userinput
420
 
>ir</userinput
421
 
> le indica a la tortuga que debe ir a al lugar (X, Y) del área de dibujo (lienzo). Esto significa, contando a partir del la esquina superior izquierda , X <glossterm linkend="pixels"
422
 
>pixeles</glossterm
423
 
> hacia la derecha e Y <glossterm linkend="pixels"
424
 
>pixeles</glossterm
425
 
>hacia abajo. Vale aclarar que al utilizar el comando <userinput
426
 
>ir</userinput
427
 
>, la tortuga no dibujará una línea en su trayectoría.</para
428
 
></listitem>
429
 
    </varlistentry>
430
 
  </variablelist>
431
 
</sect3>
432
 
<sect3 id="gox">
433
 
  <title
434
 
>irx</title>
435
 
  <variablelist>
436
 
    <varlistentry
437
 
438
 
      <term
439
 
>irx</term>
 
680
  <variablelist>
 
681
    <anchor id="center"/>
 
682
    <varlistentry
 
683
 
684
      <term
 
685
>centrar<indexterm
 
686
><primary
 
687
>centrar</primary
 
688
></indexterm
 
689
></term>
 
690
      <listitem
 
691
><para
 
692
><screen
 
693
>centrar</screen>
 
694
<userinput
 
695
>centrar</userinput
 
696
> mueve la tortuga al centro del lienzo.</para
 
697
></listitem>
 
698
    </varlistentry>
 
699
  </variablelist>
 
700
  <variablelist>
 
701
    <anchor id="go"/>
 
702
    <varlistentry
 
703
 
704
      <term
 
705
>ir<indexterm
 
706
><primary
 
707
>ir</primary
 
708
></indexterm
 
709
></term>
 
710
      <listitem
 
711
><para
 
712
><screen
 
713
>ir X; Y</screen>
 
714
<userinput
 
715
>ir</userinput
 
716
> le ordena a la tortuga que se desplace a una posición concreta del lienzo. Esta posición está a X <glossterm linkend="pixels"
 
717
>píxeles</glossterm
 
718
> del margen izquierdo del lienzo, y a Y <glossterm linkend="pixels"
 
719
>píxeles</glossterm
 
720
> del margen superior del lienzo. </para
 
721
></listitem>
 
722
    </varlistentry>
 
723
  </variablelist>
 
724
  <variablelist>
 
725
    <anchor id="gox"/>
 
726
    <varlistentry
 
727
 
728
      <term
 
729
>irx<indexterm
 
730
><primary
 
731
>irx</primary
 
732
></indexterm
 
733
></term>
440
734
      <listitem
441
735
><para
442
736
><screen
443
737
>irx X</screen>
444
738
<userinput
445
739
>irx</userinput
446
 
> al utilizar este comando la tortuga se desplazará a X <glossterm linkend="pixels"
447
 
>pixels</glossterm
448
 
> contando desde la izquierda del área de dibujo, mientras que se mantendrá a la misma altura.</para
 
740
> le ordena a la tortuga que vaya a una posición que está a X <glossterm linkend="pixels"
 
741
>píxeles</glossterm
 
742
> del margen izquierdo del lienzo, sin modificar su altura.  </para
449
743
></listitem>
450
744
    </varlistentry>
451
745
  </variablelist>
452
 
</sect3>
453
 
<sect3 id="goy">
454
 
  <title
455
 
>iry</title>
456
746
  <variablelist>
 
747
    <anchor id="goy"/>
457
748
    <varlistentry
458
749
459
750
      <term
460
 
>iry</term>
 
751
>iry<indexterm
 
752
><primary
 
753
>iry</primary
 
754
></indexterm
 
755
></term>
461
756
      <listitem
462
757
><para
463
758
><screen
464
759
>iry Y</screen>
465
760
<userinput
466
761
>irx</userinput
467
 
> al utilizar este comando la tortuga se desplazará a Y <glossterm linkend="pixels"
468
 
>pixels</glossterm
469
 
> contando desde la parte superior del área de dibujo, mientras que se mantendrá a la misma distancia de los bordes laterales.</para
470
 
></listitem>
471
 
    </varlistentry>
472
 
  </variablelist>
473
 
</sect3>
 
762
> le ordena a la tortuga que vaya a una posición que está a Y <glossterm linkend="pixels"
 
763
>píxeles</glossterm
 
764
> del margen superior del lienzo, sin modificar la distancia a la que se encuentre del margen izquierdo.</para
 
765
></listitem>
 
766
    </varlistentry>
 
767
  </variablelist>
 
768
  <note
 
769
><para
 
770
>Con las órdenes <userinput
 
771
>ir</userinput
 
772
>, <userinput
 
773
>irx</userinput
 
774
>, <userinput
 
775
>iry</userinput
 
776
> y <userinput
 
777
>centrar</userinput
 
778
>, la tortuga no dibuja ningún trazo, independientemente de que el pincel esté bajado o no.</para>
 
779
  </note>
 
780
</sect2>
 
781
 
 
782
<sect2 id="locate-the-turtle">
 
783
<title
 
784
>¿Dónde está la tortuga?</title>
 
785
<para
 
786
>Hay dos órdenes que devuelven la posición de la tortuga en la pantalla.</para>
 
787
 
 
788
  <variablelist>
 
789
    <anchor id="getx"/>
 
790
    <varlistentry
 
791
 
792
      <term
 
793
>obtenerx<indexterm
 
794
><primary
 
795
>obtenerx</primary
 
796
></indexterm
 
797
></term>
 
798
      <listitem
 
799
><para
 
800
><userinput
 
801
>obtenerx</userinput
 
802
> devuelve el número de píxeles desde el margen izquierdo del lienzo de la posición actual de la tortuga.</para
 
803
></listitem>
 
804
    </varlistentry>
 
805
  </variablelist>
 
806
  <variablelist>
 
807
    <anchor id="gety"/>
 
808
    <varlistentry
 
809
 
810
      <term
 
811
>obtenery<indexterm
 
812
><primary
 
813
>obtenery</primary
 
814
></indexterm
 
815
></term>
 
816
      <listitem
 
817
><para
 
818
><userinput
 
819
>obtenery</userinput
 
820
> devuelve el número de píxeles desde el margen superior del lienzo de la posición actual del la tortuga.</para
 
821
></listitem>
 
822
    </varlistentry>
 
823
  </variablelist>
474
824
</sect2>
475
825
 
476
826
<sect2 id="pen">
477
827
<title
478
 
>La tortuga tiene una pluma</title>
 
828
>La tortuga tiene un pincel</title>
479
829
<para
480
 
>La tortuga tiene una pluma, y va dibujando una línea al desplazarse. Existen algunos comandos que controlan esta pluma. Aquí, explicaremos estos comandos.</para>
481
 
<sect3 id="penup">
482
 
  <title
483
 
>levantarpluma (lpl)</title>
 
830
>La tortuga tiene un pincel que dibuja una línea cuando esta se desplaza. Hay varia órdenes que controlan el pincel. En esta sección se explican estas órdenes.</para>
484
831
  <variablelist>
 
832
    <anchor id="penup"/>
485
833
    <varlistentry
486
834
487
835
      <term
488
 
>levantarpluma</term>
 
836
>levantarpincel (lpl)<indexterm
 
837
><primary
 
838
>levantarpincel (lpl)</primary
 
839
></indexterm
 
840
></term>
489
841
      <listitem
490
842
><para
491
843
><screen
492
 
>levantarpluma</screen>
 
844
>levantarpincel</screen>
493
845
<userinput
494
 
>levantarpluma</userinput
495
 
> levanta la pluma del área de dibujo. Cuando la pluma está <quote
496
 
>arriba</quote
497
 
> la tortuga no trazará ninguna línea a su paso. El comando <userinput
498
 
>penup</userinput
499
 
> puede también abreviarse <userinput
 
846
>levantarpincel</userinput
 
847
> alza el pincel del lienzo. Cuando el pincel está «levantado», la tortuga no deja ningún trazo cuando se desplaza. Vea también <userinput
 
848
>bajarpincel</userinput
 
849
>. <userinput
 
850
>levantarpincel</userinput
 
851
> puede abreviarse como <userinput
500
852
>lpl</userinput
501
853
>.</para
502
854
></listitem>
503
855
    </varlistentry>
504
856
  </variablelist>
505
 
</sect3>
506
 
<sect3 id="pendown">
507
 
  <title
508
 
>bajarpluma (bpl)</title>
509
857
  <variablelist>
 
858
    <anchor id="pendown"/>
510
859
    <varlistentry
511
860
512
861
      <term
513
 
>bajarpluma</term>
 
862
>bajarpincel (bpl)<indexterm
 
863
><primary
 
864
>bajarpincel (bpl)</primary
 
865
></indexterm
 
866
></term>
514
867
      <listitem
515
868
><para
516
869
><screen
517
 
>bajarpluma</screen>
 
870
>bajarpincel</screen>
518
871
<userinput
519
 
>bajarpluma</userinput
520
 
> presiona la pluma sobre el área de dibujo. Cuando la pluma está <quote
521
 
>abajo</quote
522
 
> la tortuga trazará una línea a su paso. El comando <userinput
523
 
>bajarpluma</userinput
524
 
> puede también abreviarse <userinput
 
872
>bajarpincel</userinput
 
873
> presiona el pincel sobre el lienzo. Cuando el pincel está «bajado», la tortuga deja un trazo a su paso. Vea también <userinput
 
874
>levantarpincel</userinput
 
875
>. <userinput
 
876
>bajarpincel</userinput
 
877
> puede abreviarse como <userinput
525
878
>bpl</userinput
526
879
>.</para
527
880
></listitem>
528
881
    </varlistentry>
529
882
  </variablelist>
530
 
</sect3>
531
 
<sect3 id="setpenwidth">
532
 
  <title
533
 
>grosorpluma (apl)</title>
534
883
  <variablelist>
 
884
    <anchor id="setpenwidth"/>
535
885
    <varlistentry
536
886
537
887
      <term
538
 
>grosorpluma</term>
 
888
>grosorpincel (gpl)<indexterm
 
889
><primary
 
890
>grosorpincel (gpl)</primary
 
891
></indexterm
 
892
></term>
539
893
      <listitem
540
894
><para
541
895
><screen
542
 
>grosorpluma X</screen>
 
896
>grosorpincel X</screen>
543
897
<userinput
544
 
>grosorpluma</userinput
545
 
> determina el grosor de la línea trazada por la tortuga en X <glossterm linkend="pixels"
546
 
>pixeles</glossterm
547
 
>.El comando <userinput
548
 
>grosorpluma</userinput
 
898
>grosorpincel</userinput
 
899
> fija el grosor de la línea trazada por la tortuga en X <glossterm linkend="pixels"
 
900
>píxeles</glossterm
 
901
>. <userinput
 
902
>grosorpincel</userinput
549
903
> puede abreviarse como <userinput
550
 
>apl</userinput
 
904
>gpl</userinput
551
905
>.</para
552
906
></listitem>
553
907
    </varlistentry>
554
908
  </variablelist>
555
 
</sect3>
556
 
<sect3 id="setfgcolor">
557
 
  <title
558
 
>colorpluma (cpl)</title>
559
909
  <variablelist>
 
910
    <anchor id="setfgcolor"/>
560
911
    <varlistentry
561
912
562
913
      <term
563
 
>colorpluma</term>
 
914
>colorpincel (cpl)<indexterm
 
915
><primary
 
916
>colorpincel (cpl)</primary
 
917
></indexterm
 
918
></term>
564
919
      <listitem
565
920
><para
566
921
><screen
567
 
>colorpluma R, V, A </screen>
 
922
>colorpincel R;G;B </screen>
568
923
<userinput
569
 
>colorpluma</userinput
570
 
> determina el color de la línea trazada por la tortuga. El comando <userinput
571
 
>colorpluma</userinput
572
 
> toma una <glossterm linkend="rgb"
573
 
>combinación RGB (RVA)</glossterm
574
 
> como parámetro de entrada. <userinput
575
 
>colorpluma</userinput
 
924
>colorpincel</userinput
 
925
> fija el color del pincel. El parámetro de entrada de <userinput
 
926
>colorpincel</userinput
 
927
> es una <glossterm linkend="rgb"
 
928
>combinación RGB</glossterm
 
929
>. <userinput
 
930
>colorpincel</userinput
576
931
> puede abreviarse como <userinput
577
932
>cpl</userinput
578
933
>.</para
579
934
></listitem>
580
935
    </varlistentry>
581
936
  </variablelist>
582
 
</sect3>
583
937
</sect2>
584
938
 
585
939
<sect2 id="canvas">
586
940
<title
587
 
>Comandos que controlan el área de dibujo</title>
 
941
>Órdenes que controlan el lienzo</title>
588
942
<para
589
 
>Tenemos varios comandos que podremos utilizar para controlar el área de dibujo.</para>
590
 
<sect3 id="resizecanvas">
591
 
  <title
592
 
>tamañolienzo (tad)</title>
 
943
>Existen varias órdenes que controlan el lienzo.</para>
593
944
  <variablelist>
 
945
    <anchor id="resizecanvas"/>
594
946
    <varlistentry>
595
947
      <term
596
 
>tamañolienzo</term>
 
948
>tamañolienzo (tl)<indexterm
 
949
><primary
 
950
>tamañolienzo (tl)</primary
 
951
></indexterm
 
952
></term>
597
953
      <listitem
598
954
><para
599
955
><screen
600
 
>tamañolienzo X, Y</screen>
601
 
Con el comando <userinput
 
956
>tamañolienzo X;Y</screen>
 
957
Con la orden <userinput
602
958
>tamañolienzo</userinput
603
 
> podemos redimensionar el área de dibujo. Toma dos parámetros de entrada, X e Y, los cuales representan respectivamente el ancho y el alto en <glossterm linkend="pixels"
604
 
>pixeles</glossterm
605
 
>. El comando <userinput
 
959
> puede redimensionar el lienzo. Requiere de X e Y como parámetros de entrada, donde X es el ancho en <glossterm linkend="pixels"
 
960
>píxeles</glossterm
 
961
> del nuevo lienzo, e Y es la altura del nuevo lienzo también en <glossterm linkend="pixels"
 
962
>píxeles</glossterm
 
963
>. <userinput
606
964
>tamañolienzo</userinput
607
965
> puede abreviarse como <userinput
608
 
>tad</userinput
609
 
></para
 
966
>tl</userinput
 
967
>.</para
610
968
></listitem>
611
969
    </varlistentry>
612
970
  </variablelist>
613
 
</sect3>
614
 
<sect3 id="setbgcolor">
615
 
  <title
616
 
>colorlienzo (cad)</title>
617
971
  <variablelist>
 
972
    <anchor id="setbgcolor"/>
618
973
    <varlistentry
619
974
620
975
      <term
621
 
>colorlienzo</term>
 
976
>colorlienzo (cl)<indexterm
 
977
><primary
 
978
>colorlienzo (cl)</primary
 
979
></indexterm
 
980
></term>
622
981
      <listitem
623
982
><para
624
983
><screen
625
 
>colorlienzo R, V, A</screen>
 
984
>colorlienzo R;G;B</screen>
626
985
<userinput
627
986
>colorlienzo</userinput
628
 
> define el color del área de dibujo. <userinput
 
987
> define el color del lienzo. El parámetro de entrada de <userinput
629
988
>colorlienzo</userinput
630
 
> toma una <glossterm linkend="rgb"
 
989
> es una <glossterm linkend="rgb"
631
990
>combinación RGB</glossterm
632
 
> como parámetro de entrada. <userinput
633
 
>canvascolor</userinput
 
991
>. <userinput
 
992
>colorlienzo</userinput
634
993
> puede abreviarse como <userinput
635
 
>cad</userinput
636
 
>.</para
637
 
></listitem>
638
 
    </varlistentry>
639
 
  </variablelist>
640
 
</sect3>
641
 
<sect3 id="wrapon">
642
 
  <title
643
 
>envolver</title>
644
 
  <variablelist>
645
 
    <varlistentry
646
 
647
 
      <term
648
 
>envolver</term>
649
 
      <listitem
650
 
><para
651
 
><screen
652
 
>envolver</screen>
653
 
El comando <userinput
654
 
>envolver</userinput
655
 
> nos permite <quote
656
 
>activar</quote
657
 
> la (<glossterm linkend="wrapping"
658
 
>envoltura</glossterm
659
 
>) del área de dibujo. En el glosario encontraremos más información acerca del concepto de <glossterm linkend="wrapping"
660
 
>envoltura</glossterm
661
 
>.</para
662
 
></listitem>
663
 
    </varlistentry>
664
 
  </variablelist>
665
 
</sect3>
666
 
<sect3 id="wrapoff">
667
 
  <title
668
 
>desenvolver</title>
669
 
  <variablelist>
670
 
    <varlistentry
671
 
672
 
      <term
673
 
>desenvolver</term>
674
 
      <listitem
675
 
><para
676
 
><screen
677
 
>desenvolver</screen>
678
 
El comando <userinput
679
 
>desenvolver</userinput
680
 
> nos permite <quote
681
 
>desactivar</quote
682
 
> la (<glossterm linkend="wrapping"
683
 
>envoltura</glossterm
684
 
>) del área de dibujo. De nuevo, en el glosario encontraremos más información acerca del concepto de <glossterm linkend="wrapping"
685
 
>envoltura</glossterm
686
 
>.</para
687
 
></listitem>
688
 
    </varlistentry>
689
 
  </variablelist>
690
 
</sect3>
 
994
>cl</userinput
 
995
>.</para
 
996
></listitem>
 
997
    </varlistentry>
 
998
  </variablelist>
691
999
</sect2>
692
1000
 
693
1001
<sect2 id="clean">
694
1002
<title
695
 
>Comandos para la limpieza</title>
 
1003
>Comandos para limpiar</title>
696
1004
<para
697
 
>Existen dos comandos que ordenarán un poco las cosas.</para>
698
 
<sect3 id="clear">
699
 
  <title
700
 
>limpiar (lmp)</title>
 
1005
>Existen dos comandos que permiten limpiar el lienzo después de un embrollo.</para>
701
1006
  <variablelist>
 
1007
    <anchor id="clear"/>
702
1008
    <varlistentry
703
1009
704
1010
      <term
705
 
>limpiar</term>
 
1011
>limpiar (lmp)<indexterm
 
1012
><primary
 
1013
>limpiar (lmp)</primary
 
1014
></indexterm
 
1015
></term>
706
1016
      <listitem
707
1017
><para
708
1018
><screen
709
1019
>limpiar</screen>
710
1020
Con <userinput
711
1021
>limpiar</userinput
712
 
> dejaremos el área de dibujo totalmente en limpio. Sin embargo, todas las demás condiciones como ángulo de la tortuga, color del área de dibujo, etc. permanecerán intactas. Puede abreviarse el comando <userinput
713
 
>limpiar</userinput
714
 
> puede abreviarse como <userinput
715
 
>lmp</userinput
716
 
></para
 
1022
> puede borrar todos los dibujos del lienzo. Todo lo demás permanece: la posición y ángulo de la tortuga, el color del lienzo, la visibilidad de la tortuga y el tamaño del lienzo. </para
717
1023
></listitem>
718
1024
    </varlistentry>
719
1025
  </variablelist>
720
 
</sect3>
721
 
<sect3 id="reset">
722
 
  <title
723
 
>restaurar</title>
724
1026
  <variablelist>
 
1027
    <anchor id="reset"/>
725
1028
    <varlistentry
726
1029
727
1030
      <term
728
 
>restaurar</term>
 
1031
>reiniciar<indexterm
 
1032
><primary
 
1033
>reiniciar</primary
 
1034
></indexterm
 
1035
></term>
729
1036
      <listitem
730
1037
><para
731
1038
><screen
732
 
>restaurar</screen>
 
1039
>reiniciar</screen>
733
1040
<userinput
734
 
>restaurar</userinput
735
 
> limpia todo el entorno, a diferencia de <userinput
 
1041
>reiniciar</userinput
 
1042
> borra todo de una forma más concienzuda que la orden <userinput
736
1043
>limpiar</userinput
737
 
> que solo deja en limpio el área de dibujo. Luego de <userinput
738
 
>restaurar</userinput
739
 
>, todo vuelve al estado en el que &kturtle; estaba al iniciarse: la tortuga se posiciona en el medio del área de dibujo, el color de fondo es blanco, y el color de línea negro.</para
 
1044
>. Después de una orden <userinput
 
1045
>reiniciar</userinput
 
1046
>, todo vuelve a como estaba cuando inició &kturtle;. La tortuga regresará a su posición en el centro del lienzo, el color del lienzo volverá a ser blanco, la tortuga dibujará de nuevo una línea negra en el lienzo y el tamaño del lienzo será 400x400 píxeles.</para
740
1047
></listitem>
741
1048
    </varlistentry>
742
1049
  </variablelist>
743
 
</sect3>
744
1050
</sect2>
745
1051
 
746
1052
<sect2 id="sprites">
747
1053
<title
748
 
>La tortuga es una imagen movil</title>
 
1054
>La tortuga es un sprite</title>
749
1055
<para
750
 
>Comenzaremos con una breve explicación sobre lo que significa una imágen móvil en este contexto: las imágenes móviles son pequeñas figuras que pueden moverse al rededor de la pantalla, como las que vemos en los juegos de computadora. Entonces, nuestra tortuga es una imagen móvil. Obtendremos más información en el glosario bajo <glossterm linkend="sprites"
751
 
>imágenes móviles</glossterm
 
1056
>Antes de nada conviene explicar qué son los sprites: los sprites (en inglés «duendecillos») son pequeñas figuras que puedes desplazarse por la pantalla, como lo que vemos con frecuencua en los videojuegos. Nuestra tortuga también es un sprite. Para obtener más información, vea la entrada en el glosario correspondiente a los <glossterm linkend="sprites"
 
1057
>sprites</glossterm
752
1058
>. </para>
753
1059
<para
754
 
>A continuación encontraremos una descripción detallada de todos los comandos que podemos utilizar para manejar las imágenes móviles.</para>
 
1060
>A continuación encontrará una descripción detallada de todas las órdenes relacionadas con sprites.</para>
755
1061
<para
756
 
>[La versión actual de &kturtle; no soporta todavía el uso de otras imágenes móviles más allá de la tortuga. Pero esto puede cambiar en las próximas versiones.]</para>
757
 
<sect3 id="spriteshow">
758
 
  <title
759
 
>mostrartortuga</title>
 
1062
>(La versión actual de &kturtle; no admite otro sprite que la tortuga. En las versiones futuras sí que podrá cambiar la tortuga por algo diseñado por usted mismo.)</para>
760
1063
  <variablelist>
 
1064
    <anchor id="spriteshow"/>
761
1065
    <varlistentry
762
1066
763
1067
      <term
764
 
>mostrartortuga (mt)</term>
 
1068
>mostrartortuga (mt)<indexterm
 
1069
><primary
 
1070
>mostrartortuga (mt)</primary
 
1071
></indexterm
 
1072
></term>
765
1073
      <listitem
766
1074
><para
767
1075
><screen
768
1076
>mostrartortuga</screen>
769
1077
<userinput
770
1078
>mostrartortuga</userinput
771
 
> hace la tortuga visible luego de haberla ocultado. Puede abreviarse al comando <userinput
 
1079
> vuelve visible de nuevo a la tortuga después de haberla ocultado. <userinput
772
1080
>mostrartortuga</userinput
773
 
> como <userinput
 
1081
> puede abreviarse como <userinput
774
1082
>mt</userinput
775
 
></para
 
1083
>.</para
776
1084
></listitem>
777
1085
    </varlistentry>
778
1086
  </variablelist>
779
 
</sect3>
780
 
<sect3 id="spritehide">
781
 
  <title
782
 
>ocultartortuga</title>
783
1087
  <variablelist>
 
1088
    <anchor id="spritehide"/>
784
1089
    <varlistentry
785
1090
786
1091
      <term
787
 
>ocultartortuga</term>
 
1092
>ocultartortuga (ot)<indexterm
 
1093
><primary
 
1094
>ocultartortuga (ot)</primary
 
1095
></indexterm
 
1096
></term>
788
1097
      <listitem
789
1098
><para
790
1099
><screen
791
1100
>ocultartortuga</screen>
792
1101
<userinput
793
1102
>ocultartortuga</userinput
794
 
> oculta la tortuga. Esto puede utilizarse si la tortuga no luciera bien dentro de nuestro dibujo. <userinput
 
1103
> oculta la tortuga. Puede usarse cuando la tortuga no quede bien en su dibujo. <userinput
795
1104
>ocultartortuga</userinput
796
1105
> puede abreviarse como <userinput
797
1106
>ot</userinput
798
 
></para
 
1107
>.</para
799
1108
></listitem>
800
1109
    </varlistentry>
801
1110
  </variablelist>
802
 
</sect3>
803
1111
</sect2>
804
1112
 
805
1113
<sect2 id="writing">
806
1114
<title
807
 
>¿Esta tortuga sabe escribir escribir?</title>
 
1115
>¿La tortuga puede escribir?</title>
808
1116
<para
809
 
>La respuesta es <quote
810
 
>si</quote
811
 
>, la tortuga puede escribir cualquier cosa que le pidamos.</para>
812
 
<sect3 id="print">
813
 
  <title
814
 
>escribir</title>
 
1117
>La respuesta es «sí». La tortuga puede escribir: escribirá todo lo que usted le ordene.</para>
815
1118
  <variablelist>
 
1119
    <anchor id="print"/>
816
1120
    <varlistentry
817
1121
818
1122
      <term
819
 
>escribir</term>
 
1123
>escribir<indexterm
 
1124
><primary
 
1125
>escribir</primary
 
1126
></indexterm
 
1127
></term>
820
1128
      <listitem
821
1129
><para
822
1130
><screen
823
1131
>escribir X</screen>
824
 
El comando <userinput
825
 
>escribir</userinput
826
 
> se utiliza para que la tortuga escriba algo sobre el área de dibujo. <userinput
827
 
>escribir</userinput
828
 
> acepta cadenas alfanuméricas como parámetro de entrada. Es posible concatenar los parámetros de <userinput
829
 
>escribir</userinput
830
 
> mediante el símbolo <quote
831
 
>+</quote
832
 
>. Veamos el siguiente ejemplo: <screen
833
 
>año = 2003
834
 
autor = "Cies"
835
 
escribir autor + "comenzó a trabajar en el proyecto KTurtle en el año" + año + "y todavía disfruta haciéndolo"
 
1132
La orden <userinput
 
1133
>escribir</userinput
 
1134
> le indica a la tortuga que escriba algo en el lienzo. El parámetro de entrada de <userinput
 
1135
>escribir</userinput
 
1136
> puede ser un número o una cadena. Puede concatenar varios números y cadenas usando el símbolo «+». Aquí tiene un ejemplo sencillo: <screen
 
1137
>$año = 2003
 
1138
$autor = "Cies"
 
1139
escribir $autor + " comenzó a trabajar en el proyecto KTurtle en " + $año + " y todavía disfruta haciéndolo"
836
1140
</screen>
837
1141
      </para
838
1142
></listitem>
839
1143
    </varlistentry>
840
1144
  </variablelist>
841
 
</sect3>
842
 
<sect3 id="fontsize">
843
 
  <title
844
 
>tamañofuente</title>
845
1145
  <variablelist>
 
1146
    <anchor id="fontsize"/>
846
1147
    <varlistentry
847
1148
848
1149
      <term
849
 
>tamañofuente</term>
 
1150
>tamañoletra<indexterm
 
1151
><primary
 
1152
>tamañoletra</primary
 
1153
></indexterm
 
1154
></term>
850
1155
      <listitem
851
1156
><para
852
1157
><screen
853
 
>tamañofuente X</screen>
 
1158
>tamañoletra X</screen>
854
1159
<userinput
855
 
>tamañofuente</userinput
856
 
> determina el tamaño en <glossterm linkend="pixels"
857
 
>pixels</glossterm
858
 
>de la tipografía utilizada por <userinput
 
1160
>tamañoletra</userinput
 
1161
> fija el tamaño del tipo de letra que usa la orden <userinput
859
1162
>escribir</userinput
860
 
>. <userinput
861
 
>tamañofuente</userinput
862
 
> toma una entrada numérica.</para
 
1163
>. El parámetro de entrada de <userinput
 
1164
>tamañoletra</userinput
 
1165
> tiene que ser un número. El tamaño viene determinado en <glossterm linkend="pixels"
 
1166
>píxeles</glossterm
 
1167
>.</para
863
1168
></listitem>
864
1169
    </varlistentry>
865
1170
  </variablelist>
866
 
</sect3>
867
1171
</sect2>
868
1172
 
869
 
<sect2 id="random">
 
1173
<sect2 id="math-commands">
870
1174
<title
871
 
>Un comando que tira los dados por nosotros</title>
 
1175
>Órdenes aritméticas</title>
872
1176
<para
873
 
>Existe un comando que tira los dados por nosotros: <userinput
874
 
>aleatorio</userinput
875
 
>.</para>
876
 
  <variablelist>
 
1177
>Las siguientes son algunas de las órdenes aritméticas más avanzadas de &kturtle;.</para>
 
1178
  <variablelist>
 
1179
    <anchor id="round"/>
 
1180
    <varlistentry>
 
1181
      <term
 
1182
>redondear<indexterm
 
1183
><primary
 
1184
>redondear</primary
 
1185
></indexterm
 
1186
></term>
 
1187
      <listitem
 
1188
><para
 
1189
><screen
 
1190
>redondear(X)</screen>
 
1191
Permite <userinput
 
1192
>redondear</userinput
 
1193
> el número dado a su entero más cercano. <screen>
 
1194
escribir redondear(10,8)
 
1195
avanzar 20
 
1196
escribir redondear(10,3)
 
1197
</screen
 
1198
> Este código hace que la tortuga escriba los números 11 y 10.</para
 
1199
></listitem>
 
1200
    </varlistentry>
 
1201
  </variablelist>
 
1202
  <variablelist>
 
1203
    <anchor id="random"/>
877
1204
    <varlistentry
878
1205
879
1206
      <term
880
 
>aleatorio</term>
 
1207
>aleatorio (alt)<indexterm
 
1208
><primary
 
1209
>aleatorio (alt)</primary
 
1210
></indexterm
 
1211
></term>
881
1212
      <listitem
882
1213
><para
883
1214
><screen
884
 
>aleatorio X,Y</screen>
 
1215
>aleatorio X;Y</screen>
885
1216
<userinput
886
1217
>aleatorio</userinput
887
 
> es un comando que toma dos parámetro de entrada, X e Y, y devuelve un número. La X y la Y representa respectivamente el mínimo y el máximo que podrá tomar el valor de salida. Dicho valor de salida es un número dentro de ese intervalo cerrado. Veamos aquí un pequeño ejemplo:<screen>
888
 
repetir 500 [
889
 
  x = aleatorio 1,20
890
 
  avanzar x
891
 
  izquierda 10 - x
892
 
]
 
1218
> es una orden que requiere de parámetros de entrada y que devuelve un parámetro de salida. Como parámetros de entrada, necesita dos números, el primero (X) fija el valor mínimo del parámetro de salida, y el segundo (Y) fija su valor máximo. El parámetro de salida es un número elegido al azar que es igual o más grande que el valor mínimo, e igual o más pequeño que el valor máximo. Aquí tiene un ejemplo sencillo: <screen>
 
1219
repetir 500 {
 
1220
  $x = aleatorio 1;20
 
1221
  avanzar $x
 
1222
  izquierda 10 - $x
 
1223
}
893
1224
</screen
894
 
> Utilizando el comando <userinput
 
1225
> Con esta orden <userinput
895
1226
>aleatorio</userinput
896
 
> podemos agregar un poco de incertidumbre a nuestro programa.</para
 
1227
> puede incorporar algo de caos a su programa.</para
 
1228
></listitem>
 
1229
    </varlistentry>
 
1230
  </variablelist>
 
1231
  <variablelist>
 
1232
    <anchor id="sqrt"/>
 
1233
    <varlistentry
 
1234
 
1235
      <term
 
1236
>raíz<indexterm
 
1237
><primary
 
1238
>raíz</primary
 
1239
></indexterm
 
1240
></term>
 
1241
      <listitem
 
1242
><para
 
1243
><screen
 
1244
>raíz X</screen>
 
1245
La orden <userinput
 
1246
>raíz</userinput
 
1247
> sirve para calcular la raíz cuadrada de un número X.</para
 
1248
></listitem>
 
1249
    </varlistentry>
 
1250
  </variablelist>
 
1251
<!--
 
1252
  <variablelist>
 
1253
    <anchor id="exp"/>
 
1254
    <varlistentry
 
1255
 
1256
      <term
 
1257
>exp<indexterm
 
1258
><primary
 
1259
>exp</primary
 
1260
></indexterm
 
1261
></term>
 
1262
      <listitem
 
1263
><para
 
1264
><screen
 
1265
>sqrt X</screen>
 
1266
      </para
 
1267
></listitem>
 
1268
    </varlistentry>
 
1269
  </variablelist>
 
1270
-->
 
1271
  <variablelist>
 
1272
    <anchor id="pi"/>
 
1273
    <varlistentry
 
1274
 
1275
      <term
 
1276
>pi<indexterm
 
1277
><primary
 
1278
>pi</primary
 
1279
></indexterm
 
1280
></term>
 
1281
      <listitem
 
1282
><para
 
1283
><screen
 
1284
>pi</screen>
 
1285
Esta orden devuelve el valor del número Pi, <userinput
 
1286
>3.14159</userinput
 
1287
>.</para
 
1288
></listitem>
 
1289
    </varlistentry>
 
1290
  </variablelist>
 
1291
  <variablelist>
 
1292
    <anchor id="sin"/>
 
1293
    <anchor id="cos"/>
 
1294
    <anchor id="tan"/>
 
1295
    <varlistentry>
 
1296
      <term
 
1297
>sen<indexterm
 
1298
><primary
 
1299
>sen</primary
 
1300
></indexterm
 
1301
>, cos<indexterm
 
1302
><primary
 
1303
>cos</primary
 
1304
></indexterm
 
1305
>, tan<indexterm
 
1306
><primary
 
1307
>tan</primary
 
1308
></indexterm
 
1309
></term>
 
1310
      <listitem
 
1311
><para>
 
1312
<screen
 
1313
>sen X
 
1314
cos X
 
1315
tan X
 
1316
</screen>
 
1317
Estas tres órdenes representan las famosas funciones trigonométricas <userinput
 
1318
>sen</userinput
 
1319
>, <userinput
 
1320
>cos</userinput
 
1321
> y <userinput
 
1322
>tan</userinput
 
1323
>. El parámetro de entrada de estas tres órdenes, X, es un <link linkend="number"
 
1324
>número</link
 
1325
>.</para
 
1326
></listitem>
 
1327
    </varlistentry>
 
1328
  </variablelist>
 
1329
  <variablelist>
 
1330
    <anchor id="arcsin"/>
 
1331
    <anchor id="arccos"/>
 
1332
    <anchor id="arctan"/>
 
1333
    <varlistentry>
 
1334
      <term
 
1335
>arcsen<indexterm
 
1336
><primary
 
1337
>arcsen</primary
 
1338
></indexterm
 
1339
>, arccos<indexterm
 
1340
><primary
 
1341
>arccos</primary
 
1342
></indexterm
 
1343
>, arctan<indexterm
 
1344
><primary
 
1345
>arctan</primary
 
1346
></indexterm
 
1347
></term>
 
1348
      <listitem
 
1349
><para>
 
1350
<screen
 
1351
>arcsen X
 
1352
arccos X
 
1353
arctan X
 
1354
</screen>
 
1355
Estas tres órdenes son la funciones inversas de <link linkend="sin"
 
1356
>sen</link
 
1357
>, <link linkend="cos"
 
1358
>cos</link
 
1359
> y <link linkend="tan"
 
1360
>tan</link
 
1361
>. El parámetro de entrada de estas órdenes, X, es un  <link linkend="number"
 
1362
>número</link
 
1363
>.</para
897
1364
></listitem>
898
1365
    </varlistentry>
899
1366
  </variablelist>
903
1370
<title
904
1371
>Entrada y salida mediante diálogos</title>
905
1372
<para
906
 
>Un diálogo es una ventana emergente la cual puede proveer alguna información o pedir que se le pasen datos. &kturtle; se encarga de los diálogos mediante <userinput
 
1373
>Un diálogo es una pequeña ventana emergente que proporciona información o que solicita un parámetro de entrada. &kturtle; tiene dos órdenes relacionadas con diálogos: <userinput
907
1374
>mensaje</userinput
908
1375
> y <userinput
909
 
>pregunta</userinput
910
 
></para>
911
 
<sect3 id="message">
912
 
  <title
913
 
>mensaje</title>
 
1376
>preguntar</userinput
 
1377
>.</para>
914
1378
  <variablelist>
 
1379
    <anchor id="message"/>
915
1380
    <varlistentry
916
1381
917
1382
      <term
918
 
>mensaje</term>
 
1383
>mensaje<indexterm
 
1384
><primary
 
1385
>mensaje</primary
 
1386
></indexterm
 
1387
></term>
919
1388
      <listitem
920
1389
><para
921
1390
><screen
922
1391
>mensaje X</screen>
923
 
El comando <userinput
 
1392
La orden <userinput
924
1393
>mensaje</userinput
925
 
> toma una <link linkend="string"
926
 
>cadena alfanumérica</link
927
 
> como parámetro de entrada, generando un diálogo emergente que contiene la <link linkend="string"
928
 
>cadena</link
929
 
> dada. <screen
930
 
>año = 2003
931
 
autor = "Cies"
932
 
escribir autor + "comenzó a trabajar en el proyecto KTurtle en el año" + año + "y todavía disfruta haciéndolo"
 
1394
> necesita una <link linkend="string"
 
1395
>cadena</link
 
1396
> como parámetro de entrada. Muestra una ventana emergente con el texto de la <link linkend="string"
 
1397
>cadena</link
 
1398
>. <screen
 
1399
>mensaje "Cies comenzó a trabajar en el proyecto KTurtle en 2003 y todavía disfruta haciéndolo"
933
1400
</screen>
934
1401
      </para
935
1402
></listitem>
936
1403
    </varlistentry>
937
1404
  </variablelist>
938
 
</sect3>
939
 
<sect3 id="inputwindow">
940
 
  <title
941
 
>pregunta</title>
942
1405
  <variablelist>
 
1406
    <anchor id="ask"/>
943
1407
    <varlistentry
944
1408
945
1409
      <term
946
 
>pregunta</term>
 
1410
>preguntar<indexterm
 
1411
><primary
 
1412
>preguntar</primary
 
1413
></indexterm
 
1414
></term>
947
1415
      <listitem
948
1416
><para
949
1417
><screen
950
 
>pregunta X</screen>
 
1418
>preguntar X</screen>
951
1419
<userinput
952
 
>pregunta</userinput
953
 
> toma una <link linkend="string"
 
1420
>preguntar</userinput
 
1421
> necesita una <link linkend="string"
954
1422
>cadena</link
955
 
> como parámetro de entrada y nos muestra un diálogo emergente con el texto dado, tal como lo hace <link linkend="message"
 
1423
> como parámetro de entrada. Muestra el texto de la cadena en una ventana emergente (igual que hace <link linkend="message"
956
1424
>mensaje</link
957
 
>. Sin embargo, también muestra una casilla que permitirá al usuario ingresar tanto<link linkend="number"
958
 
>números</link
959
 
> como <link linkend="string"
960
 
>cadenas alfanuméricas</link
961
 
> y pueden ser guardados en una <link linkend="containers"
 
1425
>) junto a un campo de entrada. Una vez que el usuario ha introducido un <link linkend="number"
 
1426
>número</link
 
1427
> o una <link linkend="string"
 
1428
>cadena</link
 
1429
>, el resultado puede guardarse en una  <link linkend="assignment-of-variables"
962
1430
>variable</link
963
 
>. Por ejemplo, <screen>
964
 
entrada = pregunta "Cual es tu edad?"
965
 
salida = 2003 - in
 
1431
> o pasarse como un argumento a otra <link linkend="commands"
 
1432
>orden</link
 
1433
>. Por ejemplo: <screen>
 
1434
$entrada = preguntar "¿En qué año naciste?"
 
1435
$salida = 2003 - $entrada
966
1436
escribir "En 2003 tenías " + salida + " años."
967
1437
</screen
968
 
> Cuando el usuario cancela el diálogo o no ingresa nada, la<link linkend="containers"
 
1438
> Si el usuario cancela el diálogo de entrada o no introduce ningún valor, la <link linkend="assignment-of-variables"
969
1439
>variable</link
970
 
> quedará vacía.</para
 
1440
> queda vacía.</para
971
1441
></listitem>
972
1442
    </varlistentry>
973
1443
  </variablelist>
974
 
</sect3>
975
1444
</sect2>
976
1445
 
977
1446
</sect1>
978
1447
 
979
1448
 
980
1449
 
981
 
<sect1 id="containers">
982
 
<title
983
 
>Variables</title>
984
 
<para
985
 
>Las variables son letras o cadenas de texto que pueden ser utilizadas por el programador para guardar información dentro de ellas. Las variables que contienen números son llamadas <link linkend="variables"
986
 
>variables numéricas</link
987
 
>, las que contienen cadenas de texto se llaman <link linkend="string"
988
 
>variables alfanuméricas</link
989
 
>.</para>
990
 
 
991
 
<para
992
 
>Las variables no utilizadas, están vacías. Por ejemplo:<screen>
993
 
escribir N
994
 
</screen
995
 
> No mostrará nada hasta que no declaremos a N. Si intentamos realizar <link linkend="math"
996
 
>operaciones matemáticas</link
997
 
> con variables no declaradas, obtendremos un error. </para>
998
 
 
999
 
<sect2 id="variables">
1000
 
<title
1001
 
>Variables numéricas</title>
1002
 
<para
1003
 
>Para comenzar, veamos un ejemplo<screen>
1004
 
x = 3
1005
 
escribir x
1006
 
</screen
1007
 
> En la primera línea declaramos a <userinput
1008
 
>x</userinput
1009
 
> como una variable numérica que contiene el valor 3. En la segunda línea, se muestra el valor de <userinput
1010
 
>x</userinput
1011
 
> en el área de dibujo.</para>
1012
 
<para
1013
 
>Observemos que si hubiéramos querido imprimir la letra <quote
1014
 
>x</quote
1015
 
>, deberíamos haber escrito: <screen
1016
 
>escribir "x"
1017
 
</screen>
1018
 
</para>
1019
 
<para
1020
 
>Ahora veamos un ejemplo algo más complejo: <screen>
1021
 
A = 2004
1022
 
B = 25
1023
 
C = A + B
1024
 
 
1025
 
# el próximo comando muestra "2029"
1026
 
escribir C
1027
 
retroceder30
1028
 
# el próximo comando muestra "2004 más 25"
1029
 
escribir A + " más " + B
 
1450
<sect1 id="assignment-of-variables">
 
1451
<title
 
1452
>Asignar valores a las variables</title>
 
1453
<para
 
1454
>Antes de nada, echemos un vistazo a las variables, después veremos cómo asignarles valores. </para>
 
1455
 
 
1456
<para
 
1457
>Las variables son palabras que comienzan con un <quote
 
1458
>$</quote
 
1459
>; en el <link linkend="the-editor"
 
1460
>editor</link
 
1461
>, aparecen <glossterm
 
1462
>resaltadas</glossterm
 
1463
> en color púrpura.</para>
 
1464
 
 
1465
<para
 
1466
>Las variables pueden contener un <link linkend="number"
 
1467
>número</link
 
1468
>, una <link linkend="string"
 
1469
>cadena</link
 
1470
> o un <link linkend="boolean-value"
 
1471
>valor lógico (verdadero/falso)</link
 
1472
>. Con el signo de asignación (<userinput
 
1473
>=</userinput
 
1474
>) se da un valor a la variable, que mantendrá hasta que el programa termine de ejecutarse o hasta que se le asigne un nuevo valor.</para>
 
1475
 
 
1476
<para
 
1477
>Puede usar las variables, una vez asignadas, de la misma forma que usaría su contenido. Por ejemplo, vea el siguiente código de &turtlescript;: <screen>
 
1478
$x = 10
 
1479
$x = $x / 3
 
1480
escribir $x
 
1481
</screen
 
1482
> Primero, a la variable  <userinput
 
1483
>$x</userinput
 
1484
> se le asigna el valor <userinput
 
1485
>10</userinput
 
1486
>. A continuación, a esta misma variable  <userinput
 
1487
>$x</userinput
 
1488
> se le asigna su propio valor dividido por <userinput
 
1489
>3</userinput
 
1490
>, es decir, a la variable <userinput
 
1491
>$x</userinput
 
1492
> se da el valor <userinput
 
1493
>10 / 3</userinput
 
1494
>. Finalmente, se escribe <userinput
 
1495
>$x</userinput
 
1496
>. En las líneas dos y tres, comprobará que se usa la variable  <userinput
 
1497
>$x</userinput
 
1498
> como si fuera un número.</para>
 
1499
 
 
1500
<para
 
1501
>A las variables hay que asignarles un valor para que puedan ser usadas. Por ejemplo:<screen>
 
1502
escribir $n
 
1503
</screen
 
1504
> Este código da lugar a un mensaje de error.</para>
 
1505
 
 
1506
<para
 
1507
>Considere ahora el siguiente código de  &turtlescript;: <screen>
 
1508
$a = 2004
 
1509
$b = 25
 
1510
 
 
1511
# la próxima orden escribe "2029"
 
1512
escribir $a + $b
1030
1513
retroceder 30
1031
 
#el próximo comando muestra "1979"
1032
 
escribir A - B
 
1514
# la próxima orden escribe  "2004 más 25 igual a 2029"
 
1515
escribir $a + " más " + $b + " es igual a " + ($a + $b)
1033
1516
</screen
1034
 
> En las primeras dos líneas, se declaran las variables <userinput
1035
 
>A</userinput
 
1517
> En las primeras dos líneas, a las variables <userinput
 
1518
>a</userinput
1036
1519
> y <userinput
1037
 
>B</userinput
1038
 
> y se les asigna los valores 2004 y 25. En la tercer línea se le asigna la operación <userinput
1039
 
>A + B</userinput
1040
 
> (2029) a la variable <userinput
1041
 
>C</userinput
1042
 
>. El resto del código consiste en 3 <userinput
1043
 
>escribir</userinput
1044
 
> y dos <userinput
1045
 
>retroceder 30 </userinput
1046
 
></para>
1047
 
</sect2>
1048
 
 
1049
 
<sect2 id="strings">
1050
 
<title
1051
 
>Variables alfanuméricas</title>
1052
 
<para
1053
 
>En general, en los lenguajes de programación, las cadenas de texto se encierran entre comillas. Así, en <screen>
1054
 
escribir "Hola programador"
1055
 
</screen
1056
 
> la <link linkend="strings"
1057
 
>cadena</link
1058
 
> esta encerrada entre comillas.</para>
1059
 
<para
1060
 
>Las cadenas de texto pueden almacenarse en <link linkend="containers"
1061
 
>variables alfanuméricas</link
1062
 
>. Las variables numéricas y alfanuméricas difieren en el tipo de contenido que almacenan (números y cadenas respectivamente) y a partir de allí en el tipo de operaciones que podemos realizar con ellas. De este modo, no podremos realizar <link linkend="math"
1063
 
>operaciones aritméticas</link
1064
 
> ni <link linkend="questions"
1065
 
>condicionales</link
1066
 
> con variables alfanuméricas. Veamos ahora un ejemplo del uso de las cadenas de texto:<screen>
1067
 
x = "Hola "
1068
 
nombre = pregunta "¿Cual es tu nombre?"
1069
 
escribir x + nombre + ", ¿Como estamos hoy?"
1070
 
</screen
1071
 
>. En la primera línea asignamos la cadena <quote
1072
 
>Hola </quote
1073
 
> a la variable alfanumérica<userinput
1074
 
>x</userinput
1075
 
>. En la segunda, a la variable alfanumérica <userinput
1076
 
>nombre</userinput
1077
 
> se le asigna la salida del comando <userinput
1078
 
>pregunta</userinput
1079
 
>. En la tercer línea el programa escribe una composición de las tres variables en el área de dibujo.</para>
1080
 
<para
1081
 
>Este programa nos pide que ingresemos un nombre. Entonces, por ejemplo, si ingresamos <quote
1082
 
>Fernanda</quote
1083
 
>, el programa nos responderá<quote
1084
 
>Hola Fernanda, ¿Como estamos hoy?</quote
1085
 
>. Observemos que en nuestro código utilizamos el operador aritmético correspondiente a la adición (+). Este es el único operador aritmético que podemos utilizar con cadenas de texto, y la función que cumple es la de concatenar dichas cadenas.</para>
1086
 
</sect2>
1087
 
</sect1>
1088
 
 
1089
 
<sect1 id="math">
1090
 
<title
1091
 
>¿La tortuga sabe matemáticas?</title>
1092
 
<para
1093
 
>Si, la tortuga de &kturtle; puede resolver operaciones matemáticas como sumar (+), restar (-), multiplicar (*) y dividir (/). He aquí un ejemplo en el cual utilizamos todas ellas:<screen>
1094
 
a = 20 - 5
1095
 
b = 15 * 2
1096
 
c = 30 / 30
1097
 
d = 1 + 1
1098
 
escribir "a: "+a+", b: "+b+", c: "+c+", d: "+d 
1099
 
</screen
1100
 
> Así, asignamos valores númericos a las variables a, b, c, y d mediante el simbolo de <link linkend="assignment"
1101
 
>asignción</link
1102
 
> <userinput
1103
 
>=</userinput
1104
 
>.</para>
1105
 
<para
1106
 
>Si queremos realizar un cálculo simple, bastará con algo como esto: <screen
1107
 
>escribir 2004-12
1108
 
</screen
1109
 
></para>
1110
 
<para
1111
 
>Ahora veamos un ejemplo en el cual utilizamos los paréntesis <screen>
1112
 
escribir ( ( 20 - 5 ) * 2 / 30 ) + 1
1113
 
</screen
1114
 
> Así, las operaciones se agrupan entre paréntesis de modo que se van calculando en el orden establecido. En este ejemplo, primer se calculará 20 - 5, luego se multiplicará el resultado por dos y a eso se le dividirá por 30. Finalmente, al resultado obtenido anteriormente se le suma 1. El resultado final es 2.</para>
1115
 
</sect1>
1116
 
 
1117
 
<sect1 id="questions">
1118
 
<title
1119
 
>Establecer condiciones, obtener respuestas...</title>
1120
 
<para
1121
 
><link linkend="if"
1122
 
><userinput
1123
 
>si</userinput
1124
 
></link
1125
 
> y <link linkend="while"
1126
 
><userinput
1127
 
>mientras</userinput
1128
 
></link
1129
 
> son <link linkend="controlling-execution"
1130
 
>estructuras de control</link
1131
 
> las cuales discutiremos en la próxima sección. En esta sección utilizaremos al comando <link linkend="if"
1132
 
><userinput
1133
 
>si</userinput
1134
 
></link
1135
 
> para explicar los condicionales.</para>
1136
 
<sect2 id="q">
1137
 
<title
1138
 
>Condicionales</title>
1139
 
<para
1140
 
>Un ejemplo simple del uso de condicionales <screen>
1141
 
x = 6
1142
 
si x &gt; 5 [
1143
 
  escribir "Hola"
1144
 
]
1145
 
</screen
1146
 
> En este ejemplo la condición es: <userinput
1147
 
>x &gt; 5</userinput
1148
 
>. Si la condición se cumple (es verdadera), se ejecuta la parte del código que está entre corchetes. Los condicionales son una parte importante en los lenguajes de programación y generalmente se les utiliza en combinación con las <link linkend="controlling-execution"
1149
 
>estructuras de control</link
1150
 
> como <link linkend="if"
1151
 
><userinput
1152
 
>si</userinput
1153
 
></link
1154
 
>. Todos los números y las variables numéricas pueden formar parte de condicionales.</para>
1155
 
<para
1156
 
>He aquí todas los condicionales <table>
1157
 
<title
1158
 
>Tipos de condicionales</title>
1159
 
<tgroup cols="3">
1160
 
<tbody>
1161
 
<row>
1162
 
<entry
1163
 
><userinput
1164
 
>a == b</userinput
1165
 
></entry>
1166
 
<entry
1167
 
>iguales</entry>
1168
 
<entry
1169
 
>La respuesta es <quote
1170
 
>verdadera</quote
1171
 
> si <userinput
1172
 
>a</userinput
1173
 
> es igual a <userinput
1174
 
>b</userinput
1175
 
></entry>
1176
 
</row>
1177
 
<row>
1178
 
<entry
1179
 
><userinput
1180
 
>a != b</userinput
1181
 
></entry>
1182
 
<entry
1183
 
>distintos</entry>
1184
 
<entry
1185
 
>La respuesta es <quote
1186
 
>verdadera</quote
1187
 
> si <userinput
1188
 
>a</userinput
1189
 
> no es igual a <userinput
1190
 
>b</userinput
1191
 
></entry>
1192
 
</row>
1193
 
<row>
1194
 
<entry
1195
 
><userinput
1196
 
>a &gt; b</userinput
1197
 
></entry>
1198
 
<entry
1199
 
>a es mayor que b</entry>
1200
 
<entry
1201
 
>La respuesta es <quote
1202
 
>verdadera</quote
1203
 
> si <userinput
1204
 
>a</userinput
1205
 
> es es mayor que <userinput
1206
 
>b</userinput
1207
 
></entry>
1208
 
</row>
1209
 
<row>
1210
 
<entry
1211
 
><userinput
1212
 
>a &lt; b</userinput
1213
 
></entry>
1214
 
<entry
1215
 
>a es menor que b</entry>
1216
 
<entry
1217
 
>La respuesta es <quote
1218
 
>verdadera</quote
1219
 
> si <userinput
1220
 
>a</userinput
1221
 
> es es menor que <userinput
1222
 
>b</userinput
1223
 
></entry>
1224
 
</row>
1225
 
<row>
1226
 
<entry
1227
 
><userinput
1228
 
>a &gt;= b</userinput
1229
 
></entry>
1230
 
<entry
1231
 
>a es mayor o igual que b</entry>
1232
 
<entry
1233
 
>La respuesta es <quote
1234
 
>verdadera</quote
1235
 
> si <userinput
1236
 
>a</userinput
1237
 
> es es mayor o igual que <userinput
1238
 
>b</userinput
1239
 
></entry>
1240
 
</row>
1241
 
<row>
1242
 
<entry
1243
 
><userinput
1244
 
>a &lt;= b</userinput
1245
 
></entry>
1246
 
<entry
1247
 
>a es menor o igual que b</entry>
1248
 
<entry
1249
 
>La respuesta es <quote
1250
 
>verdadera</quote
1251
 
> si <userinput
1252
 
>a</userinput
1253
 
> es es menor que <userinput
1254
 
>b</userinput
1255
 
></entry>
1256
 
</row>
1257
 
</tbody>
1258
 
</tgroup>
1259
 
</table>
1260
 
</para>
1261
 
<para
1262
 
>Los condicionales se <glossterm
1263
 
>resaltan</glossterm
1264
 
> en celeste en el <link linkend="the-code-editor"
1265
 
>editor de código</link
1266
 
>.</para
1267
 
1268
 
</sect2>
1269
 
 
1270
 
<sect2 id="question-glue">
1271
 
<title
1272
 
>Operadores lógicos</title>
1273
 
<para
1274
 
>Los operadores lógicos nos permiten agrupar varias condiciones en un único condicional. <screen>
1275
 
a = 1
1276
 
b = 5
1277
 
si (a &lt; 5) y (b == 5) [
1278
 
  escribir "Hola"
1279
 
]
1280
 
</screen
1281
 
>En este ejemplo, utilizamos al operador lógico <userinput
1282
 
>y</userinput
1283
 
> para agrupar dos condiciones (<userinput
1284
 
>a &lt; 5</userinput
1285
 
>, <userinput
1286
 
>b == 5</userinput
1287
 
>). Si alguna de las dos condiciones agrupadas por el operador lógico <userinput
1288
 
>y</userinput
1289
 
> fuera <quote
1290
 
>falsa</quote
1291
 
>, toda la sentencia resultaría <quote
1292
 
>falsa</quote
1293
 
>. Así, el operador lógico <userinput
1294
 
>yy</userinput
1295
 
> requiere que ambas condiciones (tanto a izquierda como a derecha) sean <quote
1296
 
>verdaderas</quote
1297
 
> para que el condicional resulte verdadero. Adicionalmente, recordemos que ambas condiciones deben estar encerradas entre paréntesis.</para>
1298
 
 
1299
 
<para
1300
 
>Aquí se nos presenta una visión esquemática. Abajo encontraremos una explicación más detallada. <table>
1301
 
<title
1302
 
>Operadores lógicos</title>
1303
 
<tgroup cols="2">
1304
 
<tbody>
1305
 
<row>
1306
 
<entry
1307
 
><userinput
1308
 
>yy</userinput
1309
 
></entry>
1310
 
<entry
1311
 
>Ambos lados deben ser verdaderos para que la condición sea verdadera</entry>
1312
 
</row>
1313
 
<row>
1314
 
<entry
1315
 
><userinput
1316
 
>oo</userinput
1317
 
></entry>
1318
 
<entry
1319
 
>Si al menos una de las condiciones es verdadera, la sentencia es verdadera</entry>
1320
 
</row>
1321
 
<row>
1322
 
<entry
1323
 
><userinput
1324
 
>no</userinput
1325
 
></entry>
1326
 
<entry
1327
 
>Es un caso especial que solo funciona en condicionales. Lo que hace es cambiar 'verdadero' por 'falso' y 'falso' por 'verdadero'. Dicho de otro modo, niega la condición original.</entry>
1328
 
</row>
1329
 
</tbody>
1330
 
</tgroup>
1331
 
</table>
1332
 
</para>
1333
 
<para
1334
 
>Los operadores lógicos se <glossterm
1335
 
>resaltan</glossterm
1336
 
> en purpura en el <link linkend="the-code-editor"
1337
 
>editro de código</link
1338
 
>.</para>
1339
 
 
1340
 
<sect3 id="and">
1341
 
<title
1342
 
>yy</title>
1343
 
<para
1344
 
>Cuando dos condiciones están agrupadas por el operador lógico <userinput
1345
 
>yy</userinput
1346
 
>, la sentencia debe ser verdadera a ambos lados del <userinput
1347
 
>yy</userinput
1348
 
> para que se considere verdadera. Por ejemplo:  <screen>
1349
 
a = 1
1350
 
b = 5
1351
 
si ((a &lt; 10) and (b == 5)) yy (a &lt; b) [
1352
 
  escribir "Hola"
1353
 
]
1354
 
</screen
1355
 
> En este ejemplo se utilizan dos operadores lógicos. El primero, opera sobre las dos primeras condiciones que se encuentran entre paréntesis, y el segundo opera sobre la tercer condición y el resultado de las dos anteriores.</para>
1356
 
</sect3>
1357
 
 
1358
 
<sect3 id="or">
1359
 
<title
1360
 
>oo</title>
1361
 
<para
1362
 
>Cuando dos condiciones están agrupadas por el operador lógico <userinput
1363
 
>oo</userinput
1364
 
>, la sentencia debe ser verdadera a alguno de los dos lados del <userinput
1365
 
>oo</userinput
1366
 
> para que se considere verdadera. Por ejemplo:  <screen>
1367
 
a = 1
1368
 
b = 5
1369
 
si ((a &lt; 10) oo (b == 5)) or (a &lt; b) [
1370
 
  escribir "Hola"
1371
 
]
1372
 
</screen
1373
 
> Al igual que el ejemplo anterior, aquí se utilizan dos operadores lógicos. El primero, opera sobre las dos primeras condiciones que se encuentran entre paréntesis, y el segundo opera sobre la tercer condición y el resultado de las dos anteriores.</para>
1374
 
</sect3>
1375
 
 
1376
 
<sect3 id="not">
1377
 
<title
1378
 
>no</title>
1379
 
<para
1380
 
><userinput
1381
 
>no</userinput
1382
 
> es un caso especial de operador lógico, ya que opera solamente sobre una condición. El efecto que el operador lógico <userinput
1383
 
>no</userinput
1384
 
> tiene sobre la condición, es la de negarla. <screen>
1385
 
a = 1
1386
 
b = 5
1387
 
si no ((a &lt; 10) yy (b == 5)) [
1388
 
  escribir "Hola"
1389
 
]
1390
 
sino
1391
 
[
1392
 
  escribir "Chau ;-)"
1393
 
]
1394
 
</screen
1395
 
> Observemos que la condición que se plantea es verdadera. Sin embargo, la presencia del operador de negación, hace que la sentencia resulte falsa por lo que nuestro programa imprimirá Chau.</para>
1396
 
</sect3>
1397
 
 
1398
 
</sect2>
1399
 
 
1400
 
</sect1>
 
1520
>b</userinput
 
1521
> se les asigna los valores 2004 y 25. A continuación hay dos órdenes <userinput
 
1522
>escribir</userinput
 
1523
> con una orden <userinput
 
1524
>retroceder 30</userinput
 
1525
> en medio. Los comentarios antes de las órdenes <userinput
 
1526
>escribir</userinput
 
1527
> explican lo que estas hacen. Como puede ver, puede usar las variables de la misma forma que usaría sus contenidos. Es decir, puede usarlas con cualquier <link linkend="operators"
 
1528
>operador</link
 
1529
> o convertirlas en el parámetro de entrada de una <link linkend="commands"
 
1530
>orden</link
 
1531
>.</para>
 
1532
 
 
1533
<para
 
1534
>Un nuevo ejemplo: <screen>
 
1535
$nombre = preguntar "¿Cuál es tu nombre?"
 
1536
escribir "¡Hola " + $nombre + "! Buena suerte con el aprendizaje del arte del programar..."
 
1537
</screen
 
1538
> Este ejemplo es muy claro. De nuevo, aquí tiene como la variable <userinput
 
1539
>$name</userinput
 
1540
> es tratada como si fuera una cadena.</para>
 
1541
 
 
1542
<para
 
1543
>Cuando esté usando variables, el <link linkend="the-inspector"
 
1544
>inspector</link
 
1545
> le puede ser de gran ayuda. Muestra el contenido de todas las variables que están en uso en un momento dado.</para>
 
1546
</sect1>
 
1547
 
 
1548
 
1401
1549
 
1402
1550
<sect1 id="controlling-execution">
1403
1551
<title
1404
 
>Estructuras de control</title>
1405
 
<para
1406
 
>Las estructuras de control nos permiten  &mdash; como su nombre sugiere &mdash; controlar bajo que condiciones se ejecutará cierta porción de nuestro código.</para>
1407
 
<para
1408
 
>Los comandos correspondientes a las estructuras de control se <glossterm
1409
 
>resaltan</glossterm
1410
 
> en verde oscuro y negrita. Los corchetes se <glossterm
1411
 
>resaltan</glossterm
1412
 
> en verde claro.</para>
 
1552
>Cómo controlar la ejecución</title>
 
1553
<para
 
1554
>Los controladores de la ejecución permiten, tal como su nombre indica, controlar la ejecución.</para>
 
1555
<para
 
1556
>Las órdenes de control de la ejecución aparecen <glossterm
 
1557
>resaltadas</glossterm
 
1558
> en negro y con un tipo de letra negrita. Las llaves, que se usan generalmente junto con los controladores de ejecución, aparecen <glossterm
 
1559
>resaltadas</glossterm
 
1560
> en verde oscuro.</para>
1413
1561
 
1414
1562
<sect2 id="wait">
1415
1563
<title
1416
 
>Hagamos que la tortuga espere</title>
 
1564
>Cómo hacer que la tortuga espere</title>
1417
1565
<para
1418
 
>Luego de haber programado durante algún tiempo en &kturtle;, nos daremos cuenta de que, a veces, la tortuga va demasiado rápido. Con el comando esperar, podemos hacer que la tortuga se detenga durante un lapso de tiempo determinado.</para>
 
1566
>Si ya ha programado algo en &kturtle;, se habrá dado cuenta de que la tortuga es muy rápida dibujando. Con esta orden puede hacer que la tortuga se detenga durante un tiempo determinado.</para>
1419
1567
  <variablelist>
1420
1568
    <varlistentry>
1421
1569
      <term
1422
 
>esperar</term>
 
1570
>esperar<indexterm
 
1571
><primary
 
1572
>esperar</primary
 
1573
></indexterm
 
1574
></term>
1423
1575
      <listitem
1424
1576
><para
1425
1577
><screen
1426
1578
>esperar X</screen>
1427
1579
<userinput
1428
1580
>esperar</userinput
1429
 
> hace que la tortuga espere por X segundos. <screen>
1430
 
repetir 36 [
 
1581
> hace que la tortuga se detenga durante X segundos. <screen>
 
1582
repetir 36 {
1431
1583
  avanzar 5
1432
1584
  derecha 10
1433
 
  esperar 0.5
1434
 
]
 
1585
  esperar 0,5
 
1586
}
1435
1587
</screen
1436
 
> Esta porción de código, dibuja un circulo, pero la tortuga esperará medio segundo luego de cada paso. Esto da la impresión de la tortuga moviendose lentamente por la pantalla.</para
 
1588
> Este código dibuja un circulo, pero la tortuga espera durante medio segundo antes de realizar el siguiente paso. Esto da la impresión de que la  tortuga se está moviendo a cámara lenta.</para
1437
1589
></listitem>
1438
1590
    </varlistentry>
1439
1591
  </variablelist>
1441
1593
 
1442
1594
<sect2 id="if">
1443
1595
<title
1444
 
>Ejecutar "si"</title>
1445
 
<para
1446
 
></para>
 
1596
>Ejecutar «si»</title>
1447
1597
  <variablelist>
1448
1598
    <varlistentry>
1449
1599
      <term
1450
 
>si</term>
 
1600
>si<indexterm
 
1601
><primary
 
1602
>si</primary
 
1603
></indexterm
 
1604
></term>
1451
1605
      <listitem
1452
1606
><para
1453
1607
><screen
1454
 
>si <link linkend="questions"
1455
 
>condición</link
1456
 
> [ ... ]</screen>
1457
 
El código entre corchetes solo se ejecutará <userinput
 
1608
>si <link linkend="boolean-value"
 
1609
>valor lógico</link
 
1610
> { ... }</screen>
 
1611
El código que está entre llaves solo se ejecutará <userinput
1458
1612
>si</userinput
1459
 
> la <link linkend="questions"
1460
 
>condición</link
1461
 
> es <quote
1462
 
>verdadera</quote
1463
 
>. Podemos leer más acerca de las <link linkend="questions"
1464
 
>condiciones</link
1465
 
> en la <link linkend="questions"
1466
 
>sección condicionales</link
1467
 
> de este manual. <screen>
1468
 
x = 6
1469
 
si x &gt; 5 [
1470
 
  escribir "x es mayor que cinco"
1471
 
]
 
1613
> el <link linkend="boolean-value"
 
1614
>valor lógico</link
 
1615
> es «verdadero». <screen>
 
1616
$x = 6
 
1617
si $x &gt; 5 {
 
1618
  escribir $x + " es mayor que cinco"
 
1619
}
1472
1620
</screen
1473
 
> En la primer línea, <userinput
1474
 
>x</userinput
1475
 
> toma el valor 6. En la segunda, se plantea la <link linkend="questions"
1476
 
>condición</link
 
1621
> En la primer línea, a <userinput
 
1622
>$x</userinput
 
1623
> se le asigna el valor 6. En la segunda, se usa un <link linkend="comparing-operators"
 
1624
>operador de comparación</link
 
1625
> para evaluar la condición <userinput
 
1626
>$x &gt; 5</userinput
 
1627
>. Al cumplirse esta condición, es decir, al ser 6 mayor que 5, el controlador <userinput
 
1628
>si</userinput
 
1629
> permite que el código entre llaves se ejecute.</para
 
1630
></listitem>
 
1631
    </varlistentry>
 
1632
  </variablelist>
 
1633
</sect2>
 
1634
 
 
1635
<sect2 id="else">
 
1636
<title
 
1637
>Si no es así: «sino»</title>
 
1638
  <variablelist>
 
1639
    <varlistentry>
 
1640
      <term
 
1641
>sino<indexterm
 
1642
><primary
 
1643
>sino</primary
 
1644
></indexterm
 
1645
></term>
 
1646
      <listitem
 
1647
><para
 
1648
><screen
 
1649
>si <link linkend="boolean-value"
 
1650
>valor lógico</link
 
1651
> { ... } sino { ... }</screen>
 
1652
<userinput
 
1653
>sino</userinput
 
1654
> puede usarse en conjunción con el controlador <link linkend="if"
1477
1655
><userinput
1478
 
>x &gt; 5</userinput
1479
 
>. Ya que esta condición <quote
1480
 
>se cumple</quote
1481
 
>, la estructura de control <userinput
1482
1656
>si</userinput
1483
 
> permitirá que el código entre corchetes se ejecute.</para
 
1657
></link
 
1658
>. El ćodigo que aparece entre llaves después de <userinput
 
1659
>sino</userinput
 
1660
> solo se ejecute si el <link linkend="boolean-value"
 
1661
>valor lógico</link
 
1662
> es «falso». <screen>
 
1663
reiniciar
 
1664
$x = 4
 
1665
si $x &gt; 5 {
 
1666
  escribir $x + " es mayor que cinco"
 
1667
}
 
1668
sino {
 
1669
  escribir $x + " es menor que seis"
 
1670
}
 
1671
</screen
 
1672
> El <link linkend="comparing-operators"
 
1673
>operador de comparación</link
 
1674
> evalúa la expresión <userinput
 
1675
>$x &gt; 5</userinput
 
1676
>. Ya que en este caso 4 no es mayor que 5, el resultado es «falso». Esto quiere decir que se ejecuta el código que aparece entre llaves después de <userinput
 
1677
>sino</userinput
 
1678
>.</para
1484
1679
></listitem>
1485
1680
    </varlistentry>
1486
1681
  </variablelist>
1488
1683
 
1489
1684
<sect2 id="while">
1490
1685
<title
1491
 
>El bucle "mientras"</title>
1492
 
<para
1493
 
></para>
 
1686
>El bucle «mientras»</title>
1494
1687
  <variablelist>
1495
1688
    <varlistentry>
1496
1689
      <term
1497
 
>mientras</term>
 
1690
>mientras<indexterm
 
1691
><primary
 
1692
>mientras</primary
 
1693
></indexterm
 
1694
></term>
1498
1695
      <listitem
1499
1696
><para
1500
1697
><screen
1501
 
>mientras <link linkend="questions"
1502
 
>condición</link
1503
 
> [ ... ]</screen>
1504
 
La estructura de control <userinput
 
1698
>mientras <link linkend="boolean-value"
 
1699
>valor lógico</link
 
1700
> { ... }</screen>
 
1701
El controlador <userinput
1505
1702
>mientras</userinput
1506
 
> actúa en forma similar a <link linkend="if"
 
1703
> actúa de forma similar a <link linkend="if"
1507
1704
><userinput
1508
1705
>si</userinput
1509
1706
></link
1510
1707
>. La diferencia es que <userinput
1511
1708
>mientras</userinput
1512
 
> generará un bucle que repetirá la ejecución de código siempre que <link linkend="questions"
1513
 
>question</link
1514
 
> no sea <quote
1515
 
>falsa</quote
1516
 
>. <screen>
1517
 
x = 1
1518
 
mientras x &lt; 5 [
 
1709
> continúa ejecutando (en un bucle) el código que se encuentra entre llaves hasta que el <link linkend="boolean-value"
 
1710
>valor lógico</link
 
1711
> sea «falso». <screen>
 
1712
$x = 1
 
1713
mientras $x &lt; 5 {
1519
1714
  avanzar 10
1520
 
  wait 1
1521
 
  x = x + 1
1522
 
]
 
1715
  esperar 1
 
1716
  $x = $x + 1
 
1717
}
1523
1718
</screen
1524
 
>En la primer línea, <userinput
1525
 
>x</userinput
1526
 
> toma el valor 1. En la segunda, se plantea la <link linkend="questions"
1527
 
>condición</link
1528
 
><userinput
1529
 
>x &lt; 5</userinput
1530
 
>. Ya que esta condición <quote
1531
 
>se cumple</quote
1532
 
>, la estructura de control <userinput
1533
 
>mientras</userinput
1534
 
> permitirá que el código entre corchetes se ejecute hasta que la <link linkend="questions"
1535
 
>condición</link
1536
 
>se evalúe como <quote
1537
 
>falsa</quote
1538
 
>. En este ejemplo, el código entre corchetes se ejecutará cuatro veces, ya que el valor de <userinput
1539
 
>x</userinput
1540
 
> se incrementa en 1 en cada iteración.</para
 
1719
>En la primer línea, a <userinput
 
1720
>$x</userinput
 
1721
> se le asigna el valor 1. En la segunda, se evalúa la condición <userinput
 
1722
>$x &lt; 5</userinput
 
1723
>. Mientras el resultado de esta condición sea «verdadero», el controlador <userinput
 
1724
>while</userinput
 
1725
> continúa ejecutando el código que se encuentra entre llaves, así hasta que la condición <userinput
 
1726
>$x &lt; 5</userinput
 
1727
> sea «falsa». En este ejemplo, el código entre llaves se ejecuta 4 veces, porque cada vez que la quinta línea se ejecuta, al valor de <userinput
 
1728
>$x</userinput
 
1729
> se le suma 1.</para
1541
1730
></listitem>
1542
1731
    </varlistentry>
1543
1732
  </variablelist>
1544
1733
</sect2>
1545
1734
 
1546
 
<sect2 id="else">
 
1735
<sect2 id="repeat">
1547
1736
<title
1548
 
>En cualquier otro caso. El comando "sino"</title>
1549
 
<para
1550
 
></para>
 
1737
>El bucle «repetir»</title>
1551
1738
  <variablelist>
1552
1739
    <varlistentry>
1553
1740
      <term
1554
 
>sino</term>
 
1741
>repetir<indexterm
 
1742
><primary
 
1743
>repetir</primary
 
1744
></indexterm
 
1745
></term>
1555
1746
      <listitem
1556
1747
><para
1557
1748
><screen
1558
 
>Si argumento [...] sino [...]</screen>
1559
 
A la estructura de control <link linkend="if"
 
1749
>repetir <link linkend="number"
 
1750
>número</link
 
1751
> { ... }</screen>
 
1752
El controlador <userinput
 
1753
>repetir</userinput
 
1754
> actúa de forma similar a  <link linkend="while"
1560
1755
><userinput
1561
 
>si</userinput
 
1756
>mientras</userinput
1562
1757
></link
1563
 
> se la ve con frecuencia acompañada de otra estructura de control llamada <userinput
1564
 
>sino</userinput
1565
 
>. El código que se encuentra entre corchetes luego de un <userinput
1566
 
>sino</userinput
1567
 
> solo se ejecutará si la condición planteada por el si <quote
1568
 
>no se cumple (es falsa)</quote
1569
 
>. <screen>
1570
 
restaurar
1571
 
x = 4
1572
 
si x &gt; 5 [
1573
 
  escribir "x es mayor que cinco."
1574
 
]
1575
 
sino
1576
 
[
1577
 
  escribir "x es menor que seis."
1578
 
]
1579
 
</screen
1580
 
> La <link linkend="questions"
1581
 
>condición</link
1582
 
> pregunta si <userinput
1583
 
>x</userinput
1584
 
> es mayor que 5. Como <userinput
1585
 
>x</userinput
1586
 
> toma el valor 4 en la primera línea, la condición es <quote
1587
 
>false</quote
1588
 
>. Esto significa que el código entre corchetes luego del <userinput
1589
 
>sino</userinput
1590
 
> se ejecutará.</para
 
1758
>. La diferencia es que <userinput
 
1759
>repetir</userinput
 
1760
> continúa ejecutando (en un bucle) el código que se encuentra entre llaves tantas veces como le indica el número dado.</para
1591
1761
></listitem>
1592
1762
    </varlistentry>
1593
1763
  </variablelist>
1595
1765
 
1596
1766
<sect2 id="for">
1597
1767
<title
1598
 
>La estructura de control "para", un bucle que sabe contar</title>
1599
 
<para
1600
 
></para>
 
1768
>El bucle "para", un bucle que cuenta</title>
1601
1769
  <variablelist>
1602
1770
    <varlistentry>
1603
1771
      <term
1604
 
>para</term>
 
1772
>para<indexterm
 
1773
><primary
 
1774
>para</primary
 
1775
></indexterm
 
1776
><indexterm
 
1777
><primary
 
1778
>paso</primary
 
1779
></indexterm
 
1780
></term>
1605
1781
      <listitem
1606
1782
><para
1607
1783
><screen
1608
 
>para <userinput
1609
 
>punto de inicio</userinput
1610
 
> a <userinput
1611
 
>punto de corte</userinput
1612
 
>[ ... ]</screen>
1613
 
La estructura de control <userinput
 
1784
>para <link linkend="assignment-of-variables"
 
1785
>variable</link
 
1786
> = <link linkend="number"
 
1787
>número</link
 
1788
> hasta <link linkend="number"
 
1789
>número</link
 
1790
> { ... }</screen>
 
1791
El bucle <userinput
1614
1792
>para</userinput
1615
 
> es <quote
1616
 
>un bucle que sabe contar</quote
1617
 
>, &ie; <screen>
1618
 
para x = 1 a 10 [
1619
 
  escribir x * 7
 
1793
> es un «bucle que cuenta», &ie;, que lleva el recuento. El primer número asigna a la variable el valor del primer bucle. Con cada bucle, este número se incrementa hasta alcanzar el segundo número. <screen>
 
1794
para $x = 1 hasta 10 {
 
1795
  escribir $x * 7
1620
1796
  avanzar 15
1621
 
]
 
1797
}
1622
1798
</screen
1623
 
> Cada vez que el código entre corchetes se ejecuta, la variable numérica <userinput
1624
 
>x</userinput
1625
 
> se incrementa en 1 hasta que el valor de <userinput
1626
 
>x</userinput
1627
 
> llega a 10. El código entre corchetes muestra el valor de <userinput
1628
 
>x</userinput
1629
 
> multiplicado por 7. Una vez que el código termine de ejecutarse, veremos la tabla del 7 en el área de dibujo.</para
1630
 
></listitem>
1631
 
    </varlistentry>
1632
 
  </variablelist>
1633
 
</sect2>
1634
 
 
 
1799
> Cada vez que el código entre llaves se ejecute, la variable <userinput
 
1800
>$x</userinput
 
1801
> se incrementa en 1, así hasta que sea igual a 10. El código entre llaves escribe el valor de <userinput
 
1802
>$x</userinput
 
1803
> multiplicado por 7. Cuando el código termine de ejecutarse, verá en el lienzo la tabla de multiplicar del 7. </para>
 
1804
     <para
 
1805
>El incremento predeterminado del bucle es 1, pero puede usar otro valor con: <screen
 
1806
>para <link linkend="assignment-of-variables"
 
1807
>variable</link
 
1808
> = <link linkend="number"
 
1809
>número</link
 
1810
> hasta <link linkend="number"
 
1811
>número</link
 
1812
> paso <link linkend="number"
 
1813
>número</link
 
1814
> { ... }</screen
 
1815
></para
 
1816
></listitem>
 
1817
    </varlistentry>
 
1818
  </variablelist>
 
1819
</sect2>
 
1820
 
 
1821
<sect2 id="break">
 
1822
<title
 
1823
>Interrumpir un bucle</title>
 
1824
  <variablelist>
 
1825
    <varlistentry>
 
1826
      <term
 
1827
>parar<indexterm
 
1828
><primary
 
1829
>parar</primary
 
1830
></indexterm
 
1831
></term>
 
1832
      <listitem
 
1833
><para
 
1834
><screen
 
1835
>parar</screen>
 
1836
Interrumpe inmediatamente el bucle que se está ejecutando y transfiere el control a la primera línea de código después del bucle. </para
 
1837
></listitem>
 
1838
    </varlistentry>
 
1839
  </variablelist>
 
1840
</sect2>
 
1841
 
 
1842
<sect2 id="exit">
 
1843
<title
 
1844
>Interrumpir la ejecución de su programa</title>
 
1845
  <variablelist>
 
1846
    <varlistentry>
 
1847
      <term
 
1848
>salir<indexterm
 
1849
><primary
 
1850
>salir</primary
 
1851
></indexterm
 
1852
></term>
 
1853
      <listitem
 
1854
><para
 
1855
><screen
 
1856
>salir</screen>
 
1857
Detiene la ejecución de su programa.</para
 
1858
></listitem>
 
1859
    </varlistentry>
 
1860
  </variablelist>
 
1861
</sect2>
1635
1862
</sect1>
1636
1863
 
1637
1864
 
1638
1865
<sect1 id="learn">
1639
 
<title
1640
 
>Nuestras propias funciones con <quote
1641
 
>aprender</quote
1642
 
></title>
 
1866
 
 
1867
 
 
1868
<!--<sect2 id="name">
 
1869
<title
 
1870
>Names</title>
 
1871
<para
 
1872
>When using the &turtlescript; programming language you create new things. If you write a program you will often need <link linkend="containers"
 
1873
>containers</link
 
1874
> and in some cases you need <link linkend="learn"
 
1875
>learn</link
 
1876
> to create new commands. When making a new command with <link linkend="learn"
 
1877
>learn</link
 
1878
> you will have to specify a name.</para>
 
1879
<para
 
1880
>You can choose any name, as long as it does not already have a meaning. For instance you cannot name a function <link linkend="forward"
 
1881
>forward</link
 
1882
>, since that name is already used for an internal command.
 
1883
<screen
 
1884
>
 
1885
# here forward is used as a new command, 
 
1886
# but it already has a meaning so 
 
1887
# this will produce an error:
 
1888
learn forward {
 
1889
  print "this is invalid"
 
1890
}
 
1891
 
 
1892
# this works:
 
1893
learn myforward {
 
1894
  print "this is ok"
 
1895
}
 
1896
</screen>
 
1897
Names can contain only letters, numbers and underscores (_). Yet they have to start with a letter. Container names have to start with the container prefix ($).
 
1898
<screen
 
1899
>
 
1900
# here forward is used as a container, 
 
1901
# starting with the $ prefix, so it does
 
1902
# not conflict with the forward command
 
1903
$forward = 20
 
1904
print $forward
 
1905
</screen>
 
1906
</para>
 
1907
<para
 
1908
>Containers are <glossterm
 
1909
>highlighted</glossterm
 
1910
> with bolded purple in the <link linkend="the-editor"
 
1911
>code editor</link
 
1912
>.</para>
 
1913
<para>
 
1914
Please read the documentation on <link linkend="containers"
 
1915
>containers</link
 
1916
> and the <link linkend="learn"
 
1917
>learn</link
 
1918
> command for a better explanation and more examples.
 
1919
</para>
 
1920
</sect2
 
1921
>-->
 
1922
 
 
1923
 
 
1924
 
 
1925
 
 
1926
 
 
1927
<title
 
1928
>Cree sus propias órdenes con «aprender»</title>
1643
1929
<para
1644
1930
><userinput
1645
1931
>aprender</userinput
1646
 
> se utiliza para crear funciones personalizadas. La nueva función puede tanto <glossterm linkend="input-output"
1647
 
>tomar parámetros de entrada</glossterm
1648
 
> como <glossterm linkend="input-output"
1649
 
>devolver valores de salida</glossterm
1650
 
>. Veamos entonces como podemos crear nuestras propias funciones. Crearemos la función <userinput
1651
 
>circulo</userinput
1652
 
>:<screen
1653
 
>aprender circulo x [
1654
 
  repetir 36 [
1655
 
    avanzar x
 
1932
> es especial ya que lo puede usar para crear sus propias órdenes. La orden que cree puede requerir de <glossterm linkend="input-output"
 
1933
>parámetros de entrada</glossterm
 
1934
> y devolver <glossterm linkend="input-output"
 
1935
>parámetros de salida</glossterm
 
1936
>. Veamos cómo se crea una nueva orden:<screen>
 
1937
aprender círculo $x {
 
1938
  repetir 36 {
 
1939
    avanzar $x
1656
1940
    izquierda 10
1657
 
  ]
1658
 
]
 
1941
  }
 
1942
}
1659
1943
</screen
1660
 
> Así, definimos el nombre de la función como <userinput
1661
 
>circulo</userinput
1662
 
>, y esperamos un <glossterm linkend="input-output"
 
1944
> La nueva orden se denomina <userinput
 
1945
>círculo</userinput
 
1946
>. <userinput
 
1947
>círculo</userinput
 
1948
> necesita un <glossterm linkend="input-output"
1663
1949
>parámetro de entrada</glossterm
1664
 
> numérico y ningún <glossterm linkend="input-output"
 
1950
> para fijar el tamaño del círculo y no devuelve ningún <glossterm linkend="input-output"
1665
1951
>parámetro de salida</glossterm
1666
 
>. Ahora, podemos utilizar la función <userinput
1667
 
>circulo</userinput
1668
 
> en cualquier lugar de nuestro código. Veamos este ejemplo: <screen
1669
 
>aprender circle X [
1670
 
  repetir 36 [ 
1671
 
    avanzar X 
 
1952
>. A partir de ahora la orden <userinput
 
1953
>círculo</userinput
 
1954
> puede utilizarse como una orden normal en cualquier lugar del código. Vea este ejemplo: <screen
 
1955
>aprender círculo $x {
 
1956
  repetir 36 { 
 
1957
    avanzar $x 
1672
1958
    izquierda 10 
1673
 
  ] 
1674
 
1675
 
 
1676
 
ir 30,30 
1677
 
circulo 20
1678
 
 
1679
 
ir 40,40 
1680
 
circulo 50  
 
1959
  }
 
1960
}
 
1961
 
 
1962
ir 200;200
 
1963
círculo 20
 
1964
 
 
1965
ir 300;200 
 
1966
círculo 40  
1681
1967
</screen>
1682
1968
</para>
1683
1969
<para
1684
 
>En el próximo ejemplo veremos como crear una función que retorne un valor. <screen>
1685
 
restaurar
 
1970
>En el próximo ejemplo, se crea una orden que devuelve un parámetro de salida: <screen>
 
1971
aprender facultad $x {
 
1972
  $r = 1
 
1973
  para $i = 1 hasta $x {
 
1974
    $r = $r * $i
 
1975
  }
 
1976
  devolver $r
 
1977
}
1686
1978
 
1687
 
aprender multiplicarPorSiMismo n [
1688
 
  r = n * 1
1689
 
  r = n * n
1690
 
  devolver r
1691
 
]
1692
 
i = pregunta "Ingresar un número:"
1693
 
escribir i + " multiplicado por si mismo es: " +multiplicarPorSiMismo  i
1694
 
</screen
1695
 
>En este ejemplo, creamos una función llamada <userinput
1696
 
>multiplicarPorSiMismo</userinput
1697
 
>. Esta función pide que se le ingrese un número. Luego, lo multiplica por si mismo y devuelve el resultado con el comando <anchor id="return"/><userinput
1698
 
>devolver</userinput
1699
 
>. El comando <userinput
1700
 
>devolver</userinput
1701
 
> es la forma que tenemos de decirle a una función que queremos que devuelva un valor determinado. </para>
 
1979
escribir facultad 5
 
1980
</screen
 
1981
>En este ejemplo, se crea una nueva orden llamada <userinput
 
1982
>facultad</userinput
 
1983
>. Si el parámetro de entrada es <userinput
 
1984
>5</userinput
 
1985
>, entonces el parámetro de salida es <userinput
 
1986
>5*4*3*2*1</userinput
 
1987
>. Con <userinput
 
1988
>devolver</userinput
 
1989
> se define un <glossterm linkend="input-output"
 
1990
>parámetro de salida</glossterm
 
1991
> que se devuelve durante la ejecución.</para>
 
1992
<para
 
1993
>Las órdenes pueden requerir de más de un <glossterm linkend="input-output"
 
1994
>parámetro de entrada</glossterm
 
1995
>. En el siguiente ejemplo se crea una orden que dibuja un rectángulo: <screen>
 
1996
aprender caja $x;$y {
 
1997
  avanzar $y
 
1998
  derecha 90
 
1999
  avanzar $x
 
2000
  derecha 90
 
2001
  avanzar $y
 
2002
  derecha 90
 
2003
  avanzar $x
 
2004
  derecha 90
 
2005
}
 
2006
</screen
 
2007
> Ahora, si ejecuta <userinput
 
2008
>caja 50;100</userinput
 
2009
>, la tortuga dibujará una rectángulo en el lienzo. </para>
 
2010
  
1702
2011
</sect1>
1703
2012
 
1704
2013
</chapter>