Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* ************************************************************************
- L I B R E R I A S
- * ***********************************************************************/
- import java.util.Scanner;
- /* ************************************************************************
- Materia: Programación I
- Fecha: 20/05/21
- Autor: Lic. Diego Krauthamer
- Descripción: Caso Trevelin - Ejercicio 10 de la guía avanzada de
- Introducción a la programación.
- Paradigma empleado: programación modular
- Ultima actualización: 23/05/22.
- ************************************************************************ */
- class trevelin{
- /* ************************************************************************
- P R O G R A M A P R I N C I P A L
- * ***********************************************************************/
- // En el programa principal solo declararemos variables locales, constantes
- // y realizaremos las llamadas a los módulos de la manera que sea lo más
- // Corto posible, por ello no desarrollamos lógica en el mismo.
- // ************************************************************************
- public static void main(String[] args) {
- //Declaración de objetos
- Scanner in=new Scanner(System.in);
- //Declaracion e inicialización de variables
- int cantasistencias=0;
- String continuar;
- //LLamada a procedimientos y funciones
- do{
- cantasistencias=cargar(); //Llamo a la función cargar
- calcular(cantasistencias); //Llamo al procedimiento calcular
- imprimir(cantasistencias);//Llama al procedimiento sitación;
- continuar=continua(); //llamo a función contiua
- }while(continuar.equals("s"));
- }// F I N P R O G R A M A P R I N C I P A L
- /* ************************************************************************
- M O D U L O S
- * ***********************************************************************/
- /* ************************************************************************
- C A R G A R
- * ************************************************************************
- Descripción: Realizo la carga y validación de nombre, materia y asistencias
- párametros de entrada: ninguno
- páramentros de salida: asistencias
- ********************************************************************** */
- private static int cargar() {
- //Declaración de objetos
- Scanner in=new Scanner(System.in);
- //Declaracion de variables locales
- String nombre,materia;
- int asistencias=0;
- //Ingreso y validacion de nombre
- //Comentario:podria refinar aún más el módulo
- //y realizar el ingreso y validación de cada dato en una función
- do{
- System.out.println("Ingrese su nombre:");
- nombre=in.nextLine();
- //Mensaje de error
- if(nombre.equals("")){
- System.out.println("Error - Ingrese un nombre");
- }
- }while(nombre.equals(""));
- //Ingreso y validacion de materia
- do{
- //Ingreso de materia
- System.out.println("Ingrese materia:");
- materia=in.nextLine();
- //Mensaje de error
- if(materia.equals("")){
- System.out.println("Error - Ingrese una materia");
- }
- }while(materia.equals(""));
- //Ingreso y validacion de asistencias
- do{
- //Ingreso de materia
- System.out.println("Ingrese cantidad de asistencias");
- asistencias=in.nextInt();
- //Mensaje de error
- if(asistencias <1 || asistencias>15){
- System.out.println("Error - Ingrese cantidad de asistencias validas 1-15");
- }
- }while(asistencias <1 || asistencias>15);
- return asistencias;
- }
- /* ************************************************************************
- C O N T I N U A R
- * ************************************************************************
- Descripción: Pregunta y validacion al usuario de cargar otro alumno
- tipo: funcion
- párametros de entrada: ninguno
- páramentros de salida: pcontinuar
- Este parámetro de salida es necesario
- para retornar el valor del mismo al módulo que
- lo llama ya que los tipos de datos primitivos
- no se pueden pasar por referencia en java.
- ********************************************************************** */
- private static String continua(){
- //Declaración de objetos
- Scanner in=new Scanner(System.in);
- //Declaracion de variables locales
- String continuar;
- //Ingreso y validacion de continuar
- do{
- System.out.println("Desea cargar otro alumno S/N");
- continuar=in.nextLine();
- //Mensaje de error
- if(continuar.equals("s")==false && continuar.equals("n")==false){
- System.out.println("ERROR - Ingrese S o N");
- }
- }while(continuar.equals("s")==false && continuar.equals("n")==false);
- //Devuelvo un párametro
- return continuar;
- }
- /* ************************************************************************
- C A L C U L A R
- * ************************************************************************
- Descripción: calcular y mostrar cantidad de asistencias e inasistencias
- tipo: funcion
- párametros de entrada: pcantasistencias. Pasar por valor ya que es un
- tipo de datos primitivo.
- páramentros de salida: ninguno
- ************************************************************************ */
- private static void calcular(int pcantasistencias){
- //Declaración de constantes
- //La constante la utilizamos cuando es un valor que se
- //mantedrá sin cambios durante lae ejecución del sistema
- final int CINASISTENCIAS=15;
- //Muestro asistencias
- System.out.println("Asistencias: "+pcantasistencias);
- //Calculo las inasistencias
- System.out.println("Inasistencias: "+(CINASISTENCIAS-pcantasistencias));
- //Determino la situación del alumno
- }
- /* ************************************************************************
- I M P R I M I R
- * ************************************************************************
- Descripción: calcular el porcenje de asitencia, determinar
- y mostrar la situación del alumno (Recursa,
- Reincoporatorio o regular)
- tipo: procedimiento
- párametros de entrada: pcantasistencias. Pasar por valor ya que es un
- tipo de datos primitivo.
- páramentros de salida: ninguno
- ************************************************************************ */
- private static void imprimir(int pcantasistencias){
- //Declaración de constantes locales
- final double CINASISTENCIAS=15.00;
- final double PORCENTAJE=100.00;
- //Declaración e inicialización de variables locales
- double porcasistencias=0.00;
- double porcinasistencias=0.00;
- //Calculo el porcentaje de asistencias e inansistencias
- porcasistencias=calc_porcentajes(pcantasistencias,1); //llamo a funcion y la asigno a una variable local
- porcinasistencias=calc_porcentajes(pcantasistencias,2); //llamo a funcion y la asigno a una variable local
- //Muestro los porcentajes de asistencia e inasistencias
- System.out.println("% de Asistencias:"+porcasistencias);
- System.out.println("% de Inasistencias:"+porcinasistencias);
- //Determino la situación del alumno en base a su % de asistencia
- situacion(porcasistencias); //llamo a procedimiento
- }
- /* ************************************************************************
- S I T U A C I O N
- * ************************************************************************
- Descripción: Determinar y mostrar la situación del alumno en base a
- su porcentaje de asistencia.
- tipo: procedimiento
- párametros de entrada: pasistencia
- páramentros de salida: ninguno
- ************************************************************************ */
- private static void situacion(double pasistencia){
- //Determino la situación del alumno y la muestro por pantalla
- if(pasistencia < 50){
- System.out.println("El alumno debe recursar");
- }else if(pasistencia < 75){
- System.out.println("El alumno debe rendir examen reincorporatorio");
- }else{ //Asistencia se encuentra entre 75% y 100%
- System.out.println("El alumno se encuentra Regular");
- }
- }
- /* ************************************************************************
- C A L C _ P O R C E N T A J E S
- * ************************************************************************
- Descripción: calcular el porcentaje de asistencia
- tipo: función
- párametros de entrada: pcantasistencias
- tipo (tipo de porcentaje
- 1. Asistencia
- 2- Inasistencia)
- páramentros de salida: porcentaje_asistencia
- ************************************************************************ */
- private static double calc_porcentajes(int pcantasistencias,int ptipo_porcentaje){
- //declaracion de constantes
- //Las constantes se utilizan cuando es un valor que permanece fijo
- //durente la ejecución del programa
- //Sintaxis:
- //final <tipo_dato> <NOMBRE>=<valor>
- final double PORC_TOTAL=100.00;
- final double CANT_CLASES=15.00;
- //Declaracion de variables locales
- double porcen_asistencia=0.00;
- double porcen_inasistencia=0.00;
- //Calculo el porcentaje de asistencias
- porcen_asistencia=(pcantasistencias/CANT_CLASES)*PORC_TOTAL;
- //Dertermino si se esta solicitando calcular % de asistencias o inasistencias
- if(ptipo_porcentaje==1){
- //Devuelvo el porcentaje de asistencia
- return porcen_asistencia;
- }else{
- //Calculo porcentaje de inasistencias
- porcen_inasistencia=PORC_TOTAL - porcen_asistencia;
- //Devuelvo el porcentaje de inasistencias;
- return porcen_inasistencia;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement