martes, 3 de diciembre de 2013

Presentación


Bienvenidos sean queridos lectores, el blog fue creado con fines de estudio, en el encontrarán contenido que les servirá.
El blog se ha creado por alumnos de la Universidad Tecnológica del Centro, en la carrera de Técnico Superior Universitario En Tecnologías de La Información y Comunicación Área Sistemas Informáticos.
Integrantes:
Avila Mejia Luis
Escalante Coral Edwin
Pech Chan Jorge.
Esperamos que sea de su agrado.

Mínimo Común Múltiplo (MCM)

El mínimo común múltiplo (abreviado m.c.m), de dos o más números naturales es el menor número natural que es múltiplo de todos ellos. Sólo se aplica con números naturales, es decir, no se usan decimales, números negativos o números complejos.


En este proyecto nos permite hacer una serie de operaciones como divisiones, multiplicaciones para poder sacer el mínimo común múltiplo de una serie de números que el usuario podrá ingresar para efectuar una serie de operaciones para luego sacar el resultado correcto.



Declaramos las variables que utilizaremos
        Dim i As Integer
        Dim num(0 To 2) As Integer
        Dim mcm As Integer
        Dim res As Integer
        Dim num2 As Integer

        Dim validador As Boolean

        Aquí se registran los números ingresados anterior mente

        num(0) = Val(TextBox1.Text)
        num(1) = Val(TextBox2.Text)
        num(2) = Val(TextBox3.Text)

        Condición de los números que insertaremos para que saca el mínimo común múltiplo

        If num(0) = 0 Or num(1) = 0 Or num(2) = 0 Then

            Print("el MCM es 0 (cero)") 'Se imprime sino cumple la condición

            Exit Sub

        End If
        mcm = 1
        num2 = 2

        Este código hace la ordenación de los números para compararlos ya luego validarlos.

        While (num(0) <> 1 Or num(1) <> 1 Or num(2) <> 1)

            validador = False

            ' Un siglo para generar el mínimo común múltiplo

            For i = 0 To 2
                res = num(i) Mod num2
                If (res = 0) Then
                    num(i) = num(i) / num2
                    validador = True
                End If
            Next

Si los números son válidos hace la multiplicación y suma el resultado del mínimo común múltiplo para sacar el resultado
            If validador = True Then

                mcm = mcm * num2

            Else
                num2 = num2 + 1

            End If

        End While

 Al terminar de hacer las condiciones de los números los hace con los otros números
        'otra vez para tener el resultado final sería el mínimo común múltiplo

        TextBox4.Text = (mcm) ' Para imprimir el resultado final



Código para limpiar los texbox del formulario
Me.TextBox1.Clear()
        Me.TextBox2.Clear()
        Me.TextBox3.Clear()
        Me.TextBox4.Clear()
        Me.TextBox1.Focus() 

Click en la imagen para descargar el proyecto:

Resolución ecuación de 3x3

Un saludo queridos lectores, en esta ocasión les presentamos una forma de resolver una ecuación de 3 por 3 por medio del método de Cramer.
Como interfaz tendremos lo siguiente:



Como pueden darse cuenta los elementos principales son 14 textbox y dos botones, pero es recomendado añadir los labels para que se distingan bien las ecuaciones y los resultados de los valores de las incognitas.
En el programa se trabajará con una matriz que se constituye de la siguiente manera:
A1 + B1 + C1 = D1
A2 + B2 + C2 = D2
A3 + B3 + C3 = D3
En primera instancia el codigo estará en el boton Calcular, en el se desarrolla el proseso de la regla de cramer. Primero declaramos variables:

Dim valident As Integer
        Dim aux1 As Integer
        Dim aux2 As Integer
        Dim auxX As Integer
        Dim auxX1 As Integer
        Dim auxX2 As Integer
        Dim auxY As Integer
        Dim auxY1 As Integer
        Dim auxY2 As Integer
        Dim auxZ As Integer
        Dim auxZ1 As Integer
        Dim auxZ2 As Integer

El primer proceso que se debe de hacer es encontrar el valor de la matriz identidad que se encuentra con el siguiente código:

