Download - Greenfoot 10
![Page 1: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/1.jpg)
![Page 2: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/2.jpg)
![Page 3: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/3.jpg)
3
![Page 4: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/4.jpg)
Repetir las líneas de los códigos de programación es una tarea común. Es habitual agregar un bucle alrededor de una sección de código en el código de programación.
La mayoría de los lenguajes de programación tienen 3 métodos de bucle básicos. Examinaremos todos ellos durante el curso.
4
![Page 5: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/5.jpg)
Podemos utilizar cualquiera de los bucles para cualquier ocasión, pero algunos de ellos son más indicados para casos concretos.
5
![Page 6: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/6.jpg)
Recuerde que la condición solo debe devolver true o false.
6
![Page 7: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/7.jpg)
7
![Page 8: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/8.jpg)
Mientras que una variable de instancia tiene visibilidad en todo el conjunto de la clase (es accesible), una variable local no se puede ver fuera de los paréntesis dentro de los que se declaró. Esto se conoce normalmente como ámbito.
8
![Page 9: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/9.jpg)
La letra "i" se suele utilizar como nombre de la variable local. Si tiene un bucle dentro de otro bucle, se suele utilizar la letra "j" y, a continuación, la letra "k". Esta letra se utiliza en programación debido a sus orígenes en el campo de las matemáticas, en el que designaba valores enteros. Posteriormente, fue adoptada por el lenguaje Fortran.
9
![Page 10: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/10.jpg)
Veremos un ejemplo en la siguiente diapositiva.
10
![Page 11: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/11.jpg)
Es posible que las personas con conocimientos de programación detecten un problema. Abordaremos este asunto en próximas diapositivas.
11
![Page 12: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/12.jpg)
12
![Page 13: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/13.jpg)
Recuerde que i = i + 1 normalmente se escribe como i++;
Si nos olvidamos de agregar esta línea, el código nunca detendrá el bucle. Esto se denomina bucle infinito.
13
![Page 14: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/14.jpg)
Como se encuentra en el constructor, solo se llamará una vez.
14
![Page 15: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/15.jpg)
15
![Page 16: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/16.jpg)
Los métodos getWidth() y getHeight() devuelven el ancho y la altura actuales del mundo. Por lo tanto, si cambiásemos las dimensiones del mundo, podríamos acceder a estas sin cambiar nuestro código.
16
![Page 17: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/17.jpg)
Debe volver a comprobar siempre la lógica y el código para asegurarse de que el bucle solo se ejecutará las veces que espera.
17
![Page 18: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/18.jpg)
Básicamente, debemos alternar entre 1 de 2 imágenes, a menos que estemos girando. Si estamos girando, se muestra la imagen de giro izquierda o derecha.
18
![Page 19: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/19.jpg)
Básicamente, debemos alternar entre 1 de 2 imágenes, a menos que estemos girando. Si estamos girando, se muestra la imagen de giro izquierda o derecha.
19
![Page 20: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/20.jpg)
Al guardar el estado de una acción actual, solemos utilizar una variable de clase.
20
![Page 21: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/21.jpg)
Resulta útil utilizar nombres de variables de clase óptimos, especialmente al definir valores booleanos. Podríamos haber llamado a la variable notTurning, pero resulta más complicado comprender el significado real de notTurning que el de isTurning.
21
![Page 22: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/22.jpg)
Recuerde que Java distingue entre mayúsculas y minúsculas, por lo que "BeeLeft.png" no es lo mismo que "beeLeft.png". Compruebe que esté usando las mayúsculas y minúsculas correctamente para sus archivos de imagen y sonido.
22
![Page 23: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/23.jpg)
En este punto, la abeja seguirá intentando que continúe la animación durante el giro.
23
![Page 24: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/24.jpg)
&& (significa "y") solo devuelve true si las sentencias a ambos lados de && son true.
24
![Page 25: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/25.jpg)
Puede crear tablas de verdad para AND/NOT/OR. Para ello, siga las instrucciones que se describen a continuación:
Para AND/OR puede utilizar 2 entradas de true y false, y mostrar el resultado.
POR LO TANTO
TRUE TRUE
TRUE FALSE
FALSE TRUE
FALSE FALSE
Son las 4 entradas posibles. Para AND/OR se muestra el valor booleano resultante.
25
![Page 26: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/26.jpg)
Recuerde que && representa "y", y solo devolverá true si ambas partes son true.
26
![Page 27: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/27.jpg)
Cuanto mayor sea el número de imágenes, más suave será la animación.
27
![Page 28: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/28.jpg)
Recuerde que en una sentencia if-else, solo una de las secciones de código puede ejecutarse.
28
![Page 29: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/29.jpg)
A medida que desarrolle sus habilidades y conocimientos en java, comprobará que existen estructuras más avanzadas para almacenar varias variables en una sola variable.
29
![Page 30: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/30.jpg)
Las cadenas contienen cualquier dato alfanumérico. Por lo tanto, también podríamos almacenar "Joe! 1"
30
![Page 31: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/31.jpg)
Para definir una matriz se utilizan corchetes. El tipo delante de los corchetes es el tipo que puede almacenar cada celda de la matriz. En el caso anterior, String[] configura una matriz que almacena cadenas.
31
![Page 32: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/32.jpg)
Antes de utilizar una matriz, tendremos que configurar el máximo número de celdas que estarán disponibles.
32
![Page 33: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/33.jpg)
Este es un ejemplo de la inicialización de una variable de matriz. Podríamos haber escrito
String[] studentnames = new String[4];
studentnames[0] = "Joe";
studentnames[1] = "Debbie";
studentnames[2] = "Ermal";
studentnames[3] = "Besa";
Tenga en cuenta que el primer elemento de una matriz se inicia en el índice 0.
33
![Page 34: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/34.jpg)
Se generará un error si intenta acceder a un elemento de la matriz fuera de rango. En este ejemplo, el rango del elemento va de 0 a 3.
34
![Page 35: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/35.jpg)
Recuerde que esta matriz se declara como una matriz String. Si se devuelve un elemento de la matriz, este valor será una cadena
35
![Page 36: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/36.jpg)
Esto implica que podamos almacenar todas nuestras imágenes en una variable.
36
![Page 37: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/37.jpg)
Podríamos declarar una constante para el máximo número de imágenes en lugar de utilizar el valor 4. De este modo, el código sería más legible y mucho más fácil de cambiar posteriormente.
Si tuviésemos la constante MAXIMAGES = 4;
Podríamos cambiar el código por
….. = new GreenfootImage[MAXIMAGES];
37
![Page 38: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/38.jpg)
La imagen 2 se utiliza dos veces, ya que deseamos mostrar las imágenes - abeja -> abeja1 -> abeja2 -> abeja1 y, a continuación, repetir.
38
![Page 39: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/39.jpg)
La segunda solución sería más fácil para agregar más imágenes. La ("bee" + i + ".png"); se conoce como una concatenación de cadenas. Une las cadenas. Por lo tanto, si i=1, obtendríamos "bee1.png". En el ejemplo de bucle while, se copia la imagen bee1.png y se denomina bee3.png.
currentimage sería un campo de clase.
39
![Page 40: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/40.jpg)
Tenga en cuenta que el método animateBee() ahora manejaría cualquier cantidad de imágenes. Solo necesitaríamos cambiar el valor de índice 3 por un nuevo valor. En este caso, sería mejor sustituir el 3 por una constante.
if (currentimage == MAX_IMAGES-1)…
MAX_IMAGES se declararía como un campo de clase
private final int MAX_IMAGES = 4;
A continuación, actualizaríamos nuestro código para utilizar esta constante en lugar de 3. Esto hace que nuestro código sea más legible y fácil de mantener.
40
![Page 41: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/41.jpg)
41
![Page 42: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/42.jpg)
42
![Page 43: Greenfoot 10](https://reader030.vdocumento.com/reader030/viewer/2022020203/58ed52051a28ab5a6e8b469b/html5/thumbnails/43.jpg)