martes, 15 de marzo de 2016

Capitulo 8: Small Basic. Continuando con las condiciones. Parte 2

Ahora mostraré otra versión del mismo programa, pero sin utilizar la instrucción goto y agregando un par de instrucciones lógicas muy ocupadas. La operación "Y" (en small basic se debe escribir como "And", en otros lenguajes se escribe "&" o "&&") y la operación "O" (en small basic se debe escribir como "Or", en otros lenguajes se escribe "||") Estas operaciones se utilizan para especificar aún más la condición que estoy  solicitando o para especificar una especie de "rango", por ejemplo si quiero que el usuario ingrese un número entre 10 y 20. Mi condición podría ser "si numero_ingresado es mayor a 10 (Y)  numero_ingresado es menor a 20..." Lo que estoy diciendo es abarcar un rango entre 10 y 20 y la condición solo se cumplirá, si el número ingresado se encuentra en ese rango de valores. Con la operación lógica "Y" ambas condiciones (las que se están evaluando) deben ser verdaderas para que se ejecute el código que le sigue. 

Para un ejemplo con la instrucción lógica "O" voy a ocupar el mismo caso anterior, solo que la condición cambiará, la condición podría ser "si numero_ingresado es menor a 10 (O) numero_ingresado es mayor a 20..." En este caso, con la instrucción "o" (or) solamente es necesaria que una condición sea evaluada como falsa, para que la condición completa no se cumpla, es decir, si el usuario escribe un 5, entonces el programa no seguirá evaluando las demás condiciones y automáticamente evaluará la instrucción completa como falsa. Quizás todo esto suene un poco enredado, pero como siempre digo, que con práctica se le coge el truquillo.
Ahora bien, aquí el programa..



TextWindow.Write("Cual es tu edad? ")

edad = TextWindow.ReadNumber()

If edad >= 0 And edad < 18 Then
  TextWindow.WriteLine("Eres menor de edad")
EndIf

If edad >= 18 And edad <= 120 Then
  TextWindow.WriteLine("Eres mayor de edad")
EndIf

If edad < 0 Or edad > 120 Then
  TextWindow.WriteLine("La edad ingresada no es valida")
EndIf


Como dije, esta es otra alternativa al código anterior, pero en este caso, el programa siempre finaliza, aunque se ingrese una edad no válida, el programa no vuelve a preguntar por la edad... Antes de analizar lo que hace el programa, una pregunta ¿cómo hacer para que este programa pregunte nuevamente la edad si se ingresa un número no válido?
La respuesta es, colocando una instrucción goto después del mensaje "La edad ingresada no es válida", la cual debe apuntar a una etiqueta ubicada al principio del programa, quedando así:

inicio:
TextWindow.Write("Cual es tu edad? ")

edad = TextWindow.ReadNumber()

If edad >= 0 And edad < 18 Then
  TextWindow.WriteLine("Eres menor de edad")
EndIf

If edad >= 18 And edad <= 120 Then
  TextWindow.WriteLine("Eres mayor de edad")
EndIf

If edad < 0 Or edad > 120 Then
  TextWindow.WriteLine("La edad ingresada no es valida")
  Goto inicio
EndIf


Diario de un programador.- Dia 21


También es posible hacer una especie de menú de opciones con la instrucción if, como por ejemplo:








 

El código para esto sería algo así:

inicio:
TextWindow.WriteLine("INVENTARIO")
TextWindow.WriteLine(" ")
TextWindow.WriteLine("1) Objetos")
TextWindow.WriteLine("2) Armas")
TextWindow.WriteLine("3) Accesorios")
TextWindow.WriteLine("4) Estado")
TextWindow.WriteLine("5) Salir")
TextWindow.WriteLine(" ")
TextWindow.Write("Ingresa una opcion ")
opcion = TextWindow.ReadNumber()

If opcion = 1 Then
  TextWindow.Clear()
  TextWindow.WriteLine("OBJETOS")
  TextWindow.WriteLine(" ")
  TextWindow.WriteLine("Pocion curativa x 10")
  TextWindow.WriteLine("Cola de fenix   x 5")
  TextWindow.WriteLine("Pocion de mana  x 3")
  TextWindow.Pause()
  TextWindow.Clear()
  Goto inicio
EndIf

If opcion = 2 Then
  TextWindow.Clear()
  TextWindow.WriteLine("ARMAS")
  TextWindow.WriteLine(" ")
  TextWindow.WriteLine("Mandoble x 1")
  TextWindow.WriteLine("Hacha    x 1")
  TextWindow.WriteLine("Daga     x 1")
  TextWindow.Pause()
  TextWindow.Clear()
  Goto inicio
EndIf
 
If opcion = 3 Then
  TextWindow.Clear()
  TextWindow.WriteLine("ACCESORIOS")
  TextWindow.WriteLine(" ")
  TextWindow.WriteLine("Aro de fuerza   x 2")
  TextWindow.WriteLine("Collar de magia x 1")
  TextWindow.WriteLine("Guante genji    x 1")
  TextWindow.Pause()
  TextWindow.Clear()
  Goto inicio
EndIf

If opcion = 4 Then
  TextWindow.Clear()
  TextWindow.WriteLine("ESTADO")
  TextWindow.WriteLine(" ")
  TextWindow.WriteLine("Nivel        : 10")
  TextWindow.WriteLine("Ataque       : 15")
  TextWindow.WriteLine("Defensa      : 3")
  TextWindow.WriteLine("Inteligencia : 3")
  TextWindow.WriteLine("Agilidad     : 9")
  TextWindow.WriteLine("Destreza     : 12")
  TextWindow.WriteLine("Suerte       : 2")
  TextWindow.Pause()
  TextWindow.Clear()
  Goto inicio
EndIf

If opcion = 5 Then
  TextWindow.Clear()
  TextWindow.WriteLine("Hasta luego")
EndIf



Diario de un programador.- Dia 22

En el código anterior, lo único "nuevo" serían las instrucciones TextWindow.Clear() y TextWindow.Pause(). La primera, lo que hace es borrar la pantalla con la finalidad de que se vea más ordenada la información y solo se muestre lo relevante. La segunda, simplemente realiza una pausa al programa y lo coloca en espera a que el usuario presione una tecla para continuar.

La instrucción ElseIf

Esta instrucción es una condición alternativa a la vez que toma decisiones utilizando la instrucción if (fuente: Manual de ayuda Small Basic)
Ejemplo:

If Clock.Hour < 12 Then
  TextWindow.WriteLine("Buenos días")

ElseIf Clock.Hour < 20 Then
  TextWindow.WriteLine("Buenas tardes")

ElseIf Clock.Hour < 24 Then
  TextWindow.WriteLine("Buenas noches")
EndIf

Lo que hace este programa es verificar la hora del sistema con Clock.Hour y si la hora es menor a 12, mostrará el mensaje "Buenos días", si es menor a las 20, mostrará "Buenas tardes" y si es menor a 24, mostrará "Buenas noches".

Esto es todo por ahora, en la parte 3 se realizarán algunos ejercicios para aplicar lo aprendido. Suerte.




Gustavo J. Cerda Nilo

Agosto 2015. Última modificación, Marzo 2016

1 comentario:

C++ El apuntador This

El apuntador This En C++, cada objeto tiene acceso a su propia dirección a través de un puntero o apuntador denominado This. Lo...