not really known
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

680 lines
31 KiB

  1. Guía de Programación con Turtle Art
  2. ===================================
  3. Turtle Blocks expande a lo que los niños pueden hacer con el logotipo
  4. y la forma en que se puede utilizar como el motivador subyacente para
  5. "mejorar" los lenguajes de programación y dispositivos programables.
  6. En esta guía, ilustramos este punto no solo llevando al lector a
  7. través de numerosos ejemplos, sino también discutiendo algunas de
  8. nuestras exploraciones favoritas de los Turtle Blocks, incluyendo
  9. multimedia, Internet (tanto como un foro para la colaboración y la
  10. recopilación de datos), y una amplia colección de sensores.
  11. Empezando
  12. ---------
  13. Los Bloques Tortuga Javascript están diseñado para funcionar en un
  14. navegador. La mayor parte del desarrollo se ha hecho en Chrome, pero
  15. también debería funcionar en Firefox. Se puede ejecutar directamente
  16. desde index.html, desde un [servidor mantenido por Sugar
  17. Labs](http://turtle.sugarlabs.org), desde [el repositorio
  18. GitHub](http://rawgit.com/walterbender/turtleblocksjs/master/index.html),
  19. o mediante la creación de [un servidor
  20. local](https://github.com/walterbender/turtleblocksjs/blob/master/server.md).
  21. Una vez que lo ha puesto en marcha en su navegador, comience haciendo
  22. clic en (o arrastrando) bloques de la paleta de la tortuga. Utilice
  23. múltiples bloques para crear dibujos; mientras la tortuga se mueve
  24. bajo su control se dibujan líneas de colores.
  25. Puede añadir bloques a su programa haciendo clic en ellos o
  26. arrastrándolos desde la paleta a la zona principal. Puede eliminar un
  27. bloque arrastrándolo de nuevo a la paleta. Haga clic en cualquier
  28. lugar de una "pila" de bloques para iniciar la ejecución de esa pila o
  29. haciendo clic en el conejo (rápida) o la tortuga (lenta) en la barra
  30. de herramientas principal. Para más detalles sobre cómo utilizar
  31. Bloques Tortuga Javascript, consulte Uso de Bloques Tortuga Javascript
  32. para más detalles.
  33. ACERCA DE ESTA GUÍA
  34. -------------------
  35. Muchos de los ejemplos que se dan en la guía tienen enlaces a código
  36. que puede ejecutar. Busque enlaces EJECUTAR EN VIVO que le lleven a
  37. http://turtle.sugarlabs.org.
  38. LA CUADRATURA
  39. -------------
  40. La introducción tradicional del logotipo ha sido dibujar
  41. un cuadrado. Muchas veces cuando se ejecuta un taller, hago que los
  42. estudiantes formen un círculo alrededor de un voluntario, la
  43. "tortuga", y los invito a instruir a la tortuga a dibujar un
  44. cuadrado. (Entreno al voluntario de antemano para tomar cada comando,
  45. literalmente, al igual que nuestra tortuga gráfica.) Eventualmente el
  46. grupo converge en "seguir adelante algún número de pasos", "gire a la
  47. derecha (o izquierda) 90 grados", "siga adelante cierto número de
  48. pasos "," gire a la derecha (o izquierda) 90 grados "," ir hacia
  49. adelante un número de pasos"," gire a la derecha (o izquierda) 90
  50. grados "," ir hacia adelante un número de pasos ". Sólo en raras
  51. ocasiones el grupo incluye una final "Gire a la derecha (o izquierda)
  52. 90 grados" para volver a la tortuga a su orientación original. En este
  53. punto introduzco el concepto de "repetición" y luego empezamos con la
  54. programación con Turtle Blocks.
  55. 1. Conceptos Básicos de la tortuga
  56. ----------------------------------
  57. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/basics1.svg'</img>
  58. Una sola línea de longitud 100
  59. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/basics2.svg'</img>
  60. Cambio de la longitud de la línea a 200
  61. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/basics3.svg'</img>
  62. Adición de un giro a la derecha de 90 grados. La ejecución de esta
  63. pila cuatro veces produce un cuadrado.
  64. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/basics4.svg'</img>
  65. Adelante, derecha, adelante, derecha, ...
  66. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/basics5.svg'</img>
  67. Utilizando el bloque de repetición de la paleta de flujo
  68. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/basics6.svg'</img>
  69. Usando el bloque de Arco para hacer esquinas redondeadas
  70. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/basics7.svg'</img>
  71. Utilizando comenzar relleno y terminan Relleno de la paleta de la
  72. pluma para hacer un cuadrado sólido
  73. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/basics8.svg'</img>
  74. Cambiar el color a 70 (azul) con el bloque Set color de la paleta de
  75. la pluma
  76. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/basics9.svg'</img>
  77. Uso del bloque aleatorio de la paleta de números para seleccionar un
  78. color al azar (0 a 100)
  79. UNA CAJA DE ZAPATOS
  80. -------------------
  81. Al explicar las cajas en los talleres, a menudo utilizo una caja de
  82. zapatos. Pongo a alguien a escribir un número en un pedazo de papel y
  83. lo coloco en la caja de zapatos. Entonces pregunto repetidamente:
  84. "¿Cuál es el número en el caja?" Una vez que está claro que podemos
  85. hacer referencia al número de la caja de zapatos, pongo a alguien a
  86. escribir un número diferente en la caja de zapatos. Una vez más
  87. pregunto: "¿Cuál es el número en el cuadro?" El poder de la caja es
  88. que se puede hacer referencia a ella varias veces desde varios lugares
  89. en su programa.
  90. 2. Cajas
  91. --------
  92. Boxes (Cajas) les permiten almacenar un objeto, por ejemplo, un número
  93. y, a continuación se refieren al objeto utilizando el nombre de la
  94. caja. (Cada vez que se nombra a un cuadro, se crea un nuevo bloque en
  95. la paleta de cajas que le permite acceder al contenido de la caja.)
  96. Esto se utiliza de una manera trivial en el primer ejemplo de abajo:
  97. poner 100 en el cuadro a continuación, haciendo referencia al cuadro
  98. desde el bloque hacia adelante. En el segundo ejemplo, aumentamos el
  99. valor del número guardado en la caja para que cada vez que el cuadro
  100. se haga referencia por el bloque de Avanzar, el valor sea más grande.
  101. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/boxes1.svg'</img>
  102. Poner un valor en una caja y luego hacer referencia al valor en la caja
  103. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/boxes2.svg'</img>
  104. Podemos cambiar el valor de la caja mientras el programa se
  105. ejecuta. Aquí le sumamos 10 al valor en la caja con cada iteración. El
  106. resultado en este caso es una espiral, ya que la tortuga avanza aún
  107. más con cada paso.
  108. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/boxes3.svg'</img>
  109. Si queremos hacer un cambio más complejo, podemos almacenar en la caja
  110. un valor calculado basado en el contenido actual de la caja. Aquí
  111. multiplicamos el contenido de la caja por 1,2 y guardamos el resultado
  112. en el cuadro. El resultado en este caso es también una espiral, pero
  113. que crece geométricamente en lugar de aritméticamente.
  114. En la práctica, el uso de cajas no es distinto a la utilización de
  115. pares de palabra clave y valores en lenguajes de programación basados
  116. en texto. La palabra clave es el nombre de la caja y el valor asociado
  117. con la palabra clave es el valor almacenado en la caja. Usted puede
  118. tener tantas casillas como desee (hasta que se quede sin memoria) y
  119. tratar las cajas como si fueran un diccionario. Tenga en cuenta que
  120. las cajas son globales, es decir, todas las tortugas y todas las pilas
  121. de acción comparten la misma colección de cajas.
  122. 3. Acción Pilas
  123. ---------------
  124. Con los bloques tortuga hay una oportunidad para que el alumno se
  125. expanda en el lenguaje, tomando la conversación en direcciones no
  126. previstas por los desarrolladores de los bloques tortuga.
  127. Las pilas de acción le permiten ampliar el lenguaje Bloques tortuga
  128. mediante la definición de nuevos bloques. Por ejemplo, si dibuja un
  129. montón de plazas, es posible que desee un bloque para dibujar
  130. cuadrados. En los siguientes ejemplos, se define una acción que dibuja
  131. un cuadrado (repetimos 4 hacia adelante 100 derecha 90), que a su vez
  132. da lugar a un nuevo bloque en la paleta Acciones que podemos utilizar
  133. cuando queremos dibujar un cuadrado. Cada nueva acción de pila resulta
  134. en un nuevo bloque.
  135. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/actions1.svg'</img>
  136. Definición de una acción para crear un nuevo bloque, "cuadrado"
  137. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/actions2.svg'</img>
  138. Uso del bloque "cuadrado"
  139. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/actions3.svg'</img>
  140. El bloque Do le permite especificar una acción por su nombre. En este
  141. ejemplo, elegimos "uno de los" dos nombres, "cuadrado" y "triángulo"
  142. para determinar qué acción tomar.
  143. 4. Parámetros
  144. -------------
  145. Los bloques de parámetros tienen un valor que representa el estado de
  146. algún atributo de tortuga, por ejemplo, la posición x o la y de la
  147. tortuga, el rubro de la tortuga, el color de la pluma, el tamaño de la
  148. pluma, etc. Usted puede utilizar el parámetro de bloques de manera
  149. intercambiable con bloques de números. Usted puede cambiar sus valores
  150. con el Agregar bloque o con los bloques correspondientes.
  151. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/parameters1.svg'</img>
  152. Usando el parámetro de encabezado, que cambia cada vez que la tortuga
  153. cambia de dirección, para cambiar el color de una espiral
  154. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/parameters2.svg'</img>
  155. "Squiral" por Brian Silverman utiliza los bloques de parámetros
  156. encabezado y X. [EJECUTAR EN
  157. VIVO](https://turtle.sugarlabs.org/?file=Card-36.tb&run=True)
  158. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/parameters3.svg'</img>
  159. A menudo sólo quiere incrementar un parámetro en 1. Para ello, utilice
  160. Añardir-1-a bloque.
  161. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/parameters4.svg'</img>
  162. Para incrementar (o disminuir) un parámetro por un valor arbitrario,
  163. utilice Añardir-1-a bloque.
  164. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/parameters5.svg'</img>
  165. Para realizar otros cambios a un parámetro basado en el valor actual,
  166. utilice el parámetro establecer bloque. En este ejemplo, el tamaño de
  167. la pluma se duplica con cada paso en la iteración.
  168. 5. Condicionales
  169. ----------------
  170. Los condicionales son una herramienta poderosa en la
  171. informática. Dejan que su programa se comporte de manera diferente
  172. bajo diferentes circunstancias. La idea básica es que si una condición
  173. es verdadera, a continuación, se tome algún tipo de acción. Las
  174. variantes incluyen if-then-else (si-entonces-sino), while (mientras
  175. que), until (hasta que), y forever (para siempre). Los Bloques de
  176. tortuga proporcionan construcciones lógicas tales como equal (igual),
  177. greater than (mayor que), less tan (menos que), and (y), or (o), y not
  178. (no).
  179. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/conditionals1.svg'</img>
  180. Usando un condicional para seleccionar un color. Una vez que el título
  181. > 179, el color cambia. [CORRER EN
  182. VIVO](http://turtle.sugarlabs.org/?file=Conditionals-1.tb&run=true)
  183. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/conditionals2.svg'</img>
  184. Las condicionales junto con el bloque aleatorio pueden ser utilizadas
  185. para simular un lanzamiento de moneda.
  186. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/conditionals3.svg'</img>
  187. Un lanzamiento de moneda es una operación tan común que hemos añadido
  188. el bloque Uno-de para su conveniencia.
  189. 6. Multimedia
  190. -------------
  191. Los Bloques tortuga proporcionan herramientas de medios enriquecidos
  192. que permiten la incorporación de sonido, tipografía, imágenes y video.
  193. En el corazón de las extensiones multimedia esta mostrar bloque. Se
  194. puede utilizar para mostrar texto, datos de imagen de la web o el
  195. sistema de archivos local, o una cámara web. Otras extensiones
  196. incluyen bloques para voz sintética, generación de tonos, y la
  197. reproducción de vídeo.
  198. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/media1.svg'</img>
  199. Utilizando Mostrar bloque para mostrar texto; la orientación del texto
  200. coincide con la orientación de la tortuga. [CORRER EN
  201. VIVO](https://turtle.sugarlabs.org/?file=Media-1.tb&run=True)
  202. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/media2.svg'</img>
  203. También puede utilizar Mostrar bloque para mostrar imágenes. Al hacer
  204. clic en el bloque de imagen (izquierda) se abrirá un explorador de
  205. archivos. Después de seleccionar un archivo de imagen (PNG, JPG, SVG,
  206. etc.) en una miniatura aparecerá en el bloque de imagen (derecha).
  207. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/media3.svg'</img>
  208. Mostrar bloque en combinación con el bloque de la cámara capturará y
  209. mostrara una imagen de una cámara web.
  210. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/media4.svg'</img>
  211. Mostrar bloque puede también ser usado en conjunción con un URL que
  212. apunte a archivos de media.
  213. 7. Sensores
  214. -----------
  215. La idea de Seymour Papert del aprendizaje a través de hacer está bien
  216. apoyado en los Bloques de tortuga. Según Papert, "el aprendizaje
  217. ocurre especialmente felizmente en un contexto donde el alumno
  218. participa conscientemente en la construcción de una entidad pública,
  219. así se trate de un castillo de arena en la playa o una teoría del
  220. universo". La investigación y el desarrollo que apoya y demuestra los
  221. beneficios del aprendizaje de los niños en su interacción con el mundo
  222. físico siguen creciendo. En forma similar, los niños pueden
  223. comunicarse con el mundo físico usando una variedad de sensores en los
  224. bloques de la tortuga. Bloques de sensores incluyen la entrada de
  225. teclado, el sonido, el tiempo, la cámara, la ubicación del ratón, el
  226. color que la tortuga ve. Por ejemplo, los niños pueden querer
  227. construir una alarma antirrobo y guardar fotos del ladrón en un
  228. archivo. Bloques de tortuga también hacen posible guardar y restaurar
  229. los datos del sensor de un archivo. Los niños pueden usar un bloque
  230. "URL" para importar datos desde una página web.
  231. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/sensors1.svg'</img>
  232. El uso de sensores. El bloque de Loudness (sonoridad) se utiliza para
  233. determinar si hay un intruso. Un sonido fuerte desencadena la acción
  234. de alarma: la tortuga grita "intruso" y toma una foto del intruso.
  235. Maestros de la comunidad de azúcar han desarrollado una amplia
  236. colección de ejemplos que utilizan sensores Tortuga, Guzmán Trinidad,
  237. un profesor de física de Uruguay, escribió un libro, Física de la XO,
  238. que incluye una amplia variedad de sensores y experimentos. Tony
  239. Forster, un ingeniero de Australia, también ha hecho contribuciones
  240. notables a la comunidad por medio de ejemplos que documentan el uso de
  241. bloques de tortuga. En un ejemplo, Tony utiliza la serie de
  242. interruptores para medir la aceleración gravitacional; una bola
  243. rodando por una rampa activa los interruptores en
  244. secuencia.
  245. Examinando el tiempo entre los eventos de activación se puede
  246. determinar la constante de gravitación. Uno de los retos típicos de
  247. la utilización de sensores es la calibración. Esto también es cierto
  248. en los Bloques de la tortuga. El ciclo de vida típico del proyecto
  249. incluye: (1) Los valores de lectura; (2) trazar los valores a medida
  250. que cambian con el tiempo; (3) la búsqueda de los valores mínimo y
  251. máximo; y, finalmente, (4) la incorporación del bloque del sensor en
  252. un programa de tortuga.
  253. Ejemplo: Pintura
  254. ----------------
  255. Como se describe en la
  256. sección de Sensores, Bloques tortuga le permite al programador /
  257. artista incorporar sensores en su trabajo. Entre los sensores
  258. disponibles están el botón del ratón y la posición x e y del
  259. ratón. Estos pueden ser usados ​​para crear un programa de pintura
  260. simple, como se ilustra a continuación. Escribir su propio programa de
  261. dibujo es empoderante: desmitifica una herramienta de uso común. Al
  262. mismo tiempo, se coloca el peso de la responsabilidad en el
  263. programador: una vez que lo escribimos, pertenece a nosotros, y
  264. nosotros somos responsables de hacerlo cool. Algunas variaciones de
  265. pintura también se muestran a continuación, incluyendo el uso de los
  266. niveles de micrófono para variar el tamaño de la pluma a medida que
  267. cambian los niveles sonoros ambientales. Una vez que los estudiantes
  268. se dan cuenta de que pueden realizar cambios en el comportamiento de
  269. su programa de dibujo, se vuelven profundamente comprometidos. ¿Cómo
  270. va a modificar la pintura?
  271. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/paint1.svg'</img>
  272. En su forma más simple, la pintura es sólo cuestión de mover la
  273. tortuga para donde el ratón se posicione.
  274. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/paint2.svg'</img>
  275. Añadir una prueba para el botón del ratón nos permite mover a la
  276. tortuga sin dejar un rastro de tinta.
  277. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/paint3.svg'</img>
  278. En este ejemplo, cambiamos el tamaño de la pluma sobre la base del
  279. volumen de entrada de micrófono.
  280. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/paint4.svg'</img>
  281. En otro ejemplo, inspirado por un estudiante en un taller en Colombia, usamos el tiempo para cambiar tanto el color de la pluma y el tamaño de la pluma [CORRER EN VIVO](http://turtle.sugarlabs.org/?file=Paint-4.tb&run=true)
  282. Ejemplo diapositivas
  283. --------------------
  284. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/slideshow1.svg'</img>
  285. ¿Por qué utilizar Powerpoint cuando puede escribir Powerpoint? En este
  286. ejemplo, una pila de Acción se utiliza para detectar la entrada de
  287. teclado: si el valor de teclado es cero, entonces ninguna tecla ha
  288. sido presionada, por lo que llama a la acción otra vez. Si se pulsa
  289. una tecla, el valor teclado es mayor que cero, por lo que regresó de
  290. la acción y muestra la siguiente imagen.
  291. Ejemplo entrada de teclado
  292. --------------------------
  293. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/keyboard.svg'</img>
  294. Para grabar los códigos de botones del teclado, es necesario utilizar un
  295. *Mientras* bloque. En el ejemplo anterior, almacenamos el valor de
  296. teclado en una caja, probarlo, y si es > 0, retorno el valor.
  297. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/keyboard2.svg'</img>
  298. 8. Tortugas, Sprites, botones, y eventos
  299. ----------------------------------------
  300. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/turtles1.svg'</img>
  301. Se crea una tortuga separada para cada bloque de inicio. Las tortugas
  302. siguen su código en paralelo entre sí cada vez que se hace clic en el
  303. botón Ejecutar. Cada tortuga mantiene su propio conjunto de parámetros
  304. de posición, color, tamaño de la pluma, el estado de la pluma, etc. En
  305. este ejemplo, tres tortugas diferentes dibujan tres formas diferentes.
  306. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/turtles2.svg'</img>
  307. Se pueden aplicar gráficos personalizados a las tortugas, con el
  308. bloque de Shell en la paleta de Medios. De este modo se puede tratar
  309. las tortugas como sprites que se pueden mover por la pantalla. En este
  310. ejemplo, el sprite cambia entre dos estados, mientras que se mueve por
  311. la pantalla.
  312. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/turtles3.svg'</img>
  313. Las tortugas pueden ser programadas para responder a un evento
  314. "click", para que puedan ser utilizadas como botones. En este ejemplo,
  315. cada vez que la tortuga se hace clic, se ejecuta la acción, que se
  316. mueven a la tortuga a una ubicación aleatoria en la pantalla.
  317. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/turtles4.svg'</img>
  318. También puede ser transmitidos Eventos. En este ejemplo, otra variante
  319. en la pintura, los "botones" de tortuga, que escuchan acontecimientos
  320. de "click", se utilizan para transmitir los eventos de cambio de
  321. color. La tortuga usada como el pincel está escuchando estos eventos.
  322. 9. Acciones avanzadas
  323. ---------------------
  324. En algún momento usted puede ser que desee una acción que no sólo
  325. ejecute una pila de bloques, sino también que regrese un valor. Este
  326. es el papel del bloque de retorno. Si pones un bloque de retorno en
  327. una pila, entonces la pila acción se vuelve una pila de calcular.
  328. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/actions4.svg'</img>
  329. En este ejemplo, una pila calcular se utiliza para devolver la
  330. distancia actual de la tortuga desde el centro de la pantalla. Cambiar
  331. el nombre de una pila de acción que tiene un bloque de retorno hará
  332. que la creación de un nuevo bloque en la paleta de acciones que se
  333. pueden utilizar para hacer referencia al valor de retorno. En este
  334. caso, se crea un bloque de distancia
  335. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/actions6.svg'</img>
  336. También puede pasar argumentos a una pila de acción. En este ejemplo,
  337. se calcula la distancia entre la tortuga y un punto arbitrario en la
  338. pantalla al pasar coordenadas x e y en el bloque de calcular. Usted
  339. puede agregar argumentos adicionales arrastrándolos a la "pinza".
  340. Tenga en cuenta que args son locales a las pilas de acción, pero las
  341. cajas no lo son. Si usted planea usar una acción en una función
  342. recursiva, mejor evite las cajas
  343. Ejemplo: Fibonacci
  344. ------------------
  345. Cálculo de la secuencia de Fibonacci se hace a menudo utilizando un
  346. método recursivo. En el siguiente ejemplo, se pasa un argumento para
  347. la acción Fib, que devuelve un valor si el argumento es <2; de lo
  348. contrario, devuelve la suma del resultado de llamar a la acción con el
  349. argumento Fib - 1 y el argumento - 2.
  350. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/fibonacci1.svg'</img>
  351. Cálculo de Fibonacci [CORRER EN VIVO](http://turtle.sugarlabs.org/?file=Fibonacci-1.tb&run=true)
  352. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/fibonacci2.svg'</img>
  353. En el segundo ejemplo, se utiliza un bucle de repetición para generar
  354. los seis primeros números de Fibonacci y los utilizamos para dibujar
  355. un nautilus.
  356. Dibuja una nautilus [CORRER EN VIVO](http://turtle.sugarlabs.org/?file=nautilus.tb&run=true)
  357. Ejemplo: Pintura de Reflexión
  358. -----------------------------
  359. Al combinar múltiples tortugas y pasar argumentos a las acciones,
  360. podemos tener un poco más de diversión con la pintura. En el siguiente
  361. ejemplo, la acción de pintura utiliza arg 1 y arg 2 para reflejar las
  362. coordenadas del ratón sobre los ejes Y y X. El resultado es que la
  363. pintura se refleja en los cuatro cuadrantes.
  364. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/turtles5.svg'</img>
  365. Pintura de Reflexión [CORRER EN VIVO](http://turtle.sugarlabs.org/?file=Reflection-Paint.tb&run=true)
  366. 10. Cajas Avanzadas
  367. -------------------
  368. A veces es más conveniente calcular el nombre de una caja que
  369. especificarlo explícitamente. (Tenga en cuenta que el bloque Do
  370. (hacer) usa un mecanismo similar para el cálculo de los nombres de las
  371. acciones).
  372. En los siguientes ejemplos, usamos esto para acumular los resultados
  373. de lanzar un par de dados 100 veces (ejemplo inspirado por Tony
  374. Forster).
  375. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/boxes4.svg'</img>
  376. En lugar de especificar una caja para cada resultado posible (2 a 12),
  377. se utiliza una caja como un contador (índice) y se crea una caja con
  378. el nombre del valor actual en el contador y se almacena en esa caja un
  379. valor de 0.
  380. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/boxes5.svg'</img>
  381. A continuación añadimos una acción para tirar los dados 100 veces. Para simular lanzar un par de dados, sumamos dos números aleatorios entre 1 y 6. Utilizamos el resultado como el nombre de la caja queremos incrementar. Así por ejemplo, si tiramos un 7, añadimos uno a la caja de llamada 7. De esta manera incrementamos el valor en la casilla correspondiente.
  382. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/boxes6.svg'</img>
  383. Por último, trazamos los resultados. Una vez más, se utiliza una caja
  384. como un contador (índice) y llamamos la acción trama en un bucle. En
  385. la barra de acción, dibujamos un rectángulo con valor de longitud
  386. almacenado en la caja con el nombre del valor actual del índice. Por
  387. ejemplo, cuando el valor en la caja de índice es 2, la tortuga avanza
  388. según el valor en la casilla 2, que es el número acumulado de veces
  389. que los lanzamientos de dados resultaron en un 2; cuando el valor en
  390. la caja índice es 3, la tortuga avanza por el valor en la casilla 3,
  391. que es el número acumulado de veces que los lanzamientos de dados
  392. resultaron en un 3; etc.
  393. 11. La Pila
  394. -----------
  395. A veces se necesita un lugar para almacenar temporalmente los
  396. datos. Una forma de hacerlo es con cajas (como se menciona al final de
  397. la sección Cajas de esta guía, que se puede utilizar como un
  398. diccionario o pares palabra clave de valor individual). Sin embargo, a
  399. veces es agradable usar simplemente una pila.
  400. Lo primero que se pone en la pila está en la parte inferior. La última
  401. cosa que pone en la pila está en la parte superior. Usted pone las
  402. cosas en la pila usando el bloque de empuje. Usted toma las cosas
  403. fuera de la pila utilizando el bloque pop. En los bloques de tortuga,
  404. la pila es primera entrada - última salida (FILO), por lo que saca las
  405. cosas fuera de la pila en el orden inverso en el que entran al montón.
  406. También hay un bloque de índice que le permite referirse a un elemento
  407. de la pila por un índice. En esencia, esto le permite tratar la pila
  408. como una matriz. Algunos otros bloques útiles incluyen un bloque de
  409. vaciar la pila, un bloque que devuelve la longitud de la pila, un
  410. bloque que salva la pila en un archivo, y un bloque que carga la pila
  411. de un archivo.
  412. En los ejemplos siguientes se utiliza la pila para guardar un dibujo
  413. hecho con un programa de dibujo similar a los ejemplos anteriores y
  414. luego reproducir el dibujo haciendo estallar puntos fuera de la pila.
  415. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/heap1.svg'</img>
  416. En el primer ejemplo, simplemente movemos la posición de tortuga cada
  417. vez que dibujamos, junto con el estado de la pluma. Note que salen en
  418. el orden inverso al que empujamos, empujamos y, luego x, del estado
  419. del ratón.
  420. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/heap2.svg'</img>
  421. En el segundo ejemplo, sacamos el estado pluma, X, y Y fuera de la
  422. pila y reproducimos nuestro dibujo.
  423. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/heap3.svg'</img>
  424. Utilice la opción Guardar Pila de bloques para guardar el estado de la
  425. pila en un archivo. En este ejemplo, guardamos nuestro dibujo en un
  426. archivo para su posterior reproducción.
  427. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/heap4.svg'</img>
  428. Utilice el bloque Cargar Pila para cargar la pila de datos guardados
  429. en un archivo. En este ejemplo, la reproducción del dibujo a partir de
  430. datos almacenados en un archivo.
  431. 12. Extras
  432. ----------
  433. La Paleta de Extras está llena de utilidades que le ayudan a utilizar
  434. la salida de su proyecto de diferentes maneras.
  435. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/extras1.svg'</img>
  436. El bloque Guardar como SVG guardará su dibujo como gráficos
  437. vectoriales simples (SVG), un formato compatible con HTML5 y muchos
  438. programas de manipulación de imágenes, por ejemplo, Inkscape. En el
  439. ejemplo anterior, lo usamos para guardar un diseño en una forma que se
  440. puede convertir en STL, un formato de archivo común utilizado por las
  441. impresoras 3D. Algunas cosas para tomar not: (1) el bloque de sin
  442. fondo se utiliza para suprimir la inclusión del relleno de fondo en la
  443. salida SVG; (2) las líneas huecas se usan para hacer que el gráfico
  444. tenga dimensión; y (3) la opción Guardar como bloque SVG escribe en el
  445. directorio de Descargas en su ordenador. (Josh Burker me introdujo a
  446. Tinkercad, un sitio web que se puede utilizar para convertir de SVG a
  447. STL.)
  448. 13. Ayudas de Depuración
  449. ------------------------
  450. Probablemente la ayuda de depuración más utilizada tantas en cualquier
  451. idioma es la sentencia print. En los bloques de la tortuga, también es
  452. muy útil. Se puede utilizar para examinar el valor de los parámetros y
  453. variables (cajas) y para monitorear el progreso a través de un
  454. programa.
  455. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/debugging1.svg'</img>
  456. En este ejemplo, se utiliza el operador de adición para concatenar
  457. cuerdas en una sentencia de impresión. El ratón x + "," + ratón y, se
  458. imprimen en el bucle interno.
  459. Bloques de parámetros, cajas, aritméticos y operadores booleanos, y
  460. muchos bloques de sensor imprimirán su valor actual mientras el
  461. programa se ejecuta cuando se ejecuta en "lento" o "paso- a paso "el
  462. modo, obviando la necesidad de utilizar el bloque de impresión en
  463. muchas situaciones.
  464. El bloque de Espera hará una pausa en la ejecución del programa
  465. durante un número (o fracciones) de segundo.
  466. Los bloques ocultar y mostrar pueden ser utilizados para establecer
  467. "puntos de quiebre". Cuando se encuentra un bloque oculto (Hide), los
  468. bloques están ocultos y el programa pasa a toda velocidad. Cuando se
  469. encuentra un bloque Mostrar, se muestran los valores de los bloques y
  470. el programa avanza a un ritmo más lento.
  471. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/debugging2.svg'</img>
  472. Un bloque demostración se utiliza para reducir la velocidad de
  473. ejecución del código en una pila de Acción con el fin de facilitar la
  474. depuración. En este caso, vamos más despacio durante la reproducción
  475. con el fin de ver los valores estallar fuera de la pila.
  476. 14. Color avanzado
  477. ------------------
  478. La representación interna del color en los bloques de la tortuga se
  479. basa en el sistema de color de Munsell. Es un sistema de tres
  480. dimensiones: (1) tono (rojo, amarillo, verde, azul, púrpura), (2)
  481. valor (negro a blanco), y (3) croma (gris a vívido)
  482. Hay parámetros para cada dimensión de color y "set"
  483. correspondientes. Todas las tres dimensiones se han normalizado para
  484. ejecutar desde 0 a 100. Para Matiz (Hue), 0 traza a Munsell 0R. Para
  485. el Valor, 0 traza Munsell valor 0 (negro) y 100 traza a Munsell valor
  486. 10 (blanco). Para croma, 0 traza a Munsell croma 0 (gris) y 100 traza
  487. a Munsell croma 26 (color espectral).
  488. Una nota sobre En el sistema Munsell, el croma máximo de cada
  489. tonalidad varía con valor. Para simplificar el modelo, si el croma
  490. especificado es mayor que el croma máximo disponible para un par tono
  491. / valor, se utiliza el croma máximo disponible.
  492. El bloque Establecer Color traza las tres dimensiones del espacio de
  493. color Munsell en una sola dimensión. Siempre devuelve el par máximo
  494. valor / croma de un color determinado, lo que garantiza colores
  495. vivos. Si quiere colores más sutiles, asegúrese de usar el bloque
  496. establecer Matiz en lugar del bloque Conjunto de color.
  497. <img src='https://rawgithub.com/walterbender/turtleblocksjs/master/guide-es/color1.svg'</img>
  498. Color vs. Ejemplo de tonalidad [CORRER EN VIVO](https://turtle.sugarlabs.org/?file=Color-vs-Hue.tb&run=true)
  499. Para establecer el color de fondo, utilice el bloque de fondo. Fijará
  500. los antecedentes del triplete del actual tono / valor / croma.
  501. 15. Plugins
  502. -----------
  503. Hay un número cada vez mayor de las ampliaciones de los bloques de
  504. tortuga en la forma de plugins. Vea
  505. [Plugins](http://github.com/walterbender/turtleblocksjs/tree/master/plugins)
  506. para más detalles.