Mostrando entradas con la etiqueta vb net. Mostrar todas las entradas
Mostrando entradas con la etiqueta vb net. Mostrar todas las entradas

CALCULADORA EN VB NET

sábado, 23 de agosto de 2014
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.



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:


Propiedad Text:



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 (=).  

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.

Así terminamos nuestra primera aplicación, si tiene alguna pregunta no dude en consultar.

Gracias.  

Read more...

TUTORIAL VB NET 2: TIPOS DE VARIABLES

jueves, 17 de abril de 2014
Una lección mas en nuestro tutorial de Visual Basic Net, De las lecciones que debemos aprender al usar Visual Basic Net  una de las mas importantes es como usar variables así como conocer otras características de ellas como ambito, tipo y demas . En este tutorial aprenderás todo sobre variables tema primordial a la hora de crear nuestras aplicaciones.

Empezaremos definiendo algunos conceptos:

¿Qué es una variable?
 Una variable es un espacio donde guardamos nuestra información temporalmente (mientras se ejecuta el programa) con el propósito de procesarla, analizarla o ejecutar operaciones como suma, resta y demás en el caso de variables numéricas. Una variable posee un nombre y un valor.

Definiendo una variable:
Para definir una variable existen reglas y tipos específicos, una variable se define como:

Dim minumero as integer
Dim nombre as string

Para definir el nombre es necesario respetar algunas convenciones como:

- Una variable debe comenzar con una letra o un signo de "_" seguido por letras o dígitos.
- No puede contener acentos u otros símbolos de puntuación
- No deben exceder los 1024 caracteres
- Debe ser único en su ámbito, no pueden haber 2 variables con el mismo nombre en una misma subrutina.

Inicializar una variable
Es cuando asignamos un valor en la misma línea que se declara.

Dim miedad as Integer=21

Que es igual a:

Dim miedad as Integer
miedad=21

También es posible inicializar varias variables al mismo tiempo.

Dim edad as Integer=31, mascotas as Integer=1

Tipos y categorías de Variables
Visual Basic Net posee 5 diferentes categorías de tipos:

- String (solo texto)
- Numeric (solo números)
- Boolean (valores verdadero o falso)
- Date (solo fechas)
- Object (puede almacenar cualquier tipo de dato)

Si bien es cierto el tipo Object puede almacenar cualquier dato, lo recomendable es usar cada dato con su tipo especifico ya que cada uno esta creado especialmente para su uso, usar el tipo equivocado puede ocasionar errores, un error muy común al usar datos numéricos es el famoso error de propagación que veremos más adelante, asimismo cada vez que Visual Basic utiliza una variable Object primero determina su tipo de dato y ejecuta su conversión si las variables son declaradas con su tipo de dato estas conversiones no seran necesarias.
Los números se almacenan de acuerdo a su longitud y su precisión en enteros, decimales, cientificos.

String
Este tipo de dato almacena caracteres, se definen así:

Dim minombre as string
minombre="alex"

Puedes almacenar 2 gigas de texto en una variable string.

Numeric
Este tipo de dato es exclusivo para números diferenciándose de acuerdo a su uso en:

- Integer (Enteros)
- Decimal
- Single (números de punto flotante con limitada precisión)
- Double (números de punto flotante con extrema  precisión usada más que nada para operaciones científicas)

Números de punto flotante son aquellos que se expresan como una fracción.

Error de Propagación
Este es un error común en cálculos numéricos que sucede cuando utilizamos tipos de datos no adecuados.
Ejemplo:

Caso 1:
Dim a As Single, b As Double

a=1/3
Debug.WriteLine(a)

Dara como resultado

0.3333333

El resultado es un valor aproximado ya que la división da como resultado un número infinito, Visual Basic y todos los programas de cálculo truncan el resultado.

a = a * 100000
Debug.WriteLine(a)

El resultado sera 33333.34

