Vous êtes sur la page 1sur 10

INSTITUTO POLITCNICO NACIONAL ESCUELA SUPERIOR DE CMPUTO

ANALISIS Y DISEO ORIENTADO A OBJETOS

Prctica 1

Profesor: Melara Abarca Reyna

Alumno: Prez Prez Jos Ricardo

2CV8

El tiempo de trabajo invertido fue aproximadamente de 3 horas , un aproximado de 3 horas en esfuerzo horas-persona.

Problema:

En su lenguaje de programacin favorito, que reciba como entrada datos numricos, calcule el promedio y como salida muestre la respuesta. El problema fue solucionado en Visual Studio 2012, el programa fue escrito en C#. Datos mejorados del problema: 1. El programa soporta valores con decimales. 2. Los elementos a introducir para promediar sern delimitados por el usuario, el usuario definir cuantos elementos se promediaran. 3. Los valores introducidos pueden tener n elementos despus del punto decimal para la comodidad del usuario. 4. El programa no cuenta con GUI especfica, el programa contiene un men que corre desde la consola para que pueda ser ejecutado en mquinas antiguas y este sea eficiente en su ejecucin. Lista de programas.

Se crearon 2 versiones previas a la final. El primer prototipo del programa solo aceptaba valores enteros y este contaba con cdigo que podra reducirse. Prototipo Ver 0.1 Clase Program.cs
using using using using using /* * * @author: Prez Prez Jos Ricardo @Version:0.01 @Brief: Programa que se encarga de calcular el promedio de n-1 elementos. System; System.Collections.Generic; System.Linq; System.Text; System.Threading.Tasks;

*/ namespace Promedio { class Program

static void Main(string[] args) { Prom Promedito = new Prom(); Console.Out.WriteLine("Bienvenido"); Console.Out.WriteLine("Por favor defina la cantidad de elementos a promediar"); String Read; //Se guarda el numero de elementos a promediar int Read1; //Casteamos la cadena leda en entero Double Suma; //Se guarda la suma de los elementos agregados a promediar Double Total; Read = Console.ReadLine(); Read1 = Convert.ToInt16(Read); int Read2; //Este se encargara de guardar la cantidad de elementos para enviarlos al mtodo donde se generaran los scan Read2 = Promedito.AgregarElem(Read1); //Aqu ya se enviaron la cantidad de elementos al mtodo, regresara un entero

//Agregar Excepcion Console.Out.WriteLine("Sus Elementos han sido agregados correctamente :D"); Suma = Promedito.GeneraSuma(Read2); //Aqu enviamos los elementos al mtodo encargado de guardar los elementos a agregar y en el arreglo hacer el recorrido Total = Promedito.GeneraPromedio(Read2, Suma); //Se enva la cantidad de elementos y la suma para dividirlos Console.Out.WriteLine("El promedio de sus" + Read2 + " " + "nmeros es:" + " " + Total); //Se imprime Console.ReadLine(); } } }

Clase Prom.cs
using using using using using System; System.Collections.Generic; System.Linq; System.Text; System.Threading.Tasks;

namespace Promedio { class Prom { int elemen; /*Elementos agregados a promediar*/ double promed; public int AgregarElem(int Elem) { /*Mtodo que recibe los elementos a guardar y promediar*/ elemen = Elem; return elemen;

public double GeneraSuma(int Elem) { /*Mtodo que se encarga de generar la la capacidad de poder leer datos e ir guardandolos para generar el promedio*/

double temp =0; int ini; int cont = Elem; int [] valores; valores = new int[cont]; for (ini = 0; ini < valores.Length; ini++) { Console.Out.WriteLine("Agregue el elemento" + ini); valores[ini] = Convert.ToInt32(Console.ReadLine()); } for (ini = 0; ini < valores.Length; ini++) { temp += valores[ini]; } return temp; } public double GeneraPromedio(int dato1, double dato2) { double Total = dato2 / dato1; return Total; } } }

Prototipo Ver 0.2 El segundo prototipo ya soportaba nmeros con decimales pero este no pareca lo suficientemente amable al usuario, adems fue reducida la cantidad de cdigo. Clase Program.cs
using using using using using /* * * */ namespace Promediover2 { class Program { static void Main(string[] args) { Boolean checkpoint; double total; Prom promedito = new Prom(); Console.Out.WriteLine("Bienvenido"); Console.Out.WriteLine("Por favor defina la cantidad de elementos a promediar:"); int Cant = Convert.ToInt32(Console.ReadLine()); //Se Introduce la cantidad de elementos a promediar checkpoint = promedito.compara(Cant); //Se Verifica que la cantidad de elementos sea distinto a cero System; System.Collections.Generic; System.Linq; System.Text; System.Threading.Tasks;

@author: Prez Prez Jos Ricardo @Version:0.02 @Brief: Programa que se encarga de calcular el promedio de n-1 elementos.

if (checkpoint == true) { total = promedito.Registra(Cant);

//Si el valor es distinto de cero entonces. . .

//Se registra la cantidad de elementos y se genera el promedio Console.Out.WriteLine("El promedio de los elementos:" + "" + total); //Se imprime el promedio } else Console.Out.WriteLine("Error"); //Si la cantidad ingresada es cero se produce un error. Console.ReadLine(); } } }

Clase Prom.cs
using using using using using System; System.Collections.Generic; System.Linq; System.Text; System.Threading.Tasks;

namespace Promediover2 { class Prom { public Boolean compara(int cant) { if (cant == 0) { return false; } else return true; } public double Registra(int cant) { int ini; double result=0; double[] valores; valores = new double[cant]; /*Recibe una cantidad de elementos de tipo int*/

/*Se limita el arreglo con la cantidad de elementos ingresados por el usuario*/ for (ini = 0; ini < valores.Length; ini++) { Console.Out.WriteLine("Agregue el elemento" + " " + (ini + 1)); /*Se imprime la n cantidad de veces introducidas para guardar elementos*/ valores[ini] = Convert.ToDouble(Console.ReadLine()); /*Se guardan*/ } for(ini=0;ini<valores.Length;ini++){ result+=valores[ini]; } return result/cant; /*Se regresa el promedio*/ }

} }

El tercer prototipo y final ya es mas eficiente y es mas amigable con el usuario. Prototipo Ver 0.3 Final Clase Program.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; /* @author: Prez Prez Jos Ricardo * @Version:0.03 * @Brief: Programa que se encarga de calcular el promedio de n-1 elementos. */ namespace Promediov3 { class Program { static void Main(string[] args) { Console.Out.WriteLine("Bienvenido al calculo de promedio por favor seleccione una opcion."); Boolean checkpoint; double total; int Cant = 0; Prom promedito = new Prom(); int value; bool exitMenuLoop = false; while (!exitMenuLoop) { promedito.Menu(); string menunav = Console.ReadLine(); int menuint; /*Es el limite de cases del Switch*/ bool menubool = int.TryParse(menunav, out menuint); if (menubool) { if (menuint > 0 & menuint < 4) { switch (menuint) { case 1: Console.Out.WriteLine("Por favor defina la cantidad de elementos a promediar"); Cant = Convert.ToInt32(Console.ReadLine()); //Cantidad de elementos a promediar checkpoint = promedito.compara(Cant);//Se verifica que los elementos ledos no sean cero. if (checkpoint == true) { value = Cant; //Se guarda la cantidad de elementos Console.Out.WriteLine("Cantidad Agregada con xito"); } else Console.Out.WriteLine("Error"); //Se genera error si es cero o distinto de nmeros la opcin dada. break; case 2: total = promedito.Registra(Cant); //Se enva la cantidad de elementos y se genera el promedio Console.Out.WriteLine("El promedio de los elementos:" + "" + total);

} }else{ Console.WriteLine("\nLa seleccin debe ser entre 1 y 3 como lo indica el men, por favor vuelve a seleccionar una opcin."); } } else { Console.WriteLine("Un error ha ocurrido"); //Las cadenas no son enteros } System.Threading.Thread.Sleep(5000); } } } }

break; case 3: Console.Out.WriteLine("Bye C:,presiona enter despus de leer esto C:"); Console.ReadLine(); Environment.Exit(0); break;

Clase Prom.cs
using using using using using System; System.Collections.Generic; System.Linq; System.Text; System.Threading.Tasks;

namespace Promediov3 { class Prom { public Boolean compara(int cant) { if (cant == 0) { return false; } else return true; } public double Registra(int cant) { int ini; double result = 0; double[] valores; valores = new double[cant]; for (ini = 0; ini < valores.Length; ini++) { Console.Out.WriteLine("Agregue el valor del elemento" + " " + (ini + 1)); valores[ini] = Convert.ToDouble(Console.ReadLine()); } for (ini = 0; ini < valores.Length; ini++) { result += valores[ini]; }

return result/cant;

public void Menu() { Console.Out.WriteLine("1.- Definir Cantidad de Elementos"); Console.Out.WriteLine("2.- Agregar valores y Generar Promedio"); Console.Out.WriteLine("3.- Salir"); } } }

Pruebas. Pantalla Inicial.

Seleccionamos la Opcin 1 del programa para definir la cantidad de elementos.

Definiremos la cantidad de elementos a promediar, en este caso 4.

Ahora que agregamos la cantidad de elementos y ya que estn cargados podemos definir los valores de los 4 elementos a promediar y generar un promedio.

Ahora comprobamos el resultado con la calculadora de Google.

Conteste las siguientes preguntas: 1. Cunto tiempo le tom implementar esta solucin (tiempo transcurrido total)? R. Un total de 3 horas aproximadamente ya que se hicieron versiones previas a la final. 2. Cunto esfuerzo total le tom (en horas-persona)? R. 3 horas persona. 3. Su solucin coincide con el problema? (Explicar - no slo si / no). R. Si coincide con el problema principal. 4. Qu tan "buena" es su solucin? (Explique su respuesta debe estar relacionada la parte A - 3er punto - por ejemplo, cuntos errores encontr y tuvo que arreglar?). R. Encontr dos observaciones en torno a la definicin del problema, que los elementos tenan que ser delimitados o no, yo propongo en mi solucin que los elementos a promediar sean delimitados por el usuario, el segundo punto es que pueden ser promediados los elementos con valores decimales.

Vous aimerez peut-être aussi