lunes, 21 de octubre de 2013

SEMANA # 27

EJM: registro centinela

elabore un algoritmo  que obtenga el salario neto de cada uno de los trabajadores de la empresa XY. se debe leer de cada registro el nombre del trabajador,su salario básico por hora, el numero de horas trabajadas y el porcentaje de retención de la fuente

La empresa desea obtener el promedio de los salarios netos de los trabajadores que ganan 1000000 o mas y saber cuantos trabajadores ganan menos de 1000000
El programa debe sacar también un listado donde aparecen el nombre, la retención en la fuente y su salario neto


SALN <- SALARIO NETO

PSALMI1 <- PORCENTAJE SALARIO MAYOR IGUAL A UN MILLON
TRBME1 <- TRABAJADORES MENOS DE UN MILLON
TRBMI1 <- TRABAJADORES MAYOR IGUAL A UN MILLON
SSALNMI1 <- SUMA DE SALARIOS NETOS MAYORES IGUAL A UN MILLON
RF <- RETENCION DE FUENTE
N <- NOMBRE
VHT <- VALOR DE HORAS TRABAJADAS
NHT <- NUMERO DE HORAS TRABAJADAS
PRF <- PORCENTAJE DE RETENCION DE FUENTE

CADENA [50] N

ENTERO TRBME1, TRBMI1, NHT
REAL SALN, PSALNMI1, SSALNMI1, RF, VHT, PRF, SALB

INICIO


SSALNMI1 <- 0

TRBME1 <- 0
TRBMI1 <- 0

ESCRIBA " Diga el nombre del trabajador: "

LEA N
LLAMAR NUEVA_LINEA

ESCRIBA " Diga el numero de horas trabajadas: "

LEA NHT
LLAMAR NUEVA_LINEA

ESCRIBA " Diga el valor de la hora trabajada: "

LEA VHT
LLAMAR NUEVA_LINEA

ESCRIBA " Diga el valor del porcentaje de retencion en la fuente: "

LEA PRF
LLAMAR NUEVA_LINEA

MIENTRAS (NHT <> 0) HAGA


SALB <- NHT*VHT

RF <- SALB*PRF
SALN <- SALB-RF

SI (SALN >= 1000000) ENTONCES


SSALNMI1 <- SSALNMI1+SALN

TRBMI1 <- TRBMI1+1

SINO


TRBME1 <- TRBME1+1


FIN SI


ESCRIBA "El  salario neto de:",N

ESCRIBA " es: ", SALN
ESCRIBA " y la retencion por fuente es: ", RF

LLAMAR NUEVA_LINEA

LLAMAR NUEVA_LINEA

ESCRIBA " Diga el nombre del trabajador: "

LEA N
LLAMAR NUEVA_LINEA

ESCRIBA " Diga el numero de horas trabajadas: "

LEA NHT
LLAMAR NUEVA_LINEA

ESCRIBA " Diga el valor de la hora trabajada: "

LEA VHT
LLAMAR NUEVA_LINEA

ESCRIBA " Diga el valor del porcentaje de retencion en la fuente: "

LEA PRF
LLAMAR NUEVA_LINEA

FIN MIENTRAS


PSALNMI1 <- (SSALNMI1)/(TRBMI1)


ESCRIBA " el porcentaje del salario neto de los trabajadores cuyo sueldo es mayor o igual a un millon es: ", PSALNMI1

LLAMAR NUEVA_LINEA
ESCRIBA " el  salario neto de los trabajadores cuyo sueldo es menor a un millon es: ", TRBME1

FIN


EJM: se desea saber la comision de ventas por cada vendedor de la compañia ABC, durante el mes de agosto del 2013 por cada vendedor se lee un registro
que contiene el codigo del vendedor, el nombre y las ventas del mes. Para obtener la comision parta de los siguiente principios para las ventas 
menores de de 10 millones pesos la comision es del 7%, para las ventas entre 10 y 50 millones la comision es del 11% y para las venta mayores 50 
millones la comision es de 19%
El programa debe mostrar el codigo, el nombre y la mision de cada uno de los vendedores 