Si dividimos este valor entre 100000 el resultado no será el original sino uno diferente ese es el famoso error de propagación en una serie larga de cálculos científicos este error sería importante.

Si usáramos la variable b de tipo double y aplicáramos el mismo procedimiento

b=1/3

Saldrá como resultado un valor aproximado más grande y exacto.

0.333333333333333

Caso 2:
Dim a As Single, b As Double

 a = 0.03007
 b = 0.03007
 Debug.Write(a - b)

Como vemos son el mismo valor una resta de ellos no dará resultado cero, saldrá:

–6.03199004634014E–10

Que es un número muy chico que puede ser expresado así 0.000000000603199004634014.

Esto demuestra que todas las variables al ejecutar operaciones deben ser del mismo tipo.

Caso 3:
Dim a,b as Decimal

a=3
b=1/a
Debug.Write(a * b)

El resultado no será 1 sino 0.999999999999999, una buena idea cuando trabajas en aplicaciones de negocios es redondear el resultado, ya sea a 2 decimales que es lo mas común en este caso será 1.

Boolean
Este tipo de variable almacena dos tipos de valores True/False o 1/0, se declaran así

Dim flag as Boolean

Siendo inicializadas por defecto a False. Este tipo de variables son usadas más que nada para comparaciones, por ejemplo:

Dim flag as Boolean=True
If flag Then 
MsgBox("El flag tiene el valor verdadero")
Else
MsgBox("El flag tiene el valor false")
End If

Date 
En este tipo de variables se almacenan fechas, horas o ambas. Se definen así:

Dim mifecnac as date
mifecnac = #1/5/1978#
mifecnac = #1/5/1978 6:29:11 PM#
mifecnac = Today()

Existen funciones que nos servirán de mucha ayuda al trabajar con fechas como:

Today()
Retorna solo la fecha.

Now()
Retorna la fecha y hora actual.

Aplicación 1:
Crearemos una aplicación que nos mostrara el uso de Today()  y de Now(), para ello crearemos un formulario con 2 botones con el nombre de Today y Now.


Para asignarle el texto a cada botón debemos modificar la propiedad Text y asignarle el valor de Today o Now.


Haremos doble clic en el botón 1 (Today) y agregaremos:

MsgBox(Today())

Para el botón 2 (Now):

MsgBox(Now())

MsgBox es una función que mostrara una ventana de alerta con un mensaje.

Nuestra aplicación debe quedar así:



Ejecutaremos nuestra aplicación con F5, el programa desplegara un mensaje al hacer clic en cada botón  mostrando el resultado de cada función.



Estas funciones retornan la fecha de acuerdo al formato establecido en el Panel de Control en la opción de Configuración regional.

Errores en fechas
Uno de los errores más comunes en fechas es cuando usamos el formato incorrecto ya que algunos países utilizan el formato "dd/mm/yyyy" mientras que otros como en los Estados Unidos  usan el "mm/dd/yyyy", hay que tener eso en cuenta antes de comparar dos fechas.

Por ejemplo esta asignación daría error ya que Visual Net no maneja este formato de fecha.

Dim myfecha as date
Myfecha=#25/12/2014# 

no así esta

Dim myfecha as date
Myfecha=#12/25/2014#


¿Qué pasa si tenemos fechas en un formato diferente al nuestro?

Si tenemos fechas en un formato diferente y queremos compararlas lo que tenemos que hacer es que ambas tengan el mismo formato para ello utilizaremos una función llamada Cultureinfo que toma como argumento un valor que indica el tipo de configuración con que se desea trabajar por ejemplo :

Indica que vamos a usar el formato de fecha de Inglaterra (GB)dd/mm/yyyy
Dim uk as New CultureInfo("en-GB")

Configuraremos la variable myCI para que use el formato de los Estados Unidos mm/dd/yyyy
Dim myCI As New CultureInfo("en-US")

