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

De WikiEducator
Saltar a: navegación, buscar
Línea 60: Línea 60:
 
FIN_SI
 
FIN_SI
 
</source >
 
</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
 
*Ahora vamos a hacer el código en scratch
 
Hacemos el algoritmo por partes
 
Hacemos el algoritmo por partes
 
Sabemos que nuestro programa (el análisis) sería
 
Sabemos que nuestro programa (el análisis) sería
  (1)Pedir los datos de dia mes y año
+
  (1) Pedir los datos de dia mes y año
 
  (2) si hay más de 31 días error
 
  (2) si hay más de 31 días error
 
  (3) si hay más de 12 meses error
 
  (3) si hay más de 12 meses error
  (4)Si el mes es de (4,6,9,11) entonces
+
  (4) Si el mes es de (4,6,9,11) entonces
    si hay más de 30 días error
+
        si hay más de 30 días error
  (5)Si el mes es febrero entonces
+
  (5) Si el mes es febrero entonces
    si el mes es bisiesto entonces
+
      si el mes es bisiesto entonces
      si hay más de 29 días error
+
        si hay más de 29 días error
    si no  
+
      si no  
      si hay más de 28 días error
+
        si hay más de 28 días error
  (6)si no hay error antes, entonces fecha correcta
+
  (6) si no hay error antes, entonces fecha correcta
 
*O sea tenemos un programa de 6 partes, vamos a ir haciendo cada uno
 
*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
 
Primero hacemos el algoritmo y luego ponemos las fichas de scratch
Línea 89: Línea 105:
  
 
[[imagen:scratchFechas1.png]]
 
[[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
 +
*Llegados a este punto si no ha terminado el programa mostramos el mensaje de que la fecha es correcta
 +
 +
(6) si no hay error antes, entonces fecha correcta

Revisión de 01:24 13 feb 2016




Icon objectives.jpg

Objetivos

En este caso implementaremos problemas un poco más complicados Para resolverlos intentaremos hacer previamente un algoritmo





Icon define.gif

Definición

Algoritmo: Conjunto de instrucciones básicas que ejecutadas en el orden especificado solucionan un problema previamente planteado


básicas
no es que sean muy sencillas sino que el ordenador entiende, interpreta y ejecuta



Icon activity.jpg

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á
  • en los meses 1,3,5,7,8,10 y 12 son de 31 días
  • Los meses 4,6,9 y 11 son de 30 días
  • El mes 2 es de 28 días




  • 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
  • Para simplificar el problema vamos a dar por supuesto que los datos son siempre positivos
si ( mes > 12)
   escribir "Fecha incorrecta solo hay 12 meses
fin_si

El caso de día vamos a establecer criterios en funcion de meses

SI (dia > 31)
   escribir "Fecha incorrecta día no puede ser mayor de 31"
FIN_SI
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
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
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
  • 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
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 28as (Año no bisiesto)
       FIN_SI
 
   FIN_SI 
FIN_SI
  • 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
 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

ScratchFechas1.png

(2) si hay más de 31 días error
SI (dias > 31)
   escribir "La fecha " + Fecha + "Error por exceso de días " //fecha representa una variable que contiene un valor
FIN_SI

ScratchFechas2.png

(3) si hay más de 12 meses error
SI (meses > 12)
   escribir "La fecha " + Fecha + "Error: sólo hay 12 meses"
FIN_SI

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>
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

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
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

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
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 28as (Año no bisiesto)
       FIN_SI
 
   FIN_SI 
FIN_SI

ScratchFechas5.png

  • En todos los casos anteriores cuando detectamos que la fecha no es correcta terminamos el programa
  • Llegados a este punto si no ha terminado el programa mostramos el mensaje de que la fecha es correcta
(6) si no hay error antes, entonces fecha correcta