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
   

LPP - M. Apoyo

"LPP: Este lenguaje de programación fue creado como proyecto de graduación del Ingeniero Iván Deras. Lpp es un lenguaje de programación para principiantes, el cual fue diseñado con la idea de facilitar el proceso de enseñanza-aprendizaje de un lenguaje de programación en nuestro idioma, este contiene la mayoría de instrucciones que tienen los lenguajes de programación." (http://mediatecnica.weebly.com/lpp.html).


Aqui encuentran un tutorial con lo necesario para programar en LPP,  en realidad el manejo del programa es elemental. RECOMIENDO, PRACTICAR MUCHOS ALGORTIMOS, si estas dando tus primeros pasos en la programación. 

Ya que si conoces los elementos basicos para desarrollar algoritmos (caracteristicas, ciclos, conceptos, LOGICA); Despues podras hacerlos en cualquier lenguaje, ya que  solo cambian las "Palabras reservadas"  es decir lo que escribes, más la logica permanece.