Cada país tiene su formato por ejemplo Francia FR, Bélgica BE y más. Para usar Cultureinfo necesitaremos importa la libreria System.Globalization al comienzo de nuestro programa.

Ahora algunos ejemplos, Para ello asumiremos que el formato de fecha de nuestra pc es el ‘dd/mm/yyyy”.

Aplicación 2 :
Crearemos una aplicación que convertirá la fecha "25/12/2014" al formato "en-GB" (dd-mm-yyyy) y mostrara el resultado utilizando el formato de fecha larga al hacer clic en el botón "En-gb".



Ingresaremos el sgte. código haciendo doble clic en el botón "En-gb".

‘Asignaremos una fecha con formato “mm/dd/yyyy”  
‘Asignaremos a la variable D1 una fecha 
Dim us New CultureInfo("en-GB")
Dim D1 as Date
D1=DateTime.Parse("25/12/2014",us)
MsgBox(D1.ToLongDateString)

El código de la aplicación debe quedar así, recuerda colocar "Imports System.Globalization" al comienzo.


Ejecutamos el programa con F5, El resultado sera:



Aplicación 3:
Crearemos una aplicación que compara dos formatos de fecha diferentes.


Ingresaremos el sgte. código en nuestro botón "Comparar Fechas".

Dim D1, D2 As Date
Dim UK As New CultureInfo("en-GB")
Dim US As New CultureInfo("en-US")
D1 = DateTime.Parse("25/05/1978", UK)
D2 = DateTime.Parse("05/25/1978", US)

 If D1 = D2 Then
     MsgBox("La misma fecha")
 Else
      MsgBox("Diferente fecha")
 End If

El código debe quedar así :


El comando "If" sirve para efectos de comparación, aprenderemos mas de este comando mas adelante.

Ejecutamos nuestro programa con F5 y debe dar este resultado al hacer clic .



Object 
Las variables Object son capaces de almacenar cualquier tipo de dato, el compilador de Visual Basic se encarga de convertir al tipo de dato especifico sin embargo recuerda que cada dato tiene su tipo especifico.

Ejemplo:

Dim miedad as object
miedad=23
miedad="Hola Mundo"

Este es nuestro primer tutorial sobre variables profundizaremos mas sobre ellas en los siguientes tutoriales.


Read more...

TUTORIAL VB NET 1

jueves, 6 de febrero de 2014
Empezaremos la parte 1 de nuestro tutorial de VB Net creando un proyecto de Windows Forms , 
en este caso  clic en Archivo, Nuevo proyecto.


Luego de todos los tipos de proyectos escogeremos "Aplicación de Windows Forms".


Esta pantalla se divide en diferentes partes : 


En la parte 1 veremos el formulario que es donde se agregan los objetos como cuadros de texto, botones, controles y demás.



En la parte 2 está el Explorador de soluciones, aquí se mostraran los archivos usados en nuestro proyecto como formularios, imágenes y más. 


En la parte 3, se definen las propiedades dependiendo de cada objeto como apariencia, diseño, estilo de ventana (en el caso de formulario) y más.


En este primer ejemplo agregaremos controles haciendo clic en "Cuadro de Herramientas" al lado del formulario, escogeremos el boton o "Button" y lo agregaremos a nuestro formulario.


Escogeremos el botón y definiremos la  propiedad name como :
(Name) : miboton


El formulario debe quedar como : 


Ahora agregaremos algo de código dando doble clic a nuestro botón , se abrira la ventana de codigo y digitaremos en el  procedimiento (Sub miboton_Click) el comando MsgBox("Hola Mundo"), lo que hace es mostrar un mensaje con el texto ingresado.

Para ejecutar nuestro proyecto haremos clic en iniciar en la señal roja.


Hacer clic en el botón para visualizar nuestro mensaje.


Finalizamos nuestro primer tutorial recuerde que también aceptamos sugerencias de temas.

Read more...