Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 25

TECNICATURA SUPERIOR

EN ANÁLISIS DE SISTEMAS

ALGORITMOS Y ESTRUCTURAS
DE DATOS 1

GUÍA DE TRABAJOS PRÁCTICOS

2024
Instituto Superior de Formación Técnica N° 197
Avellaneda

INTRODUCCIÓN

La materia "Algoritmos y Estructuras de Datos 1" representa el primer paso en el


fascinante mundo de la programación y la resolución de problemas computacionales. En esta
etapa, nos adentraremos en los fundamentos esenciales que constituyen la base de cualquier
desarrollo de software eficiente. Java, un lenguaje de programación versátil y robusto, será
nuestro vehículo para explorar conceptos clave, desde algoritmos simples hasta estructuras de
datos más complejas.

Esta guía de ejercicios y trabajos prácticos se ha creado con el propósito de brindarle a


los estudiantes actividades cuya resolución les otorgue una sólida comprensión de los principios
fundamentales de la programación y de cómo aplicarlos en la solución de problemas de la vida
real. A lo largo de este material, encontrarás explicaciones, ejemplos prácticos y desafíos
diseñados para fortalecer tu capacidad para pensar de manera algorítmica y estructurada.

FUNDAMENTACIÓN

La importancia de los algoritmos y las estructuras de datos en el desarrollo de software


no puede subestimarse. Estos constituyen la esencia misma de la eficiencia y las buenas
prácticas en la programación. En este contexto, esta guía busca proporcionar una introducción
gradual y accesible a estos conceptos mediante Pseudocódigo, reconociendo que muchos de
nuestros estudiantes están dando sus primeros pasos en el universo de la informática.

La materia "Algoritmos y Estructuras de Datos 1" se orienta principalmente hacia el


aprendizaje de la programación imperativa. Este enfoque se basa en la ejecución secuencial
de instrucciones, lo que permite a los estudiantes comprender cómo los programas manipulan
datos y controlan el flujo de ejecución. La elección de Java como lenguaje base para los
ejemplos y prácticas se alinea perfectamente con este enfoque, ya que Java es un lenguaje
multiparadigma que permite una programación imperativa efectiva.

La decisión de priorizar la programación imperativa en esta etapa inicial de la carrera tiene


como objetivo proporcionar a los estudiantes una base sólida y comprensible sobre la cual
construir. A medida que avancen en su formación, podrán explorar otros paradigmas de
programación, aprovechando la versatilidad de Java y/o de otros lenguajes que se aborden.

Guía de trabajos prácticos | pág. 1


OBJETIVOS

Se espera que los alumnos:

• Adquieran el concepto de abstracción para lograr modelizar los datos de un problema.


• Reconozcan el concepto de algoritmos.
• Dominen diferentes estructuras de datos y de control.
• Sean capaces de diseñar algoritmos, implementarlos y representarlos a través de
estructuras de datos.
• Caractericen el concepto de programa.
• Realicen la codificación de los algoritmos en un lenguaje de programación
estructurado.
• Desarrollen programas superadores adecuando los tipos de datos y aplicando los
criterios de programación estructurada.
• Se inicien en el paradigma de la programación orientada a objetos.
• Inicien la actividad de la programación como futuros profesionales de la carrera, con
sólidos conocimientos fundamentales, que les permitan alcanzar el nivel de
programador avanzado en cualquier lenguaje de programación de su preferencia.
• Sean capaces de identificar las estructuras de control, estructuras de datos y las
técnicas de programación en otros lenguajes de características diferentes, todo ello,
con la intención de prepararlo para la incorporación de nuevos paradigmas de
programación.

BIBLIOGRAFÍA SUGERIDA

Básica:
• Joyanes Aguilar, L. (2008). Fundamentos de Programación: Algoritmos, estructuras de
datos y objetos (4ta. ed.). Madrid, España: Editorial Mc Graw-Hill Interamericana.

Complementaria:
• Duque, Diego Fernando y otros (2017). Algoritmos y programación en pseudocódigo.
Bogotá, Colombia: Editorial Universidad Santiago de Cali.
• W3Schools. (2023). Java Tutorial. Recuperado de https://www.w3schools.com/java/
• Oracle. (2023). Documentación oficial Java. Oracle. Recuperado de
https://www.oracle.com/ar/java/

Autor: Lic. Sebastián Alfredo Saldívar


Carrera: Tecnicatura Superior en Análisis de Sistemas
Espacio Curricular: Algoritmos y Estructura de datos I
Horas Semanales: 4 Horas.
Horas Anuales: 128 Horas.

Guía de trabajos prácticos | pág. 2


CONTENIDO
página
Unidad N° 1 – Introducción – Pseudocódigo

TP N° 1 “Variables, acumuladores y contadores” ………………………………… 4

TP N° 2 “Acumuladores, tomas de decisiones y bucles” .................................... 5

TP N° 3 “Máximos y mínimos” ………………………………………………………. 6

Ejercicios integradores en Pseudocódigo …………………………………………………... 7

Unidad N° 2 – Expresiones y Estructuras de selección

TP N° 4 “Variables, operaciones, estructuras de selección” ……………………... 8

Unidad N° 3 – Estructuras de repetición

TP N° 5 “Estructuras de repetición” …………………………………………………. 9

TP N° 6 “Estructuras de repetición, bucles anidados” …………………………….. 10

Unidad N° 4 – Funciones y procedimientos

TP N° 7 “Subalgoritmos” ……………………………………………………………… 12

Ejercicio integrador Unidades 1 a 4 ………………………………………………………….. 13

