Sunteți pe pagina 1din 9

Ministerio de Educación

Universidad Tecnológica de Panamá


Centro Regional de Veraguas

Facultad de Ingeniería Eléctrica


Licenciatura en Ingeniería Electromecánica

Título:
Parcial #3.

Materia:
Programación

Profesor:
Ing. Abdiel E. Kapell G.

Estudiantes:
Héctor Apodaca (9-755-1273)
Jhair Santos (9-755-1776)

Año:
2018
Parcial #3.

Enunciado del Programa:

OBJETIVOS:

• Aplicar lógica de programación para resolver problemas puntuales.

PROCEDIMIENTO:

En grupo de 2 personas diseñe y desarrolle un programa en Visual Basic que resuelva lo siguiente:
El municipio de una ciudad desea tener un pequeño sistema de contribuyentes que poseen
automóviles. Se captura el nombre, edad y cédula de cada contribuyente. De cada automóvil se
desea conocer marca, año, placa y precio de compra.

El programa debe ser capaz de calcular y desplegar los siguientes datos:

• Número de contribuyentes que hay registrados en el sistema.

• Marca y año de un automóvil haciendo una búsqueda a través de la placa.

• El impuesto que debe pagar el contribuyente por su automóvil. Se cobra un 5% de impuesto


usando como base del precio de compra. Use como parámetro de búsqueda la cédula.

• Al ingresar la placa el sistema debe desplegar todos los datos del dueño del automóvil.

• Al ingresar un año el sistema debe desplegar:

- Cantidad de automóviles que son anteriores al año ingresado.


- Cantidad de automóviles que pertenecen o son posteriores al año ingresado.

Debe considerar lo siguiente:

• El ingreso y despliegue de los datos puede ser de la forma en que usted desee (textbox, inputbox,
msgbox, etc)

• Asuma que todos los contribuyentes poseen un automóvil. (No hay contribuyentes con 2 o más
automóviles)

• Consejo 1: agrupe los datos por tipo. Ejemplo: Todos los datos enteros en una matriz, los datos de
tipo carácter en una segunda matriz y los datos flotantes en una tercera.

• Consejo 2: Se asume que cada fila (o columna) de cada matriz corresponde a un dueño en
particular, así por ejemplo las filas 0 de todas las matrices pertenecen a los datos del mismo
contribuyente; la fila 1 a otro contribuyente y así sucesivamente.

• Consejo 3: Siga su propia lógica. No se concentre en la lógica del profesor o la de sus compañeros.
Analice las distintas opciones que se le puedan presentar. Puede ser más fácil de lo que se imagina.

Debe entregar un informe el cual debe contener:

• Presentación.

• Enunciado del programa.


• Diagrama de flujo, desarrollado por medio de software (No a mano).

• Lista de variables utilizadas (Debe explicar el funcionamiento de cada una).

• Explicación de la lógica utilizada en el programa.

• Código comentado del proyecto.

Evaluación

Criterio Puntaje

Informe

• Sigue la estructura solicitada

• Presentación ordenada del documento

• Cumple con los requisitos mínimos con respecto a lo solicitado.

50 pts.

Software

• Originalidad (No es copia).

• El código permite compilarse.

• Cumple con lo solicitado.

• Código comentado.

50 pts.

RECOMENDACIÓN:

• Ambos estudiantes deben subir el laboratorio a través sus respectivas cuentas.

• Comprima el proyecto y su informe en su solo archivo ZIP o RAR

• Proyecto enviado después de la fecha tope recibirá descuento de puntos.


Diagrama de flujo, desarrollado por medio de software (No a mano):

Lista de Variables utilizadas (debe explicar el funcionamiento de cada una):

Variables Descripción
Variable utilizada para almacenar la
información ingresada por el usuario cuando
se le preguntaba la placa del auto cuya
placa
información requería, tanto para saber la
marca y el año del automóvil, como a la hora
de saber los datos del dueño.
Variable utilizada para almacenar la
información ingresada por el usuario cuando
cedula
se le preguntaba la cédula del contribuyente
cuya información requería, para saber el
impuesto que tendría que pagar este
contribuyente en base al precio de su
automóvil.
Variable utilizada para almacenar la
información ingresada por el usuario cuando
se le preguntaba el año del auto cuya
año
información requería, para saber la cantidad
de automóviles registrados anterior y
posteriormente al año ingresado.
Variable donde se guarda el resultado de la
operación realizada para calcular el precio
impuesto
total que debe pagar el contribuyente
incluyendo el impuesto del 5%.
Contador que adiciona una unidad cada vez
que se presiona el botón ingresar, es decir
cada vez que se ingresan nuevos datos de un
contribuyente, funciona posteriormente para
Count
desplegar el número de contribuyentes y
luego para marcar el límite en el ciclo
realizado para contar los años posteriores y
anteriores al ingresado por el usuario.
Contador cuya función es que mediante un
inf ciclo, irá adicionando una unidad por cada año
anterior al ingresado por el usuario.
Contador cuya función es que mediante un
post ciclo, irá adicionando una unidad por cada año
igual o posterior al ingresado por el usuario.
Contador utilizado numerosas veces a lo largo
i
del programa en diferentes ciclos.
Matrices Descripción
Matriz donde se guardan los datos de tipo
M1(50,4) cadena como el nombre y cédula del
contribuyente y la marca y placa del auto.
Matriz donde se guardan los datos de tipo
M2(50,2) enteros como la edad del contribuyente y el
año del auto.
Vectores Descripción
Vector donde se guardan los datos de tipo
V3(50)
Decimal como el precio del auto.

