Con todo lo aprendido hasta ahora en nuestros tutoriales crearemos una calculadora muy simple la cual constara de botones y un cuadro de texto donde se visualizara la información ingresada, la calculadora usara solo dos números por cálculo. El código fuente completo de la aplicación estará disponible al final para su descarga.
El diseño final.
Propiedad Name:
El diseño final.
Para los dígitos crearemos 10 botones (0-9) cada uno de
ellos se llamara btn_0, btn_1 y así sucesivamente hasta btn_9. Los nombres se asignan mediante la propiedad name y el texto
que se muestra encima de cada botón con Text.
Propiedad Name:
Los botones para las operaciones se llamaran btn_suma, btn_resta,
btn_div, btn_multi.
Los otros botones serán btn_limpiar (C), btn_decimal (.) para
los decimales y btn_resultado (=).
ReadOnly: False
Name: txt_calculadora
El valor de la propiedad text nos la da sender.text que en este caso es 0.
Procedimiento modificado
Las variables flag_opt son para el tipo de operación y flag_dec para los decimales ellas controlaran que no se ingrese más de un signo de operación o puntos decimales respectivamente.
La información se visualizara en un cuadro de texto llamado txt_calculadora. Que tendrá las sgtes propiedades:
ReadOnly: False
Name: txt_calculadora
Para crear nuestra calculadora haremos uso de una nueva característica del VB Net que es la de asignar eventos de diferentes objetos a un evento de un objeto especifico , por ejemplo nuestra calculadora tiene botones con los números del 0-9 los cuales al hacer clic en ellos el valor debe mostrarse en txt_calculadora, si hacemos clic al botón btn_5 el valor 5 se mostrara en txt_calculadora para ello con las versiones antiguas de Visual Basic tendríamos que programar en cada botón pero con las características nuevas lo que haríamos será hacer doble clic en cualquier botón y asignar eventos, para este caso usaremos el botón btn_0 .
Procedimiento inicial
Private Sub btn_0_Click(sender As Object, e As EventArgs) Handles btn_0.Click
txt_calculadora.Text = txt_calculadora.Text + sender.text
End Sub
El valor de la propiedad text nos la da sender.text que en este caso es 0.
Como veremos en el procedimiento anterior después de "Handles" está el objeto y el evento que maneja para este caso el btn_0.Click si quisiéramos añadir más eventos tan solo agregaremos el nombre del objeto más evento.
Procedimiento modificado
Private Sub btn_0_Click(sender As Object, e As EventArgs) Handles btn_0.Click, btn_1.Click, btn_2.Click, btn_3.Click,btn_4.Click, btn_5.Click, btn_6.Click, btn_7.Click, btn_8.Click, btn_9.Click
txt_calculadora.Text = txt_calculadora.Text + sender.text
End Sub
Como vemos el sub btn_0_click agrupa ahora el evento clic de todos los dígitos facilitándonos la tarea, Seguiremos analizando el código.
El programa utilizara estas variables globales.
Dim flag_opt As Boolean = True
Dim flag_dec As Boolean = True
Dim tipoperacion As String
Dim num1 As String
Dim num2 As String
Las variables flag_opt son para el tipo de operación y flag_dec para los decimales ellas controlaran que no se ingrese más de un signo de operación o puntos decimales respectivamente.
En tipoperacion se guardara el tipo de operación escogida (+, -, * o /), En num1 y num2 se guardaran los dos números a operar.
Analizaremos el evento Click de btn_0.
Private Sub btn_0_Click(sender As Object, e As EventArgs) Handles btn_0.Click, btn_1.Click, btn_2.Click, btn_3.Click, btn_4.Click, btn_5.Click, btn_6.Click, btn_7.Click, btn_8.Click, btn_9.Click
1) If txt_calculadora.Text = "Error" Then Exit Sub
2) If tipoperacion = "" Then
flag_opt = False
num1 = num1 + sender.text
Else
num2 = num2 + sender.text
End If
3)txt_calculadora.Text = txt_calculadora.Text + sender.text
End Sub
1) Si el contenido del cuadro de texto txt_calculadora es "Error" entonces saldremos del procedimiento, esto sucederá al dividir cualquier número por cero.
2) Si la variable tipoperacion esta vacía asignamos a flag_opt el valor "False" que permitirá el ingreso de un símbolo de operación (+,-,*,/) además tenemos el primer número que se guardara en num1 en caso contrario obtendremos el segundo que se almacena en num2 ya que el orden de ingreso de datos es: el primer número, el signo y luego el segundo.
3) En txt_calculadora se mostrara los valores ingresados.
Analizaremos el evento Click de btn_suma, como vemos btn_suma controla también los eventos clic de los botones btn_div, btn_multi y btn_resta.
Private Sub btn_suma_Click(sender As Object, e As EventArgs) Handles btn_suma.Click, btn_div.Click, btn_multi.Click, btn_resta.Click
1) If Not (txt_calculadora.Text = "" And sender.text = "-") And flag_opt Then Exit Sub
2) If txt_calculadora.Text = "Error" Then Exit Sub
3) txt_calculadora.Text = txt_calculadora.Text + sender.text
4) If num1 <> "" Then
tipoperacion = sender.text
flag_opt = True
flag_dec = True
Else
num1 = "-"
End If
End Sub
1) Aquí controlamos que no se ingrese ningún tipo de operación no permitida al comienzo como (+,/,*,%) ya que cálculos como %4+2 o *2-3 no son válidos pero si es válido -3+4 así que para ello usaremos Not (txt_calculadora.Text = "" And sender.text = "-") que nos dará el valor falso si la condición se cumple gracias al indicador Not, la otra validación es flag_opt si ambas condiciones se cumplen salimos del procedimiento debido a "Exit Sub".
2) Validamos que txt_calculadora no contenga el valor "Error" si lo contiene salimos del programa.
3) Agregamos el símbolo de operación a txt_calculadora.
4) Validamos si num1 tiene algún valor si es así el valor ingresado es el símbolo de la operación escogida y la almacenaremos en tipoperacion además asignamos True a flag_opt para evitar el ingreso de mas símbolos y flag_dec para permitir el ingreso de decimales, si num1 no tiene ningún valor quiere decir que num1 será negativo por lo que tendrá el valor "-", nuestro programa solo permitirá el signo negativo delante de cada número.
Analizaremos btn_resultado evento click, este procedimiento será el encargado de dar el resultado de nuestras operaciones.
Private Sub btn_resultado_Click(sender As Object, e As EventArgs) Handles btn_resultado.Click
1)if num2="" then exit sub
2)Select Case tipoperacion
Case "+"
txt_calculadora.Text = Convert.ToDouble(num1) + Convert.ToDouble(num2)
Case "-"
txt_calculadora.Text = Convert.ToDouble(num1) - Convert.ToDouble(num2)
Case "*"
txt_calculadora.Text = Convert.ToDouble(num1) * Convert.ToDouble(num2)
Case "/"
If (Convert.ToDouble(num2)) = 0 Then
txt_calculadora.Text = "Error"
Else
txt_calculadora.Text = Convert.ToDouble(num1) / Convert.ToDouble(num2)
End If
End Select
num1 = txt_calculadora.Text
num2 = ""
tipoperacion = ""
flag_opt = False
End Sub
1) si num2 esta vacío salimos del procedimiento, para calcular necesitamos dos números.
2) Usaremos el Case para determinar el tipo de operación escogida convertiremos cada digito a double ya que no podemos operar cadenas (num1 y num2 son definidas como cadenas). En el caso de la división si num2 igual a 0 el resultado es "Error".
El paso final será guardar el resultado en num1 para siguientes operaciones, A num2 y tipoperacion les asignamos el valor de "", flag_opt será "False" para permitir otro calculo y el ingreso de símbolos de operación.
El evento click de btn_limpiar se encarga de limpiar todos los datos ingresos y de inicializar las variables.
Private Sub bt_limpiar_Click(sender As Object, e As EventArgs) Handles bt_limpiar.Click
txt_calculadora.Text = ""
tipoperacion = ""
flag_opt = True
flag_dec = True
num1 = ""
num2 = ""
End Sub
El último procedimiento por analizar es el evento click de bt_decimal.
Private Sub btn_decimal_Click(sender As Object, e As EventArgs) Handles bt_decimal.Click
1)If Not flag_dec Then Exit Sub
2)If tipoperacion = "" Then
num1 = num1 + "."
Else
num2 = num2 + "."
End If
txt_calculadora.Text = txt_calculadora.Text + "."
flag_dec = False
End Sub
1) Si flag_dec tiene el valor falso quiere decir que nuestro
número ya posee un punto decimal por lo que no se permite más.
2) Si la variable tipoperacion esta vacía quiere decir que
el símbolo decimal es para num1 en caso contrario num2.
Por ultimo agregamos el símbolo decimal a txt_calculadora y
asignamos el valor False a flag_dec.
Si se desea cambiar el punto decimal por la coma tan solo
modifique los valores.
El código fuente para su descarga : calculadora.
El código fuente para su descarga : calculadora.
Así terminamos nuestra primera aplicación, si tiene alguna
pregunta no dude en consultar.
Gracias.
2 comentarios:
We have professional translator which has experience for 100 plus language translation. Especially if you have requirement for Danish Translation Service Certified Russian Translation Services NYC
Are you Searching For event management companies in Riyadh? then Saudi Events Catering Company provides you the best service that suits your budget and provides you innovative way for any events in Saudi Arabia.
Visit here: http://saudieventscatering.com/corporate-event-organizers.html
Publicar un comentario