Unidad N° 5 – Tipos de datos Estructurados: Arrays

TP N° 8 1ra Parte: “Arreglos unidimensionales” …………………………………… 14

Unidad N° 6 – Ordenamiento y búsqueda en arreglos

TP N° 9 “Ordenamiento y búsqueda” ……………………………………………….. 15

Unidad N° 7 – Tipos de datos Estructurados: Clases Vector y ArrayList

TP N° 8 2da Parte: “Clases Vector y ArrayList” ……………………………………. 16

Unidad N° 8 – Tipos de datos Estructurados: Matrices

TP N° 10 “Arreglos multidimensionales” …………………………………………….. 17

Unidad N° 9 – Archivos

TP N° 11 “Archivos” …………………………………………………………………….18

Ejercicio integrador Unidades 5 a 9 …………………………………………………………...19

Modelos de examen ……………………………………………………………………………. 20

Guía de trabajos prácticos | pág. 3


TECNICATURA SUPERIOR EN ANÁLISIS DE SISTEMAS
ALGORITMOS Y ESTRUCTURAS DE DATOS I

Trabajo práctico Nº 1
Variables, acumuladores y contadores

Utilizando Pseudocódigo, resuelva los siguientes enunciados:

1. Ingresar 5 números y calcular su promedio.

2. Escribir el programa necesario para calcular la suma de dos números. Mostrar el


resultado.

3. Escribir un programa que realice las siguientes acciones:

a. Asigne a 2 variables ‘numero1’ y ‘numero2’ valores distintos de cero

b. Efectúe el producto de dichas variables

c. Muestre el resultado por pantalla

d. Obtenga el cuadrado de ‘numero1’ y lo muestre par pantalla

4. Escribir un programa que realice las siguientes acciones:

a. Declare 2 variables y les asigne valores

b. Realice la resta de dichas variables y muestre por pantalla la leyenda "Resultado


positivo" en caso de ser mayor que cero o "Resultado negativo" si es menor que
cero.

5. Escribir el programa necesario para calcular y mostrar el cuadrado de un número. El


número debe ser mayor que cero, en caso de error que aparezca el mensaje "ERROR,
el número debe ser mayor que cero".

6. De 10 números ingresados indicar cuantos son mayores a cero y cuantos son menores
a cero.

7. Desarrollar un programa que permita calcular tanto la longitud de la circunferencia como


el área del círculo, tomando como parámetro el radio proporcionado.

8. Diseñar un programa que calcule la superficie de un triángulo a partir del ingreso de su


base y altura, luego mostrar el resultado.

Guía de trabajos prácticos | pág. 4


TECNICATURA SUPERIOR EN ANÁLISIS DE SISTEMAS
ALGORITMOS Y ESTRUCTURAS DE DATOS I

Trabajo práctico Nº 2
Acumuladores, tomas de decisiones y bucles

Utilizando Pseudocódigo, resuelva los siguientes enunciados:

1. Escribir un programa que lea por teclado 20 caracteres. Luego de la lectura indicar
cuantas "a" se ingresaron, luego cuantas "e, i, o, u".

2. Escribir un programa que muestre los números impares entre 0 y 100 y que imprima
cuantos impares hay.

3. Hacer el programa que imprima los números pares entre el 1 y el 100.

4. Hacer el programa que imprima los números del 1 al 100.

5. Hacer el programa que imprima los números del 100 al 0 en orden decreciente.

6. Diseñar un programa que imprima y sume la serie de números 3,6,9, 12,...,99.

7. Escribir un programa que muestre los múltiplos de 6 comprendidos entre 0 y 100.

8. Hacer el programa que nos permita introducir un número por teclado y nos informe si es
positivo o negativo.

9. Hacer el programa que nos permita introducir un número por teclado y nos informe si es
par o impar.

10. Diseñar en un programa que permita ingresar 10 números, ninguno de ellos igual a cero.
Sumar los positivos, obtener el producto de los negativos y luego mostrar ambos
resultados.

Guía de trabajos prácticos | pág. 5


TECNICATURA SUPERIOR EN ANÁLISIS DE SISTEMAS
ALGORITMOS Y ESTRUCTURAS DE DATOS I

Trabajo práctico Nº 3
Máximos y mínimos

Utilizando Pseudocódigo, resuelva los siguientes enunciados:

1. Escribir un programa que lea 4 números e imprima el mayor de los cuatro.

2. Se ingresa por consola la cantidad de agua caída, en milímetros día a día durante un
mes. Se pide determinar el día de mayor lluvia, el de menor y el promedio.

3. Hacer un programa que imprima el mayor y el menor de una serie de 5 números que
vamos introduciendo por teclado.

4. De los alumnos de una escuela se registra su apellido, nombre y estatura. Escribir un


programa que indique el apellido y nombre del alumno más alto y su estatura (sólo uno
es el más alto).

5. Escribir un programa que permita calcular el promedio de un alumno sabiendo que se


ingresa por alumno su nombre y las notas de 6 materias. No se sabe la cantidad de
alumnos. Se pide un listado impreso que diga:

NOMBRE DEL ALUMNO: …… PROMEDIO:…….

6. Del registro de partes meteorológico por cada día se registra la fecha, temperatura
máxima y temperatura mínima. Escribir un programa que permita informar: el día más
frío y cual fue esa temperatura, el día más cálido y cual fue esa temperatura.

7. Escribir un programa que calcule el salario semanal de cada trabajador de una empresa
dada la tarifa horaria y el número de horas trabajadas además del nombre. Se debe
permitir al usuario indicar cuando desea dejar de ingresar datos.