Explicación de la lógica utilizada en el programa:


Una vez ejecutado el programa, el usuario debe elegir entre dos opciones presentadas en
RadioButton, las cuales son: Suma y Multiplicación. Independientemente de cuál sea la seleccionada
por el usuario, lo primero que debe hacer este es ingresar los valores correspondientes a cada
posición en su respectiva matriz, sea la matriz 1 y 2. Ahora en el código del programa se ha añadido
una condición, la cual establece que, si el usuario elige la opción Suma, se realizará dicho proceso,
sumando los valores de cada posición de las matrices 1 y 2, respectivamente y almacenando dichos
valores en una tercera matriz. En caso contrario, si el usuario elige la opción Multiplicación, el
programa internamente hace uso de dos variables, i y j; para recorrer las matrices 1 y 2, e ir
multiplicando los elementos de la primera fila de la Matriz 1 por los elementos de la primera
columna de la Matriz 2, y así sucesivamente, hasta completar todos los ciclos, los resultados son
arrojados dentro de otra matriz, a quien se ha designado como matriz 3. Una vez el programa
ejecute el proceso correspondiente a la opción seleccionada por el usuario, se inicia un último ciclo
que recorrerá la Matriz 3; los valores de dicha operación serán mostrados en pantalla, gracias al uso
de una MsgBox, el cual indicará la posición que tiene cada valor dentro de la Matriz 3.

Para deducir el código que nos permitiese llevar a cabo la multiplicación de las matrices 1 y 2,
procedimos a copiar las nueve líneas de código que realizarían dicha operación. Como es de nuestro
conocimiento, para proceder a multiplicar 2 matrices cuadradas, se debe realizar el siguiente
mecanismo:

 El primer elemento de la fila por el primer elemento de la columna…más…el segundo


elemento de la fila por el segundo elemento de la columna…más…el tercer elemento de la
fila por el tercer elemento de la columna.

Para nuestro código de 9 líneas, nos percatamos que:

M3(0,0) = [M1(0,0) ∗ M2(0,0) ]+ [M1(0,1) ∗ M2(1,0) ]+[M1(0,2) ∗ M2(2,0) ]

M3(0,1) = [M1(0,0) ∗ M2(0,1) ]+ [M1(0,1) ∗ M2(1,1) ]+[M1(0,2) ∗ M2(2,1) ]

M3(0,2) = [M1(0,0) ∗ M2(0,2) ]+ [M1(0,1) ∗ M2(1,2) ]+[M1(0,2) ∗ M2(2,2) ]

M3(1,0) = [M1(1,0) ∗ M2(0,0) ]+ [M1(1,1) ∗ M2(1,0) ]+[M1(1,2) ∗ M2(2,0) ]

M3(1,1) = [M1(1,0) ∗ M2(0,1) ]+ [M1(1,1) ∗ M2(1,1) ]+[M1(1,2) ∗ M2(2,1) ]

M3(1,2) = [M1(1,0) ∗ M2(0,2) ]+ [M1(1,1) ∗ M2(1,2) ]+[M1(1,2) ∗ M2(2,2) ]

M3(2,0) = [M1(2,0) ∗ M2(0,0) ]+ [M1(2,1) ∗ M2(1,0) ]+[M1(2,2) ∗ M2(2,0) ]

M3(2,1) = [M1(2,0) ∗ M2(0,1) ]+ [M1(2,1) ∗ M2(1,1) ]+[M1(2,2) ∗ M2(2,1) ]

M3(2,2) = [M1(2,0) ∗ M2(0,2) ]+ [M1(2,1) ∗ M2(1,2) ]+[M1(2,2) ∗ M2(2,2) ]

Para todas las posiciones, de acuerdo al código anterior, cuando se multiplicaba el primer elemento
de la fila por el primer elemento de la columna; para la matriz 1 el cero es constante para las
columnas; y para la matriz 2 el cero es constante para las filas; luego, al multiplicar el segundo
elemento de la fila por el segundo elemento de la columna; para la matriz 1 el uno es constante para
las columnas; y para la matriz 2 el uno es constante para las filas, finalmente al multiplicar el tercer
elemento de la fila por el tercer elemento de la columna; para la matriz 1 el dos es constante para
las columnas, y para la matriz 2 el dos es constante para las filas.
Y finalmente, propusimos el siguiente código para multiplicar las matrices, en donde se utilizaron 2
nuevas variables para recorrer la matriz 3 y almacenar en cada posición de la misma, el resultado
de las multiplicaciones, siendo la variable i utilizada para representar las filas; y j para, las columnas.
Dicho de otra manera, se lleva a cabo primero todas las operaciones correspondientes a la fila 0,
pero en esta fila se debe realizar tres multiplicaciones correspondientes al cambio que tendrá j
desde 0 hasta 2, luego se incrementa i y se realiza lo mismo hasta que i tenga el valor de 2.
For i = 0 To 2

