domingo, 10 de mayo de 2015

Laboratorio LPP - Ejemplos (Evidencia)

A continuacion comparto algunos ejemplos de algoritmos desarrollados en LPP.  Aunque, hacen parte de la evidencia del Laboratorio LPP de la tecnologia Análisis y Desarrollo de Sistemas de Información, no estan todos los que requiere el ejercicio, por supuesto, "Todo esta friamente calculado" (para que practiquen, que depronto se cansa el dedo de copiar y pegar y pues mejor ejercitar la mente). 

//Ejercicio 1 - Laboratorio 2
//Desarrollar un algoritmo que calcule el salario neto que debe recibir un vendedor de un almacén.
//Se debe tener en cuenta si tiene derecho o no al auxilio de transporte.
// Autor: Andres Maurcio Mendez
// Fecha: 16/Abr/2015

// Restricciones:
// 1.     Se tiene derecho al auxilio de transporte cuando el trabajador devenga hasta dos salarios mínimos mensuales.(sulbasico*2)
//         De manera que por LEY EN COLOMBIA, un empleado que supera los dos salarios mínimos incluyendo comisiones 
//        no tiene derecho al auxilio de transporte, toda vez que las comisiones son una forma de remuneración de la jornada ordinaria.
// 2. Los dias laborados deben de estar entre 1 - 30
// 3. La comision es del 2% sobre las ventas del empleado.
// 4. Salario basico = Salario Mínimo Legal Vigente(2013): 589500.
// 5. Auxilio de Transporte = 70500 * días laborados / 30

// Definicion de Variables
entero  suebasico, salario, dialaborados, auxtransporte, cedula, canprestamos
// suebasico =         sueldo basico legal, estipulado en la restriccion 4 del programa
// salario=            Almacena el valor del salario o sueldo mensual del empleado
// dialaborados=    Almacena la cantid de dias laborados en el mes
// auxtransporte=    Almacena el total del aux de transporte
// cedula=            Almacena el numero de la cedula
// canprestamos=    Almacena la cantidad de prestamos que tiene el empleado y seran desconados

real    suedevengado, comventas, totdevengado, totdeducciones, salneto, ventas, prestamos
// suevengado=        Almacena el valor del sueldo devengado (salario / 30 dias habiles) * dias laborados
// comventas=        Almacena el total de la comision por ventas
// totdevengado=    Almacena el total de las adiciones al salario, salario, comisiones, aux trans
// totdeducciones=    Almacena la suma de todos los prestamos que tiene el empleado y seran descontados en esta nomina
// salneto=            Salario neto del empleado
// ventas=            total de ventas del empleado
// prestamos=        valor de cada uno de los prestamos del empleado

cadena    [30] nombre
// nombre=            Cadena de texto para almacenar texto

//variables de verificacion
entero verificardias
// verificardias=    controla si el numero de dias esta entre 1 y 30, segun restriccion del programa Nº 2

// Contadores
entero i
// i=                 contador para ciclo liquidar prestamos

