Gambas - Calculadora

 
Vista:

Calculadora

Publicado por Mario (3 intervenciones) el 12/04/2009 13:09:30
Hola,soy bastante nuevo en esto de la programación y he estado probando con gambas.El caso es que me gustaría hacer un tipo de calculadora que al introducir varios numeros te dice cuanto da la suma,resta,multiplicacion,division y mas cosas,todo a la vez,pero no tengo muy claro como.

Gracias por adelantado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Calculadora

Publicado por Mario (3 intervenciones) el 12/04/2009 13:19:01
AÑADO: El problema en cuestión lo tengo a la hora de introducir el número,porque probé anteriormente con el programa pseint y lo unico que había que hacer era :
Escribir "Introduzca numero"
Leer primerNumero

Así de fácil,pero no se como hacerlo con gambas.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calculadora

Publicado por jsbsan (15 intervenciones) el 12/04/2009 18:55:51
Puedes crear un formulario que contenga varios valuebox (2 seran para que introduzcas los datos, y el resto para el resultado de la operaciones) y un button para que cualdo lo pulse haga las operaciones

Por ejemplo:

PUBLIC SUB Button1_Click()
DIM x AS Integer

ValueBox3.value = ValueBox1.value + ValueBox2.value
valuebox4.value = valuebox1.value - ValueBox2.value

END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calculadora

Publicado por Mario (3 intervenciones) el 30/04/2009 23:01:36
Muchísimas gracias.
También me gustaría saber como hacerlo como una calculadora normal,es decir,pones un numero,clickeas en el operador,pones el otro numero (ambos numeros en la misma ValueBox) y asi con tantos numeros como quieras y opciones posibles.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calculadora

Publicado por jsbsan (15 intervenciones) el 24/05/2009 01:39:32
Pues, deberiamos tener una variable global (por ejemplo del tipo cadena string) que guardara que operador hemos pulsado (BOTON SUMA, BOTON RESTA, ETC), para cuando pulsemos el segundo numero, el programa actue, comprobando cual es el operador guardado y segun se la operacion, la ejecute.

Por ejemplo
Crearemos 10 botones (del 0 al 9) y varios con las operaciones (+,-,*,/,)
Cuando pulsemos el boton de numero, añade este el valuebox, y cuando pulsemos enter guarda en una variable (por ejemplo numerouno) el valor (valuebox.value)

Si pulsamos el boton "+", hacemos que el operador="Suma"

Cuando pulsemos mas numeros y el enter, ya tendremos el segundo valor (numerodos), y deberemos ejecutar la operacion, por ejemplo con CASE, podemos ejecutar segun el valor del operador, (Suma -> resultado=numerouno+numerodos , Resta -> resultado=numerouno-numerodos, etc)

Bueno si no te ha quedado claro, proximamente publicare en mi blog el codigo de una pequeña calculadora.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calculadora

Publicado por pepe (1 intervención) el 01/04/2010 17:08:45
hola , pues yo, estaba haciendo una aplicacion y de repente, pense, en mirar algun tipo de cogido que estubiera hecho, y cual fue mi sorpresa que todos los codigos de calculadoras, son rudimentarios, y no efectuan los resultados correctamente

por ejemplo
2+2+3/2+5¡2*3/2

mi sorpresa fue que ningun codigo funcionaba correctamente

asi que, me decidí a escribir uno en gambas, ya que el cliente, de la aplicacion que estoy haciendo, queria que fuese en linux, y solo encontré, este interprete , yo soy programador de c , pero en windows.

bueno, menos rollos

os pongo el codigo, ,(sirva este escrito, para definir, este cogido, como publico,, es decir, que podeis utilizarlos como querais, y modificarlo a vuestro antojo)

quedando claro, lo de arriba, ale

PUBLIC SUB Form_KeyPress()
DIM cachis AS Integer

IF bloc.text <> "1" AND (Key.code > 47 AND Key.code < 58) OR (Key.code = 46 AND InStr(pan.text, ".") = 0) THEN

IF marca.text = "1" THEN pan.text = pan.text & Chr$(Key.code)
IF pan.text = "0" OR marca.text = "" THEN
pan.text = Chr$(Key.code)
marca.text = "1"
signo.text = "0"
ENDIF
IF marca.text = "0" THEN
pan.text = Chr$(Key.code)
marca.text = "1"
signo.text = "0"
ENDIF

