INGENIERÍA INGENIERÍA EN DESARROLLO DESARROLL O DE SOFTWARE
CURSO:
PROGRAMACION NET I UNIDAD 3. MÉTODOS
NOMBRE DE LA ACTIVIDAD: ACTIVIDAD ACTIVIDA D 4. PROGRAMA QUE UTILIZA MÉTODOS QUE DEVUELVEN RESULTADO
ASESOR ACADÉMICO: A CADÉMICO: NANCY ROSALINA GUTIÉRREZ SOTO DOCENTE DOCENTE EN LÍNEA: L ÍNEA: FABIAN GALVEZ GONZALEZ
ALUMNO AL UMNO (A):
CABRERA CONTRERAS MARIO GUADALUPE ES162000868
05 DE SEPTIEMBRE DE 2018
1
ACTIVIDAD ACTIVIDA D 4. PROGRAMA QUE UTILIZA MÉTODOS QUE DEVUELVEN RESULTADO RESUL TADO INSTRUCCIONES:
1.
Planteamiento del problema:
Define un proyecto en C# de tipo Consola, con una clase llamada Persona la cual debe de cumplir las siguientes condiciones: condiciones: •
•
-Los atributos de esta clase son: RFC, Nombre, Edad, Sexo (H=hombre, M= mujer), Peso y Altura. -Los métodos que debes implementar son: A. validarSexo(char sexo): comprueba que el sexo introducido es correcto. Si no es correcto, por default será H. B. mayor_menorEdad(int mayor_menorE dad(int edad): indica si es mayor de edad, devuelve booleano true si es Mayor de Edad, de lo contrario devuelve false si es Menor de Edad. C. calcularIMC(float calcularI MC(float peso, float): debe de calcular el peso ideal de la persona persona (investiga la formula para calcular IMC), considera las siguientes condiciones con base al IMC que resulte: • Si el IMC es un valor men or que 18, el método devuelve el string “PESO BAJO” • Si el IMC es un valor entre 18 y menor que 25, el método devuelve el string “NORMAL” •
Si el IMC es un valor entre 25 y menor que 27, el método devuelve el string “SOBREPESO”
•
Si el IMC es un valor entre 27 y menor que 30, el método devuelve el string “OBESIDAD GRADO I”
•
Si el IMC es un valor entre 30 y menor que 40, el método devuelve el string
•
“OBESIDAD GRADO II” Si el IMC es un valor mayor o igual a 40, el método devuelve de vuelve el string “OBESIDAD GRADO III”
D. mostrarInformacion(): mostrarInformacion(): devuelve devuelve toda la información del objeto Persona. E. Main(): desde el el cual se de funcionalidad funcionalidad a la clase Persona 2. Integra en tu programa los métodos que devuelven, así como las variables, operaciones estructuras de control e instrucciones adecuadas para que funcione correctamente. 3. Documenta el programa en base a comentarios, indicando brevemente el procedimiento que se realiza en cada sección. 4. Incluye en un documento de texto por lo menos 3 ventanas de ejecución del programa con diferentes valores asignados asignados a las variables declaradas y sus resultados. 5. Guarda la actividad en un archivo comprimido que contenga tanto el proyecto en C# como el documento de texto con las pantallas de ejecución, con el nombre DPRN1_U3_A4_XXYZ.
2
Sustituye las XX por las dos primeras letras de tu primer nombre, la Y por tu primer apellido y la Z por tu segundo apellido. 6.
Consulta la escala de evaluación para conocer los parámetros de la actividad.
7. Envía el archivo comprimido para recibir retroalimentación mediante la herramienta Tarea. Espera y atiende la retroalimentación correspondiente.
3
DIAGRAMA De clase Persona
+ string rfc + string nombre + int edad + float peso + float altura - ValidarSexo() - Mayor_menorEdad() - Imc() - MostrarInformacion()
4
De funcionamiento
5
CLASE PERSONA
Atributos o Cadena de texto rfc Cadena de texto nombre o Entero edad o o Carácter sexo Punto flotante peso o Punto flotante altura o
•
•
Constructor publico Persona(parámetros) o Parámetros Cadena de texto rfc Cadena de texto nombre Entero edad Carácter sexo Punto flotante peso Punto flotante altura Rfc de clase = rfc de constructor o Nombre de clase = nombre de constructor o o Edad de clase = edad de constructor Sexo de clase = sexo de constructor o Peso de clase = peso de constructor o o Altura de clase = altura de constructor ▪ ▪ ▪ ▪ ▪ ▪
•
•
Getter y Setter publicos o Getter y setter para Rfc Getter y setter para nombre o Getter y setter para edad o Getter y setter para sexo o Getter y setter para peso o Getter y setter para altura o Método público con retorno entero Mayor_menorEdad(int edad) o Parámetros Entero edad Si edad >= 18 o Regresa verdadero o Sino Regresa falso ▪
▪
▪
6
•
Método público con retorno char ValidarSexo(char sexo) o Parametros Carácter sexo Variables locales o Cadena de texto resp Mensaje por consola o El sexo, sexo(parámetro) es correcto? Ingrese S para Si, e ingrese N para No resp lee el carácter ingresado por consola o ▪
▪
▪ ▪
o
si resp equivale a ‘s’ o ‘S’
o
Mensaje por consola sexo correcto sexo(parámetro) Regresa sexo(parámetro) Si no si resp equivale a ‘n’ o ‘N’ ▪
•
▪
▪
Si sexo(parámetro) equivale a ‘h’ o ‘H’ •
• • ▪
Mensaje por consola sexo cambiado a M o sexo de clase vale ‘M’ regresa ‘M’
Si no Mensaje por consola sexo cambiado a H o sexo de clase vale ‘H’ regresa ‘H’
•
• •
o
•
regresa ‘H’
Método público con retorno string MostrarInformacion() Regresa la siguiente cadena: o Datos de la persona Rfc = rfc de clase Nombre = nombre de clase Edad = edad de clase Sexo = sexo de clase Peso = peso de clase Altura = atura de clase ▪ ▪ ▪ ▪ ▪ ▪ ▪
7
•
Método público con retorno string MostrarInformacion(float peso, float altura) o Parametros Punto flotante peso Punto flotante altura o Variables locales Punto flotante imc imc = peso / (altura/100)*(altura/100) o o si imc < 18 r egresa “peso bajo “ + imc si no si imc >= 18 y imc < 25 o ▪ ▪
▪
▪
▪
o
si no si imc >= 25 y imc < 27 ▪
o
regresa “Obesidad grado 2” + imc
si no si imc >= 40 ▪
o
regresa “Obesidad grado 1” + imc
si no si imc >= 30 y imc < 40 ▪
o
regresa “Sobrepeso” + imc
si no si imc >= 27 y imc < 30 ▪
o
regresa “Normal” + imc
regresa “Obesidad grado 3” + imc
si no ▪
Regresa “n/a”
8
CLASE PROGRAM Main
Variables o Entero
•
Menu = 0 Menu1 = 0 numPer = 0 edad cadena de texto o rfc nombre o carácter sexo = ‘h’ Punto flotante o Peso Altura Objetos personas [ ] Personas = new personas[100 ] o Arreglo de objetos de nombre personas de tamaño 100, hacer o prueba mensaje por consola Control de personas Menú: 1. Ingresar # de persona o 2. Salir o Menu toma el valor ingresado por consola convertido a entero Aplicar menu en un switch case Caso 1 Limpiar consola o o Mensaje por consola Ingrese Numero de persona numPer toma el valor ingresado por consola convertido a entero o o hacer prueba mensaje por consola o Persona numero: o Menu 1. Alta de datos 2.Verificar sexo ▪ ▪ ▪ ▪
▪ ▪
▪
▪ ▪
•
•
▪
• •
▪ ▪
•
▪
▪
•
▪ ▪
9
3. Verificar mayoría de edad 4. Calcular IMC 5. Datos de persona 6. Regresar Menu1 toma el valor ingresado por consola convertido a entero Aplicar menu1 en un switch case Caso 1 o Prueba Mensaje por consola RFC rfc toma el valor ingresado por consola Mensaje por consola NOMBRE nombre toma el valor ingresado por consola Mensaje por consola EDAD edad toma el valor ingresado por consola Mensaje por consola SEXO sexo toma el valor ingresado por consola Mensaje por consola PESO peso toma el valor ingresado por consola Mensaje por consola ALTURA altura toma el valor ingresado por consola personas[numPer] = nueva persona ▪ ▪ ▪ ▪
•
•
▪ ▪
▪
▪
▪
▪
▪
▪
▪
▪
▪
▪
▪
▪
(rfc, nombre, edad, sexo, peso, altura)
fallo Mensaje por consola Error al ingresar datos
▪ ▪
▪
o
Break
Caso 2 sexo toma el valor que devuelve el llamar el método ValidarSexo(sexo) ▪
10
del objeto personas[numPer] pasándole el atributo sexo del objeto break caso 3 o booleano ok ok toma el valor que devuelve el llamar el método ValidarSexo(edad) del objeto personas[numPer] pasándole el atributo edad del objeto si ok es verdadero Mensaje por consola. Mayor de edad si no Mensaje por consola. Menor de edad Break Caso 4 o Cadena de texto imc imc toma el valor que devuelve el llamar el método imc(peso, altura) del objeto personas[numPer] pasándole el atributo peso y altura del objeto Mensaje por consola Valor de imc Break Caso 5 o Mensaje por consola del valor devuelto al llamar el método MostrarInformacion() del objeto personas[numPer] Break Caso 6 o Mensaje por consola Regresando al menú anterior Break o Default Mensaje por consola Opción invalida! Break ▪
▪ ▪
▪
▪
▪
▪ ▪
▪
▪
▪
▪
▪
▪
▪
▪
Fallo
▪
Mensaje por consola Opción invalida! o Mensaje por consola •
o
11
Presione una tecla para continuar o Consola espera una tecla cualquiera Limpiar consola o Cuando menu1 sea menor que 6 y cuando menú1 sea mayor o que 6 o Break caso 2 o Mensaje por consola Ha seleccionado salir Presione una tecla para continuar o Consola espera una tecla cualquiera o Break Default Mensaje por consola o Opción invalida! Presione una tecla para continuar Consola espera una tecla cualquiera o o Limpiar consola o Break ▪
•
▪ ▪
•
▪ ▪
Fallo
o
Mensaje por consola Opción invalida! Cuando menú sea menor que 2 y menú sea mayor que 2 ▪
•
o
12
CODIFICACION Clase Prog ram using System; namespace Actividad4U3 { class Program { static void Main(string[] args) { int menu = 0, menu1 =0, numPer = 0, edad; string rfc, nombre; char sexo = 'H'; float peso, altura; Persona[] personas = new Persona[10]; do { try { Console.WriteLine("CONTROL DE IMC EN PERSONAS"); Console.WriteLine("Ingrese una opcion: " + "\n\t1. Ingresar # de persona" + "\n\t2. Salir"); menu = int.Parse(Console.ReadLine()); switch (menu) { case 1: Console.Clear(); Console.Write("Ingrese No de persona: "); numPer = int.Parse(Console.ReadLine()); do { try { Console.WriteLine("PERSONA # " + numPer); Console.WriteLine("INGRESE UNA OPCION: " + "\n\t1.Alta de datos" + "\n\t2.Verificar Sexo" + "\n\t3.Verificar Mayoria de edad" + "\n\t4.Calcular IMC" + "\n\t5.Datos de persona" + "\n\t6.Regresar"); menu1 = int.Parse(Console.ReadLine()); switch (menu1) { case 1: try { Console.Write("PERSONA: " + numPer + "\n\tRFC: "); rfc = Console.ReadLine(); Console.Write("\tNOMBRE: "); nombre = Console.ReadLine(); Console.Write("\tEDAD: "); edad = int.Parse(Console.ReadLine()); Console.Write("\tSEXO: "); sexo = char.Parse(Console.ReadLine()); Console.Write("\tPESO kg: "); peso = float.Parse(Console.ReadLine()); Console.Write("\tALTURA cm: "); altura = float.Parse(Console.ReadLine()); personas[numPer] = new Persona(rfc, nombre, edad, sexo, peso, altura); } catch ( Exception) { Console.WriteLine("Error al ingresar datos"); } break; case 2: sexo = personas[numPer].ValidarSexo(personas[numPer].Sexo); break; case 3:
13
bool ok; ok = personas[numPer].Mayor_menorEdad(personas[numPer].Edad); if (ok) Console.WriteLine("MAYOR DE EDAD"); else Console.WriteLine("MENOR DE EDAD"); break; case 4: string imc = personas[numPer].Imc(personas[numPer].Peso, personas[numPer].Altura); Console.WriteLine(imc); break; case 5: Console.WriteLine("#" + numPer + personas[numPer].MostrarInformacion()); break; case 6: Console.WriteLine("\tRegresando al menu anterior"); break; default: Console.WriteLine("\tOpcion Invalida! "); break; } } catch (Exception) { Console.WriteLine("\tOpcion Invalida! "); } Console.WriteLine("\n\tPrecione una tecla para continuar "); Console.ReadKey(); Console.Clear(); } while (menu1 < 6 || menu1 > 6); break; case 2: Console.WriteLine("\tAh seleccionado salir "); Console.WriteLine("\n\tPrecione una tecla para salir "); Console.ReadKey(); break; default: Console.WriteLine("\tOpcion Invalida! "); Console.WriteLine("\n\tPrecione una tecla para continuar "); Console.ReadKey(); Console.Clear(); break; } } catch (Exception) { Console.WriteLine("\tOpcion Invalida! "); } } while (menu < 2 || menu > 2); } } }
Clase Persona using System; namespace Actividad4U3 { class Persona { string rfc; string nombre; int edad; char sexo; float peso; float altura; public string Rfc { get => rfc; set => rfc = value; } public string Nombre { get => nombre; set => nombre = value; } 14
public public public public
int Edad { get => edad; set => edad = value; } char Sexo { get => sexo; set => sexo = value; } float Peso { get => peso; set => peso = value; } float Altura { get => altura; set => altura = value; }
public Persona(string rfc, string nombre, int edad, char sexo, float peso, float altura) { this.rfc = rfc; this.nombre = nombre; this.edad = edad; this.sexo = sexo; this.peso = peso; this.altura = altura; } public char ValidarSexo(char sexo) { string resp; Console.WriteLine( "Sexo = " + sexo + " Es correcto?"); Console.Write( "\n\tS = Si \n\tN = No\n"); resp = Console.ReadLine(); if(resp.Equals( "S") || resp.Equals("s")) { Console.WriteLine("Sexo correcto " + sexo); return sexo; } else if(resp.Equals( "N") || resp.Equals("n")) { if (sexo.Equals('H') || sexo.Equals('h')) { Console.WriteLine( "Sexo cambiado a M"); this.sexo = 'M'; return 'M'; } else { Console.WriteLine( "Sexo cambiado a H"); this.sexo = 'H'; return 'H'; } } return 'H'; } public bool Mayor_menorEdad(int edad) { if (edad >= 18) return true; else return false; } public string Imc(float peso, float altura) { float imc = peso / ((altura/100) * (altura/100)); if (imc < 18) 15
return "PESO BAJO. IMC " + imc; else if (imc >= 18 && imc < 25) return "NORMAL. IMC " + imc; else if (imc >= 25 && imc < 27) return "SOBREPESO. IMC " + imc; else if (imc >= 27 && imc < 30) return "OBESIDAD GRADO 1. IMC " + imc; else if (imc >= 30 && imc < 40) return "OBESIDAD GRADO 2. IMC " + imc; else if (imc >= 40) return "OBESIDAD GRADO 3. IMC " + imc; else return "n/a"; } public string MostrarInformacion() { return "Datos de la persona: " + "\n\tRFC: " + rfc + "\n\tNombre: " + nombre + "\n\tEdad: " + edad + "\n\tSexo: " + sexo + "\n\tPeso: " + peso + "\n\tAltura: " + altura; } } }
16
EJECUCION DEL PROGRAMA
1. Menú principal
2. Ingresar No de persona en la lista de personas a registrar, se usará el numero 3 como ejemplo
3. Submenú Persona
17
4. 1. Alta de datos. Se darán los siguientes datos de alta PERSONA # 3 RFC CACM910512AA4 Nombre Mario Cabrera Sexo H Edad 27 Peso 102 Altura 185
5. 2. Verificar sexo, como se observa se ingresó mal el sexo, hay que verificar y corregir mediante el menú 2 Sexo
H
18
6. 3. Verificar si es o no mayor de edad, al tener 27 de años si es mayor de edad Edad
27
7. 4. Calcular IMC, el imc debe ser 29.80 con los datos proporcionados Peso Altura
102 185
19
8. 5. Datos de la persona
9. 6. Regresar
10. Salir
20
FUENTES DE INFORMACION
UnADM. (2016). Unidad 3 Métodos. Programación Net 1. Universidad abierta y a distancia de México. Fecha de consulta: 05 de septiembre de 2018. Disponible en: BlackBoard Unadm.
21