Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Objetivo General:
Desarrollar aplicaciones con un enfoque de reutilización de código, aplicando la técnica
“divide y vencerás” dentro del marco de trabajo dado por la Metodología para Resolver
Problemas, impartida en la Asignatura.
Objetivos Específicos:
● Mostrar la aplicación de la Metodología para Resolver Problemas utilizando modularidad
y las técnicas o métodos aplicables en cada una de ellas.
● implementar por medio de métodos, las tareas básicas de entrada, proceso y salida,
según sea la necesidad del problema, usando el Lenguaje C#
Introducción:
Esta Guía consta de tres partes. La primera parte explica como se implementará la
Metodología para Resolver Problemas adoptada para la Asignatura, cuando se requiera
aplicar modularidad; la segunda parte da a conocer el procedimiento a seguir para crear
métodos en lenguaje C#, y solución completa de ejercicio ejemplo, haciendo uso de la
Metodología planteada; y por último, en la tercera parte, se brinda un listado de Ejercicios
Propuestos, de los cuales el docente instructor le asignará 2 a cada estudiante del grupo de
laboratorio para desarrollar durante la sesión correspondiente.
1
Antes de la etapa de Análisis:
Diagrama Top Down o diseño Jerárquico Modular, aplicando la técnica Divide y
Vencerás, donde la raíz del diagrama debe ser el namespace del Proyecto, y
de este dependerán el resto de clases/métodos que resulten del análisis.
En la etapa de Diseño:
En la Codificación de la Solución:
Escribir el código necesario para implementar la solución modular diseñada, es decir
hacer el Código Fuente. Es el programa escrito en Lenguaje C#.
Todas las demás etapas que no están nombradas acá se aplican tal cual sobre
el módulo principal
2
módulo.
5. Codificación:
a. Crear Proyecto: Crear una nueva solución/proyecto en el IDE Visual
Studio según el estándar establecido en sesiones anteriores de laboratorio
sobre la ubicación y el nombre del proyecto.
b. Codificación: Codificación (del diseño) de la Solución en Visual Studio
de los métodos.
c. Compilar (verificar sintaxis), depurar (buscar y corregir errores si los hay)
y ejecutar la solución
d. Guardar, Cerrar la solución y Finalizar.
5. Depuración: Verificar que se obtienen los resultados esperados, de lo contrario revisar los
pasos anteriores.
6. Documentar la Solución. Aplicar las técnicas de documentación interna explicadas en clase
3
2. Diagrama Jerárquico Modular:
En esta etapa se requiere interpretar lo que se está pidiendo y analizarlo más
exhaustivamente, identificando los cálculos a realizar, qué resultados deberían producir y
los datos necesarios para producir dichos resultados en la cantidad y calidad requeridos.
Además de todo lo anterior debe identificar las “piezas” o “partes” reutilizables que
pueden servir en la presente solución.
En este sentido, se debe empezar a razonar, entre otras cosas, que en el sistema
internacional la unidad para la masa es el Kilogramo, PERO que el problema plantea
que será proporcionada en Libras (lo cual involucra la necesidad de una conversión de
unidades); además que, la masa debe ser un valor positivo. Por otro lado, la unidad
para la altura o distancia, en el sistema internacional es el metro, pero estará dado en
Pies (lo cual involucra otra conversión de unidades) y que la altura también debe ser
una cantidad positiva.
Después de estas conversiones de unidades, todo estaría listo para realizar los
cálculos en sistema internacional y mostrar los resultados también en sistema
internacional.
Considerar que:
La Energía Potencial Gravitatoria EPG=w.h, da como resultado newton-mts = Joules
El peso está dado en Kilogramos . mts . = Newton
seg2
Y, que la fórmula del peso es w = m . g -> donde g representa la constante de
aceleración de la gravedad con valor 9.8 mts/seg.2
Contínuamente, se debe tratar de identificar y clasificar las “piezas” independientes y
que serán parte de la solución final; es decir, piezas que pueden ser abstraídas e
independizadas en diferentes métodos.
Siguiendo con este análisis, se identifican dos tareas, de las cuales se establecen los
métodos que pueden hacerse en cada una que son:
4
*Recordar que el manejo de las unidades es solamente a través de
mensajes, que ninguna constante, variable o método almacena, recibe o
retorna unidades, sino sólo valores.
Además del método Main que siempre estará presente, se van a programar los
siguientes métodos:
Calcular, método que recibirá la masa en libras, la altura en pies y que retornará la
energía potencial gravitatoria en sistema internacional.
Program
Main
Una vez se ha hecho el análisis y diseño del Diagrama Top-Down para la solución, se
debe, a continuación, y para cada namespace/clase/método, desarrollar el Análisis.
5
3. Análisis del Problema:
a) Definición de datos de salida
Variables de salida
Nombre Tipo Descripción
energiaPotencialGravitatoria Real Resultado del cálculo de la energía potencial
gravitatoria
---> Se debe mostrar la masa y la altura originales en la salida del programa
c) Constantes:
e) Proceso
LIBRASXKILOGRAMO = 2.20462
PIESXMETRO = 3.28084
Leer masa, altura
masaKg = LibrasAKilogramos(masa)
alturaMts = PiesAMetros(altura)
peso = CalcularPeso(masaKg)
energiaPotencialGravitatoria=CalcularEPG(peso,alturaMts)
6
4.Diseño Modular de la Solución:
Módulo Principal Main
Por cada uno de los submódulos se escribirá el nombre, se definirá si el método que se
está utilizando será estático o no. Todos los métodos utilizados en esta asignatura
serán estáticos.
7
Módulo LibrasAKilogramos Estático: sí
¿Qué hace LibrasAKilogramos? Recibe como parámetro el valor de la masa en libras y
retorna el valor de la masa en kilogramos.
LibrasAKilogramos(libras)
kilogramos = libras /
LIBRASXKILOGRAMO
Retornar kilogramos
PiesAMetros(pies)
metros = pies /
PIESXMETRO
Retornar metros
8
Módulo CalcularEPG Estático: sí
¿Qué hace CalcularEPG? Recibe como parámetros: peso en newton y altura en metros a la
que se encuentra un cuerpo y retorna la energía potencial gravitatoria
NOTA: Observar que hay restricción para los parámetros, pero que los métodos no
verifican si están recibiendo un parámetro que cumple con la restricción. Lo anterior se
debe a que aún no se están empleando estructuras selectivas/repetitivas; por el
momento, recordar que las restricciones sólo se dejan como mensajes en pantalla por
ahora
9
ACLARACIÓN: Los métodos privados y estáticos, se consideran no reutilizables. La
clase Program es static, porque no requiere instancias (objetos) para la Solución.
class Program
{
//Recuerde que las constantes deben estar dentro de la clase fuera de los métodos
const float LIBRASXKILOGRAMO = 2.20462F;
const float PIESXMETRO = 3.28084F;
const float GRAVEDAD = 9.8F;
//Entrada de Datos
Console.WriteLine("Ingrese la Masa (Libras, valor positivo): ");
masa = double.Parse(Console.ReadLine());
Console.WriteLine("Ingrese la Altura (Pies, valor positivo): ");
altura = double.Parse(Console.ReadLine());
//Proceso de Datos
masaKg = LibrasAKilogramos(masa);
alturaMts = PiesAMetros(altura);
peso = CalcularPeso(masaKg);
energiaPotencialGravitatoria = CalcularEPG(peso, alturaMts);
//Salida de Datos
Console.WriteLine("\n\nResultados.");
Console.WriteLine("Una Masa: {0:#####0.00} (Libras) a una Altura: {1:#####0.00}
(Pies)", masa, altura);
Console.WriteLine("Posee una Energía Potencial Gravitatoria de: {0:#####0.00}
Joules.", energiaPotencialGravitatoria);
Console.ReadKey();
}
/// <summary>
/// método para Calcular el peso de un cuerpo conociendo su masa en kg
/// </summary>
/// <param name="masa"></param>
/// <returns></returns>
static double CalcularPeso(double masa)
{
double peso;
peso = masa * GRAVEDAD;
return peso;
}
10
/// <summary>
/// método para Calcular la energía potencial Gravitatoria conociendo el peso y la
altura.
/// </summary>
/// <param name="peso"></param>
/// <param name="altura"></param>
/// <returns></returns>
static double CalcularEPG(double peso, double altura)
{
double energiaPotencialGravitatoria;
energiaPotencialGravitatoria = peso * altura;
return energiaPotencialGravitatoria;
}
11
k) Documentar la Solución como se explica a continuación:
///
namespace AB16777Guia5Ejemplo1
Una vez hecho lo anterior, automáticamente se desplegará un área para
comentarios (plantilla para documentación) como la que se muestra a
continuación:
/// <summary>
///
/// </summary>
namespace AB16777Guia5Ejemplo1
12
Observe que en este ejercicio se ha documentado autor y título del programa
enviando un mensaje en pantalla. También se ha utilizado el Summary para
documentar métodos, verifique que sucede al ubicarse con el mouse sobre el
nombre del método el cual se ha utilizado Summary. Documente todos los
métodos.
1. La Fábrica Esfera S.A., desea una solución que le permita conocer la cantidad de
material (volumen en mts3) necesario para fabricar el molde para una esfera y la
cantidad de bloques de material necesarios para fabricar un pedido de moldes de
longitud a en cada lado. El material que se usa para crear el molde es el acero. El
molde será en la forma de cubo, cuyo volumen viene dado por vc=a 3, mientras que el
volumen del hueco (esfera) está dado por ve=4/3 ¶ r3, dejando alrededor del hueco de
la esfera una distancia mínima de 5% entre la superficie de la esfera y la del cubo; por
lo que el diámetro de la esfera será d = a - 5a/100. Tome en cuenta que el acero
usado para fabricar los moldes se adquiere o compra en bloques de 1.25 mts 3 y que
en el proceso de fabricación se desperdicia un 5% del material en cada molde.
Además solo se fabrican moldes entre 0.10 mt y 1.00 mt de longitud por lado del cubo
y que la cantidad mínima a fabricar es de 100 unidades (moldes).
2. Dada la masa de un cuerpo y dado el tiempo que tarda en caer al suelo de una altura
h sobre la superficie de la tierra. Partiendo de que dicho cuerpo está en reposo a esa
altura h y luego se deja caer (se suelta, por lo que Vi=0). Se pide que calcule:
a) La altura (distancia que recorre el cuerpo verticalmente) hasta el suelo. h= Vi t + ½ .
g . t2 donde Vi es velocidad inicial, t tiempo y g gravedad y h altura.
b) La energía potencial gravitacional del cuerpo cuando está a la altura h.
Epg = w . h donde w es peso y h la altura.
13
c) La energía cinética del cuerpo, justo al momento de llegar al piso:
K = 1/2 m.v 2 m
**Todo en unidades sistema internacional y Suponga que son
“movimientos verticales en el vacío” sin resistencia. El peso del
cuerpo W = m.g donde w es peso, m es masa y g es gravedad de la h
tierra.
La velocidad del cuerpo, al llegar al suelo Vf = g . t donde Vf es la
velocidad, al llegar al suelo, g es la gravedad y t es el tiempo en Epg= w.g
segundos que tarda en caer, el objeto. g = 9.8 mts/seg2
3. Diseñe una solución que dada una temperatura en grados centígrados la convierta a
grados fahrenheit y grados kelvin. Debe mostrar la temperatura original y las dos
conversiones en pantalla, con sus respectivos mensajes de entrada y salida.
4. Diseñe una solución que dados masa (libras), distancia (kilómetros) y tiempo (minutos)
en que recorre móvil horizontalmente desde un punto A a un punto B Calcule e
imprima (usando sistema internacional) la energía cinética del móvil, además debe
mostrar los datos originales de entrada (masa, distancia y
tiempo).
7. Dado un número real calcule y muestre el cuadrado, cubo, cuarta y quinta potencia del
número.
8. Sin utilizar estructuras de datos (debe usar variables individuales de tipos primitivos).
Diseñe una solución que dadas dos fracciones f1 y f2, calcule e imprima la suma y el
producto de dichas fracciones donde: (NO DEBE SIMPLIFICAR LOS RESULTADOS)
suma = f1 + f2 = a / b +c / d = (ad+bc) / bd
producto = f1 . f2 = (a / b) (c / d) = ac / bd
Tanto la suma como el producto debe imprimirlos como fracciones
suma = x / y
producto = w / z
*Sugerencia, para almacenar las fracciones use 2 variables enteras para la primera
fracción y otras 2 variables enteras para la segunda fracción. De igual forma los
14
resultados guardarlos en 2 variables enteras para la suma y 2 variables enteras para
producto. *Los métodos solo pueden devolver/retornar un valor por lo que si no sabe
hacer uso de parámetros por referencia se recomienda que calcule por separado
numerador y denominador en cada operación: suma y producto. No considere
fracciones mixtas
9. Sin utilizar estructuras de datos (debe usar variables individuales de tipos primitivos).
Diseñe una solución que dada una fracción mixta,(Un número entero y una fracción
propia juntos) de la forma 4 ⅓ (cuatro unidades un tercio) la convierta a una fracción
no mixta, expresada totalmente como una fracción a/b Sin parte entera. Debe imprimir
la fracción mixta y la no mixta a pantalla.
10. Sin utilizar estructuras de datos (debe usar variables individuales de tipos primitivos).
Diseñe una solución que dadas dos fracciones mixtas, calcule e imprima la suma de
dichas fracciones. El resultado expresado como una fracción mixta; se debe mostrar
las fracciones originales.
11. Sin utilizar estructuras de datos (debe usar variables individuales de tipos primitivos).
Diseñe una solución que dadas dos números complejos (en la forma a + b i) calcule e
imprima la suma de dichos números y el producto de dichos números complejos. Debe
mostrar el resultado como número complejo.
Sugerencia para representar debe usar 2 variables reales para cada complejo igual
para el resultado. c1 = a + bi c2 = c + di c3 = c1 + c2 c4 = c1 . c2
12. Diseñe una solución que dado un ángulo en grados calcule e imprima el seno, coseno
y tangente para ese ángulo. Nota: todos los lenguajes de programación trabajan en
radianes.
13. Diseñe una solución que dado un radio de un disco, la base y altura de un rectángulo,
calcule e imprima el perímetro de la circunferencia del disco y el perímetro del
rectángulo así como el área del disco y el área del rectángulo.
14. Se necesita una aplicación para calcular la cuenta telefónica. No importa que
compañía sea, pues todas cobran por segundo exacto en llamadas y por byte en
datos. La diferencia es la tarifa por segundo y por byte. Dados las tarifas en dólares
por segundo de voz y por byte de datos y el consumo en segundos y en bytes que
tuvo el cliente, se pide que calcule e imprima el total de la factura si se sabe que
además del costo de la factura se le debe cargar al cliente 5 centavos por cada dólar o
fracción de dólar que consumió en su servicio telefónico.
15. Dada una cantidad entera de n encuestados que seleccionaron las respuestas de la
siguiente pregunta: ¿Qué música le gusta?, donde puede seleccionar más de una.
Ranchera [ ] Clásica [ ] Rock [ ] Pop [ ]
Se necesita una solución que imprima en forma de fracción (a/n) y de porcentaje lo
siguiente: cuántos gustan clásica o ranchera, cuántos gustan pop o rock y cuántos
gustan de las 4 opciones.
16. Dados 2 puntos en el plano cartesiano, calcular e imprimir la distancia entre ambos
puntos, la pendiente de la recta dada por ambos puntos, el área del rectángulo
imaginario dentro del cual está la recta (siendo la recta la diagonal que parte el
15
rectángulo en dos) y cuál es el área del triángulo imaginario, dado que la recta es la
hipotenusa.
17. Una empresa debe manejar los costos, ganancias e impuestos del negocio. Diseñe
una solución que dados en dólares para un año fiscal, las ventas totales, impuesto iva
(13%) de las ventas, los costos totales, calcule e imprima la ganancia bruta y la
ganancia neta (después de aplicar 20% de impuesto sobre la renta).
18. Se necesita una aplicación para calcular la cuenta telefónica. No importa que
compañía sea, pues todas cobran por segundo exacto en llamadas y por byte en
datos. La diferencia es la tarifa por segundo y por byte. Dados las tarifas en dólares
por segundo de voz y por byte de datos y el consumo en minutos y en Megabytes que
tuvo el cliente, se pide que calcule e imprima el total de la factura si se sabe que
además del costo de la factura se le debe cargar al cliente 5 centavos por cada dólar o
fracción de dólar que consumió en su servicio telefónico.
16