For j = 0 To 2

M3(i, j) = (M1(i, 0) * M2(0, j)) + (M1(i, 1) * M2(1, j)) + (M1(i, 2) * M2(2, j))

Next

Next

Código comentado del proyecto:


Public Class Form1
'Declaramos cada una de las variables, matrices y vectores que utilizaremos en
el programa en sus respectivos formatos'
Dim M1(50, 4), placa, cedula As String
Dim M2(50, 2), año As Integer
Dim V3(50), impuesto As Double
Dim Count = 0, inf = 0, post = 0

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles


Button2.Click
'Mediante 2 Ciclos llenamos los 2 vectores que declaramos utilizando
DataGridView
For i = 0 To 3
M1(Count, i) = DataGridView1.Item(i, 0).Value
Next
For i = 0 To 1
M2(Count, i) = DataGridView2.Item(i, 0).Value
Next
'Este vector al ser precisamente eso no necesita de un ciclo
V3(Count) = DataGridView3.Item(0, 0).Value
'Adicionamos 1 a este contador cada vez que se oprima el boton ingresar,
cosa que nos será util mas adelante en un par de ocasiones
Count = Count + 1
End Sub
'Utilizando el botón Borrar se limpiarán todas las casillas de los DataGridView
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles
Button1.Click
DataGridView1.Rows.Clear()
DataGridView2.Rows.Clear()
DataGridView3.Rows.Clear()
End Sub
'Al activar este botón se desplegará el contenido de la variable Count, o sea
las veces que se oprimió el botón ingresar o sea el número de contribuyentes
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles
Button3.Click
MsgBox("El Número de Contribuyentes es: " & Count)
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles
Button4.Click
'El ususario ingresará la placa del auto deseado
placa = InputBox("Ingrese la Placa del Auto: ")
'Mediante un ciclo y una condición se irá comparando la placa ingresada por
el usuario con las anteriormente ingresadas hasta que coincidan
For i = 0 To 49
If placa = M1(i, 3) Then
'Una vez que coincida las placas se desplegarán la marca y el año
del auto en cuestión'
MsgBox("La Marca del Auto es: " & M1(i, 2) & " y su año es: " &
M2(i, 1))
End If
Next
End Sub
'Se realiza un proceso parecido al anterior solo que esta vez utilizando la
cédula en lugar de la placa'
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles
Button5.Click
cedula = InputBox("Ingrese la Cédula del Contribuyente: ")
For i = 0 To 49
If cedula = M1(i, 1) Then
'Cuando las cédulas coincidan se realiza la operación necesaria
para conseguir el impuesto para luego desplegar el resultado'
impuesto = V3(i) * 0.05
impuesto = V3(i) + impuesto
MsgBox("El precio total incluyendo el impuesto que tiene que pagar
el contribuyente, con cédula " & M1(i, 1) & " es de: " & impuesto)
End If
Next
End Sub
'Se realiza un proceso parecido al que se utilizó con el botón 4'
Private Sub Button6_Click(sender As Object, e As EventArgs) Handles
Button6.Click
placa = InputBox("Ingrese la Placa del Auto: ")
For i = 0 To 49
If placa = M1(i, 3) Then
'Una vez que coincidan las placas se desplegaran los datos del
contribuyente'
MsgBox("El Nombre del contribuyente es: " & M1(i, 0) & ", su edad
es: " & M2(i, 0) & " años y su cédula es: " & M1(i, 1))
End If
Next
End Sub
'El usuario ingresa el año del auto deseado'
Private Sub Button7_Click(sender As Object, e As EventArgs) Handles
Button7.Click
año = InputBox("Ingrese el Año del Auto: ")
'Mediante un ciclo y una condición se van contando la cantidad de años
posteriores y anteriores a la fecha ingresada por el usuario y se guardarán en dos
contadores'
For i = 0 To Count - 1
If M2(i, 1) < año Then
inf = inf + 1
Else
post = post + 1
End If
Next
'Mediante un ciclo y una condición se irá comparando el año ingresado por el
usuario con los anteriormente ingresados hasta que coincidan'
For i = 0 To 49
If año = M2(i, 1) Then
'Una vez que coincidan se desplegarán los datos almacenados en los
contadores'
MsgBox("La Cantidad de automóviles que son anteriores al año
ingresado es de: " & inf & ", mientras que la Cantidad de automóviles que pertenecen
o son posteriores al año ingresado es de: " & post)
End If
Next
End Sub
'Este botón es para salir del programa
Private Sub Button8_Click(sender As Object, e As EventArgs) Handles
Button8.Click
End
End Sub
End Class

S-ar putea să vă placă și