'Encuentra el valor de la matriz identidad
        aux1 = (TextBox1.Text * TextBox6.Text * TextBox11.Text) + (TextBox5.Text * TextBox10.Text * TextBox3.Text) + (TextBox2.Text * TextBox7.Text * TextBox9.Text)
        aux2 = (TextBox3.Text * TextBox6.Text * TextBox9.Text) + (TextBox2.Text * TextBox5.Text * TextBox11.Text) + (TextBox7.Text * TextBox10.Text * TextBox1.Text)
        valident = aux1 - aux2

En este código se utilizan las variables aux1 y aux2 de forma que estos tienen el valor representativo de: aux1 = (A1 * B2 * C3) + (A2 * B3 * C1) + (B1 * C2 * A3)
aux2 = (C1 * B2 * A3) + (B1 * A2 * C3) + (C2 * B3 * A1)
Estos daran valor al la variable valorident que es igual a la resta de aux2 a aux1, siendo asi este el valor de la matriz identidad que servirá para dividir las demás matrices.
Como siguiente es comprobar que la matriz no sea ideterminada para eso aplicamos la siguiente condición:

If valident = 0 Then
            MsgBox("Matriz Indefinida")
        Else

Esta al tener un valor identidad igual a cero no puede ser resuelta, por lo tanto la matriz queda indefinida por lo tanto no tiene solución y se termina el proseso. De caso contrario el proceso continua y se hace a travez del siguiente codigo:

'Encuentra el valor de la matríz X
            auxX1 = (TextBox4.Text * TextBox6.Text * TextBox11.Text) + (TextBox8.Text * TextBox10.Text * TextBox3.Text) + (TextBox2.Text * TextBox7.Text * TextBox12.Text)
            auxX2 = (TextBox3.Text * TextBox6.Text * TextBox12.Text) + (TextBox2.Text * TextBox8.Text * TextBox11.Text) + (TextBox7.Text * TextBox10.Text * TextBox4.Text)
            auxX = (auxX1 - auxX2) / valident
            txtX.Text = auxX
            'Encuentra el valor de la matríz Y
            auxY1 = (TextBox1.Text * TextBox8.Text * TextBox11.Text) + (TextBox5.Text * TextBox12.Text * TextBox3.Text) + (TextBox4.Text * TextBox7.Text * TextBox9.Text)
            auxY2 = (TextBox3.Text * TextBox8.Text * TextBox9.Text) + (TextBox4.Text * TextBox5.Text * TextBox11.Text) + (TextBox7.Text * TextBox12.Text * TextBox1.Text)
            auxY = (auxY1 - auxY2) / valident
            txtY.Text = auxY
            'Emcuentra el valor de la matríz Z
            auxZ1 = (TextBox1.Text * TextBox6.Text * TextBox12.Text) + (TextBox5.Text * TextBox10.Text * TextBox4.Text) + (TextBox2.Text * TextBox8.Text * TextBox9.Text)
            auxZ2 = (TextBox4.Text * TextBox6.Text * TextBox9.Text) + (TextBox2.Text * TextBox5.Text * TextBox12.Text) + (TextBox8.Text * TextBox10.Text * TextBox1.Text)
            auxZ = (auxZ1 - auxZ2) / valident
            txtZ.Text = auxZ
        End If
    End Sub
  
Donde los auxX1, auxX2 actúan de igual forma que los aux1 y aux2 pero este siendo la matriz ordenada de forma DBC, auxY1, auxY2 trabajan con la matriz ordenada de manera ADC y por ultimo las variables auxZ1 y auxZ2 trabajan con la matriz ordenada de manera ACD.

Por último se le agrega código al botón  Limpiar quedando de la siguiente manera:

   
        TextBox1.Clear()
        TextBox2.Clear()
        TextBox3.Clear()
        TextBox4.Clear()
        TextBox5.Clear()
        TextBox6.Clear()
        TextBox7.Clear()
        TextBox8.Clear()
        TextBox9.Clear()
        TextBox10.Clear()
        TextBox11.Clear()
        TextBox12.Clear()
        txtX.Clear()
        txtY.Clear()
        txtZ.Clear()

Esto siendo para limpiar las cajas de texto para hacer otra operación.


El proyecto pueden descargarlo dando click en la siguiente imagen.




En el proyecto encontrarán un modulo y codigo en el evento keypress en los textbox, este se utiliza para validar o mas bien limitar los caracteres en ellos admitiendo solo numeros y el signo negativo (-0123456789).

Simulación Banco