8. ídem al anterior pero informando al finalizar (el ingreso de datos y los cálculos
correspondientes) la cantidad de empleados de los que se les calculó el Salario.

9. ídem al anterior agregando en el informe final el nombre del empleado de mayor salario
con el monto del salario correspondiente, y nombre del empleado de menor salario con
el monto del salario correspondiente.

10. ídem al anterior agregando en el informe final el costo de la empresa en salarios y el


salario promedio.

Guía de trabajos prácticos | pág. 6


TECNICATURA SUPERIOR EN ANÁLISIS DE SISTEMAS
ALGORITMOS Y ESTRUCTURAS DE DATOS I

Pseudocódigo: Ejercicios Integradores

Utilizando pseudocódigo, resuelva los siguientes enunciados:

1. Escriba un programa que solicite el ingreso de notas de alumnos para una determinada
materia. Cuando se ingrese el valor 0, deberá dejar de solicitar la carga de las mismas.

Al finalizar la carga, se deberá informar en pantalla:

▪ Cantidad de alumnos aprobados (nota mayor o igual que 4)


▪ Cantidad de Desaprobados (nota menor que 4)
▪ Cantidad promocionados (nota mayor o igual a 7).
▪ Adicionalmente se solicitará obtener:
- Cuál ha sido la nota más alta
- Cuál ha sido la nota más baja
- Promedio total para la materia

Valide que el ingreso del valor de la nota (para una carga normal) se encuentre entre
los valores 1 y 10. En caso contrario, solicitar el valor tantas veces como sea necesario
hasta que el usuario lo ingrese correctamente.

2. Existe una fábrica que elabora insumos para el deporte «Lanzamiento de balas». Al final
de la confección de cada una de ellas, éstas pasan por un riguroso control de calidad,
en la que se deben cumplir con las siguientes especificaciones:

▪ La bala debe ser una esfera con un peso de 90.37 kg en la rama masculina; y
90.30 kg, en la rama femenina.

▪ Para el diámetro de este implemento en la rama masculina es mínimo de


120mm y máximo de 270mm. Para la rama femenina el diámetro es de 95-
150mm.

En base al peso, diámetro y rama de la competición, especifique el mensaje: Aprobado


o desaprobado.

3. Se deben ingresar el resultado de un total de 10 partidos de fútbol de un mismo equipo,


solicitando en la carga de cada registro:

▪ Condición (L/V): Local o visitante


▪ Goles Local
▪ Goles Visitante

Una vez finalizada la carga, se deberá visualizar en pantalla:

▪ Total de partidos jugados


▪ Ganados
▪ Empatados
▪ Perdidos
▪ Puntos (3 puntos por partido ganado y 1 por empatado)
▪ Goles a favor
▪ Goles en contra

Guía de trabajos prácticos | pág. 7


TECNICATURA SUPERIOR EN ANÁLISIS DE SISTEMAS
ALGORITMOS Y ESTRUCTURAS DE DATOS I

Trabajo práctico Nº 4
Variables, operaciones, estructuras de selección

Utilizando Java, resuelva los siguientes enunciados:

1. Asignar valores a 2 variables desde código y mostrar el contenido de la mayor por


pantalla.

2. Solicite un valor numérico al usuario e informe en pantalla el mismo valor, pero con el
signo invertido (si es positivo a negativo y viceversa).

3. Determinar si una persona es mayor o menor de acuerdo a su edad. Mayoría de edad


a partir de los 21 años.

4. Leer 3 números y mostrar el mayor de ellos.

5. Leer 4 números y mostrar el máximo y el mínimo de ellos.

6. Solicitar números indefinidamente hasta que se ingrese un 0 (cero), luego mostrar el


promedio de todos ellos.

7. Desarrollar un programa que lea 2 números enteros positivos y que determine y


visualice por pantalla si los números fueron capturados en orden creciente o no.

8. Cree un programa que pida tres números e indique si el tercero es igual a la suma del
primero y el segundo.

9. Que calcule el sueldo que le corresponde al trabajador de una empresa según su sueldo
bruto (sin deducciones). El programa debe realizar los cálculos en función de los
siguientes criterios:
a. Si lleva más de 10 años en la empresa se le aplica un aumento del 10%.
b. Si lleva menos de 10 años pero más que 5 se le aplica un aumento del 7%.
c. Si lleva menos de 5 años pero más que 3 se le aplica un aumento del 5%.
d. Si lleva menos de 3 años se le aplica un aumento del 3%.

Guía de trabajos prácticos | pág. 8


TECNICATURA SUPERIOR EN ANÁLISIS DE SISTEMAS
ALGORITMOS Y ESTRUCTURAS DE DATOS I

Trabajo práctico N° 5
Estructuras de repetición

Utilizando Java, resuelva los siguientes enunciados:

1. Realizar un programa que pida al usuario un número y presente los números del 1
al número que introdujo el usuario.

2. Realizar un programa que imprima por pantalla tantos asteriscos como diga el
usuario. Al ejecutarse debe preguntar “¿Cuantos asteriscos desea imprimir?”, leer
el número que introduce el usuario e imprimir los asteriscos.

3. Realizar un programa que pregunte al usuario el momento del día con una letra (m-
mañana, t-tarde, n-noche), el sexo con otra letra (m-masculino, f-femenino). El
programa dirá: buenos días, tardes, o noches (según el momento) señor o señora
según el sexo.

4. Realizar un programa que pida ingresar dos números consecutivos (ej: 3 y 4; 9 y 10


etc.). Cuando se introducen tres veces correctamente los números consecutivos,
dice “gracias” y termina. Mientras no se introduzcan tres veces los 2 números
consecutivos el programa sigue pidiendo números indefinidamente.

