


























































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Asignatura: informatica, Profesor: , Carrera: Ingeniería Técnica Industrial Especialidad en Mecánica, Universidad: UVIGO
Tipo: Ejercicios
1 / 66
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!



























































IPI. Ejercicios resueltos. última actualización enero 2016
IPI. Ejercicios resueltos. última actualización enero 2016
1.1 Enunciado
1.2 Solución
Option Explicit On ' nos obliga a declarar las variables Module Module Sub Main()
Dim inicial As Single, interes As Single Dim acumulado As Single, plazo As Integer Dim i As Integer, incremento As Single
' como los intereses y el dinero pueden tener decimales, ' se usa Single (y no Integer o Long)
' Preguntamos al usuario los valores necesarios para el cálculo inicial = InputBox("¿Capital inicial?") interes = InputBox("¿Tipo de interés (%)?") plazo = InputBox("¿Período en años?")
acumulado = inicial For i = 1 To plazo ' para cada año se hace el siguiente cálculo:
' cada año se incrementa el dinero: incremento = acumulado * interes / 100 ' dividido por 100 pq es %
' se acumula a lo ya disponible acumulado = acumulado + incremento Next i
MsgBox("El capital acumulado es de " & acumulado) End Sub End Module
IPI. Ejercicios resueltos. última actualización enero 2016
3.1 Enunciado
Alcance: constantes y variables y operaciones matemáticas básicas.
Desarrollar un programa capaz de calcular el tiempo y distancia que tarda un proyectil en impactar
con el suelo, dadas una velocidad y ángulo de disparo.
El programa deberá:
3.2 Solución
Module Module Sub Main() Const g = 9. Dim Vo, ang As Double Dim tiempo, distancia As Double
Console.Write("Velocidad (m/s): ") Vo = Console.ReadLine() Console.Write("Angulo (grados): ") ang = (Math.PI / 180.0) * Console.ReadLine() 'convertir de grados a radianes tiempo = Vo * Math.Sin(ang) / (0.5 * g) distancia = Vo * Math.Cos(ang) * tiempo
Console.WriteLine("Tiempo: " & FormatNumber(tiempo, 2) & " s") Console.WriteLine("Distancia: " & FormatNumber(distancia, 2) & " m") Console.ReadLine() End Sub End Module
IPI. Ejercicios resueltos. última actualización enero 2016
4.1 Enunciado
Alcance: constantes y variables y operaciones aritméticas básicas.
Cuando una empresa paga a sus empleados por su trabajo, el estado le obliga a retener una
cantidad en concepto de impuestos que paga el empleado y además abonarle una cantidad en
concepto de los impuestos que paga la empresa. Se entiende como “salario bruto” la cantidad que
cobra el empleado anualmente antes de que la empresa retenga los impuestos que le
corresponden pagar al empleado, “salario neto la cantidad que recibe el empleado” y “coste del
empleado” al salario bruto más los impuestos que ha de pagar la empresa (a mayores) por el
empleado. Además la empresa ha de tener en cuenta que si en algún momento despide a un
empleado tiene que indemnizarle con un determinado número de días de salario por año
trabajado, de manera que algunas empresas contemplan una provisión por despido y lo
consideran un coste más asociado al empleado. Además, si la empresa tiene beneficios tendrá que
pagar un impuesto sobre los mismos. En España, los principales costes son (valores aproximados y
simplificado):
Los que la empresa le retiene al trabajador o este paga:
Los que la empresa paga a mayores:
Se supondrá que todos los empleados de la empresa cobran lo mismo, trabajan 1800 horas al año,
reciben 12 pagas mensuales meses y que la empresa tiene unos gastos generales (alquileres, luz…)
que son el 15% de sus ingresos.
El programa deberá:
4.2 Solución
Module Module
IPI. Ejercicios resueltos. última actualización enero 2016
5.1 Enunciado
5.2 Solución
Option Explicit On Module Module Sub Main() ' Dada un vector que representa las temperaturas medidas ' durante un período de tiempo, localizar la variación máxima ' de temperatura(diferencia entre los valores máximo y mínimo) Dim numpos As Integer, i As Integer ' ojo: las temperaturas pueden tener decimales, por lo para ellas se ' debe usar Single o Double: Dim v() As Single ' paréntesis vacíos pq aún no sabemo el nº de posiciones Dim max As Single, min As Single
' CARGA DE DATOS EN EL VECTOR ' preguntamos al usuario el número de posiciones del vector numpos = InputBox("¿Cuántos valores se guardarán?") ' creamos el vector ReDim v(numpos - 1) ' entre paréntesis: nº de pos (siempre empiezan en cero) ' pedimos los datos y los guardamos en el vector For i = 0 To numpos - 1 ' recorremos todas las posiciones del vector (empieza en 0) v(i) = InputBox("¿Valor de la posición " & i & " ?") Next i ' BÚSQUEDA DE LOS VALORES MÁXIMO Y MÍNIMO For i = 0 To numpos - 1 ' recorremos valor por valor ' si es el primer valor analizado (i=0) o es menor q ' el que hasta ese momento era el máximo (max): If (i = 0) Or v(i) > max Then max = v(i) End If ' de modo similar para el mínimo If (i = 0) Or v(i) < min Then min = v(i) End If Next ' MOSTRAMOS EL RESULTADO: MsgBox("La máxima variación de temperatura es de " & max - min & " grados") End Sub End Module
IPI. Ejercicios resueltos. última actualización enero 2016
6.1 Enunciado
6.2 Solución
Option Explicit On Module EjemploMinimo Const NF = 3 ' constante: número de filas Const NC = 2 ' constante: número de columnas Sub main() Dim A(NF - 1, NC - 1) As Integer ' crea la matriz de enteros (los índices empiezan en cero) Dim i As Integer, j As Integer, menor As Integer For i = 0 To NF - 1 ' pide los datos de la matriz For j = 0 To NC - 1 A(i, j) = InputBox("A(" & i & "," & j & ")") Next j Next i menor = A(0, 0) ' inicializa: de momento, el menor es el primero For i = 0 To NF - 1 For j = 0 To NC - 1 If (menor > A(i, j)) Then menor = A(i, j) ' si hay alguno menor, actualiza "menor" Next j Next i End Sub End Module ' NOTA: si no se inicializa la varible "menor", en caso de ' que los valores de la matriz sean negativos, no funcionaría ' el programa
IPI. Ejercicios resueltos. última actualización enero 2016
8.1 Enunciado
8.2 Solución
Module Module
Sub main() 'Definimos la variables a utilizar Const base As Byte = 2 'Vble que almacena el cambio de base a binario Dim numero, contar_bits, cociente As Integer Dim Resto As Byte 'Vble que guarda el resto de la operación MOD Dim respuesta As Char 'Vble para guardar la respuesta de repetir el programa Dim valor_binario As String 'Vble para ir guardando el numero binario
Console.WriteLine("Calcular numero binario") Do contar_bits = 0 'Inicializamos el contador de bits a cero
IPI. Ejercicios resueltos. última actualización enero 2016
valor_binario = "" 'Inicializamos la cadena a "" (Vacio) Do 'repito petición de número hasta que sea > numero = InputBox("Dame un número?") If numero < 0 Then MsgBox("ERRROR: debe ser un valor positivo") End If Loop Until numero > 0 'igualo el cociente al número para empezar a dividir por el mismo 'y luego ir cambiando el valor a medida que se divide, asi mantenemos 'el valor del número introducido sin modificarlo cociente = numero Do Resto = cociente Mod base 'almaceno el resto en la cadena valor_binario 'recordar que empieza de izquierda a derecha la secuencia del binario 'de ahí el orden en la concatenación con el operador & valor_binario = Resto & " " & valor_binario cociente = Int(cociente / base) contar_bits = contar_bits + 1 'contabilizamos las veces que se hace la operación Loop While cociente > 0 'visualizamos las soluciones MsgBox("El valor en base (" & base & ") del número " & numero & " es: " & valor_binario) MsgBox("el número de bits creados son: " & contar_bits) 'Preguntamos si desea volver a ejecutar el programa Do respuesta = UCase(InputBox("Desea ejecutar de nuevo el programa? (s/n) ")) If respuesta <> "S" Then 'se podría empezar por comparar el valor "N" If respuesta <> "N" Then MsgBox("ERROR: respuesta no válida. Debe pulsar 'S' o 'N'") End If End If Loop Until respuesta = "S" Or respuesta = "N" Loop While respuesta <> "N" End Sub
End Module
IPI. Ejercicios resueltos. última actualización enero 2016
10.1Enunciado
10.2Solución
Module Module Sub main() 'Definimos la variables a utilizar Dim numero, divisor, contar_divisiones, cociente As Integer Dim Resto As Byte 'Vble que guarda el resto de la operación MOD Dim respuesta As Char 'Vble para guardar la respuesta de repetir el programa Dim valor_restos As String 'Vble para ir guardando los restos de las divisiones
Console.WriteLine("Divisiones sucesivas") Do contar_divisiones = 0 'Inicializamos el contador de divisiones a cero valor_restos = "" 'Inicializamos la cadena de restos a "" (vacio)
Do 'Pedimos el numero hasta que sea positivo numero = InputBox("Dame un número?") If numero < 0 Then
IPI. Ejercicios resueltos. última actualización enero 2016
MsgBox("ERRROR: debe ser un valor positivo") End If Loop Until numero > 0 Do 'Pedimos el divisor hasta que sea positivo y mayor que el numero divisor = InputBox("dame su divisor?") If (divisor > numero) Or (divisor < 0) Then MsgBox("ERROR: el divisor tiene que ser menor que " & numero & " y mayor que cero.") End If Loop Until divisor < numero And divisor > 0 'igualo el cociente al número para empezar a dividir por el mismo 'y luego ir cambiando el valor a medida que se divide, asi mantenemos 'el valor del número introducido sin modificarlo cociente = numero Do Resto = cociente Mod divisor 'almaceno el resto en la cadena valor_resto valor_restos = valor_restos & " " & Resto cociente = Int(cociente / divisor) contar_divisiones = contar_divisiones + 1 'contabilizamos las veces que se hace la operación Loop While cociente > 0 'Visualizamos las soluciones MsgBox("Los restos de las divisiones sucesivas del número " & numero & " son: " & valor_restos) MsgBox("El número de divisiones realizadas son: " & contar_divisiones) 'Preguntamos si desea volver a ejecutar el programa Do respuesta = UCase(InputBox("Desea ejecutar de nuevo el programa? (s/n) ")) If respuesta <> "S" Then 'se podría empezar por comparar el valor "N" If respuesta <> "N" Then MsgBox("ERROR: respuesta no válida. Debe pulsar 'S' o 'N'") End If End If Loop Until respuesta = "S" Or respuesta = "N" Loop While respuesta <> "N" End Sub
End Module
IPI. Ejercicios resueltos. última actualización enero 2016
Console.WriteLine("ERROR.- el valor debe ser mayor que cero o igual/menor que 7") End If Loop Until (ctos_digitos <= 7 Or ctos_digitos > 0) 'Creamos el vector con el número de digitos que ha 'indicado el usuario menos uno ReDim binario(ctos_digitos - 1) 'inicializamos j a uno para que le indique al usuario que 'valor está introduciendo, aunque se almacene al revés j = 1 'solicitamos cada uno de los dígitos al usuario 'almacenandolos desde la posición mayor hasta la posición cero For i = UBound(binario) To 0 Step - Do Console.Write("Introduzca el valor binario (" & j & ")= ") binario(i) = Console.ReadLine() If (binario(i) < 0) Or (binario(i) > 1) Then Console.WriteLine("ERROR: el valor sólo puede ser ""0"" (cero) o ""1"" (uno)") End If Loop Until (binario(i) = 0 Or binario(i) = 1) 'vamos incrementando j para que le aparezca al usuario el valor a introducir correcto j = j + 1 Next 'llamamos a la función binario_decimal que devuelve el valor en binario Console.WriteLine("el valor en decimal es= " & binario_decimal(binario)) Console.ReadLine() End Sub 'Función que se le pasa el vector en binario y devuelve el valor en decimal Function binario_decimal(ByVal vector_binario() As Byte) As Integer Dim i As Integer Dim valor_decimal As Integer 'para almacenar el calculo en binario Const base As Byte = 2 'realizamos el calculo 'se podría empezar desde cero hasta el ultimo y daría igual For i = UBound(vector_binario) To 0 Step - valor_decimal = valor_decimal + (vector_binario(i) * base ^ i) Next 'devolvemos el valor decimal calculado Return valor_decimal End Function
End Module
IPI. Ejercicios resueltos. última actualización enero 2016
12.1Enunciado
12.2Solución
Module Module Sub Main() 'Declaración de variables Dim matriz(1, 4) As Byte Dim grupo() As String = {"A", "B", "C", "D", "E"} Dim horarios() As String = {"Teoría", "Práctica"} Dim Horario_mayor, cantidad As Integer Dim matriz_resultado As String = "" Dim repetidos As String = "" Dim matriz_promedio As String = "" Dim promedio As Double Dim existe As Integer Dim i, j, opcion As Byte 'Pide asistencias For i = 0 To 1 For j = 0 To 4 Do
matriz(i, j) = InputBox("dame las asistencias: " & grupo(j) & " " & horarios(i))
If i = 0 Then cantidad = 125 Else cantidad = 25 End If 'Verificar el número de alumnos que los que se nos permiten If matriz(i, j) > cantidad Then MsgBox("no puede haber en el horario: " & horarios(i) & " más que " & cantidad) End If Loop Until matriz(i, j) < cantidad Next Next
'Crear el menú Do