Buen dia queridos lectores, esta vez les traeremos un ejercicio en el cual haremos uso de las colas, se trata de la simulación de una cola de un banco, en el cual te asignan un número y despues de cierto tiempo se le habla para presentarse en cierta caja para ser atendido.

El proyecto trabaja con dos formularios, uno sirve para ingresar los nombres o números según quieran aplicarlo.
 En el otro formulario se trabajan con los datos ingresados, llamandolos en los cuadros de texto.

Como pueden ver en el primer formulario hay un boton llamado “Cajas” que da acceso al siguiente formulario, estos trabajan simultaneamente asi que no deben cerrarse.
Al inicio del codigo fuera del formulario tiene que agregarse la siguiente linea:
Imports System.Collections.Queue

Form1:
Ahora a trabajar con los códigos, antes que nada primero declaramos variables en el formulario y son las siguientes:
Public cola As New Queue
    Public dato As String

En este caso pueden darse cuenta que se utiliza “Public” en vez de “Dim” ya que asi se tendra acceso a los valores en el siguiente formulario, ya que se necesitan trabajar con ellas.

Agregamos código al botón Agregar que es el siguiente:
dato = TextBox1.Text
        cola.Enqueue(dato)
        TextBox1.Clear()
        TextBox1.Focus()

Éste código se encarga de agregar los valores a la cola, los cuales serán llamados en el formulario siguiente.

Turno:
Declaramos las siguientes variables:
Dim cola As New Queue
    Dim dato As String

Ahora en los botones se le agregan el siguiente código:
Me.cola = Form1.cola
        If cola.Count <> 0 Then
            Dim valor As String = ""

            valor = cola.Dequeue
            TextBox1.Text = valor
        Else
            MsgBox("No hay Cliente")
            TextBox1.Text = ""
        End If

Con éste código se le elimina el primer valor ingresado y es impreso en el textbox, pero si la cola está vacia le mandara al usuario un mensaje de que no hay clientes.
A continuacion solo queda sustituir los textbox correspondientes a los botones ya que el código a utilizár es el mismo en todos.

Aquí les dejamos el enlace del proyecto, den click en la siguiente imagen.



Drag & Drop

Arrastrar y soltar (drag and drop) es una expresión informática que se refiere a la acción de mover con el ratón objetos de una ventana a otra o entre partes de una misma ventana. Los objetos arrastrados son habitualmente archivos, pero también pueden ser arrastrados otros tipos de elementos en función del programa.

Un ejemplo es arrastrar y soltar entre ventanas de un gestor de archivos para cambiarlos de carpeta, o archivos de audio en un reproductor para moverlos de su lista de reproducción.

Ahora les presentaremos un ejemplo aplicando el Drag And Drop en visual Studio 2010. 

En esta ocasión se creó un form y se agregaron dos ListView de igual manera se insertaron cuatro Labels en cada ListView podrán ser palabras, frases, números, letras, (en este caso se utilizaron letras y números).
Ahora pasamos a la codificación…

Primero se cambia la propiedad a los elementos en el evento ItemDrag el cual permite darle la propiedad de moverse a cada elemento.

Public Class Form1

    Private Sub ListView_ItemDrag(ByVal sender As Object, ByVal e As  _
System.Windows.Forms.ItemDragEventArgs) Handles ListView1.ItemDrag, _
ListView2.ItemDrag
        Dim Item As ListViewItem
        Dim Items(sender.SelectedItems.Count - 1) As ListViewItem
        Dim i As Integer = 0

        For Each Item In sender.SelectedItems
            Items(i) = Item
            i = i + 1
        Next
        sender.DoDragDrop(New  _
        DataObject("System.Windows.Forms.ListViewItem()", Items), _
        DragDropEffects.Move)
    End Sub



En esta parte lo primero que hay que hacer es cambiar el evento a DragEnter lo cual su principal función es hacer que los ListView acepten la entrada de los nuevos elementos.




Private Sub ListView_DragEnter(ByVal sender As Object, ByVal e As  _
    System.Windows.Forms.DragEventArgs) Handles ListView1.DragEnter, _
    ListView2.DragEnter
        If e.Data.GetDataPresent("System.Windows.Forms.ListViewItem()") Then
            e.Effect = DragDropEffects.Move
        Else
            e.Effect = DragDropEffects.None
        End If
    End Sub





A continuación se cambiará al evento DragDrop el cual su función es Arrastrar y Soltar los elementos seleccionados de un ListView a otro.



Private Sub ListView_DragDrop(ByVal sender As Object, ByVal e As  _
    System.Windows.Forms.DragEventArgs) Handles ListView1.DragDrop, _
    ListView2.DragDrop
        Dim Item As ListViewItem
        Dim Items() As ListViewItem = e.Data.GetData("System.Windows.Forms.ListViewItem()")
        Dim i As Integer = 0

        For Each Item In Items
            sender.Items.Add(Items(i).Text)
            If sender Is ListView1 Then
                ListView2.Items.Remove(ListView2.SelectedItems.Item(0))
            Else
                ListView1.Items.Remove(ListView1.SelectedItems.Item(0))
            End If
            i = i + 1
        Next
    End Sub
End Class


Link de descarga del proyecto: 


Colas & Pilas

La particularidad de una estructura de datos de cola es el hecho de que sólo podemos acceder al primer y al último elemento de la estructura. Así mismo, los elementos sólo se pueden eliminar por el principio y sólo se pueden añadir por el final de la cola.
Ejemplos de colas en la vida real serían: personas comprando en un supermercado, esperando en el cine para ver una película, etc. La idea esencial es que son todas líneas de espera.
Ahora se implementará un ejemplo en visual 2010 para comprender el funcionamiento de una Cola. 
Para la interfaz se inserta un form y en él se agrega un TextBox y cuatro botones, como se muestra a continuación:

Para realizar una cola en visual lo primero que hay que hacer es declarar  en la primera línea el siguiente código:
Luego declarar en el Public Class la Cola:

    Dim Cola As New Queue

Ahora se le pondrá los códigos a cada botón:
En el botón “Meter”: En esta parte se declara la variable a utilizar y la acción que realizará, de igual forma se limpiará la caja de texto y se colocara el foco.
        Dim Dato As String = txtDato.Text
        Cola.Enqueue(Dato)
        txtDato.Clear()
        txtDato.Focus()
  
En el botón “Sacar”: Se declara una variable el cual realizará la acción de sacar el dato insertado.
Dim Valor As String = ""
        Valor = Cola.Dequeue
        MsgBox(Valor)

En el botón “Cantidad”: en esta parte mostrará mediante un mensaje la cantidad de elementos que se tiene.
MsgBox(Cola.Count)

En el botón “Imprimir”: Se declara la variable que mostrará los elementos que están insertados.
Dim Elementos As String = ""
        For Each Dato In Cola
            Elementos = Elementos & "" & Dato
        Next
        MsgBox(Elementos)




Una pila (stack en inglés) es una lista ordenada o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del inglés Last In First Out, último en entrar, primero en salir) que permite almacenar y recuperar datos. Esta estructura se aplica en multitud de ocasiones en el área de informática debido a su simplicidad y ordenación implícita de la propia estructura.
Para el manejo de los datos se cuenta con dos operaciones básicas: apilar (push), que coloca un objeto en la pila, y su operación inversa, retirar (o desapilar, pop), que retira el último elemento apilado.
Ahora se implementará un ejemplo en visual 2010 para comprender el funcionamiento de una Pila.                                     

Para la interfaz se inserta un form y en él se agrega un TextBox y cuatro botones, como se muestra a continuación:

Para realizar una Pila en visual lo primero que hay que hacer es declarar  en la primera línea el siguiente código:

Luego declarar en el Public Class la Pila:
  Dim Pila As New Stack

Ahora se le pondrá los códigos a cada botón:
En el botón “Meter”: En esta parte se declara la variable a utilizar y la acción que realizará, de igual forma se limpiará la caja de texto y se colocara el foco.
 Dim Dato As String = txtDato.Text
        Pila.Push(Dato)
        txtDato.Clear()
        txtDato.Focus()

En el botón “Sacar”: Se declara una variable el cual realizará la acción de
 Dim Valor As String = ""
        Valor = Pila.Pop
        MsgBox(Valor)

En el botón “Cantidad”: en esta parte mostrará mediante un mensaje la cantidad de elementos que se tiene. 
MsgBox(Pila.Count)

En el botón “Imprimir”: Se declara la variable que mostrará los elementos que están insertados.
Dim Elementos As String = ""
        For Each Dato In Pila
            Elementos = Elementos & "" & Dato
        Next
        MsgBox(Elementos)