5. Realizar un programa que pida un número y calcule su factorial.

6. Realizar un programa que pida la base y el exponente y calcule la potencia.

Guía de trabajos prácticos | pág. 9


TECNICATURA SUPERIOR EN ANÁLISIS DE SISTEMAS
ALGORITMOS Y ESTRUCTURAS DE DATOS I

Trabajo práctico Nº 6
Estructuras de repetición, bucles anidados

Utilizando Java, resuelva los siguientes enunciados.

1. Realizá un programa que resuelva el siguiente problema: Tres personas aportan


diferente capital a una sociedad y desean saber qué porcentaje del total aportó cada una
(indicando nombre y porcentaje) y cuál es el monto total aportado entre las tres. Para
resolverlo, solicitá la carga por teclado del nombre y el capital aportado por cada una de las
tres personas. El programa debe mostrar lo pedido en el siguiente formato:

Nombre: ………………., Capital aportado: $ …. , Porcentaje del capital: %........


Monto total aportado: $ ……..

2. Para entrar a la montaña rusa "Infierno en las alturas" nos piden tener al menos 7 años
y medir más de 1,40m. Definí la operación necesaria y probala con los siguientes datos:

Nombre Edad Altura ¿Puede? (V/F)


Juan 5 1.45
Ana 7 1.23
Luis 8 1.51
Olivia 8 1.39

3. Existen dos reglas que identifican dos conjuntos de valores:


A. El número es de un solo dígito.
B. El número es impar.

A partir de estas reglas, creá un algoritmo que contabilice en las variables estaEnA, estaEnB,
estaEnAmbos y noEstaEnNinguno la condición según corresponda. Para indicar si el valor
ingresado pertenece al primer conjunto, al segundo, a ambos o a ninguno, respectivamente.
Definí un lote de prueba de varios números y probá el algoritmo, escribiendo los resultados tal
como se hizo en los ejercicios anteriores.

4. Desarrollá el juego “Adivine el número”: A partir de un número “inventado” por el


programa, el usuario ingresará otro número entero tantas veces como sea necesario, hasta
que el número ingresado coincida con el inventado por el programa. Para “inventar” el número
se usará el programa de ejemplo de más abajo para la generación de un número al azar
mediante la utilización de la clase Random (note que existe un mínimo y un máximo para
determinar el rango).

En cada intento del usuario, el número se comparará con el número inventado, indicando por
pantalla si es mayor o menor al otro. Si ambos números coinciden se saldrá del ciclo y se
felicitará al usuario, informando, además, cuántos intentos necesitó para acertar.

Guía de trabajos prácticos | pág. 10


import java.util.Random;
import java.util.Scanner;

public class AdivineElNumero {


public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);


Random random = new Random();

int min = 1; // Mínimo número posible


int max = 100; // Máximo número posible
int numeroInventado = random.nextInt(max - min + 1) + min; // Genera un número al
azar dentro del rango definido
.
. //Desarrolla aquí tu algoritmo
.
scanner.close();
}
}

5. Un obrero necesita calcular su salario semanal, el cual se obtiene de la siguiente


manera:

▪ Si trabaja 40 horas o menos se le paga $16 por hora


▪ Si trabaja más de 40 horas se le paga $16 por cada una de las primeras 40 horas y $20
por cada hora extra.

Pedir al usuario que ingrese la cantidad de horas trabajadas en la semana, y mostrar por
pantalla el salario correspondiente.

6. El club de corredores nos pide un programa para obtener estadísticas de la carrera de


10 km. El mismo consiste en ingresar, por teclado, el número de corredor, las horas, los
minutos y los segundos que tardo en realizar la carrera. Tener en cuenta que al ingresar 0
como el número de corredor, finaliza el programa y debe mostrar por pantalla:
• El ganador
• El promedio en segundos de los corredores.
• El porcentaje de corredores que realizaron

Guía de trabajos prácticos | pág. 11


TECNICATURA SUPERIOR EN ANÁLISIS DE SISTEMAS
ALGORITMOS Y ESTRUCTURAS DE DATOS I

Trabajo práctico Nº 7
Subalgoritmos

Utilizando Java, resuelva los siguientes enunciados:


1. Escribir una función que permita calcular la cantidad de segundos en un tiempo dado
en horas, minutos y segundos.

2. Escribir un Programa que lee por teclado la fecha actual y la fecha de nacimiento de
una persona y calcula su edad. El programa utiliza dos funciones:

▪ fFechaValida: comprueba si la fecha leída es correcta. Retorna 1 si es correcta;


0 en caso contrario.
▪ fCalcularEdad: recibe las dos fechas y devuelve la edad.

3. Escribir las funciones que retornen la cantidad de valores que se encuentra dentro de
un rango (desde y hasta):

▪ fValidarRango: comprueba si el rango desde es menor o igual al hasta, de ser


así retorna 1; 0 en caso contrario
▪ fCantidadPositivos: cantidad de valores positivos
▪ fCantidadNegativos: cantidad de valores negativos
▪ fEstaElCero: retorna 1 si está el valor 0 en el rango; 0 en caso contrario
▪ fCantidadPares: cantidad de valores pares
▪ fCantidadImpares: cantidad de valores impares

Crear un procedimiento que se encargue de solicitar e informar el resultado del uso de


cada función. Considere que el rango a evaluar tiene que ser correcto, por lo que debe
utilizar la primera función. Si el rango no es correcto, se mostrará un error y no se
llamarán al resto de las funciones.