ENDIF
IF Key.code = 43 AND signo.text = "0" THEN
pinta()
label1.text = label1.text & label2.text & pan.text
label2.text = "+"
signo.text = "1"
marca.text = "0"
resultado()
IF label1.text <> "" AND label2.text = "" AND pan.text = "" THEN Fin()
ENDIF
IF Key.code = 45 AND signo.text = "0" THEN
label1.text = label1.text & label2.text & pan.text
label2.text = "-"
marca.text = "0"
signo.text = "1"
resultado()
IF label1.text <> "" AND label2.text = "" AND pan.text = "" THEN Fin()
ENDIF
IF Key.code = 47 AND signo.text = "0" THEN
signo.text = "1"
label1.text = label1.text & label2.text & pan.text
label2.text = "/"
marca.text = "0"
resultado()
IF label1.text <> "" AND label2.text = "" AND pan.text = "" THEN Fin()
ENDIF
IF Key.code = 42 AND signo.text = "0" THEN
signo.text = "1"
label1.text = label1.text & label2.text & pan.text
label2.text = "*"
marca.text = "0"
resultado()
IF label1.text <> "" AND label2.text = "" AND pan.text = "" THEN Fin()
ENDIF
IF Key.code = 4118 THEN
signo.text = "0"
'label1.text = label1.text & label2.text & pan.text
'resultado()
marca.text = ""
pan.text = "0"
label1.text = ""
label2.text = ""
bloc.text = "0"
pinta()
ENDIF
IF Key.code = 4119 THEN
pan.text = "0"
marca.text = ""
pinta()
ENDIF
IF Key.code = 4101 THEN
signo.text = "0"
label1.text = label1.text & label2.text & pan.text
resultado()
label1.text = ""
label2.text = ""
pinta()
marca.text = "0"
ENDIF
' borrado caracter a caracter de la pantalla (a gusto del consumidor)
'IF Key.code = 4099 THEN
'IF Len(pan.text) > 0 THEN pan.text = Left(pan.text, Len(pan.text) - 1)
'IF pan.text = "" THEN
'pan.text = "0"
'marca.text = "0"
'pinta()
'ENDIF

'ENDIF
END

PUBLIC SUB resultado()
DIM Context AS NEW Collection
DIM resul AS Variant
DIM cadena AS String
cadena = label1.text
resul = Eval(cadena, context)
resul = Replace(Str(resul), ",", ".")
IF InStr(resul, ".") <> 0 THEN resul = Left(resul, InStr(resul, ".") + 2)
pan.text = Str(resul)
label1.text = Str(resul)

pinta()
CATCH
pan.text = "Error, division por '0'"
label1.text = ""
label2.text = ""
'Message.Info("Error division por o ")
'pan.text = "0"
marca.text = "0"
bloc.text = "1"
END

PUBLIC SUB Fin()

signo.text = "0"
label1.text = label1.text & label2.text & pan.text
resultado()
label1.text = ""
label2.text = ""
pinta()
marca.text = "0"
END

PUBLIC SUB pinta()
mas.Background = &hC0C0C0
menos.Background = &hc0C0C0
por.Background = &hC0C0C0
div.Background = &hC0C0C0
IF label2.text = "+" THEN mas.Background = &hff0000
IF label2.text = "-" THEN menos.Background = &hff0000
IF label2.text = "*" THEN por.Background = &hff0000
IF label2.text = "/" THEN div.Background = &hff0000
END


PUBLIC SUB Form_Open()



END


ni que decir tiene, que teneis que meterlo en un form, y crear en el form, los textbox y labels que indique, cuando lo ejecuteis.

pan= textbox; label1= labwl1 etc...

cuando lo pongais en marcha, os dara los errores del formulario por falta de los dialogos, ir creandolos,, sobre la marcha, y alejop, teneis una calculadora con las funciones basicas.

por cierto, si quereis implementar funciones, solo teneis que adaptaros, a la funcion "eval", evaluador de expresiones

es una funcion, muy chachi, y sobretodo muy util, aunque poca gente, sepa utilizarla, espero que cuando veais funcionar esta calculadora (igual que las de verdad), investigueis sobre la funcion eval (insisto, es muy potente)

ahh, si modificais el codigo, y haceis algo especial, no dudeis en colocarlo aqui.

un saludo, y gracias por leer este tocho de escrito.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar