Ejemplo De If Anidados Y Simplificación De Este


Objetivo: Ejemplo De If Anidados Y Simplificación De Este
Hola!.

Este es un ejemplo de Python convertido a Gambas3. Me explico en el mismo código.

Vaya, la tabla no ha quedado muy bien. Hago una captura.

tabla_1408650448_378403

'Este ejemplo es una conversion a Gambas3 de un ejemplo que pertenece al libro:
'Practical Programming. An Introduction to Computer Science using Python 3. Second Edition
'Autores: '
'Paul Cries
'Jennifer Campbell
'Jason Montojo
'
'Editado por: '
'Lyn Beighley
'
'Editoral: '
'The Pragmatic Programmers

'
' En este ejemplo vamos a recordar en una variable la evaluación de una expresión booleana
' Vamos a ver tambien el uso de unas sentencias if anidadas

' Vamos a traducir las condiciones de una tabla a un ejemplo de gambas. Es algo habitual.

' En nuestro ejemplo queremos calcular el riesgo de enfermedad del corazon siguiendo
' reglas basadas en la edad y el indice de masa corporal (IMC)

' Esta es nuestra tabla de decisiones. Tenemos que convertirla a un grupo de sentencias condicionales.
' Vamos a ver distintas posibilidades.
'
'
'Vamos a definir dos variables globales. Es simplemente por comodidad.
Private edad As Integer
Private imc As Single

Public Sub Main()
'Debemos asignar un valor a cada variable global y llamar al ejemplo concreto, del 1 al 3.
'Podemos cambiar el valor para ver un resultado distinto y comprobar el funcionamiento correcto de la tabla
'Descomentar solo un Ejemplo

edad = 33
imc = 17.0

Ejemplo1
'Ejemplo2
'Ejemplo3

End


Public Sub Ejemplo1()
' Una posible manera, sería usando un grupo de sentencias if anidadas
'Dim edad As Integer
'Dim imc As Single
Dim riesgo As String

If edad < 45 Then
If imc < 22.0 Then
riesgo = "Bajo"
Else
riesgo = "Medio"
Endif
Else
If imc < 22.0 Then
riesgo = "Medio"
Else
riesgo = "Alto"
Endif
Endif
Print "El riesgo es: " & riesgo

End

Public Sub Ejemplo2()
'La expresión imc < 22.0 es usada multiples veces. Para simplificar el codigo nosotros
'podemos evaluar cada una de las expresiones booleanas y crear variables que se referieren
'a los valores producidos por estas expresiones y usar estas variables multiples veces.

Dim joven As Boolean
Dim delgado As Boolean
'Dim edad As Integer
'Dim imc As Single
Dim riesgo As String

' En esta dos variables vamos a recordar la evaluación de la expresión booleana
joven = edad < 45
delgado = imc < 22.0

If joven Then
If delgado Then
riesgo = "Bajo"
Else
riesgo = "Medio"
Endif
Else
If delgado Then
riesgo = "Medio"
Else
riesgo = "Alto"
Endif
Endif
Print "El riesgo es: " & riesgo

End

Public Sub Ejemplo3()

'Ahora vamos a hacer lo mismo sin un grupo de sentencias if anidadas
'
Dim joven As Boolean
Dim delgado As Boolean
'Dim edad As Integer
'Dim imc As Single
Dim riesgo As String

' En esta dos variables vamos a recordar la evaluación de la expresión booleana
joven = edad < 45
delgado = imc < 22.0

If joven And delgado Then
riesgo = "Bajo"
Else If joven And Not delgado Then
riesgo = "Medio"
Else If Not joven And delgado Then
riesgo = "Medio"
Else If Not joven And Not delgado Then
riesgo = "Alto"
Endif
Print "El riesgo es: " & riesgo

End


Os subo el ejemplo.

De todos los sitios podemos aprender algo nuevo, solo hay que buscar y si no es para gambas, convertirlo.

Saludos

última edición por Shell el Viernes, 22 Agosto 2014, 08:44; editado 5 veces

EjemlposConIfAnidados.tar.gz
Descripción:  
Descargar
Nombre del archivo: EjemlposConIfAnidados.tar.gz
Tamaño: 6.37 KB
Descargado: 25 veces
EjemlposConIfAnidados.tar.gz
Descripción:  
Descargar
Nombre del archivo: EjemlposConIfAnidados.tar.gz
Tamaño: 6.37 KB
Descargado: 25 veces
EjemlposConIfAnidados.tar.gz
Descripción:  
Descargar
Nombre del archivo: EjemlposConIfAnidados.tar.gz
Tamaño: 6.37 KB
Descargado: 25 veces

Objetivo: Re: Ejemplo De If Anidados Y Simplificación De Este
Shell:

Me gusta mucho el 3º ejemplo, queda mucho más claro el código.

Nota:
Te falta añadirle
' En esta dos variables vamos a recordar la evaluación de la expresion booleana
joven = edad < 45
delgado = imc < 22.0

Objetivo: Re: Ejemplo De If Anidados Y Simplificación De Este
Gracias Julio por la corrección.

La verdad es que si. Con el uso de las dos variables ha quedado bastante simplificado y muy fácil de entender.
A veces no nos fijamos en estos detalles. Y es algo que nos agradecerá el programador que lea el código.

Saludos

Objetivo: Re: Ejemplo De If Anidados Y Simplificación De Este
Visto está que el curso de phyton aportó mucho, un ejemplo similar al que muestra el amigo Shell, usando operadores lógicos para evaluar màs de una condición a la vez, para realizar la versiòn gambas del piedra ,papel,tijera,lagarto,Spock que realizamos en el curso.
Os muestro parte del código:
If jugador = compu Then
label1.text = “No hay ganador”
Else If
jugador = “Spock” And (compu = “tijera” Or compu = “piedra”) Then
label1.text = “jugador gana”
puntaje_jugador = puntaje_jugador + 1
Else If
jugador = “lagarto” And (compu = “papel” Or compu = “Spock”) Then
label1.text = “jugador gana”
puntaje_jugador = puntaje_jugador + 1
Else If
jugador = “tijera” And (compu = “papel” Or compu = “lagarto”) Then
label1.text = “jugador gana”
puntaje_jugador = puntaje_jugador + 1
Else If
jugador = “piedra” And (compu = “tijera” Or compu = “lagarto”) Then
label1.text = “jugador gana”
puntaje_jugador = puntaje_jugador + 1
Else If
jugador = “papel” And (compu = “piedra” Or compu = “Spock”) Then
label1.text = “jugador gana”

Por si a alguno le interesa aquí les dejo el código fuente, que por supuesto es muy mejorable.
Saludos

última edición por Dani26 el Lunes, 25 Agosto 2014, 01:11; editado 1 vez

Página 1 de 1


  
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

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4421s (PHP: -66% SQL: 166%)
Consultas SQL: 49 - Debug off - GZIP Activado