4. Escriba una función (fIncrementarUno) que ingrese un número entero y retorne el valor
siguiente (le suma uno al actual).

5. Utilizando la función del punto anterior, escriba un procedimiento que muestre en


pantalla los valores recibidos dentro de un determinado rango. Adicionalmente, valide
el rango reutilizando la función del punto 3 (fValidarRango).

6. Un comercio de electrodomésticos necesita para su línea de cajas un programa que le


indique al cajero el cambio que debe entregarle al cliente. Para eso se ingresan dos
números enteros, correspondientes al total de la compra y al dinero recibido.

Informar cuántos billetes de cada denominación deben ser entregados al cliente como
vuelto, de tal forma que se minimice la cantidad de billetes. Considerar que existen
billetes de $500, $100, $50, $20, $10, $5 y $1. Emitir un mensaje de error si el dinero
recibido fuera insuficiente. Ejemplo: Si la compra es de $317 y se abona con $500, el
vuelto debe contener 1 billete de $100, 1 billete de $50, 1 billete de $20, 1 billete de $10
y 3 billetes de $1.

Guía de trabajos prácticos | pág. 12


TECNICATURA SUPERIOR EN ANÁLISIS DE SISTEMAS
ALGORITMOS Y ESTRUCTURAS DE DATOS I

TRABAJO PRÁCTICO INTEGRADOR


Unidades 1 a 4

“SISTEMA GESTIÓN DE LIBRERÍAS”

Se desea implementar un sistema de gestión en la Librería “Atenea” con las siguientes


funcionalidades:

Utiliza un switch para mostrar diferentes opciones al usuario: "1. Buscar libro", "2.
Consultar promociones", "3. Comprar libros”, “4. Calificar libros" y "5. Salir". Implementa
los algoritmos correspondientes a cada opción para que el programa realice la acción
deseada:

1. “Buscar libro”: Implementa un procedimiento que reciba como parámetro un libro


(nombre y año de publicación) y verifique e informe si está disponible en la librería. Si el
libro fue publicado antes del año 2000, se considera no disponible.

2. “Consultar promociones”: Crea un procedimiento que consulte las promociones


disponibles en la librería. Pregunta al usuario el medio de pago (efectivo o tarjeta de
crédito) y solo muestre por pantalla que, si el medio de pago es efectivo, se aplica un
descuento del 20% sobre el total de la compra y si el medio de pago es con tarjeta de
crédito, se aplica un descuento del 10%.

3. “Comprar libros”:
a) Utiliza un bucle For para solicitar el nombre y el precio de cada libro (suponemos
que compra 3 libros), calculando el monto total de la compra sumando los precios
de los libros.
b) Aplica el descuento correspondiente según el medio de pago seleccionado por el
usuario (dato obtenido en la consigna anterior) utilizando una función, ésta debe
recibir como parámetro el monto total de la compra y el medio de pago, y devolver
el monto final después de aplicar el descuento.
c) El programa debe mostrar por pantalla el monto final que debe pagar el usuario y el
beneficio obtenido en caso de corresponder.

4. “Calificar libros”: realiza un algoritmo que solicite al usuario un libro y una calificación
para el mismo del 1 al 5. Utiliza una función para asegurarte de que el usuario ingrese
una calificación válida. Luego, muestra un mensaje de agradecimiento por la calificación
realizada.

5. Sale del sistema mostrando un mensaje de despedida.

Guía de trabajos prácticos | pág. 13


TECNICATURA SUPERIOR EN ANÁLISIS DE SISTEMAS
ALGORITMOS Y ESTRUCTURAS DE DATOS I

Trabajo práctico Nº 8
Primera parte
Arreglos unidimensionales

Utilizando Java, resuelva los siguientes enunciados.

1. Realice un programa que rellene un array con los 100 primeros números enteros de
forma consecutiva. Luego, visualice el resultado de forma ascendente y descendente.

2. Lea 10 números por teclado, almacénelos en un array y muestre la suma de todos los
valores, junto con el promedio.

3. Lea 10 números por teclado, 5 para un array y 5 para otro array distinto. Mostrar los 10
números en pantalla mediante un solo array.

4. Lea 5 números por teclado, los copie a otro array multiplicados por 2 y muestre el
segundo array.

5. Rellene un array con 12 nombres de personas. Luego, solicite por teclado un


determinado nombre y compruebe si existe o no dentro del array.

6. Crear un arreglo que permita almacenar un máximo de 20 números. Para ello, deberá
solicitar la carga por el usuario hasta que el mismo ha ingreso el valor -1. Luego, recorra
el vector informando los valores que se han llegado a almacenar el mismo.

7. Crear un procedimiento que sea capaz de inicializar (cargar todos los valores de un
vector) con un determinado valor.

8. Implemente un sistema en donde se tenga previamente cargado los meses de un año


dentro de un array. Cuando el usuario ingrese un valor numérico, se le deberá retornar
el correspondiente mes. Por ejemplo 1 -> Enero.

9. Modificar el punto anterior, para que el usuario elija el idioma (inglés o castellano) que
se requiere informar el valor del mes.

Guía de trabajos prácticos | pág. 14


TECNICATURA SUPERIOR EN ANÁLISIS DE SISTEMAS
ALGORITMOS Y ESTRUCTURAS DE DATOS I

Trabajo práctico Nº 9
Ordenamiento y búsqueda

Utilizando Java, resuelva los siguientes enunciados.

1. Desarrolle un algoritmo que lea un DNI y lo busque en un vector de X posiciones donde