Link de descarga:
Click en la imágen.


Matrices

Desde el punto de vista lógico una matriz se puede ver como un conjunto de elementos ordenados en fila (o filas y columnas si tuviera dos dimensiones).
En principio, se puede considerar que todas las matrices son de una dimensión, la dimensión principal, pero los elementos de dicha fila pueden ser a su vez matrices (un proceso que puede ser recursivo), lo que nos permite hablar de la existencia de matrices multidimensionales, aunque las más fáciles de imaginar son los de una, dos y tres dimensiones.

Este proyecto nos permite crear un pequeña matriz, pidiéndole al usuario ingresar números, y permite ordenar dichos números en filas y columnas para luego poder imprimir los números ingresados con anterioridad para la visualización del usuario de cómo crear una matriz.

Este código Public nos permite llamarlo en la línea de código con anterioridad para que funciones de una mejor manera, y nos permite llamarlo en cualquier línea de código.


Public Class frmEjemploMatríz

 Dim Numeros(1, 2) As Integer


Este código nos permite ingresar el tamaño de la matriz, después ingresar los demás números con anterioridad.

For Filas As Integer = 0 To 1
            For columnas As Integer = 0 To 2
                Numeros(Filas, columnas) = InputBox("Proporcione el valor (" & Filas & "," & columnas & ")")
            Next
        Next


Con este código nos permite imprimir la matriz de los números ingresado anteriormente, que nos imprime las filas y las columnas de la matriz ingresada.

Dim Resultado As String = ""
        For Filas As Integer = 0 To 1
            For columnas As Integer = 0 To 2
               
                'Esta parte une cada elemento de la Matríz.
                If columnas <> 2 Then
                    Resultado = Resultado & Numeros(Filas, columnas) & ","
                Else
                    Resultado = Resultado & Numeros(Filas, columnas)
                End If
            Next
            'Esta parte maneja el resultado y hace un salto de fila(Enter).
            Resultado = Resultado & vbCrLf
        Next
        MsgBox(Resultado)

 Link en la imagen para descargar proyecto:

Este otro proyecto nos permite pedir al usuario un tamaño determinado de una matriz, para ordenarlo  en filas y columnas para poder demostrarle al usuario una forma más fácil de cómo son las matrices. 
Este código Public nos permite llamarlo en la línea de código con anterioridad para que funciones de una mejor manera, y nos permite llamarlo en cualquier línea de código.


Public Class FrmMatrízDinámica
    Dim MatrizDinamica(,) As Integer
    Dim Filas As Integer = 0
    Dim Columnas As Integer = 0




        'Preguntamos el tamaño--->

        Filas = Val(InputBox("Cuántas Filas va tener la Matríz")) - 1
        Columnas = Val(InputBox("Cuántas Columnas va tener la Matríz")) - 1

        'Se dimenciona la matríz---->
        ReDim MatrizDinamica(Filas, Columnas)

        'Se lee la matríz---->
        For Filas As Integer = 0 To Filas
            For Columnas As Integer = 0 To Columnas
                MatrizDinamica(Filas, Columnas) = InputBox("Introduzca el elemento("   & Filas & "," & Columnas & ")")

            Next
        Next

Linck proyecto:


Este otro ejemplo se encarga de hacer la suma de las matrices ingresadas:

Este código Public nos permite llamarlo en la línea de código con anterioridad para que funciones de una mejor manera, y nos permite llamarlo en cualquier línea de código.


Public Class frmSumaDeMatrices
    Dim matrizA(2, 2) As Integer
    Dim matrizB(2, 2) As Integer
    Dim matrizC(2, 2) As Integer

En este código se declara el tamaño de la matriz uno con la matriz dos

For Filas As Integer = 0 To 2
            For columnas As Integer = 0 To 2
                matrizA(Filas, columnas) = InputBox("Proporcione el valor (" & Filas & "," & columnas & ")")
            Next
        Next

Este código nos permite sumar la primera matriz con la segunda y usar los números que fueron insertados con anterioridad, permite imprimir un solo resultado de las dos matriz

Dim Resultado As String = ""
        For Filas As Integer = 0 To 2
            For columnas As Integer = 0 To 2
                Resultado = matrizA(Filas, columnas) + matrizB(Filas, columnas)

            Next
            'Resultado = Resultado & vbCrLf
        Next
        MsgBox(Resultado)
    End Sub