Simple Calculadora En Una Aplicación De Línea De Comandos


Objetivo: Simple Calculadora En Una Aplicación De Línea De Comandos
El código siguiente es una aplicación de línea de comandos para hacer sencillos cálculos de dos enteros.
La expresión del cálculo (por ejemplo: 10+15) debe ser escrita sin espacios en el área debajo de la console, o en el Terminal. Luego pulsar la tecla [Enter].

Public Sub Main()

Print "\n'i' y [Enter] para obtener informaciones\n"

End


Public Sub Application_Read()

Dim s As String
Dim ss As String[]

Input s

If s = "i" Then
Print "Cómo se usa:\n- 'i' y [Enter] para obtener estas informaciones;"
Print "- entero*entero y [Enter] para multiplicar los dos enteros (ejemplo: 4*2 );"
Print "- entero+entero y [Enter] para la adición (ejemplo: 4+2 );"
Print "- entero/entero y [Enter] para la división (ejemplo: 4/2 );"
Print "- entero-entero y [Enter] para la sustracción (ejemplo: 4-2 );"
Print "- 'quit' y [Enter] para cerrar el programa."
Else

If InStr(s, "*") Then
ss = Split(s, "*")
Print CLong(Val(ss[0]) * Val(ss[1]))
Endif
If InStr(s, "+") Then
ss = Split(s, "+")
Print CLong(Val(ss[0]) + Val(ss[1]))
Endif
If InStr(s, "/") Then
ss = Split(s, "/")
Print CLong(Val(ss[0]) \ Val(ss[1]))
Endif
If InStr(s, "-") Then
ss = Split(s, "-")
Print CLong(Val(ss[0]) - Val(ss[1]))
Endif

If s = "quit" Then
Print "\e[1;31mCierre en \e[1;33m2\e[1;31m segundos !"
Sleep 2
Quit
Endif

Endif

End

última edición por vuott el Jueves, 28 Abril 2016, 13:36; editado 1 vez
Perfil MP  
Objetivo: Re: Simple Calculadora En Una Aplicación De Línea De Comandos
Muy graciosa, sí señor.

Perfil MP  
Objetivo: Re: Simple Calculadora En Una Aplicación De Línea De Comandos
...es posible abreviar el código. Pero en este caso es necesario poner dos espacios en la expresión (por ejemplo: 5 + 4):

Public Sub Main()

Print "\n'i' y [Enter] para obtener informaciones\n"

End


Public Sub Application_Read()

Dim s As String
Dim ss As String[]
Dim cont As New Collection

Line Input s

Select Case s
Case "i"
Print "Cómo se usa:\n- 'i' y [Enter] para obtener estas informaciones;"
Print "- entero * entero y [Enter] para multiplicar los dos enteros (ejemplo: 4 * 2);"
Print "- entero + entero y [Enter] para la adición (ejemplo: 4 + 2);"
Print "- entero / entero y [Enter] para la división (ejemplo: 4 / 2);"
Print "- entero - entero y [Enter] para la sustracción (ejemplo: 4 - 2);"
Print "- 'q' y [Enter] para cerrar el programa."
Case "q"
Quit
Case Else
ss = Scan(s, "* * *")
If ss.Count <> 3 Then
Print ("Error al escribir la expresión de calculo !")
Return
Endif
cont["A"] = ss[0]
cont["B"] = ss[2]
Print ss[0], ss[1], ss[2], "=", Eval("A" & ss[1] & "B", cont)
End Select
End

última edición por vuott el Viernes, 29 Abril 2016, 01:56; editado 3 veces
Perfil MP  
Objetivo: Re: Simple Calculadora En Una Aplicación De Línea De Comandos
Vuott:

No sé, no sé..
Y si alguien intenta producir un error intencionadamente. ¿ Cómo responderá la aplicación ?.

Hemos de suponer que el usuario hace todo lo que le decimos para que se comporte correctamente
con la aplicación o debemos controlar que hace el usuario, para que no se sobrepase con ella
y devolverlo al buen camino y que la aplicación no se vaya al traste.

Creo que debemos añadir lo de.."te estoy vigilando!".

Saludos

Objetivo: Re: Simple Calculadora En Una Aplicación De Línea De Comandos
Consul Shell,

el mi código es solo y simplemente una curiosidad.

Perfil MP  
Objetivo: Re: Simple Calculadora En Una Aplicación De Línea De Comandos
Tengo curiosidad porque usaste Read. Lo tengo que probar a la vuelta del paseo.

Supongo que una aplicación que hace algo tan habitual como ejercicio de programación se te ocurrió por algún motivo,
para hacerla de alguna manera distinta a la habitual.

Saludos

Objetivo: Re: Simple Calculadora En Una Aplicación De Línea De Comandos
Shell escribió: [Ver mensaje]
Tengo curiosidad porque usaste Read.


El evento Application_Read() te permite interaccionar con un programa de línea de comandos.


Codex ad explicandum:

Private bo As Boolean


Public Sub Main()

Dim i As Integer

While bo = False
Inc i
Print i
' Es necesario poner un 'Wait':
Wait 0.3
Wend

End


Public Sub Application_Read()

Dim s As String

' Intercepta lo que fue enviado por el espacio debajo de la console:
Input s
If s = "verum" Then bo = True

End

última edición por vuott el Sabado, 30 Abril 2016, 14:37; editado 3 veces
Perfil MP  
Objetivo: Re: Simple Calculadora En Una Aplicación De Línea De Comandos
Podías haber usado el componente gb.args y para las expresiones gb.eval

Claro que hay momentos que el programador prefiere crearse su función o procedimiento y no cargar todo un componente ni importar una librería.
Por el espacio que puede ocupar o por que quizás no merezca la pena para una "única" función.

Read, yo lo había "encasillado" más en el uso con procesos. Cosa que no solemos ver mucho.

Saludos

Objetivo: Re: Simple Calculadora En Una Aplicación De Línea De Comandos
Con el evento Application_Read() puedes comunicar con el tu programa siempre y en runtime.

Perfil MP  

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.1315s (PHP: 4% SQL: 96%)
Consultas SQL: 25 - Debug off - GZIP Activado