se encuentran los documentos de identidad de las personas que pueden votar para
elecciones de presidente en el presente año. Imprima si puede votar o no. Hacer este
ejercicio con método de búsqueda secuencial.

2. En una entidad bancaria se necesita hacer un algoritmo que lea el DNI de un cliente e
imprima si se le puede hacer un préstamo o no. Sólo se les presta a usuarios que sus
DNI no estén registrados en un arreglo de 25.000 morosos que hay en DATACREDITO.
Por ser un arreglo de gran tamaño use búsqueda binaria y método de ordenamiento por
burbuja.

3. Leer el título de un libro e imprimir si puede ser prestado a un estudiante o no. En la


biblioteca se tiene un vector con los nombres de los 895 libros que son de reserva. Usar
Búsqueda secuencial.

4. Se necesita saber si dentro de un arreglo de 100 posiciones hay un número leído. Si


existe, decir cuántas veces está repetido. Usar búsqueda secuencial.

5. En una universidad se tienen dos arreglos unidimensionales: 1 llamado LÓGICA de N


posiciones y otro INFORMATICA de M, con los DNI de los alumnos que reprobaron
lógica de programación e Informática, respectivamente. Leer el DNI de un estudiante e
imprimir si reprobó las dos asignaturas, sólo lógica, sólo informática o ninguna. Hacerlo
por búsqueda secuencial y ordenar por burbuja.

NOTA: En los ejercicios donde se pide una búsqueda secuencial y un ordenamiento por burbuja
tenga en cuenta el uso de banderas para no tener que recorrer todo el vector innecesariamente.

Guía de trabajos prácticos | pág. 15


TECNICATURA SUPERIOR EN ANÁLISIS DE SISTEMAS
ALGORITMOS Y ESTRUCTURAS DE DATOS I

Trabajo práctico Nº 8
Segunda parte

Clase Vector:

1. Eliminación de elementos repetidos


Crea un `Vector` de números enteros y elimina todos los elementos duplicados, dejando
solo una instancia de cada número.

2. Ordenamiento de elementos
Crea un `Vector` de cadenas que contenga nombres de personas y ordénalos
alfabéticamente en orden ascendente.

3. Suma de elementos
Crea un `Vector` de números enteros y encuentra la suma de todos los elementos.

4. Búsqueda y reemplazo
Crea un `Vector` de cadenas que contenga nombres de frutas. Pide al usuario que
ingrese el nombre de una fruta y, si existe en el `Vector`, reemplázala por "Manzana".

5. Unión de Vectores
Crea dos `Vectores` de números enteros y luego únelos en un solo `Vector`. Asegúrate
de eliminar duplicados durante la unión.

Clase ArrayList:

6. Revertir una lista.


Crea un programa que invierta un ArrayList de enteros. Por ejemplo, [1, 2, 3, 4] se
convertiría en [4, 3, 2, 1].

7. Registro de Alumnos
Diseña un sistema de registro de alumnos para una escuela. Utiliza dos ArrayLists, uno
para los nombres de los alumnos y otro para sus calificaciones. El programa debe
permitir al usuario agregar nombres de alumnos junto con sus calificaciones y luego
mostrar el promedio de calificaciones de la clase.

8. Filtrado de Notas
Crea un ArrayList que contenga una cantidad N de números enteros. Dado que estos
números representan notas (enteros del 1 al 10), busca y elimina cualquier elemento en
el ArrayList que no cumpla con esta condición.

9. Búsqueda de DNI por Nombre


Crea dos ArrayLists, uno para nombres y otro para números de DNI. Asegurate de que
los registros en ambos ArrayLists estén relacionados en el mismo orden. Luego, solicita
al usuario un nombre y muestra el número de DNI correspondiente a esa persona. Si el
nombre no se encuentra en la lista, proporciona un mensaje indicando que no se ha
encontrado.

Guía de trabajos prácticos | pág. 16


TECNICATURA SUPERIOR EN ANÁLISIS DE SISTEMAS
ALGORITMOS Y ESTRUCTURAS DE DATOS I

Trabajo práctico Nº 10
Vectores multidimensionales, matrices

Utilizando Java, resuelva los siguientes enunciados.

1. Crear una matriz de 3x4. Cargar los valores por parte del usuario. Al finalizar muestre
su contenido en pantalla en un formato de filas y columnas. Determine cuál es el menor
y el mayor valor que se ha cargado y su posición (coordenada).

2. Crear una estructura que permita la carga de las tablas de multiplicar y su


correspondiente resultado (del 1 al 9).

3. Se quiere almacenar los números de los jugadores de fútbol que salen a la cancha en
un partido para ambos equipos. Genere la carga y visualización de la información,
procurando que no existan valores repetidos en el mismo equipo al momento de la
carga.

4. Cargar valores numéricos en una matriz de 5x5. Los valores a cargar tienen que ser
pares (positivos o negativos). Una vez finalizada la carga de valores, visualice la matriz
en forma de fila/columna. Luego, reemplace los valores negativos por 0 y vuelva a
informar.

5. Cargue los datos de una matriz numérica de 6x3. No permita que se ingrese el valor 0.
Una vez finalizada la carga, deberá reemplazar cada valor por su opuesto (signo
cambiado). Visualice el resultado final en pantalla.

6. Un consorcio desea controlar la cobranza de las expensas en un edificio de 5 pisos


donde existen 15 departamentos en cada piso.

El valor de las expensas es de $ 10.000.

Para registrar la cobranza se ingresa el número de piso (1 a 5) y el número de


departamento (correlativo de 1 a 15 en cada piso). El ingreso finaliza con un piso igual
a 99.

