Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Bateria De Test Para Una Función. Ejercicios
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Bateria De Test Para Una Función. Ejercicios 
 
Hola!.

Os cuento la idea. Es una función muy simple, consiste en una función que tiene que devolver "verdadero" en
caso de que no sea un día laborable o estemos de vacaciones.  En caso contrarió devolverá "falso".

Este es el texto que he podido traducir del inglés.

Citar:

El parametro "dialaborable" es verdadero si se trata de un día entre semana y el parámetro "vacaciones" es verdadero si estamos de vacaciones.
Descansamos si no es un "díalaborable" o estamos de "vacaciones". 'Devolverá verdadero si descansamos.


Esta es su tabla de la verdad y la salida de la función: (Podía haber usado librando, de permiso, descanso...)

Citar:

'Descansando(False, False) -> True
'Descansando(True, False) -> False
'Descansando(False, True) -> True
'Descansando(True, True) -> True


Creo que el principal problema radica en el array "solucióncorrecta", en su orden.  Cuando compara ambos array, testusuario y solucioncorrecta.
Como tenemos dos parámetros booleanos, debemos crear una función que nos genere todos los posibles valores que pueden tomar las entradas.
He creado una batería de test para comprobar la salida.

Private solucioncorrecta As Boolean[] = [True, False, True, True]
Private testusuario As New Boolean[]

Public Sub Main()
  
  CrearTest()
  ComprobarTest()
  
End

Private Function descanso(dialaborable As Boolean, vacaciones As Boolean) As Boolean
  
  If Not dialaborable Or vacaciones Then
    Return True
  Else
    Return False
  Endif
  
End

Private Sub CrearTest()

  Dim bboleanos As Boolean[] = [False, True]
  Dim x, y As Boolean
  
  For Each x In bboleanos
    For Each y In bboleanos
      'Con esta forma de poner los parametros,el resultado sale invertido
      'testusuario.Add(descanso(x, y))    
      'De esta forma no
      testusuario.Add(descanso(y, x))    
    Next
  Next
 'Stop
  
End

Public Sub ComprobarTest()
  
  Dim x As Integer
  
  For x = 0 To solucioncorrecta.Max
    If testusuario[x] = solucioncorrecta[x] Then
      Print "OK!"
    Else
      Print "Error!"
    Endif
  Next
  
End
 


Lo importante del ejercicio es comprobar el correcto funcionamiento de la función.
¿ Qué me podéis decir del orden de la solución en el array y el testeo de la misma ?.
Podría  comparar con el array solución de derecha a izquierda y al revés. Hacer dos veces lo mismo.

Os adjunto el código implementado para Gambas.

Siento no haber puesto descansando, tome la traducción muy literalmente.  

Como ultimo dato, es un ejercicio perteneciente a:

CodingBat

Saludos

ejemplo1_funcion_durmiendo.tar.gz
Descripción:  
Descargar
Nombre del archivo: ejemplo1_funcion_durmiendo.tar.gz
Tamaño: 5.13 KB
Descargado: 66 veces
ejemplo1_funcion_durmiendo.tar.gz
Descripción:  
Descargar
Nombre del archivo: ejemplo1_funcion_durmiendo.tar.gz
Tamaño: 5.13 KB
Descargado: 66 veces
ejemplo1_funcion_durmiendo.tar.gz
Descripción:  
Descargar
Nombre del archivo: ejemplo1_funcion_durmiendo.tar.gz
Tamaño: 5.13 KB
Descargado: 66 veces

 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Domingo, 13 Septiembre 2015, 00:19; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Bateria De Test Para Una Función. Ejercicios 
 
Fijaros como se crea una tabla de la verdad con tres variables.
Lo hacemos mediante bucles anidados. Lo curioso del tema es que lo hace al revés de como la aprendí en la escuela.
Por cada entrada/variable necesitamos un bucle anidado.

Public Sub Main()

  Dim bbooleanos As Boolean[] = [False, True]  
  Dim x, y, z As Boolean
  
  For Each x In bbooleanos
    For Each y In bbooleanos
      For Each z In bbooleanos
        Print x, "\t", y, "\t", z
      Next
    Next
  Next
  
End
 


Salida:
Citar:

