Diferencia entre revisiones de «Usuario:ManuelRomero/Scratch/Contenidos/Ejemplos/Ejemplos2»
De WikiEducator
< Usuario:ManuelRomero | Scratch | Contenidos
(Página creada con «{{:Usuario:ManuelRomero/Scratch/Contenidos/Ejemplos/nav}} {{Objetivos| En este caso implementaremos problemas un poco más complicados Para resolverlos intentaremos hacer p...») |
|||
(9 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 1: | Línea 1: | ||
{{:Usuario:ManuelRomero/Scratch/Contenidos/Ejemplos/nav}} | {{:Usuario:ManuelRomero/Scratch/Contenidos/Ejemplos/nav}} | ||
+ | <!-- | ||
+ | ===División=== | ||
+ | *Planteamos la división de una forma divertido realizando los siguientes pasos | ||
+ | *La aplicación cumplirá los siguientes requisitos | ||
+ | |||
+ | |||
+ | |||
+ | {{Objetivos|Title=Requisitos| | ||
+ | #Seleccionamos un fondo de pantalla | ||
+ | #Hacemos una presentación con una profe | ||
+ | #La profesora nos pedirá que introduzcamos una división (dividendo y divisor) | ||
+ | #Dibujamos la división de una forma agradable | ||
+ | #Realizamos la resolución de la división aportando ayuda a la niña que la use | ||
+ | }} | ||
+ | ===Seleccionamos el fondo de pantalla=== | ||
+ | *Por estar cerca de navidad proponemos el siguiente fondo de pantalla | ||
+ | [[Archivo:divisionFondo.PNG]] | ||
+ | *Así podemos hacer que la profesora se desplace por el caminito | ||
+ | |||
+ | ===La profesora hace la presentación === | ||
+ | *Vamos a usar un poco la imaginación y hacemos que la profesora aparezca y se presente | ||
+ | ;Movimiento de la profesora | ||
+ | *Cuando hagamos click que aparezca en la casa que está en la posicion 1 | ||
+ | [[Archivo:movimiento.png]] | ||
+ | *Luego que se mueva desplazándose por los diferentes puntos 1,2,3,4,5 y se quede al final en el 6 | ||
+ | [[Archivo:codigoMovimiento.png]] | ||
+ | |||
+ | ;Presentación de la profesora | ||
{{Objetivos| | {{Objetivos| | ||
En este caso implementaremos problemas un poco más complicados | En este caso implementaremos problemas un poco más complicados | ||
Línea 7: | Línea 35: | ||
:no es que sean muy sencillas sino que el ordenador entiende, interpreta y ejecuta | :no es que sean muy sencillas sino que el ordenador entiende, interpreta y ejecuta | ||
− | |||
{{Actividad|Pedir una fecha y deciŕ si es correcta o no y porqué motivo (solo el primer motivo que se encuentre. | {{Actividad|Pedir una fecha y deciŕ si es correcta o no y porqué motivo (solo el primer motivo que se encuentre. | ||
*Ha de tener en cuenta que el número de días será | *Ha de tener en cuenta que el número de días será | ||
Línea 15: | Línea 42: | ||
}} | }} | ||
*Como ponen en el enunciado vamos a entender cuando una fecha no es correcta | *Como ponen en el enunciado vamos a entender cuando una fecha no es correcta | ||
− | Si el mes está fuera de los valores 1 hasta 12 la fecha es incorrecta | + | *Si el mes está fuera de los valores 1 hasta 12 la fecha es incorrecta |
− | <source lang= | + | *Para simplificar el problema vamos a dar por supuesto que los datos son siempre positivos |
− | si ( | + | <source lang=php> |
− | escribir "Fecha incorrecta | + | si ( mes > 12) |
− | + | escribir "Fecha incorrecta solo hay 12 meses | |
+ | fin_si | ||
</source> | </source> | ||
+ | El caso de día vamos a establecer criterios en funcion de meses | ||
+ | <source lang=php> | ||
+ | SI (dia > 31) | ||
+ | escribir "Fecha incorrecta día no puede ser mayor de 31" | ||
+ | FIN_SI | ||
+ | </source> | ||
+ | |||
+ | <source lang=php> | ||
+ | SI ((mes = 4) o (mes = 6) o (mes = 9) o (mes = 11)) | ||
+ | SI (dia > 30) | ||
+ | escribir "Fecha incorrecta día no puede ser mayor de 31" | ||
+ | FIN_SI | ||
+ | FIN_SI | ||
+ | </source> | ||
+ | |||
+ | ;Ahora viene el caso de cuando el mes es febrero '''''2''''' | ||
+ | *En este caso debemos comprobar si un año es bisiesto | ||
+ | *Como ya hemos explicado un año bisiesto tiene que ser divisible entre 4 '''''(valor_año mod 4 = 0)''''' | ||
+ | *Pero no todo este grupo de años es bisiesto. | ||
+ | *De estos años los que sean divisibles por 400 SEGURO que son bisiestos | ||
+ | *Los que no sean divisibles por cuatrocientos depende | ||
+ | **Si son divisibles por 100 , entonces no son bisiestos | ||
+ | **Si no lo son , entonces, sí que son bisiestos | ||
+ | *Algorítmicamente quedaría | ||
+ | <source lang=php> | ||
+ | SI (año mod 4 == 0) | ||
+ | SI (año mod 400 ==0) | ||
+ | bisiesto = si | ||
+ | SI_NO | ||
+ | SI (año mod 100 ==0) | ||
+ | bisiesto = no | ||
+ | SI_NO | ||
+ | bisiesto = si | ||
+ | FIN_SI | ||
+ | FIN_SI | ||
+ | SI_NO | ||
+ | bisiesto = no | ||
+ | FIN_SI | ||
+ | </source > | ||
+ | *Ahora ya sabiendo si es o no bisiesto y que en un año bisiesto el mes de febrero tenemos hasta 29 días y que en uno no bisiesto solo podemos tener hasta 28 días, establecemos el siguiente algoritmo | ||
+ | <source lang = PHP> | ||
+ | SI (mes == 2) | ||
+ | SI (bisiesto = si) | ||
+ | SI dias > 29 | ||
+ | Escribir "La fecha "+Fecha+" Error: Es une mes de 29 días (Año bisiesto) | ||
+ | FIN_SI | ||
+ | SI_NO | ||
+ | SI dias > 28 | ||
+ | Escribir "La fecha "+Fecha+" Error: Es une mes de 28 días (Año no bisiesto) | ||
+ | FIN_SI | ||
+ | |||
+ | FIN_SI | ||
+ | FIN_SI | ||
+ | </source> | ||
+ | |||
+ | *Ahora vamos a hacer el código en scratch | ||
+ | Hacemos el algoritmo por partes | ||
+ | Sabemos que nuestro programa (el análisis) sería | ||
+ | (1) Pedir los datos de dia mes y año | ||
+ | (2) si hay más de 31 días error | ||
+ | (3) si hay más de 12 meses error | ||
+ | (4) Si el mes es de (4,6,9,11) entonces | ||
+ | si hay más de 30 días error | ||
+ | (5) Si el mes es febrero entonces | ||
+ | si el mes es bisiesto entonces | ||
+ | si hay más de 29 días error | ||
+ | si no | ||
+ | si hay más de 28 días error | ||
+ | (6) si no hay error antes, entonces fecha correcta | ||
+ | *O sea tenemos un programa de 6 partes, vamos a ir haciendo cada uno | ||
+ | Primero hacemos el algoritmo y luego ponemos las fichas de scratch | ||
+ | ;(1)Pedir los datos de dia mes y año | ||
+ | <source lang=php> | ||
+ | Escribir "Dime un valor para día" | ||
+ | leer día //Esto es guarar el valor que haya escrito el usuario en la variable dia | ||
+ | Escribir "Dime un valor para día" | ||
+ | leer día //Esto es guarar el valor que haya escrito el usuario en la variable dia | ||
+ | Escribir "Dime un valor para día" | ||
+ | leer día //Esto es guarar el valor que haya escrito el usuario en la variable dia | ||
+ | Fecha = dia + "/" + mes + "/" + year | ||
+ | Escribir "Voya a pensar a ver si la fecha es correcta " + Fecha | ||
+ | </source> | ||
+ | |||
+ | [[imagen:scratchFechas1.png]] | ||
+ | ;(2) si hay más de 31 días error | ||
+ | <source lang=php> | ||
+ | SI (dias > 31) | ||
+ | escribir "La fecha " + Fecha + "Error por exceso de días " //fecha representa una variable que contiene un valor | ||
+ | FIN_SI | ||
+ | </source> | ||
+ | [[imagen:scratchFechas2.png]] | ||
+ | ;(3) si hay más de 12 meses error | ||
+ | <source lang=php> | ||
+ | SI (meses > 12) | ||
+ | escribir "La fecha " + Fecha + "Error: sólo hay 12 meses" | ||
+ | FIN_SI | ||
+ | </source> | ||
+ | [[imagen:scratchFechas3.png]] | ||
+ | |||
+ | ;(4) Si el mes es de (4,6,9,11) entonces | ||
+ | si hay más de 30 días error | ||
+ | <source lang=php> | ||
+ | <source lang=php> | ||
+ | SI ((mes = 4) o (mes = 6) o (mes = 9) o (mes = 11)) | ||
+ | SI (dia > 30) | ||
+ | escribir "Error : Es un mes de 30 dias" | ||
+ | FIN_SI | ||
+ | FIN_SI | ||
+ | </source> | ||
+ | [[Imagen:scratchFechas4.png]] | ||
+ | ;(5) Si el mes es febrero entonces | ||
+ | si el mes es bisiesto entonces | ||
+ | si hay más de 29 días error | ||
+ | si no | ||
+ | si hay más de 28 días error | ||
+ | *En este caso primero haremos el procedimiento para ver su un mes es bisiesto | ||
+ | *El algoritmo arriba especificado y explicado | ||
+ | <source lang=php> | ||
+ | SI (año mod 4 == 0) | ||
+ | SI (año mod 400 ==0) | ||
+ | bisiesto = si | ||
+ | SI_NO | ||
+ | SI (año mod 100 ==0) | ||
+ | bisiesto = no | ||
+ | SI_NO | ||
+ | bisiesto = si | ||
+ | FIN_SI | ||
+ | FIN_SI | ||
+ | SI_NO | ||
+ | bisiesto = no | ||
+ | FIN_SI | ||
+ | </source > | ||
+ | [[Imagen:scratchBisiesto.png]] | ||
+ | *Ahora nos queda verificar el número de días en un mes de febrero según sea o no el año bisiesto | ||
+ | *El algoritmo | ||
+ | <source lang = PHP> | ||
+ | SI (mes == 2) | ||
+ | SI (bisiesto = si) | ||
+ | SI dias > 29 | ||
+ | Escribir "La fecha "+Fecha+" Error: Es une mes de 29 días (Año bisiesto) | ||
+ | FIN_SI | ||
+ | SI_NO | ||
+ | SI dias > 28 | ||
+ | Escribir "La fecha "+Fecha+" Error: Es une mes de 28 días (Año no bisiesto) | ||
+ | FIN_SI | ||
+ | |||
+ | FIN_SI | ||
+ | FIN_SI | ||
+ | </source> | ||
+ | [[Imagen:scratchFechas5.png]] | ||
+ | |||
+ | *En todos los casos anteriores cuando detectamos que la fecha no es correcta terminamos el programa | ||
+ | ;(6) si no hay error antes, entonces fecha correcta | ||
+ | |||
+ | *Llegados a este punto si no ha terminado el programa mostramos el mensaje de que la fecha es correcta | ||
+ | [[Archivo:scratchFechas6.png]] | ||
+ | |||
+ | ==Modificacion== | ||
+ | *Como hemos visto en clase, a veces puede ser interesante, para probar el programa de forma rápido, que las fechas se generen de forma aleatoria | ||
+ | *Una manera de hacerlo es usando la ficha de operaciones ''''numero al azar entre ...'''' | ||
+ | [[imagen:scratchRandom.png]] | ||
+ | *La ficha anterior generaría un número entre 1 y 10 | ||
+ | *De esta manera podemos generar aleatoriamente valores para día, mes y año dando un rango por ejemplo en dia de 1 a 33 para verificar que si sale un día de 32 mi programa indique el error | ||
+ | [[Imagen:scratchFechasAutomaticas.png]] | ||
+ | *Ahora se trataría de modificar el programa de modo que tengamos dos botones y de esta forma pudiéramos activar que se pida la fecha al usuario o que se genere de forma automáticas | ||
+ | [[Imagen:senales.png]] | ||
+ | *Ahora tenemos tres sprite u objetos en el programas | ||
+ | *Queremos que interactúen entre ellos, para lo cual usaremos envío de mensajes | ||
+ | *Cuando queremos que un objeto le diga algo a otro usaremos la ficha enviar un mensaje | ||
+ | [[Imagen:scratchMsj1.png]] | ||
+ | *Esta ficha enviará un mensaje a todos los objetos o sprite incluido él | ||
+ | *Si queremos que un sprite haga algo cuando reciba un mensaje, debemos usar la ficha de evento '''''al Recibif''''' | ||
+ | [[Imagen:scratchMsj2.png]] | ||
+ | En el programa planteado quedaría de la siguiente manera | ||
+ | ;Botón Preguntar fecha | ||
+ | ;Botón generar fecha aleatoria | ||
+ | ;Acción del sprite principal | ||
+ | --> |
Última revisión de 18:59 29 nov 2021