Al finalizar mostrar el dinero total recaudado y una tabla con una X indicando aquellos
departamentos deudores de la siguiente manera:

TOTAL RECAUDADO $ ………………

DEPARTAMENTOS DEUDORES

PISO DPTO1 DPTO2 … DPTO15


PISO 1 X
PISO 2 X X
PISO 3 X
PISO 4 X X
PISO 5 X X

Guía de trabajos prácticos | pág. 17


TECNICATURA SUPERIOR EN ANÁLISIS DE SISTEMAS
ALGORITMOS Y ESTRUCTURAS DE DATOS I

Trabajo práctico Nº 11
Archivos

Utilizando Java, resuelva los siguientes enunciados.

1. Crear un programa que maneje un archivo donde se almacena la siguiente información de


veinte personas: Nombre, Apellido, Edad y Estatura. El programa deberá almacenar la
información una vez que finalice dicha carga. El formato del archivo donde será guardada la
información debe ser de extensión .csv: cada dato separado por el carácter punto y coma (;).
Intente abrir el resultado con un programa de edición de planilla de cálculo (tipo Excel).
Tenga en cuenta que cada vez que se ejecuta el programa, se debe incrementar el contenido
del archivo (agregar al final).

2. Crear un programa que realice la lectura del archivo generado en el punto 1 y muestre los
resultados en pantalla. (Utilizar el método Split() de la clase String)*

3. Genere un programa que pregunte un nombre de archivo (ubicación) y muestre en pantalla


el contenido de ese archivo.

4. Crear dos archivos:


.: Paises.txt → Con el contenido de los países de Latinoamérica
.: Provincias.txt → Con el contenido de las provincias de Argentina

Crear un programa que le pregunte al usuario si quiere ver los países o provincias, de
acuerdo a su selección, debe mostrar su contenido en pantalla (que elija 1 o 2 con el teclado).

* El método split() es una función en Java que se utiliza para dividir una cadena en
subcadenas más pequeñas, basándose en un delimitador específico. Esta función toma
el delimitador como argumento y devuelve un array de cadenas resultante de la
división.

Guía de trabajos prácticos | pág. 18


TECNICATURA SUPERIOR EN ANÁLISIS DE SISTEMAS
ALGORITMOS Y ESTRUCTURAS DE DATOS I

TRABAJO PRÁCTICO INTEGRADOR


Unidades 5 a 8

“CONTROL DE HORAS DOCENTE”

Se desea hacer un relevamiento de la cantidad de horas que dictan clases los docentes del
Instituto Tecnológico Beltrán. Se pide realizar los siguientes pasos.

Consignas particulares:

1. Almacenar información de docentes: los datos a almacenar son Nombre y Apellido,


legajo y cantidad de horas totales.

2. El usuario debe ingresar la información hasta que decida finalizar la entrada de datos,
hasta un máximo de 30 docentes.

3. Validaciones: el número de horas de cátedra debe ser un número mayor a cero y menor
o igual a 20. Caso contrario seguir pidiendo el dato hasta que se ingrese la información
correcta. Realizar la validación mediante una función.

4. Se ha decidido administrativamente que un docente no puede tener más de 20 horas


de cátedra en la institución. Diseñar una función que reciba como parámetro el número
de legajo del docente e informe la cantidad de horas cátedra que posee y la cantidad de
horas que se le pueden asignar (sin que supere las 20 horas).

5. Al finalizar la entrada de datos, crea un archivo csv (separado por ; ) llamado "horas.csv"
y guarda la información en el siguiente formato:

Legajo Horas Ocupadas Horas disponibles


25899 16 4
31558 8 12
….

Aclaraciones:
Se debe proporcionar mensajes informativos al usuario en cada paso del programa.

Guía de trabajos prácticos | pág. 19


TECNICATURA SUPERIOR EN ANÁLISIS DE SISTEMAS
ALGORITMOS Y ESTRUCTURAS DE DATOS I

MODELOS DE EXAMEN

PRIMER EXAMEN PARCIAL

2) - Consignas a desarrollar: TEMA 1

1. Declara una variable de tipo booleano y muestra su valor por pantalla según corresponda:
“Verdadero” o “Falso”. (1pt)
2. Verifica si un número ingresado es positivo, negativo o cero. (1.5pt)
3. Calcula y muestra la suma de los números del 1 al 100 utilizando un bucle while. (1.5pt)
4. Indicar si hay código incorrecto. Escribirlo correctamente en caso afirmativo. (1.5pt)

public static void calcularArea (double base, double


altura) { ………………………………………………………………………………………
return (base * altura) / 2;
} ………………………………………………………………………………………
//en el Main:
double base = 5.0; ………………………………………………………………………………………
double altura = 8.0;
double area = calcularArea(); ………………………………………………………………………………………
System.out.println("El área del triángulo es: " +
area);

5. ¿Cuál es la salida del siguiente fragmento de código? (1.5pt)

int i = 0;
while (i < 5) {
for (int j = 0; j < i; j++) { A– 0 B– 0 C– 1 D– 0 E– 0
System.out.print(j); 1 11 12 01 01
} 2 222 123 012 012
System.out.println(); 3 3333 1234 0123 0123
i++; 4 44444 01234
}

6. Escriba la salida por pantalla del siguiente código. (1pt)

for (int i = 5; i >= 1; i--) {


System.out.print(i);
} …………………………………………………………………………………………………

7. Crear un procedimiento que le haga un 20% de descuento a un precio dado y muestre el importe
total resultante. (2pt)

Guía de trabajos prácticos | pág. 20


TECNICATURA SUPERIOR EN ANÁLISIS DE SISTEMAS
ALGORITMOS Y ESTRUCTURAS DE DATOS I

MODELOS DE EXAMEN

PRIMER EXAMEN PARCIAL

2) - Consignas a desarrollar:

1. Nuestra organización nos pide un programa que analice si una persona se encuentra dispensada de concurrir
presencialmente al trabajo como prevención del Covid-19 de acuerdo a su caso particular.

A) Los datos a solicitar son: Edad y antecedentes de salud de acuerdo a la siguiente tabla: (10%)

REF. ANTECEDENTES SANITARIOS


0 Sin antecedentes
1 Enfermedades respiratorias / cardíacas
2 Inmunodeficiencias / Diabetes
3 Embarazo

- Al no conocerse el número de empleados, al finalizar se podrá salir del programa cuando el usuario
lo indique: “¿Desea continuar? 1- Continuar 2- Salir” (15%)

- La edad ingresada debe estar validada (mayor que 0) a través de una función. Solicitar el dato hasta
que ingrese un número válido. (15%)

B) Nuestro programa deberá tener en cuenta que la persona se encuentra dispensada si: tiene 60 años o más,
posee algún antecedente sanitario, o ambas situaciones. Calcular esto mediante la función
fCalcularSituacion. (25%)

C) Cuando finalice la carga, se mostrará por pantalla la información requerida a través de un procedimiento
pMostrarInforme que solo recibirá por parámetro el dato que devuelva la función del punto anterior:
(30%)

“La persona PUEDE concurrir presencialmente al lugar de trabajo”


O
“La persona NO PUEDE concurrir presencialmente al lugar de trabajo por:
____________________________________________________________”
(“Edad avanzada” / “Antecedentes sanitarios” / “Edad avanzada con antecedentes”, según
corresponda)

2. Declare una sentencia for que itere 20 veces y muestre dichos números por pantalla: (5%)

____________________________________________________________________________________

____________________________________________________________________________________

____________________________________________________________________________________

Guía de trabajos prácticos | pág. 21


TECNICATURA SUPERIOR EN ANÁLISIS DE SISTEMAS
ALGORITMOS Y ESTRUCTURAS DE DATOS I

MODELOS DE EXAMEN

SEGUNDO EXAMEN PARCIAL

2) - Consignas a desarrollar:

El profesor desea crear una herramienta simple para gestionar las calificaciones de sus
estudiantes. Deberás escribir un programa en Java que le permita registrar las calificaciones
de los alumnos, buscar una calificación específica y guardar esta información en un archivo de
texto al finalizar.

Consignas particulares:

1. Los nombres de los alumnos se manejarán con un array llamado `nombresEstudiantes`


con espacio para almacenar los nombres de hasta 30 estudiantes.

2. Para almacenar las calificaciones de los estudiantes crear un ArrayList llamado


`calificacionesEstudiantes`.

3. El usuario debe ingresar el nombre de un estudiante y su calificación. Debe repetirse


hasta que el usuario decida finalizar la entrada de datos.

4. Crea una función llamada `validarCalificacion` que verifique que el valor numérico de
entrada esté dentro del rango de 0 a 10. Utiliza esta función para validar todas las
calificaciones ingresadas por el usuario.

5. Implementa una función llamada `buscarCalificacion` que permita al usuario ingresar


una calificación y buscar esa calificación en la lista de calificaciones. La función deberá
mostrar el nombre del estudiante o estudiantes que obtuvieron esa calificación.

6. Al finalizar la entrada de datos, crea un archivo de texto llamado "calificaciones.txt" y


guarda la información de los estudiantes en el siguiente formato:

```
NombreEstudiante1 - Calificación1
NombreEstudiante2 - Calificación2
...
NombreEstudianteN - CalificaciónN
```

Aclaraciones:
Se debe proporcionar mensajes informativos al usuario en cada paso del programa.

Guía de trabajos prácticos | pág. 22


TECNICATURA SUPERIOR EN ANÁLISIS DE SISTEMAS
ALGORITMOS Y ESTRUCTURAS DE DATOS I

MODELOS DE EXAMEN

SEGUNDO EXAMEN PARCIAL

2) - Consignas a desarrollar:

Nos piden crear un sistema de control de stock. Deberás escribir un programa en Java que nos
permita registrar, buscar y guardar en un archivo, productos de un negocio.

Consignas particulares:

1. Los productos tendrán un nombre y una descripción y serán manejados con la estructura
de datos deseada.

2. El usuario debe ingresar el nombre del producto y su descripción. Debe repetirse hasta
que el usuario decida finalizar la entrada de datos, sin un máximo establecido.

3. Crea una función llamada `validarProducto` que verifique que el producto ingresado
(nombre y/o descripción) no sea una cadena vacía ni tenga más de 255 caracteres.

4. Implementa una función llamada `buscarProducto`, la cual debe solicitar al usuario el


nombre del producto a buscar e informar si el mismo se encuentra en la lista.

5. Al finalizar la entrada de datos, crea un archivo csv (separado por ; ) llamado


"productos.csv" y guarda la información en el siguiente formato:

….
3 Notebook HP Modelo EliteBook 15’ - Intel Core i7, 8 GB RAM y 256 GB SSD
4 Cámara Canon Modelo EOS 5D Mark IV con sensor full-frame de 30.4 MP
….

También informa por pantalla la cantidad de productos que fueron efectivamente guardados.

Aclaraciones:
Se debe proporcionar mensajes informativos al usuario en cada paso del programa.

Guía de trabajos prácticos | pág. 23

También podría gustarte