Advertisement
diegokr

Programación I - Caso Trevelin

May 23rd, 2022
716
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* ************************************************************************
  2.                           L I B R E R I A S
  3. *  ***********************************************************************/
  4. import java.util.Scanner;
  5.  
  6. /* ************************************************************************
  7.    Materia: Programación I
  8.    Fecha: 20/05/21
  9.    Autor: Lic. Diego Krauthamer
  10.    Descripción: Caso Trevelin - Ejercicio 10 de la guía avanzada de
  11.                 Introducción a la programación.
  12.    Paradigma empleado: programación modular
  13.    Ultima actualización: 23/05/22.
  14. ************************************************************************ */
  15.  
  16. class trevelin{
  17.     /* ************************************************************************
  18.                  P R O G R A M A     P R I N C I P A L
  19.     *  ***********************************************************************/
  20.     // En el programa principal solo declararemos variables locales, constantes
  21.     // y realizaremos las llamadas a los módulos de la manera que sea lo más
  22.     // Corto posible, por ello no desarrollamos lógica en el mismo.
  23.     // ************************************************************************
  24.     public static void main(String[] args) {
  25.         //Declaración de objetos
  26.         Scanner in=new Scanner(System.in);
  27.  
  28.        
  29.         //Declaracion e inicialización de variables
  30.         int cantasistencias=0;
  31.         String continuar;
  32.        
  33.         //LLamada a procedimientos y funciones
  34.         do{
  35.             cantasistencias=cargar(); //Llamo a la función cargar
  36.             calcular(cantasistencias); //Llamo al procedimiento calcular
  37.             imprimir(cantasistencias);//Llama al procedimiento sitación;
  38.             continuar=continua(); //llamo a función contiua
  39.            
  40.         }while(continuar.equals("s"));
  41.        
  42.   }// F I N   P R O G R A M A     P R I N C I P A L
  43.  
  44.     /* ************************************************************************
  45.                                    M O D U L O S
  46.     *  ***********************************************************************/
  47.    
  48.     /* ************************************************************************
  49.                                    C A R G A R
  50.     *  ************************************************************************
  51.         Descripción: Realizo la carga y validación de nombre, materia y asistencias
  52.         párametros de entrada: ninguno
  53.         páramentros de salida: asistencias
  54.  
  55.     ********************************************************************** */
  56.     private static int cargar() {
  57.        
  58.         //Declaración de objetos
  59.         Scanner in=new Scanner(System.in);
  60.        
  61.         //Declaracion de variables locales
  62.         String nombre,materia;
  63.         int asistencias=0;
  64.        
  65.         //Ingreso y validacion de nombre
  66.         //Comentario:podria refinar aún más el módulo
  67.         //y realizar el ingreso y validación de cada dato en una función
  68.         do{
  69.             System.out.println("Ingrese su nombre:");
  70.             nombre=in.nextLine();
  71.            
  72.            
  73.             //Mensaje de error
  74.             if(nombre.equals("")){
  75.                 System.out.println("Error - Ingrese un nombre");
  76.             }
  77.         }while(nombre.equals(""));
  78.        
  79.         //Ingreso y validacion de materia
  80.         do{
  81.             //Ingreso de materia
  82.             System.out.println("Ingrese materia:");
  83.             materia=in.nextLine();
  84.            
  85.             //Mensaje de error
  86.             if(materia.equals("")){
  87.                 System.out.println("Error - Ingrese una materia");
  88.             }
  89.         }while(materia.equals(""));
  90.        
  91.         //Ingreso y validacion de asistencias
  92.         do{
  93.             //Ingreso de materia
  94.             System.out.println("Ingrese cantidad de asistencias");
  95.             asistencias=in.nextInt();
  96.            
  97.             //Mensaje de error
  98.             if(asistencias <1 || asistencias>15){
  99.                 System.out.println("Error - Ingrese cantidad de asistencias validas 1-15");
  100.             }
  101.         }while(asistencias <1 || asistencias>15);
  102.        
  103.         return asistencias;
  104.     }
  105.    
  106.     /* ************************************************************************
  107.                       C O N T I N U A R
  108.     *  ************************************************************************
  109.         Descripción: Pregunta y validacion al usuario de cargar otro alumno
  110.         tipo: funcion
  111.         párametros de entrada: ninguno
  112.         páramentros de salida: pcontinuar
  113.                                Este parámetro de salida es necesario
  114.                                para retornar el valor del mismo al módulo que
  115.                                lo llama ya que los tipos de datos primitivos
  116.                                no se pueden pasar por referencia en java.
  117.     ********************************************************************** */
  118.     private static String continua(){
  119.        
  120.         //Declaración de objetos
  121.         Scanner in=new Scanner(System.in);
  122.        
  123.         //Declaracion de variables locales
  124.         String continuar;
  125.        
  126.         //Ingreso y validacion de continuar
  127.         do{
  128.             System.out.println("Desea cargar otro alumno S/N");
  129.             continuar=in.nextLine();
  130.            
  131.             //Mensaje de error
  132.             if(continuar.equals("s")==false && continuar.equals("n")==false){
  133.                 System.out.println("ERROR - Ingrese S o N");
  134.             }
  135.            
  136.         }while(continuar.equals("s")==false && continuar.equals("n")==false);
  137.        
  138.         //Devuelvo un párametro
  139.         return continuar;
  140.     }
  141.    
  142.     /* ************************************************************************
  143.                       C A L C U L A R
  144.     *  ************************************************************************
  145.         Descripción: calcular y mostrar cantidad de asistencias e inasistencias
  146.         tipo: funcion
  147.         párametros de entrada: pcantasistencias. Pasar por valor ya que es un
  148.                                tipo de datos primitivo.    
  149.         páramentros de salida: ninguno
  150.  
  151.     ************************************************************************ */
  152.     private static void calcular(int pcantasistencias){
  153.        
  154.         //Declaración de constantes
  155.         //La constante la utilizamos cuando es un valor que se
  156.         //mantedrá sin cambios durante lae ejecución del sistema
  157.         final int CINASISTENCIAS=15;
  158.        
  159.         //Muestro asistencias
  160.         System.out.println("Asistencias: "+pcantasistencias);
  161.  
  162.         //Calculo las inasistencias
  163.         System.out.println("Inasistencias: "+(CINASISTENCIAS-pcantasistencias));
  164.        
  165.         //Determino la situación del alumno
  166.     }
  167.    
  168.     /* ************************************************************************
  169.                               I M P R I M I R
  170.     *  ************************************************************************
  171.         Descripción: calcular el porcenje de asitencia, determinar
  172.                      y mostrar la situación del alumno (Recursa,
  173.                      Reincoporatorio o regular)
  174.         tipo: procedimiento
  175.         párametros de entrada: pcantasistencias. Pasar por valor ya que es un
  176.                                tipo de datos primitivo.    
  177.         páramentros de salida: ninguno
  178.  
  179.     ************************************************************************ */
  180.     private static void imprimir(int pcantasistencias){
  181.        
  182.         //Declaración de constantes locales
  183.         final double CINASISTENCIAS=15.00;
  184.         final double PORCENTAJE=100.00;
  185.        
  186.         //Declaración e inicialización de variables locales
  187.         double porcasistencias=0.00;
  188.         double porcinasistencias=0.00;
  189.        
  190.         //Calculo el porcentaje de asistencias e inansistencias
  191.         porcasistencias=calc_porcentajes(pcantasistencias,1); //llamo a funcion y la asigno a una variable local
  192.         porcinasistencias=calc_porcentajes(pcantasistencias,2); //llamo a funcion y la asigno a una variable local
  193.    
  194.         //Muestro los porcentajes de asistencia e inasistencias
  195.         System.out.println("% de Asistencias:"+porcasistencias);
  196.         System.out.println("% de Inasistencias:"+porcinasistencias);
  197.  
  198.         //Determino la situación del alumno en base a su % de asistencia
  199.         situacion(porcasistencias); //llamo a procedimiento
  200.     }
  201.     /* ************************************************************************
  202.                               S I T U A C I O N
  203.     *  ************************************************************************
  204.         Descripción: Determinar y mostrar la situación del alumno en base a
  205.                      su porcentaje de asistencia.
  206.         tipo: procedimiento
  207.         párametros de entrada: pasistencia    
  208.         páramentros de salida: ninguno
  209.  
  210.     ************************************************************************ */
  211.     private static void situacion(double pasistencia){
  212.        
  213.         //Determino la situación del alumno y la muestro por pantalla
  214.         if(pasistencia < 50){
  215.             System.out.println("El alumno debe recursar");
  216.         }else if(pasistencia < 75){
  217.             System.out.println("El alumno debe rendir examen reincorporatorio");
  218.         }else{ //Asistencia se encuentra entre 75% y 100%
  219.             System.out.println("El alumno se encuentra Regular");
  220.         }
  221.     }
  222.    
  223.     /* ************************************************************************
  224.                       C A L C _ P O R C E N T A J E S
  225.     *  ************************************************************************
  226.         Descripción: calcular el porcentaje de asistencia
  227.         tipo: función
  228.         párametros de entrada: pcantasistencias
  229.                                tipo (tipo de porcentaje
  230.                                      1. Asistencia
  231.                                      2- Inasistencia)                                
  232.         páramentros de salida: porcentaje_asistencia
  233.  
  234.     ************************************************************************ */
  235.     private static double calc_porcentajes(int pcantasistencias,int ptipo_porcentaje){ 
  236.            
  237.         //declaracion de constantes
  238.         //Las constantes se utilizan cuando es un valor que permanece fijo
  239.         //durente la ejecución del programa
  240.         //Sintaxis:
  241.         //final <tipo_dato> <NOMBRE>=<valor>
  242.         final double PORC_TOTAL=100.00;
  243.         final double CANT_CLASES=15.00;
  244.            
  245.         //Declaracion de variables locales
  246.         double porcen_asistencia=0.00;
  247.         double porcen_inasistencia=0.00;
  248.        
  249.         //Calculo el porcentaje de asistencias
  250.         porcen_asistencia=(pcantasistencias/CANT_CLASES)*PORC_TOTAL;
  251.        
  252.         //Dertermino si se esta solicitando calcular % de asistencias o inasistencias
  253.         if(ptipo_porcentaje==1){
  254.            
  255.             //Devuelvo el porcentaje de asistencia
  256.             return porcen_asistencia;
  257.            
  258.         }else{ 
  259.            
  260.             //Calculo porcentaje de inasistencias
  261.             porcen_inasistencia=PORC_TOTAL - porcen_asistencia;
  262.            
  263.             //Devuelvo el porcentaje de inasistencias;
  264.             return porcen_inasistencia;
  265.         }
  266.     }
  267. }
Advertisement
RAW Paste Data Copied
Advertisement