CV <- COMISION VENTAS
CD <- CODIGO
N <- NOMBRE 
VM <- VENTAS DEL MES
CVT <- COMISION DE VENTAS TRABAJADOR

CADENA [30] N
ENTERO CD
REAL CV, VM, CVT

INICIO



ESCRIBA " Diga el nombre: "
LEA N
LLAMAR NUEVA_LINEA

ESCRIBA " Diga el codigo de trabajador: "
LEA CD
LLAMAR NUEVA_LINEA

ESCRIBA " Diga las ventas del mes: "
LEA VM
LLAMAR NUEVA_LINEA


MIENTRAS (CD <> 0) HAGA

SI (VM < 10000000)ENTONCES
CV <- VM *0.07

SINO

SI (VM > 10000000) Y (VM < 50000000) ENTONCES
CV <- VM * 0.11

SINO 
CV <- VM * 0.19

FIN SI
FIN SI

ESCRIBA "La comision de ventas de: ", N
ESCRIBA " con codigo: ", CD
ESCRIBA " es :", CV

LLAMAR NUEVA_LINEA
LLAMAR NUEVA_LINEA

ESCRIBA " Diga el nombre: "
LEA N
LLAMAR NUEVA_LINEA

ESCRIBA " Diga el codigo de trabajador: "
LEA CD
LLAMAR NUEVA_LINEA

ESCRIBA " Diga las ventas del mes: "
LEA VM
LLAMAR NUEVA_LINEA

FIN MIENTRAS 

FIN

SEMANA # 26


En este ejercicio vamos a utilizar un ciclo mientras contador con un registro identificador
Se tiene un archivo con los datos de los N trabajadores de la empresa XY; cada registro tiene el nombre, el número de horas trabajadas y el valor de la hora trabajada. Calcular el salario neto e imprimirlo con el nombre del trabajador teniendo en cuenta que si el salario es mayor 800000 la retención para impuestos es de 4.5% y para seguridad social el 2.5% si es menor retenerle para seguridad social 2% y darle un auxilio de transporte de 60000 calcule el total de aportes de los trabajadores para impuestos y para seguridad social el total de salarios pagados por la empresa
 N <- NUMERO
NOM <- NOMBRE
CONTT <- CONTADOR TRABAJADORES
TAPTIM <-   TOTAL DE APORTES DE TRABAJADORES POR IMPUESTOS
TAPTSS <-  TOTAL DE APORTES DE TRABAJADORES POR SEGURO SEOCIAL
TSALPEM <-  TOTAL DE SALARIO PAGADO POR LA EMPRESA
NHT <- NUMERO DE HORAS TRABAJADAS
VHT <- VALOR HORA TRABAJADA
SALB <- SALARIO BRUTO
RTIM <-  RETENCION IMPUESTOS
RTSS <- RETENCION SEGURIDAD SOCIAL
SALN <- SALARIO NETO

CADENA [30]NOM
ENTERO N, NHT, CONTT
REAL VHT, SALB, SALN, RTSS, RTIM
REAL TAPTIM, TAPTSS, TSALPEM

INICIO

TAPTIM <- 0
TAPTSS <- 0
TSALPEM <- 0

CONTT <-1

ESCRIBA " diga el numero de trabajadores"
LEA N
LLAMAR NUEVA_LINEA

MIENTRAS (CONTT <= N) HAGA

ESCRIBA "diga el numero de horas trabajadas"
LEA NHT
LLAMAR NUEVA_LINEA

ESCRIBA "diga el valor de hora trabajada"
LEA VHT
LLAMAR NUEVA_LINEA

ESCRIBA "Diga el nombre del tabajador"
LEA NOM
LLAMAR NUEVA_LINEA

SALB <- NHT*VHT

SI (SALB >=800000)ENTONCES

