Diferencia entre revisiones de «Usuario:ManuelRomero/Scratch/Contenidos/Ejemplos/Ejemplos2»

De WikiEducator
Saltar a: navegación, buscar
(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
  
[[Imagen:scratchEj5.png|600px|center]]
 
 
{{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=algoritmico>
+
*Para simplificar el problema vamos a dar por supuesto que los datos son siempre positivos
si (mes < 1 O mes > 12)
+
<source lang=php>
   escribir "Fecha incorrecta
+
si ( mes > 12)
F_si
+
   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