//Inicio del programa
inicio
    // Iniciacion de variables
    totdevengado <- 0
    totdeducciones <-0
    // Asignacion del sueldo. Respecto a la restriccion numero 4 del programa
    suebasico<-589500
    //Muestra info del programa
    escriba "Progama para calcular Salario del departamento de ventas."
    // Funcion para romper linea
    Llamar nueva_linea
    escriba "VERSION 1.0"
    Llamar nueva_linea
    escriba "Desarrollo: Andres Mauricio Mendez"
    Llamar nueva_linea
    Llamar nueva_linea
    // Captura de datos por teclado
    escriba "Digite cedula: "
    lea cedula
    escriba "Digite nombre: "
    lea nombre
    escriba "Digite salario: "
    lea salario
    // Captura y verificacion de dias laborados segun restruccion numero 2
    // Inicialicializa variable para controlar ciclo
    verificardias<- 0
    // Mientras no se ingrese un valor entre 1 -30 realice el siguiente siclo
    mientras verificardias <= 0 haga
        Escriba "Dias laborados: "
        Lea dialaborados
        si dialaborados > 0 entonces
            si dialaborados <=30 entonces
                // Si se cumple el requisito de dias laborados >0 y menor  igual a 30, modificamos variable para salir del ciclo
                verificardias<-1
                // Calculamos el sueldo devengado del empleado respecto al numero de dias laborados
                // Formula: sueldo devengado = (salario / 30 dias habiles) * dias laborados
                suedevengado<- (salario/30)*dialaborados
                //Incrementamos el total devengado
                totdevengado<- totdevengado + suedevengado
            sino
                // Si no se cumple la condicion informamos al usuario
                escriba "Se requiere un valor entre 1 y 30 para dias laborados."
                Llamar nueva_linea
            fin si
        sino
            // Si no se cumple la condicion informamos al usuario
            escriba "Se requiere un valor entre 1 y 30 para dias laborados."
            Llamar nueva_linea        
        fin si
    fin mientras
    // Capturamos las ventas del mes para calcular la comisión
    escriba "Digite Total Ventas: "
    lea ventas
    // Calculamos la comision de ventas, en base al 2%
    comventas<- (ventas*2)/100
    // Incrementamos el total devengado con la comision ganada por ventas
    totdevengado <- totdevengado + comventas
    // Verificamos si tiene derecho a aux transporte, teniendo como base la restriccion numero 1
    si totdevengado < (suebasico *2) entonces
        // calculamos el axu, en base a la restriccion 5
        // Auxilio de Transporte = 70500 * días laborados / 30
        auxtransporte <- (70500 * dialaborados)/30
        totdevengado <- totdevengado + auxtransporte
    sino
        auxtransporte <- 0
    fin si
    //Vamos a almacenar y calcular lo prestamos realizados
    escriba "Digite el numero de prestamos del empleado a liquidar: "
    lea canprestamos
    para i<-1 hasta canprestamos haga
        escriba "Digite valor del prestamo:"
        lea prestamos
        totdeducciones <-totdeducciones + prestamos
    fin para
    //    Calculamos el salario total
    salneto<-totdevengado - totdeducciones
    //Imprimimo resultados
    Llamar nueva_linea
    Llamar nueva_linea
    escriba "---------------  RESULTADOS ---------------"
    Llamar nueva_linea
    escriba "Cedula empleado: ",cedula
    Llamar nueva_linea
    escriba "Nombre Empleado: ", nombre
    Llamar nueva_linea
    escriba "Salario Basico: ", salario
    Llamar nueva_linea
    escriba "Dias laborados: ", dialaborados
    Llamar nueva_linea
    escriba "Salario devengado: ", suedevengado
    Llamar nueva_linea
    escriba "Auxilio de Transporte: ", auxtransporte
    Llamar nueva_linea
    escriba "Comision de Ventas: ", comventas
    Llamar nueva_linea
    escriba "Prestamos: ", totdeducciones
    Llamar nueva_linea
    escriba "Salario Neto a Recibir:", salneto
fin  

******************************************************************************
//Ejercicio 2 - Laboratorio 2
//Hacer un algoritmo que imprima los primeros 20 términos de la siguiente serie:
//1, 3, 6, 10, 15, 21, 28,……..
// Autor: Andres Maurcio Mendez
// Fecha: 16/Abr/2015

// Definicion de Variables
entero  res, varx, vary
//res=     resultado de la funcion
//vary=    variable auxiliar para la función
//varx=    contador para incremento

//Inicio del programa
inicio
    escriba "Algoritmo que impreme una serie los primeros numeros de una serie."
    // Funcion para romper linea
    Llamar nueva_linea
    escriba "VERSION 1.0"
    Llamar nueva_linea
    escriba "Desarrollo: Andres Mauricio Mendez"
    Llamar nueva_linea
    Llamar nueva_linea
    escriba "---------------------- INICIO ----------------------"
    Llamar nueva_linea
    //Ciclo que incrementa el contador x
    //inicializamos variables
    varx <-0
    vary <-0
    para varx<-0 hasta 19 haga
        res <- varx + vary + 1 // hacemos la funcion r=y+x+1
        vary<-res //incrementamos el valor de y
        escriba res // imprimimos en pantalla
        Llamar nueva_linea
    fin para
    escriba "---------------------- FINAL ----------------------"
fin

*************************************************************************

//Ejercicio 3 - Laboratorio 2
//Desarrollar un algoritmo que permita calcular los siguientes datos de una fiesta:
//¿Cuántas personas asistieron a la fiesta?
//¿Cuántos hombres y cuantas mujeres?
//-Promedio de edades por sexo
//-La edad de la persona más joven que asistió
// Autor: Andres Maurcio Mendez
// Fecha: 16/Abr/2015

// Restricciones:
// 1. No se permiten menores de edad a la fiesta
// 2. Ingresar datos hasta que se ingrese una edad igual a cero

// Definicion de Variables
entero  contador, conhombres, conmujeres, prohombres, promujeres, masjoven, edad, sexo, verificasexo, verificaprimero
// contador=        contara el numero de personas asistentes
// conhombres=        contara cuantos de los asistentes son hombres
// conmujeres=        contara cuantas de los asistentes son mujeres
// prohombres=        promedio de edad hombres
// promujeres=        promerio de mujeres
// masjoven=        edad de la persona mas joven
// edad=            edad de la persona
// sexo=            1: masculino / 2: femenino
// verificasexo=    para ciclo que verifica que hayan digitado 1 o 2 como sexo
// verificaprimero=    verifica si es la primera persona que ingresa, 1 si, 2 no

