Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Gestión De Errores
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Gestión De Errores 
 
Hola!

Uno de los ejercicios que hemos hecho en el curso, es para el control de errores:
En Python existe Try al igual que gambas y Except. Parece Catch.

Fijaros en el código en Python y luego os muestro el que hice en Gambas.
Pueden venir cosas en inglés.

# Escribe un programa que pregunte al usuario una puntuacion
# entre 0.0 y 1.0. Si la puntuacion esta fuera de rango que imprima
# un error. Si la puntuación esta entre 0.0 y 1.0, muestra la
# nota usando la siguiente tabla:

# Punto     Grado
# >= 0.9     A
# >= 0.8     B
# >= 0.7     C
# >= 0.6     D
# < 0.6      F

# Enter score: 0.95
# A

# Enter score: perfect
# Bad score

# Enter score: 10.0
# Bad score

# Enter score: 0.75
# Bad score

sscore = input ('Entra una puntuacion entre 0.0 y 1.0: ')
try:    
    fscore = float(sscore)
    grade = ''
    if 0.0 < fscore <= 1.0:
        if fscore >= 0.9:
            grade = "A"
        elif fscore >= 0.8:
            grade = "B"
        elif fscore >= 0.7:
            grade = "C"
        elif fscore >= 0.6:
            grade = "D"
        elif fscore < 0.6:
            grade = "F"            
        print (grade)
    else:
        print ('Error en la puntuacion')
except:
    print ('Error en la puntuación')
 


Recordemos que cuando trabajamos con condicionales vamos comparando de mayor a menor. Para no liarnos.
Lo curioso del tema es que con Try se puede usar un bloque de instrucciones. gambas solo admite una instrucción.
Y sobra. Os comento lo que hice al convertir la cadena a Float.

' gambas module file

'Escribe un programa que pregunte al usuario una puntuación
'entre 0.0 y 1.0.Si la puntuacion esta fuera de rango que imprima
'un error.Si la puntuación esta entre 0.0 y 1.0, muestra la
'nota usando la siguiente tabla:

'Punto Grado
' >= 0.9 A
' >= 0.8 B
' >= 0.7 C
' >= 0.6 D
' < 0.6 F

'Enter score: 0.95
'A

'Enter score: perfect
'Bad score

'Enter score: 10.0
'Bad score

'Enter score: 0.75
'Bad score

Public Sub Main()
  
  Dim sscore As String
  Dim fscore As Float
  Dim grade As String
  
  Print "Entra una puntuacion entre 0.0 y 1.0: "
  Input sscore  
  Try CFloat(sscore)
  fscore = CFloat(sscore)
  If fscore >= 0.0 And fscore <= 1.0 Then
    If fscore >= 0.9 Then
      grade = "A"
    Else If fscore >= 0.8 Then
      grade = "B"
    Else If fscore >= 0.7 Then
      grade = "C"
    Else If fscore >= 0.6 Then
      grade = "D"
    Else If fscore < 0.6 Then
      grade = "F"    
    Endif
    Print grade
  Else
    Print "Error en la puntuación"    
  Endif
  
Catch
  Print "Error en la puntuación"
  
End
 


Cuando convierto de cadena a Float, no puedo hacer esto:
...
Try fscore = CFloat(sscore)
...
 


Primero tengo que ver si se puede convertir y luego asignarlo abajo.
...
Try CFloat(sscore)
fscore = CFloat(sscore)
...
 


Creo que Except se parece mucho al Catch de gambas. Si usásemos Error la información seria mas completa del tipo de error.

Os dejo el ejemplo en Gambas.


Saludos

PuntosYNotas.tar.gz
Descripción:  
Descargar
Nombre del archivo: PuntosYNotas.tar.gz
Tamaño: 4.58 KB
Descargado: 19 veces
PuntosYNotas.tar.gz
Descripción:  
Descargar
Nombre del archivo: PuntosYNotas.tar.gz
Tamaño: 4.58 KB
Descargado: 19 veces
PuntosYNotas.tar.gz
Descripción:  
Descargar
Nombre del archivo: PuntosYNotas.tar.gz
Tamaño: 4.58 KB
Descargado: 19 veces

 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Jueves, 23 Octobre 2014, 12:25; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Gestión De Errores 
 
Shell:

Ojo con el try. A veces nos puede salvar de escribir código pero suprimir errores puede ocasionar errores mucho más difíciles de detectar posteriormente.

Si no estás seguro de si tu variable es del tipo Float, mejor usa la función específica para ello

if not isFloat(sscore) then
 ...
 ...


En ejemplos tan sencillos como éste no hay problema, pero cuidado con acostumbrarte a ese tipo de programación "No quiero saber que está mal, oiga". Los efectos colaterales pueden ser absolutamente enjundiosos....
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Gestión De Errores 
 
Lo que me extraña, es que cuando hice la conversión del tipo string al float no
había una asignación a una variable, solamente un Try, cuando creo que debería haber una asignación, ¿ no ?.  

Intentaba una similitud entre el código de Python y gambas. Seguramente en Python también habrá una forma de saber
si es el tipo correcto, existe Type que da el tipo de datos, ejemplo:

nombre = 'pedro'
type (nombre)
 


Nos devuelve:
Citar:

<class 'str'>


Ok, he visto la forma en Python se hace con el comando isinstance
def es_numero(valor):
    return isinstance(valor,(int,float))
 


Al pasar un valor al parámetro de la función nos devolverá True o False.
En ese caso se le ha añadido todos los tipos que quiere comprobar.

Existirán casos mejores para aplicar el Try tanto en gambas como en Python.
Supongo que como el curso es sencillo no se pretenderá complicarse con instancias y objetos.
Y posiblemente sea esto una mal habito que se adquiera luego.

Dichoso inglés. Pues intentare crear una pregunta con esto. Dudo que el tutor responda con tanta gente.

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
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Gestión De Concurrencia netking86 Bases de Datos 12 Martes, 10 Septiembre 2013, 18:24 Ver último mensaje
codificador
No hay nuevos mensajes Inicio De Aplicaciones De Gestión. viejito General 2 Martes, 06 Enero 2015, 04:16 Ver último mensaje
viejito
No hay nuevos mensajes Proyecto De Software De Gestión estrella_de_galicia Aplicaciones/Fragmentos de Código 37 Martes, 26 Noviembre 2019, 04:55 Ver último mensaje
anderson00
No hay nuevos mensajes [Solucionado] Gestión FTP Desde Gambas calcena General 2 Miercoles, 24 Junio 2020, 19:06 Ver último mensaje
jsbsan
 

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