RTIM <- SALB * 0.045
RTSS <- SALB * 0.025
SALN <- SALB-RTIM-RTSS
ESCRIBA "El salarioneto de:",NOM
ESCRIBA "Es:",SALN
LLAMAR NUEVA_LINEA
LLAMAR NUEVA_LINEA

SINO

RTSS <- SALB *0.02
SALN <- SALB+60000-RTSS

ESCRIBA "El salarioneto de:",NOM
ESCRIBA "Es:",SALN
LLAMAR NUEVA_LINEA
LLAMAR NUEVA_LINEA

FIN SI

TAPTIM <- TAPTIM+RTIM
TAPTSS <- TAPTSS+RTSS
TSALPEM <- TSALPEM+SALB

CONTT <- CONTT+1

FIN MIENTRAS

ESCRIBA "El total de aportes de trabajadores por impuestos es:", TAPTIM
LLAMAR NUEVA_LINEA
ESCRIBA "El total de aportes de trabajadores por seguro seocial es:", TAPTSS
LLAMAR NUEVA_LINEA
ESCRIBA "El total de salario pagado por la empresa es:", TSALPEM

FIN

martes, 13 de agosto de 2013

SEMANA # 25

ENUNCIADOS DE REPETICIÓN

 CONTADOR : es una área de trabajo cuyo incremento o decremento es definido desde el inicio del programa el termino contador esta asociado con la acción de contar.


EJ: la registradora de un bus



ACUMULADOR:Es un área de trabajo donde se almacena un valor que puede ser variable. El término acumulador está asociado a la acción de sumar cantidades

EJM: caja registradora

PROMEDIO:Es el promedio de la división del acumulador sobre el contador

REGISTRO CENTINELA:Es el último registro que contiene una señal de fin de archivo no se procesó cuando un programa se utiliza registro centinela  se debe leer  el primer registro antes del ciclo una vez se procese este primer registro se realiza la lectura del siente corte del fin di ciclo en estos ejercicios no utilizamos el contador para finalizar el ciclo

REGISTRO IDENTIFICADOR: Indica el número de repeticiones que se deben realizar en un ciclo el registro identificador se lee antes del ciclo necesita de un contador para controlar cuando se termina de procesar todo los registro indicados en el registro identificador

CICLOS

Los computadores están diseñados para que las superaciones o el conjunto de ellas se puedan repetir  varias veces para poder implementar acciones que se deban ejecutar repetidamente en un programa utilizaremos los ciclos lo primero que nos debemos preguntar al diseñar un ciclo es:
1 Que va a contener este
2 Cuantas van hacer las repeticiones que general mente van hacer controladas por contadores
Los tres ciclos son
Haga Mientras
Haga Para
Repetir Hasta

CICLO HAGA PARA

Se utiliza para ejecutar repetidamente  un conjunto o bloque de instrucciones mientras se cumple una condición específica, es decir, permite repetir o ejecutar un bloque de instrucciones hasta que el contador llega al valor limite

SINTAXIS DEL CICLO HAGA MIENTRAS

                VARIABLE=VALOR INICIAL
                HAGA MIENTRAS CONDICION
                BLOQUE DE INSTRUCCIONES
                VARIABLE=VARIABLE+1
                FIN MIENTRAS

EJM: generar e imprimir los numeros del 0 a 10



entero cont

inicio

escriba "nombre "
llamar nueva_linea
cont <- 0
mientras cont <= 10 haga
escriba cont 
llamar nueva_linea
cont <- cont + 1
fin mientras
fin


 EJM2: Leer o entrar 10 numeros e imprima solo los pares
CT <- CONTADOR
N <- NUMEROS

ENTERO CT, N, R

INICIO
 CT <- 1

MIENTRAS(CT<=10) HAGA

ESCRIBA " Digite numero"
LEA N
LLAMAR NUEVA_LINEA

SI (N mod 2 = 0) ENTONCES
ESCRIBA " Es par ", N
LLAMAR NUEVA_LINEA

FIN SI

CT <- CT+1

ESCRIBA " Digite numero"
LEA N
LLAMAR NUEVA_LINEA

FIN MIENTRAS
FIN


jueves, 1 de agosto de 2013

SEMANA # 24

SIMULACRO  DE EVOLUCIÓN (RETOS)
RETO 1
/*Aplique condicionales anidados para hacer un algoritmo tal que dados 3 números a, b y c, determinar si la suma de cualquier pareja de ellos es igual al tercer número,
  si se cumple esta condición imprima un mensaje que diga “iguales” y en caso contrario imprima “distintos”
  D.V 
  A <- NUMERO
  B <- NUMERO 
  C <- NUMERO 
  S <- SUMA 
  S2 <- SUMA
  S3 <_ SUMA
  T <- TERCICO*/
  
  REAL A
  REAL B
  REAL C
  REAL S
  REAL S2
  REAL S3

  
  INICIO
ESCRIBA "INGRESE EL NUMERO A: "
LEA A
LLAMAR NUEVA_LINEA
ESCRIBA "INGRESE EL NUMERO B: "
LEA B
LLAMAR NUEVA_LINEA
ESCRIBA "INGRESE EL NUMERO C: "
LEA C
LLAMAR NUEVA_LINEA

S <- A + B
S2 <- A + C
S3 <- B + C

SI (S = C) ENTONCES
ESCRIBA "IGUALES"
LLAMAR NUEVA_LINEA

SINO
SI (S2 = B) ENTONCES
ESCRIBA "IGUALES"
LLAMAR NUEVA_LINEA

SINO
SI  (S3 = A) ENTONCES
ESCRIBA "IGUALES"
LLAMAR NUEVA_LINEA
SINO
ESCRIBA "DISTINTOS"

FIN SI
FIN SI
FIN SI

FIN

RETO 2

/* definicion de variables
NR <- NUMERO R
NA <- NUMERO A
NB <- NUMERO B
NC <- NUMERO C
ND <- NUMERO D
NX <- NUMERO X
NY <- NUMERO Y

*/

REAL R,NA,NB,NC,ND,NX,NY

INICIO

ESCRIBA " DIGITE EL NUMERO A: "
LEA NA
LLAMAR NUEVA_LINEA

ESCRIBA " DIGITE EL NUMERO B: "
LEA NB
LLAMAR NUEVA_LINEA

ESCRIBA " DIGITE EL NUMERO C: "
LEA NC
LLAMAR NUEVA_LINEA

ESCRIBA " DIGITE EL NUMERO D: "
LEA ND
LLAMAR NUEVA_LINEA

ESCRIBA " DIGITE EL NUMERO X: "
LEA NX
LLAMAR NUEVA_LINEA

ESCRIBA " DIGITE EL NUMERO Y: "
LEA NY
LLAMAR NUEVA_LINEA

SI ( NX * NY > 0 ) ENTONCES
R <- ( NA * NB ) / ( NC * ND ) 
ESCRIBA " EL VALOR DE R ES: ",R

SINO
SI ( NX * NY = 0 ) ENTONCES
R <- ( NA + NB ) / ( NC + ND ) 
ESCRIBA " EL VALOR DE R ES: ",R

SINO
SI ( NX * NY < 0 ) ENTONCES
R <- ( NA + NB ) - ( NC + ND )
ESCRIBA " R ES: ",R

SINO
ESCRIBA " R NO ES POSIBLE "

FIN SI
FIN SI
FIN SI

FIN

RETO 3

/*El Banco para el Pueblo está próximo a abrir sus puertas, por esta razón necesita con suma urgencia la elaboración y mantenimiento de un programa que le permita mantener 
los saldos y movimientos de las cuentas que manejará el banco.
El banco conoce para cada cuenta a aperturar, el número de cuenta, la cédula del cliente, el nombre del cliente, el tipo de cuenta
(1- Ahorro, 2- Corriente, 3 – Fal y 4 – Préstamo)  y por último, el saldo en cuenta. 

Se desea elaborar un algoritmo, el cual permita leer los datos del cliente, calcular el interés  y mostrar la siguiente información:
Para cada cliente:
Cedula, nombre y tipo de cuenta 
Monto a pagar de interés, dado por la siguiente tabla
Para cuentas tipo 1 (ahorro) el 10%
Para cuentas tipo 2 (corriente) el 8%
Para cuentas tipo 3 (fal) el 12%
Para cuentas tipo 4 (prestamos) 0%
Saldo actual
Saldo nuevo con los intereses

Para el banco:
Total monto interés pagado

NM <- NUMERO CUENTA
NC <- NUMERO CEDULA
N <- NOMBRE
TC <- TIPO DE CUENTA
SC <- SALDO CUENTA
MP# <- MONTO PAGAR
SN1# <- SALDO NUEVO CON INTERES*/

ENTERO TC, NM, NC
CADENA [30] N
REAL SC, MP, MP1, MP2, MP3, SNI, SNI2, SNI3

INICIO

ESCRIBA "Diga el numero de cuenta"
LEA NM
LLAMAR NUEVA_LINEA

ESCRIBA "Diga el numero de cedula"
LEA NC
LLAMAR NUEVA_LINEA

ESCRIBA "Diga el nombre del cliente"
LEA N
LLAMAR NUEVA_LINEA

ESCRIBA "Tenga encueta la siguiente informacion AHORRO=1;CORRIENTE=2; FAL=3; PRESTAMO=4"
LLAMAR NUEVA_LINEA
ESCRIBA " Diga el tipo de cuenta "
LEA TC
LLAMAR NUEVA_LINEA

ESCRIBA " Diga el saldo de la cuenta"
LEA SC
LLAMAR NUEVA_LINEA

SI (TC=1) ENTONCES
MP1<- NM*0.10
SNI <- MP1+SC
ESCRIBA "El monto a pagar de interes es:", MP1
LLAMAR NUEVA_LINEA
ESCRIBA "el salario nueva con intereses es:", SNI

SINO

SI (TC=2) ENTONCES
MP2 <- NM*0.08
SNI2 <- MP2+SC
ESCRIBA " El monto a pagar de interes es:",MP2
LLAMAR NUEVA_LINEA
ESCRIBA "el salario nueva con intereses es:", SNI2
LLAMAR NUEVA_LINEA

SINO

SI (TC=3) ENTONCES
MP3 <- NM*0.12
SNI3 <- MP3+SC
ESCRIBA " El monto a pagar de interes es:",MP3
LLAMAR NUEVA_LINEA
ESCRIBA "el salario nueva con intereses es:", SNI3
LLAMAR NUEVA_LINEA

SINO

SI (TC=4) ENTONCES
ESCRIBA " El monto a pagar de interes es:",MP
LLAMAR NUEVA_LINEA
ESCRIBA "el salario nueva con intereses es:", SC
LLAMAR NUEVA_LINEA
FIN SI
FIN SI
FIN SI
FIN SI



ESCRIBA " El numero de cedula es:", NC
LLAMAR NUEVA_LINEA
ESCRIBA " El nombre es:", N
LLAMAR NUEVA_LINEA
ESCRIBA " El tipo de cuenta es:", TC
LLAMAR NUEVA_LINEA
ESCRIBA "El salario actual es:", SC
LLAMAR NUEVA_LINEA

FIN 

RETO 4

/*Tomando como base los resultados obtenidos en un laboratorio de análisis clínicos, un médico determina si una persona tiene anemia o no, lo cual depende de su nivel de
 hemoglobina en la sangre, de su edad y de su sexo. Si el nivel de hemoglobina que tiene una persona es menor que el rango que le corresponde, se determina su resultado 
 como positivo y en caso contrario como negativo. La tabla en la que el medico se basa para obtener el resultado es la siguiente:

EDAD NIVEL HEMOGLOBINA
0 - 1 mes 13 - 26 g%
> 1 y < = 6 meses 10 - 18 g%
> 6 y < = 12 meses 11 - 15 g%
> 1 y < = 5 años 11.5 - 15 g%
> 5 y < = 10 años 12.6 - 15.5 g%
> 10 y < = 15 años 13 - 15.5 g%
mujeres > 15 años 12 - 16 g%
hombres > 15 años 14 - 18 g%

ED <- EDAD 
HS <- HEMOGLOBINA SANGRE
G <- GENERO
*/ 

REAL HS
ENTERO TD, ED, G

INICIO
ESCRIBA "Tenga en cuenta la siguiente informacion MESES=1; AÑOS=2"
LLAMAR NUEVA_LINEA
ESCRIBA " Diga tipo de edad"
LEA TD
LLAMAR NUEVA_LINEA
ESCRIBA "Diga la edad"
LEA ED 
LLAMAR NUEVA_LINEA
ESCRIBA "Diga hemoglobina en la sangre"
LEA HS
ESCRIBA "Tenga en cuenta la siguiente informacion MUJERES=1; HOMBRES=2"
LLAMAR NUEVA_LINEA
ESCRIBA "Diga el genero"
LEA G

SI (TD=1) ENTONCES

SI (ED = 0)Y(ED <= 1)Y (HS >= 13)Y(HS <=26) ENTONCES 
ESCRIBA "Es negativo"
LLAMAR NUEVA_LINEA
SINO 
ESCRIBA "Es positivo"
LLAMAR NUEVA_LINEA

FIN SI
SINO

SI (ED > 1)Y(ED <= 6)Y (HS >= 10)Y(HS <=18) ENTONCES 
ESCRIBA "Es negativo"
LLAMAR NUEVA_LINEA
SINO 
ESCRIBA "Es positivo"
LLAMAR NUEVA_LINEA

FIN SI

SI (ED > 6)Y(ED <= 12)Y (HS >= 11)Y(HS <=15) ENTONCES 
ESCRIBA "Es negativo"
LLAMAR NUEVA_LINEA
SINO 
ESCRIBA "Es positivo"
LLAMAR NUEVA_LINEA

FIN SI

SI(TD=2) ENTONCES

SI (ED > 1)Y(ED <= 5)Y (HS >= 11.5)Y(HS <=15) ENTONCES 
ESCRIBA "Es negativo"
LLAMAR NUEVA_LINEA
SINO 
ESCRIBA "Es positivo"
LLAMAR NUEVA_LINEA

FIN SI

SINO

SI (ED > 5)Y(ED <= 10)Y (HS >= 12.6)Y(HS <=15.5) ENTONCES 
ESCRIBA "Es negativo"
LLAMAR NUEVA_LINEA
SINO 
ESCRIBA "Es positivo"
LLAMAR NUEVA_LINEA

FIN SI

SI (ED > 10)Y(ED <= 15)Y (HS >= 13)Y(HS <=15.5) ENTONCES 
ESCRIBA "Es negativo"
LLAMAR NUEVA_LINEA
SINO 
ESCRIBA "Es positivo"
LLAMAR NUEVA_LINEA

FIN SI

SI (G=1)ENTONCES

SI (ED > 15) Y (HS >= 12)Y(HS <=16) ENTONCES 
ESCRIBA "Es negativo"
LLAMAR NUEVA_LINEA
SINO 
ESCRIBA "Es positivo"
LLAMAR NUEVA_LINEA

FIN SI

SINO

SI (G=2) ENTONCES

SI (ED > 15) Y (HS >= 14)Y(HS <=18) ENTONCES 
ESCRIBA "Es negativo"
LLAMAR NUEVA_LINEA
SINO 
ESCRIBA "Es positivo"
LLAMAR NUEVA_LINEA

FIN SI
FIN SI
FIN SI 
FIN SI
FIN SI



FIN