//Inicio del programa
inicio
    escriba "Algoritmo para calcular datos de una fiesta:"
    // Funcion para romper linea
    llamar nueva_linea
    escriba "VERSION 1.0"
    llamar nueva_linea
    escriba "Desarrollo: Andres Mauricio Mendez"
    llamar nueva_linea
    llamar nueva_linea
    escriba "Bienvenidos a la fiesta"
    llamar nueva_linea
    escriba "-----------------------"
    llamar nueva_linea
   
    // inicializar variables
    verificasexo<- 1
    verificaprimero<-1
    sexo<- 0
    edad<- -1 //inicializo en -1 para poder cumplir con restriccion 2 del programa
    contador<-0
    conhombres<-0
    conmujeres<-0
    prohombres<-0
    promujeres<-0
    masjoven<-0
    // ciclo para ingresar personas a la fista, se ejecutara hasta que verifica =0
   
    mientras edad <> 0 haga
        escriba "Digite edad: "
        lea edad
        //condicionamos edad para que solo se ingrese numeros positivos   
        mientras edad < 0 haga
            escriba "Digite edad: "
            lea edad
        fin mientras
        // Dedidir si tiene autorizado ingresar, segun restriccion 1
        si edad < 18 entonces
            si edad > 0 entonces // ciclo para evitar mostrar mensaje cuando se digite 0 y se quiera terminar el programa
                escriba "Ud no tiene permitido entrar, ud debe ser mayor de 18 años"
                llamar nueva_linea
                //bloque para mejorar interfax grafica
                    escriba "-----------------------"
                    llamar nueva_linea
                    llamar nueva_linea
                    escriba "Siguiente persona"
                    llamar nueva_linea
                //fin de bloque para mejorar interfax grafica
            fin si
        sino
            //verifico si es la primera persona que ingreso
            si verificaprimero=1 entonces
                // si es la primera persona ingresa, pasa a ser la mas joven
                masjoven<- edad
                verificaprimero<-2 // modificamos variable porque ya no ing. la primera persona
            sino
                // verificamos edad y modif. variable de cumplirse la condicion
                si edad < masjoven entonces
                    masjoven <- edad
                fin si
            fin si
            // permitimos ingreso y preguntamos sexo
            escriba "Ingreso permitico."
            llamar nueva_linea
            // ciclo para verificar que se digite 1  o 2 como sexo
            mientras verificasexo = 1 haga
                escriba "SEXO: 1 Mascululo, 2 Femenino: "
                lea sexo
                si sexo= 1 entonces
                    verificasexo<-2 //cambiamos el valor de la variable para salirnos del ciclo
                    contador <- contador +1 //cont. total personas
                    // verificamos sexo sumamos promedios e incrementamos contadores de hombres
                    conhombres<-conhombres+1
                    prohombres<-prohombres+edad
                    //bloque para mejorar interfax grafica
                        escriba "-----------------------"
                        llamar nueva_linea
                        llamar nueva_linea
                        escriba "Siguiente persona"
                        llamar nueva_linea
                    // fin de bloque para mejorar interfax grafica
                sino
                    si sexo= 2 entonces
                        verificasexo<-2
                        contador <- contador +1
                        // verificamos sexo sumamos promedios e incrementamos contadores de mujeres
                        conmujeres<-conmujeres+1
                        promujeres<-promujeres+edad
                        //bloque para mejorar interfax grafica
                            escriba "-----------------------"
                            llamar nueva_linea
                            llamar nueva_linea
                            escriba "Siguiente persona"
                            llamar nueva_linea
                        // fin de bloque para mejorar interfax grafica
                    fin si           
                fin si
            fin mientras
            verificasexo<-1 // retornamos el valor de la variable a 1 para proxima persona
        fin si
    fin mientras
    //bloque para mejorar interfax grafica
        escriba "-----------------------"
        llamar nueva_linea
        escriba "UD No desea ingresar mas datos"
        llamar nueva_linea
        escriba "---------:::::::--------------"
        llamar nueva_linea
    // fin de bloque para mejorar interfax grafica
    escriba "RESULTADOS"
    //calculo promedios
    prohombres <- prohombres / conhombres
    promujeres <- promujeres / conmujeres
    llamar nueva_linea
    llamar nueva_linea
    escriba "Total asistentes: ",contador
    llamar nueva_linea
    escriba "Total hombres: ", conhombres
    llamar nueva_linea
    escriba "Total mujeres: ", conmujeres
    llamar nueva_linea
    escriba "Promedio edad hombres: ", prohombres
    llamar nueva_linea
    escriba "Promedio edad mujeres: ", promujeres
    llamar nueva_linea
    escriba "Edad de persona mas joven: ", masjoven
fin
   

1 comentario: