Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
PROGRAMAS
Cuaderno de Ejercicios
• Clases
• Estructuras algorítmicas de control
• Arreglos unidimensionales
• Arreglos genéricos
• Arreglos bidimensionales
Introducción
En este cuaderno de ejercicios se presentan varios problemas donde se aplican
los conceptos vistos en clase. Es muy importante resolver cada uno de los
problemas para asegurar que los conceptos se entendieron y, por lo tanto,
pudieron aplicarse en la solución de un problema.
3- A medida que los problemas que analices se tornen más complejos, puede
resultar necesario crear más de una clase general, mientras que siempre
tendrás una clase con un método main.
4- En tus clases vas a incluir dos tipos de miembros: atributos (son las
características de lo que está siendo representado por medio de la clase) y
métodos (son las operaciones válidas a aplicarse sobre los miembros de la
clase).
4. Ejercicio: Considera que se tiene 1 oficina rectangular (el usuario debera darte las
medidas) que está cubierta por 3 tapetes circulares. Crea la clase MundoOficina
y usando las clases de los ejercicios 1 y 2 calcula el área de la oficina que NO esta
cubierta por tapetes.
CientíficoMatemático
-nombre: String
-áreaEspecialidad: String
// Puedes agregar otros atributos
+constructores
+toString()
+setNombre(String): void
+getNombre(): String
+set ÁreaEspecialidad (String): void
+get ÁreaEspecialidad (): String
3 x + 36 si x ≤ 11
x 2 − 10 si 11 < x ≤ 33
y = f ( x) =
x + 6 si 33 < x ≤ 64
0 para los demás valores de x
x2 si x%4 = 0
x si x%4 = 1
6
y = f ( x) =
x si x%4 = 2
3
x + 5 si x%4 = 3
19. Ejercicio: Un número complejo consta de una parte real y una parte imaginaria
teniendo la forma a + bi, donde a y b son números reales. Así, en el número
complejo 1.5 + 3.4i, 1.5 es la parte real, y 3.4 es la parte imaginaria; en el número
complejo 2.3 - 4.8i, 2.3 es la parte real, y -4.8 es la parte imaginaria.
Considerando además, la funcionalidad básica de una clase en Java, escribe la
clase Complejo (en UML y en Java).
20. Ejercicio: Una calculadora científica puede realizar operaciones con números
complejos. Define la clase CalculadoraCompleja de tal manera que pueda sumar,
restar, multiplicar y dividir números complejos.
21. Ejercicio: Prueba los resultados del ejercicio anterior con una clase
MundoCalculadoraComplejos. Deberás presentar al usuario un menú de
operaciones a realizar con números complejos, leer la opción del usuario, la cual
será expresada a través del símbolo correspondiente a la operación (‘+’, ‘-‘, ‘*’, ‘/’),
posteriormente deberás leer dos números complejos, mandar llamar a la operación
indicada y mostrar el resultado, sin olvidar la validación pertinente en el caso de la
división.
23. Ejercicio: Escribe la clase MundoNegocio en la cual se crean dos objetos del tipo
ventas. Usa dichos objetos para probar tu solución del problema anterior,
considerando una venta de $850 y otra de $2350.
28. Ejercicio: Realiza una clase llamada Calculadora. Programa los métodos
estáticos que corresponda para que se calcule la multiplicación y la potencia sin
usar operadores ni funciones matemáticas predefinidas (biblioteca Math) en Java.
Es decir: 1 = 13,
3 + 5 = 23 = 8,
7 + 9 + 11 = 33 = 27,
13 + 15 + 17 + 19 = 43 = 64.
∑
i = 1
i i
n
(n − i )!
∑
i =0 i!
5! 4! 3! 2! 1! 1
+ + + + +
1 1! 2! 3! 4! 5!
Se requiere que optimices operaciones por lo que sólo debes llamar 1 vez a la
función de factorial, que ya tienes programada en la clase.
número 4 7 6 7 9 2 9 1
posición 0 1 2 3 4 5 6 7
posiciones par: 4, 6 , 9 , 9
posiciones impar: 7, 7, 2 , 1
38. Ejercicio: Se requiere una aplicación en Java para poder obtener los valores de
las funciones trigonométricas: seno, coseno, tangente y cotangente, utilizando las
siguientes formulas:
x3 x5 x7 x9
sen( x) = x − + − + − ......
3! 5! 7! 9!
x2 x4 x6 x8
cos( x) = 1 − + − + − ......
2! 4! 6! 8!
sen( x)
tan( x) =
cos( x)
Crea una clase llamada CalculadoraTrigonométrica para poder trabajar con las
funciones trigonométricas. Si es necesario utiliza las funciones potencia y factorial
programadas anteriormente en la clase Calculadora. La variable x está en
radianes. Realiza los algoritmos necesarios, diagramas de flujo y diagramas de
clase UML antes de realizar el código.
40. Ejercicio: Se necesita una aplicación en Java para dar de alta cuentas bancarias.
Cada cuenta bancaria tiene un número de cuenta, el nombre del cliente y el saldo.
Las cuentas deben activarse con el nombre del cliente y se les asigna
automáticamente el número de cuenta, el depósito inicial es opcional. A cada
cuenta se le deben poder realizar depósitos y retiros, verificando que estos
procedan, en caso contrario mandar un mensaje adecuado. A cada cuenta se le
puede preguntar su saldo en cada momento así como toda la información propia
de la cuenta.
Las cuentas deben poder compararse entre ellas, el criterio de comparación será
el número de cuenta.
41. Ejercicio: Una agencia de renta de automóviles desea llevar el control de los
autos que renta, para cada auto se tiene una clave única (asignada por el
sistema), la marca del auto, el año, número de kilómetros, nombre y el número de
la licencia del cliente al que se le renta el automóvil.
ARREGLOS
46. Ejercicio: Cerca del ITAM hay una institución que se especializa en dar clases de
natación y que requiere que le ayuden a estimar algunos costos para mejorar sus
instalaciones. La institución se caracteriza por su nombre, domicilio, total de
albercas y datos de las albercas (todas son de forma rectangular). Luego de las
Olimpíadas el club ha recibido muchas solicitudes de inscripción de potenciales
ganadores de medallas de oro. Para ofrecer un mejor servicio el club decidió
techar todas sus albercas, pero de manera individual para independizar el sistema
de calefacción de cada una de ellas. Se te pide que con la ayuda de la clase
Rectángulo (problema 1) calcules e imprimas la cantidad de dinero requerido si el
costo por m2 de techo es de $1000. Decide qué atributos y métodos incluir para
representar esta institución y resolver su problema.
53. Ejercicio: Se tienen los datos de un grupo de personas que participan en el coro
del ITAM. El director del coro necesita que le hagas un programa que pueda
ayudarle a manejar esa información. Define la clase Coro que tiene como atributos
los datos del director, el total de personas que forman el coro y los datos de cada
una de ellas. El total máximo de personas que participan en el coro son 30.
Puedes usar la clase Persona definida en el ejercicio 4 para almacenar los datos
del director y de cada uno de los miembros. Además debes incluir métodos que
puedan (a) Cambiar al director del coro, (b) Agregar una persona al coro, (c) Dado
el nombre de uno de sus miembros, obtener todos sus datos, (d) Dar de baja a un
miembro del coro y (e) Cambiar el domicilio de uno de sus miembros o del director.
54. Ejercicio: Define la clase Fiesta, según las especificaciones que se dan más
abajo. Observa que el atributo nombresInvitados es una lista de cadenas que
almacenará los nombres de todos los invitados. Incluye los métodos necesarios
para que puedas:
Fiesta
-fecha: String
-lugar: String
-nombresInvitados: ListaGenericaOrdenada<String>
+Fiesta()
+Fiesta(String, String)
+alta(String):boolean
+toString(): String
…
Sea n = 3
0 1 2
0 8 1 6
1 3 5 7
2 4 9 2
61. Ejercicio: Define una clase que represente a los productos que produce una cierta
industria. De cada producto se tiene clave, descripción y cantidad de unidades
producidas por mes. Por otra parte, se sabe que la industria quiere guardar las
producciones mensuales de productos a lo largo de los últimos 5 años (supón que
en un cierto mes se produce un solo tipo de producto). Si en un mes no hubo
producción, habrá null en la casilla correspondiente. Define la clase
ProduccionEmpresa que tendrá entre sus atributos una matriz. Debes incluir los
métodos necesarios para:
Mes 11
Mes 12
62. Ejercicio: Un Hotel lleva el control de sus reservaciones, cada mes se registra
cuántas reservaciones hace cada vendedor de cada tipo de habitación.
1 2 3 4
José 10 9 8 8
María 4 6 2 10
Lupita 15 2 11 8
Habitaciones dobles:
1 2 3 4
José 12 8 3 5
María 6 8 12 7
Lupita 15 12 1 4
Habitaciones suites:
1 2 3 4
José 2 2 1 0
María 3 1 2 0
Lupita 1 0 2 1
63. Ejercicio: Una constructora lleva el registro de las obras que tiene en este
momento y quiere que realices un programa en Java para poder obtener
información de los datos que tiene y así poder llevar un mejor control de los
gastos.
Símbolo Explicación
1 - Estructuras selectivas
falso
condición
verdadero
instrucción(es)
verdadero falso
condición
instrucción (es)
instrucción (es)
2 - Estructuras repetitivas
falso
condición
verdadero
instrucción(es)
instrucción (es)
verdadero
condición
falso
varControl ← valorInicial
instrucción (es)
índice <- 0
falso
(índice < tamaño) y
(encontró = falso)
verdadero
verdadero falso
colección[índice] = datoBuscado
encontró = verdadero
regresa posiciónDato
índice <- 0
Sí
índice <- índice + 1
falso
(índice = tamaño) o
(colección[dato] > datoBuscado)
verdadero
regresa índice
(Arreglo desordenado)
i=0
falso
i<n-1
v
menor = arre[i]
posic = i
j=i+1
falso
j<n
v
er
f
arre[j] <
menor
v
menor = arre[j]
posic = j
j=j+1
arre[posic] = arre[i]
arre[i] = menor
i=i+1
(Arreglo ordenado)
1) Sean los datos: x, a1, a2, a3, a4. Elabore un diagrama de flujo para calcular:
Elabore un diagrama de flujo para calcular cuánto se debe pagar por un boleto de
tren dando como datos el total de km recorridos y el número de días entre el viaje
de ida y el viaje de vuelta.
a) 850 km y 10 días.
b) 356 km y 8 días
7) Dados los datos: n, a1, a2,..., an con n > 0, Elabore un diagrama de flujo para
encontrar el máximo de los ai.
8) Una empresa que cuenta con k empleados desea realizar algunos cálculos para la
nueva nómina. Los datos con que cuenta son los sueldos de los k empleados:
Elabore un diagrama de flujo para leer los datos y contestar a las siguientes
preguntas:
Elabore un diagrama de flujo para leer los datos y contestar a las siguientes
preguntas:
a. ¿Cuál es el promedio del alumno por semestre? Indique tanto el promedio
como el semestre.
b. ¿Cuál es el promedio que obtuvo en la carrera?
∑a i
IPCT = i =1
n
∑b
i =1
i
∑ TI t
TM = t=2
n −1
a +a +a +a +a +a +a
1 2 3 4 5 6 7
+ ...
3 5 7 3 5 7 3
con: n: entero, ≥ 0
x: real
ai: reales
a0 – a1*x + a2* x2 – a3 * x3 + . . . ± an * xn
14) Un agricultor sembró en sus parcelas 4 tipos diferentes de jitomates. Cada tipo de
jitomate puede ser sembrado en más de una parcela. Los datos referentes a la
cosecha se dan a continuación:
Donde:
si va a votar,
en caso de que vote, por qué partido votará.
Elabore un diagrama de flujo para procesar esta encuesta. Los datos son:
n
resp1 (partido1)
resp2 (partido2)
...
respn (partidon)
Donde:
precio
surtido1,1 , surtido1,2 , … , -1
surtido2,1 , surtido2,2 , … , -1
…
surtido31,1 , surtido31,2 , … , -1
a) ¿Cuál fue el monto total (en pesos) de las ventas realizadas por el
camión durante el mes de enero?
b) ¿Cuál fue el día en el que surtió más litros de gas el camión?
c) ¿Cuántos días no trabajo el camión? (líneas que sólo contienen –1)
d) ¿Cuál fue el promedio de litros surtidos en cada día de trabajo?
a) Interprételo, es decir, diga qué hace en forma breve y concisa. Pruébelo primero
con n = 10 y posteriormente con n = 456.
b) Marque en el diagrama las estructuras algorítmicas usadas, indicando cuáles son.
x 0
Nota:
x, n y k son enteros
n
falso
n>0
verdadero
k n mod 10
x x * 10 + k
n n div 10
fin
18. Considere los siguientes diagramas de flujo y para cada uno: indique sobre él las
estructuras de control utilizadas, cuántas instrucciones contiene cada una de ellas
y dibuja el mapa de memoria.
falso
v≠0
verdadero
verdadero
n<1
falso
“f = 1” f←1
i←2
falso
i≤n
verdadero
f←f*i
i←i+1
“n = “, n, “f = “, f
F
Algoritmos y Programas Página 37
b) Datos: 2 5 3 0
P
verdadero n<1
falso
a, d
i←0
i<n falso
verdadero
s←a+d*i
verdadero falso
i=n-1
s s, “ – “
i←i+1
verdadero
n<0
falso
verdadero n>0
falso
Algoritmos y Programas F Página 38
c) Datos: 1 3 1 2 0
P
falso
v≠0
verdadero
verdadero
n<2
falso
verdadero falso
n=2
a←0
0 1
d←1
i←2
falso
i≤n
verdadero
m←d
a← d
d←a+m
i←i+1
i←0
“Error”
falso
i≤n
verdadero
p1 ← n – 2 * i
p2 ← i
p2 + i ≤ n falso
y
p1 ≥ p2
verdadero
p1, p2, i
p1 ← p1 -1
p2← p2 + 1
i←i+1
char letra;
int n;
boolean band;
/* Regresa el número entero de la cadena -si ésta tuviera algún valor entero. Si no
hay marca error. */
n = Integer.valueOf("90");
/* Compara las 2 cadenas: si cad1 < cad2 da negativo, si son iguales da 0 y sino
positivo. */
n = cad1.compareTo(cad2);
double valor;
valor = 90;
System.out.println("\nEl seno es " + Math.sin(valor)); // Calcula seno de “valor”