False            False            False
False            False            True
False            True            False
False            True            True
True            False            False
True            False            True
True            True            False
True            True            True


Bien. Creo que para aplicar esto en distintos ejercicios que necesiten dos parámetros booleanos o más,
podríamos crear una clase de la tabla de la verdad. No he probado a crearla aun.

P.d Parece como si los cambios en el editor de gambas estuvieran un poco verde.
Hay momentos en que la linea no tiene color, se queda completamente en negra y borrando o tocando un poco
la linea, toma de nuevo color, las declaraciones , los comandos, etc.

Eso me ocurre con la versión beta.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Bateria De Test Para Una Función. Ejercicios 
 
Buenas,
Con las clases no te puedo ayudar, no he llegado todavía a entender lo de los objetos.  

Con la función que genera tablas de verdad, sí. Te paso una función que te permite crear tablas de cualquier tamaño (en realidad está pensada para generar cadenas siguiendo un alfabeto):
Public Function TablaDeVerdad(Alfabeto As String, Actual As String) As String

  Dim Caracter As String
  Dim Primero, Ultimo As String
  Dim Posicion As Integer

  Dim Resultado As String

  Primero = Left(Alfabeto, 1) 'Primer caracter del alfabeto
  Ultimo = Right(Alfabeto, 1) 'Ultimo caracter del alfabeto

  Caracter = Right(Actual, 1) 'Empezamos al final de la cadena

  If Caracter = Ultimo Then
    Posicion = Len(Actual) 'Empezamos al final de la cadena
    While Posicion And Caracter = Ultimo
      Dec Posicion
      Caracter = Mid(Actual, Posicion, 1)
    Wend
    Caracter = Mid(Alfabeto, InStr(Alfabeto, Caracter) + 1, 1)
    'Reiniciamos el resto de la cadena
    Resultado = Left(Actual, Posicion - 1) & Caracter & String(Len(Actual) - Posicion, Primero)

  Else 'Si no estamos en el final del alfabeto
    Caracter = Mid(Alfabeto, InStr(Alfabeto, Caracter) + 1, 1) 'Sustituimos el caracter por el siguiente en el alfabeto
    Resultado = Left(Actual, Len(Actual) - 1) & Caracter
  Endif

  Return Resultado

End
 


Y un ejemplo de tabla generada:

' gambas module file

Public stAlfabeto As String = "10"

Public Sub Main()

  Dim stCadenaPrueba As String
  Dim stCadenaObjetivo As String = "010"
  Dim stValor As String
  ' Dim ct As Integer

  Dim MatrizResultados As New String[]

  stCadenaPrueba = String(Len(stCadenaObjetivo), Left(stAlfabeto, 1)) 'Inicializamos la cadena de pruebas. Debe tener la misma longitud que el objetivo


  While stCadenaPrueba <> stCadenaObjetivo
    MatrizResultados.Add(stCadenaPrueba)
    stCadenaPrueba = TablaDeVerdad(stAlfabeto, stCadenaPrueba)
  Wend

  MatrizResultados.Add(stCadenaObjetivo) 'Añadir el objetivo!!!!

  For Each stValor In MatrizResultados
    Print stValor
  Next

End
 


OJO!!: La función no contiene comprobación de errores (cadenas de distinta longitud, caracteres que no figuran en el alfabeto...) así que petará irremediablemente si los parámetros no son los correctos.

Saludos.
 



 
angelhjose - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Función Para Comprobar IP soplo Aplicaciones/Fragmentos de Código 2 Viernes, 01 Julio 2011, 10:47 Ver último mensaje
Invitado
No hay nuevos mensajes Como Conocer El Estado De La Bateria Con G... dantextz General 5 Jueves, 04 Julio 2013, 17:57 Ver último mensaje
jsbsan
No hay nuevos mensajes Componente UnitForm Para Realizas Test Uni... jsbsan Aplicaciones/Fragmentos de Código 0 Miercoles, 24 Diciembre 2014, 15:12 Ver último mensaje
jsbsan
No hay nuevos mensajes [Python] Más De 400 Ejercicios De Program... Shell Programación en otros lenguajes 0 Jueves, 23 Abril 2015, 11:19 Ver último mensaje
Shell
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron