Problemas de Metodologia JSL

65
UNIVERSIDAD TECNOLÓGICA DEL NORTE DE GUANAJUATO (UTNG) Metodología de la programación Grupo: GSI-0913 Profesor: Ing. Guillermo Ojeda. José Sandoval López No. Control: 1212100802 Dolores Hidalgo, C.I.N. Guanajuato a 06 de noviembre de 2012.

Transcript of Problemas de Metodologia JSL

Page 1: Problemas de Metodologia JSL

UNIVERSIDAD TECNOLÓGICA

DEL NORTE DE GUANAJUATO

(UTNG)

Metodología de la programación

Grupo: GSI-0913

Profesor: Ing. Guillermo Ojeda.

José Sandoval López

No. Control: 1212100802

Dolores Hidalgo, C.I.N. Guanajuato a 06 de noviembre de 2012.

Page 2: Problemas de Metodologia JSL

PROBLEMAS

ESTRUCTURAS SECUENCIALES

1.- Dada un cantidad en pesos, obtener la equivalencia en dólares, asumiendo que la unidad

cambiaría es un dato desconocido.

Pseudocódigo:

Proceso sin_titulo

Escribir "Cantidad De Pesos ";

Leer Pesos;

Escribir "Tasa Cambiaria ";

Leer Tasa;

Dolares<-Pesos/Tasa;

Escribir "Total de Pesos ";

Escribir Pesos;

Escribir "Tasa Cambiaria ";

Escribir Tasa;

Escribir "Equivalencia En Dolares ";

Escribir Dolares;

FinProceso

Corridas:

Corrida Datos Salida

Pesos Tasa Equivalencia

1 1500 11.5 130.434783

2 50000 12 4166.66667

3 30000 11.2 2678.57143

Page 3: Problemas de Metodologia JSL

1.- Leer un número y escribir el valor absoluto del mismo. Pseudocódigo: Proceso sin_titulo Escribir "Ingrese el valor de numero:"; Leer numero; Si numero<0.0 Entonces absoluto <- -numero; SiNo absoluto <- numero; FinSi Escribir "Valor de absoluto: ", absoluto; FinProceso

Corrida Datos Salida

Numero Valor absoluto

1 1 1

2 45 45

3 1000 1000

Page 4: Problemas de Metodologia JSL

3) La presión, el volumen y la temperatura de una masa de aire se relacionan por la formula:

Masa=(presión*volumen)/(0.37*(temperatura+460))

1.-Proceso sin_titulo

2.- Escribir "Ingresa la presion";

3.- Leer presion;

4.- Escribir "Ingresa volumen";

5.- Leer volumen;

6.- Escribir "Ingresa temperatura";

7.- Leer temperatura;

8.-

9.- masa<-(Presion*volumen)/(0.37*(temperatura+460));

10.-

11.- Escribir "La masa correspondiente a los datos ingresados es de: ", masa;

12.-

13.- FinProceso

CORRIDA DATOS DE ENTRADA SALIDA

PRESIÓN VOLUMEN TEMPERATURA MASA

1 12 10 15 0.682780512

2 5 20 15 0.5689900427

3 7 10 27 0.3884788279

Page 5: Problemas de Metodologia JSL

4) Calcular el número de pulsaciones que una persona debe tener por cada 10 segundos de

ejercicio, si la formula es:

Num pulsaciones=(220-edad)/10

Proceso sin_titulo

Escribir "Ingresa la edad del paciente";

Leer edad;

pulsaciones<-((220-edad)/10);

Escribir "pulsaciones por cada 10 seg: ", pulsaciones;

FinProceso

CORRIDA DATOS DE

ENTRADA

SALIDA

EDAD PULSACIONES

1 18 20

2 28 19

3 29 19

4 48 17

Page 6: Problemas de Metodologia JSL

5) Calcular el nuevo salario de un obrero si obtuvo un incremento del 25% sobre su salario

anterior.

Proceso sin_titulo

Escribir "introducir sueldo";

Leer SUE;

Sup<-(SUE*.25)+SUE;

Escribir "Nuevo sueldo es de " , Sup;

FinProceso

Corrida Datos Salida

Sueldo Sueldo + Incremento

1 3000 3750

2 1500 1875

3 8000 10000

Page 7: Problemas de Metodologia JSL

Proceso sin_titulo

Escribir "introducir sueldo anual";

Leer HOSPITAL

GIN<-(HOSPITAL*.40);

TRA<-(HOSPITAL*.30);

PED<-(HOSPITAL*.30);

Escribir "Presupuesto de ginecologia es de",GIN;

Escribir "Presupuesto de traumatologia es de",TRA;

Escribir "Presupuesto de padiatria es de",PED;

FinProceso

Corrida Datos Salida

Sueldo Anual Presupuesto Ginecología Traumatología Pediatría

1 150000 60000 45000 45000

2 400000 160000 120000 120000

3 456789 182715.6 137036.7 137036.7

Page 8: Problemas de Metodologia JSL

7.- El dueño de una tienda compra un articulo a un precio determinado. Obtener el precio

en que lo debe vender para obtener una ganancia del 30%.

Pseudocódigo

Inicio

Escribir: “precio del articulo”

Leer: precio

Ganancia= precio*.30

Escribir: “ganancia”

Total= ganancia+precio

Escribir: total

Fin

8.- Todos los lunes, miércoles y viernes, una persona corre la misma ruta y cronometra los

tiempos obtenidos. Determinar el tiempo promedio que la persona tarda en recorrer la ruta

en una semana cualquiera.

Inicio

Escribir: “tiempo del lunes”

Leer: uno

Escribir: “tiempo del miércoles”

Leer: dos

Escribir: “tiempo del viernes”

Leer: tres

Tiempo= uno+dos+tres

Escribir: tiempo

Fin

Corrida

Corridas Datos de Entrada

Salida

1 5 6.5

2 10 13

3 4 5.2

4 20 26

Corridas Datos de

Entrada Salida

a b c

1 3 3 6

2 4 4 8

Page 9: Problemas de Metodologia JSL

9.- Tres personas deciden invertir su dinero para fundar una empresa. Cada una de ellas

invierte una cantidad distinta. Obtener el porcentaje que cada quien invierte con

respecto a la cantidad total invertida.

Proceso sin_titulo

Escribir "cantidad 1";

Leer Cantidad1;

Escribir "cantidad 2";

Leer Cantidad2;

Escribir "cantidad 3";

Leer Cantidad3;

Tot<-Cantidad1+Cantidad2+Cantidad3;

Uno<-Cantidad1/Tot*100;

Dos<-Cantidad2/Tot*100;

Tre<-Cantidad3/Tot*100;

Escribir "resultado 1 es.." ,Uno,"%";

Escribir "resultado 2 es..", Dos,"%";

Escribir "resultado 3 es...", Tre,"%";

FinProceso

9.-Tres personas deciden invertir su dinero para fundar una empresa. Cada una de ellas invierte

una cantidad distinta. Obtener el porcentaje que cada quien invierte con respecto a la cantidad

total invertida

Pseudocódigo

Proceso sin_titulo

Escribir "ingrese la cantidad de la persona 1"

Leer per1

Escribir "ingrese la cantidad de la persona 2"

Page 10: Problemas de Metodologia JSL

Leer per2

Escribir "ingrese la cantidad de la persona 3"

Leer per3

cantidadto<-per1+per2+per3;

pp1<-per1*100/cantidadto

pp2<-per2*100/cantidadto

pp3<-per3*100/cantidadto

Escribir "porcentaje persona 1: ",pp1

Escribir "porcentaje persona 2: ",pp2

Escribir "porcentaje persona 3: ",pp3

FinProceso

10.-Un alumno desea saber cual será su promedio general en la tres materias mas difíciles que

surca y cua será el promedio que obtendrá en cada una de ellas. Estas materias se evalúan como

se muestra a continuación:

La calificación de matemáticas se obtiene de la sig. Manera:

Examen 90%

Promedio de tareas 10%

En esta materia se pidió un total de tres tareas

La calificación de física se obtiene de la sig. Manera:

Examen 80%

Promedio de tareas 20%

En esta materia se pidió un total de dos tareas.

La calificación de química se obtiene de la sig. Manera:

Examen 85%

Corrida Entrada cantidad Porcentaje

Persona 1 Persona 2 Persona 3 Persona 1 Persona 2 Persona 3

1 20 50 100 11.76 29.41 58.82

2 1000 2000 3000 16.67 33.33 50

Page 11: Problemas de Metodologia JSL

Promedio de tareas 15%

En esta materia se pidió un promedio de tres tareas

Pseudocódigo

Proceso sin_titulo

Escribir "escribe que sacaste en el examen de

matematicas"

Leer examate

Escribir "escribe cuantas tareas entregaste"

Leer matetare

examate<- examate*90/100

matetare<- matetare*10/3

prommate<-(examate)+(matetare);

Escribir "promedio de Mate: ",prommate

Escribir "escribe que sacaste en el examen de fisica"

Leer exafisi

Escribir "Escribe cuantas tareas entregaste"

Leer fisitare

exafisi<-exafisi*80/100

matetare<-fisitare*20/2

profisi<-exafisi+matetare

Escribir "Promedio de Fisica",profisi

Escribir "Escribe que sacaste en el examen de

quimica"

Leer exaqui

Escribir "escribe cuantas tareas entregaste"

Leer quitare

exaqui<-exaqui*85/100

quitare<-quitare*15/3

proqui<-exaqui+quitare

Escribir "Promedio de quimica: ",proqui

proge<-(prommate+profisi+proqui)/3;

Escribir "Tu Promedio General es: ",proge

FinProceso

Page 12: Problemas de Metodologia JSL

Corrida Matemáticas Física Química

Examen Tareas Examen Tarea Examen Tarea Promedio

1 80 3 90 2 95 2 88.25

2 100 1 100 0 100 1 87.77

ESTRUCTURAS DE DECISIÓN SIMPLES

1) Calcular el total que una persona debe pagar en un llantera, si el precio de cada llanta es de $800 si se compran menos de 5 llantas y de $700 si se compran 5 o mas.

Proceso sin_titulo

Escribir "CUANTAS LLANTAS??";

Leer LLANTAS;

Si (LLANTAS>5) Entonces

Sup<-(LLANTAS*700);

Escribir "$" , Sup;

Sino

Sup<-(LLANTAS*800);

Escribir "$", Sup;

FinSi

FinProceso

Corrida Datos Salida

Llantas

1 4 3200

2 20 14000

3 5 4000

Page 13: Problemas de Metodologia JSL

2) En un supermercado se hace una promoción, mediante la cual el cliente obtiene un

descuento dependiendo de un numero que se escoge al azar. Si el numero escogido es

menor que 74 el descuento es del 15% sobre el total de la compra, si es mayor o igual a 74 el

descuento es del 20%. Obtener cuanto dinero se le descuenta.

Proceso sin_titulo

Escribir "Escribir cantidad";

Leer Cantidad;

Escribir "Escribir precio";

Leer Precio

Si (Cantidad>74) Entonces

Sup <-(Precio*.20) ;

SUM <-Sup+Precio;

Escribir "descuento del 20";

Sino

Sup <-(Precio*.15) ;

SUM <-Sup+Precio;

Escribir "descuento del 15";

FinSi

FinProceso

Corrida Datos Salida

Cantidad Precio Descuento

1 500 600 20

2 73 45 15

3 74 90 15

Page 14: Problemas de Metodologia JSL

3) Calcular el numero de pulsaciones que debe tener una persona por cada 10 segundos de

ejercicio aerobico; la formula que se aplica cuando el sexo es femenino es:

num. pulsaciones = (220 - edad)/10 y

si el sexo es masculino:

num. pulsaciones = (210 - edad)/10

Proceso sin_titulo

Escribir "Edad";

Leer Edad;

Escribir "Sexo";

Leer F,M;

Si (F<>M),(M<>F) Entonces

Sup<-(220-Edad)/10;

Escribir "FEMENINO" , Sup;

Sino

Sup<-(210-Edad)/10;

Escribir "MASCULINO", Sup;

FinSi

FinProceso

Corrida Datos Salida

Edad Sexo

1 90 F Masculino 12

2 73 M Masculino 13.5

3 4 F Masculino 20.6

Page 15: Problemas de Metodologia JSL

4) Una compañía de seguros esta abriendo un depto. de finanzas y estableció un programa

para captar clientes, que consiste en lo siguiente: Si el monto por el que se efectúa la fianza es

menor que $50 000 la cuota a pagar será por el 3% del monto, y si el monto es mayor que

$50 000 la cuota a pagar será el 2% del monto. La afianzadora desea determinar cual será la

cuota que debe pagar un cliente.

Proceso sin_titulo

Escribir "CUOOTAA";

Leer CUOTA;

Si (CUOTA>50000) Entonces

Sup<-(CUOTA*.02);

Escribir "MAYOR", Sup;

Sino

Sup<-(CUOTA*.03);

Escribir "MENOR", Sup;

FinSi

FinProceso

Corrida Datos Salida

Cuaota

1 50001 Mayor 1000.02

2 49000 Menor 1470

3 1 Menor o.o3

Page 16: Problemas de Metodologia JSL

5.- En una escuela la colegiatura de los alumnos se determina según el numero de materias

que cursan. El costo de todas las materias es el mismo.

Se ha establecido un programa para estimular a los alumnos, el cual consiste en

lo siguiente: si el promedio obtenido por un alumno en el ultimo periodo es mayor o igual

que

9, se le hará un descuento del 30% sobre la colegiatura y no se le cobrara IVA;

si el promedio obtenido es menor que 9 deberá pagar

la colegiatura completa, la cual incluye el

10% de IVA.

Obtener cuanto debe pagar un alumno.

Proceso sin_titulo

Escribir "introduce la materia";

Leer Mate;

Escribir "promedio";

Leer Prom;

CostoMateria<-120;

Si Prom>=9 Entonces

desc<-CostoMateria*.3;

pagar<-CostoMateria-desc;

Escribir "Su descuento es de ",desc;

Escribir "La colegiatura a pagar es ",pagar;

Sino

iva<-CostoMateria*.1;

pagar<-CostoMateria+iva;

Escribir "el iva es de ",iva;

Escribir "La colegiatura a pagar es ",pagar;

FinSi

FinProceso

Page 17: Problemas de Metodologia JSL

6.- Una empresa de bienes raíces ofrece casas de interés social, bajo las siguientes

condiciones: Si los ingresos del comprador son menores de $8000 o mas el enganche

será del 15% del costo de la casa y el resto se distribuirá en pagos mensuales, a

pagar en diez años. Si los ingresos del comprador son menos de $8000 o mas el

enganche será del 30% del costo de la casa y el resto se distribuirá en pagos mensuales

a pagar en 7 años.

La empresa quiere obtener cuanto debe pagar un comprador por

concepto de enganche y cuanto por cada pago parcial.

Proceso sin_titulo

Escribir "ingresos del trabajador";

Leer ingre;

Si (ingre>8000) Entonces

Enganxe<-(ingre*.15);

Escribir "su enganche es de: ",

Enganxe;

Sino

Enganxe<-(ingre*.30);

Escribir "su enganche es de: ",

Enganxe;

FinSi

FinProceso

corrida Datos de entrada salida Ingresos del trabajador

1 7000 $2100.00

2 10000 $1500.00

3 12000 $1800.00

Corrida Datos de entrada Salida Materia promedio Colegiatura

1 Español 5 132

2 Matemáticas 9 84

3 ingles 7 132

Page 18: Problemas de Metodologia JSL

7) El gobierno ha establecido el programa SAR (Sistema de Ahorro para el Retiro) que

consiste en que los dueños de la empresa deben obligatoriamente depositar en una cuenta

bancaria un porcentaje del salario de los trabajadores; adicionalmente los trabajadores

pueden solicitar a la empresa que deposite directamente una cuota fija o un porcentaje de su

salario en la cuenta del SAR, la cual le será descontada de su pago.

Un trabajador que ha decidido aportar a su cuenta del SAR desea saber la cantidad total de dinero que estará depositado a esa cuenta cada mes, y el pago mensual que recibirá.

Proceso sin_titulo

Escribir "Ingrese salario mensual";

Leer Sal;

Escribir "elija opcion: 1... porcentaje de salario: 2.. cuota fija";

Leer uno ;

Si uno Entonces

Escribir "ingrese el porcentaje";

Leer Por;

Por<-Sal*(Por/100);

Escribir "cantidad que da por mes: ", Por;

SiNo

Escribir "ingrese monto";

Leer Mont;

Mont<-(Mont*100)/Sal;

Escribir "el porcentaje de su salario: ", Mont;

FinSi

FinProceso

Page 19: Problemas de Metodologia JSL

Corrida Datos Salida

Salario Monto % Del salario

1 3000 600 20

2 50000 10 5000

Page 20: Problemas de Metodologia JSL

8) Una persona desea iniciar un negocio, para lo cual piensa verificar cuanto dinero le

prestara el banco por hipotecar su casa. Tiene una cuenta bancaria, pero no quiere disponer

de ella a menos que el monto por hipotecar su casa sea muy pequeño. Si el monto de la

hipoteca es menor que $1 000 000 entonces invertirá el 50% de la inversión total y un socio

invertirá el otro 50%. Si el monto de la hipoteca es de $ 1 000 000 o mas, entonces invertirá el

monto total de la hipoteca y el resto del dinero que se necesite para cubrir la inversión total

se repartirá a partes iguales entre el socio y el.

Proceso sin_titulo

Escribir "Ingrese el valor de inversion total:";

Leer inversion_total;

Escribir "Ingrese el valor de monto de la hipoteca:";

Leer monto_de_la_hipoteca;

Si monto_de_la_hipoteca<1000000 Entonces

inversion <- inversion_total/2;

SiNo

inversion <- (inversion_total-monto_de_la_hipoteca)/2;

FinSi

inversion_del_socio <- inversion;

Escribir "Valor de inversion: ", inversion;

Escribir "Valor de inversion del socio: ", inversion_del_socio;

FinProceso

Page 21: Problemas de Metodologia JSL

Corrida Datos Salida

Inversion Hipoteca Valor de inversion Valor de inversion del socio

1 700000 500000 350000 350000

2 50000 50000 25000 25000

9.- El gobierno del estado de México desea reforestar un bosque que mide determinado

numero de hectáreas. Si la superficie del terreno excede a 1 millón de metros cuadrados,

entonces decidirá sembrar de la sig. manera:

Proceso sin_titulo

Escribir "superficie del terreno";

Leer Sup_Terreno;

Si Sup_Terreno>1000000 Entonces

MetrosPino <-- Sup_Terreno *.70

Pinos <-- MetrosPino/10*8

MetrosOyamel <-- Sup_Terreno *.20

Oyameles <-- MetrosOyamel/15*15

MetrosCedro <-- Sup_Terreno *.10

Cedros <-- MetrosCedro/18*10

Sino

MetrosPino <-- Sup_Terreno *.50

Page 22: Problemas de Metodologia JSL

Pinos <-- MetrosPino/10*8

MetrosOyamel <-- Sup_Terreno *.30

Oyameles <-- MetrosOyamel/15*15

MetrosCedro <-- Sup_Terreno *.20

Cedros <-- MetrosCedro/18*10

FinSi

Escribir "pinos....",Pinos;

Escribir "Oyameles....",Oyameles;

Escribir "cedros....",Cedros;

FinProceso

Corrida Datos Salida Salida

Superficie Pinos Oyameles Cedros

1 70000 28000 21000 7777.7777

2 50000 20000 15000 5555.5555

Page 23: Problemas de Metodologia JSL

10) Una fabrica ha sido sometida a un programa de control de contaminación para lo cual

se efectúa una revisión de los puntos IMECA generados por la fabrica. El programa de

control de contaminación consiste en medir los puntos IMECA que emite la fabrica en

cinco días de una semana y si el promedio es superior a los 170 puntos entonces tendrá la

sanción de parar su producción por una semana y una multa del 50% de las ganancias

diarias cuando no se detiene la producción. Si el promedio obtenido de puntos IMECA es

de 170 o menor entonces no tendrá ni

sanción ni multa. El dueño de la fabrica

desea saber cuanto dinero perderá

después de ser sometido a la revisión.

Proceso sin_titulo

Escribir "puntos";

Leer Puntos;

Escribir "ganancias";

Leer Ganancias;

Si Puntos>170 Entonces

Sancion<-Ganancias/2

Escribir "sancion de...", Sancion;

Sino

Sancion<-0

Escribir "no paga ni multa ni sancion de....", Sancion;

FinSi

FinProceso

Corrida Datos Salida Salida

Puntos Ganancias Sancion

1 40 500 171

2 50000 20000 600

Page 24: Problemas de Metodologia JSL

ESTRUCTURAS DE DECISIÓN DOBLE

1) Determinar si un alumno aprueba a reprueba un curso, sabiendo que aprobara si su promedio de tres calificaciones es mayor o igual a 70; reprueba en caso contrario.

Proceso sin_titulo

Escribir "calificacion 1";

Leer Calif1;

Escribir "calificacion 2";

Leer Calif2;

Escribir "calificacion 3";

Leer Calif3;

Prom<-(Calif1+Calif2+Calif3)/3

Si Prom>7 Entonces

Escribir "aprobado";

Sino

Escribir "reprobado";

FinSi

FinProceso

Corrida Datos Salida

Calificacion 1 Calificacion 2 Calificacion 3 1 9 8 10 Aprobado

2 9 0 7 Reprobado

Page 25: Problemas de Metodologia JSL

2.-En un almacén se hace un 20% de descuento a los clientes cuya compra supere los $1000

¿ Cual será la cantidad que pagara una persona por su compra?

Proceso sin_titulo

Escribir "compra de";

Leer Com;

Si Com>1000 Entonces

Des<-(Com*.20)

Sino

Des<-0

FinSi

Tot<-Com-Des

Escribir "total....",Tot;

FinProceso

Corrida Datos Salida

Compra

1 10000 8000

2 1000 1000

Page 26: Problemas de Metodologia JSL

3) Un obrero necesita calcular su salario semanal, el cual se obtiene de la

siguiente manera:

Si trabaja 40 horas o menos se le paga $16 por hora

Si trabaja más de 40 horas se le paga $16 por cada una de las primeras

40 horas y $20 por cada hora extra.

Proceso

Escribir "Horas Trabajadas"

Leer Horas_T;

Si (Horas_T>40) Entonces

Horas_E<-Horas_T-40;

Salario_s<-Horas_E*20+40*16;

Sino

Salario_s<-Horas_T*16;

FinSi

Escribir "Salario Semanal = " , Salario_s

FinProceso

Page 27: Problemas de Metodologia JSL

Corridas Datos de entrada salida

Horas Trabajadas Salario Semanal

1 45 740

2 85 1540

3 51 860

4) Un hombre desea saber cuanto dinero se genera por concepto de

intereses sobre la cantidad que tiene en inversión en el banco. El decidirá

reinvertir los intereses siempre y cuando estos excedan a $7000, y en ese caso

desea saber cuanto dinero tendrá finalmente en su cuenta.

Proceso sin_titulo

Escribir "Capital";

Leer cap;

Escribir "Porcentaje_int";

Leer Por_int

Int<-cap*(Por_int/100);

Si (Int>7000) Entonces

CapF<-cap+Int;

Escribir " Su capital final es: " , CapF

Sino

Escribir " no reinvertir intereses "

FinSi

FinProceso

Corridas Datos de entrada salida

Capital Porcentaje int Salario Final

1 10700 8% “no reinvertir

intereses”

2 548216 5% 575626.8

Page 28: Problemas de Metodologia JSL

5) Que lea dos números y los imprima en forma ascendente

Proceso sin_titulo

Escribir "Escribe el primer numero";

Leer Num1

Escribir "Escribe el segundo numero";

Leer Num2

Si Num1>Num2 Entonces

Escribir Num1;

Escribir Num2;

Sino

Escribir Num2;

Escribir Num1;

FinSi

FinProceso

Corridas D. Entrada Salida Num1 Num2

1 3 4 3 y 4

2 5 2 2 y 5

Page 29: Problemas de Metodologia JSL

6) Una persona enferma, que pesa 70 kg, se encuentra en reposo y desea saber cuantas

calorías consume su cuerpo durante todo el tiempo que realice una misma actividad. Las

actividades que tiene permitido realizar son únicamente dormir o estar sentado en reposo.

Los datos que tiene son que estando dormido consume 1.08 calorías por minuto y estando

sentado en reposo consume 1.66 calorías por minuto.

Proceso sin_titulo

Escribir "Escribe los minutos en que estuvo en reposo";

Leer Tr;

Escribir "Escriba 1 si estuvo sentado o 2 si estuvo dormido";

Leer Actividad;

Calo_sentado<-1.08;

Calo_dormido<-1.66;

Si Actividad=1 Entonces

Sentado<-Tr*Calo_sentado;

Escribir "Sus calorias sentado son ",Sentado

Sino

Dormido<-Tr*Calo_dormido;

Escribir "Sus calorias dormido son ",Dormido

FinSi

FinProceso

Page 30: Problemas de Metodologia JSL

Corridas D. entrada Salida

Minutos Opcion

1 1 1 1.08

2 1 2 3.32

3 1 4 3.32

Page 31: Problemas de Metodologia JSL

7) Hacer un algoritmo que imprima el nombre de un articulo, clave, precio

original y su precio con descuento. El descuento lo hace en base a la clave, si la

clave es 01 el descuento es del 10% y si la clave es 02 el descuento en del 20%

(solo existen dos claves).

Proceso sin_titulo

Escribir "nombre";

Leer nomb;

Escribir "clave";

Leer clave;

Escribir "precio";

Leer prec_origen;

Si clave<-01 Entonces

prec_desc1<-(prec_origen*.10);

descuento1<-prec_origen-prec_desc1;

Escribir "descuento1...",descuento1;

Sino

prec_desc2<-(prec_origen*.20);

descuento2<-prec_origen-prec_desc2;

Escribir "descuento2...",descuento2;

FinSi

Escribir nomb;

Escribir clave;

Escribir "origen",prec_origen;

FinProceso

Page 32: Problemas de Metodologia JSL

Corrida Datos Salida

Nombre Clave Precio Descuento

1 Pasta 8000 50 40

2 Jabon 1000 35 28

Page 33: Problemas de Metodologia JSL

8) Hacer un algoritmo que calcule el total a pagar por la compra de camisas. Si

se compran tres camisas o mas se aplica un descuento del 20% sobre el total de

la compra y si son menos de tres camisas un descuento del 10%

Proceso sin_titulo

Escribir "numero de camisetas";

Leer numero;

Escribir "precio de camisetas";

Leer precio;

Si numero>3 Entonces

total1<-precio*.20

descuento1<-precio-total1

Escribir "total 20% es de...",descuento1;

Sino

total2<-precio*.10

descuento2<-precio-total2

Escribir "total 10% es de...",descuento2;

FinSi

FinProceso

Corrida Datos de

Entrada Total a Pagar

Salida

1 128 102

2 140 112

3 290 72

Page 34: Problemas de Metodologia JSL

9) Una empresa quiere hacer una compra de varias piezas de la misma clase a una fabrica

de refacciones. La empresa, dependiendo del monto total de la compra, decidirá que hacer

para pagar al fabricante.

Si el monto total de la compra excede de $500 000 la empresa tendrá la capacidad

de invertir de su propio dinero un 55% del monto de la compra, pedir prestado al banco un

30% y el resto lo pagara solicitando un crédito al fabricante.

Si el monto total de la compra no excede de $500 000 la empresa tendrá capacidad

de invertir de su propio dinero un 70% y el restante 30% lo pagara solicitando crédito al

fabricante.

El fabricante cobra por concepto de intereses un 20% sobre la cantidad que se le pague a

crédito.

Proceso sin_titulo

Escribir "costo de la pieza";

Leer costopza;

Escribir "numero de la pieza";

Leer numpza;

totcomp<-costopza*numpza

Si totcomp>500000 Entonces

cantiv<-totcomp*.55

prestamo<-totcomp*.30

credito<-totcomp*.15

Sino

cantiv<-totcomp*.70

credito<-totcomp*.30

prestamo<-0

FinSi

int<-credito*.20

Escribir "cantidad vendida de...",cantiv;

Escribir "prestamo de...",prestamo;

Escribir "credito de...",credito;

Escribir "interes de...",int;

FinProceso

Corrida Datos Salida

Costo de la pieza Numero de la pieza Cantidad vendida Prestamo Credito Interes

1 1000 34 23800 0 10200 2040

2 350 50 12250 0 5250 1050

Page 35: Problemas de Metodologia JSL

10) Una persona se encuentra con un problema de comprar un automóvil o un terreno, los

cuales cuestan exactamente lo mismo. Sabe que mientras el automóvil se devalúa, con el

terreno sucede lo contrario. Esta persona comprara el automóvil si al cabo de tres años la

devaluación de este no es mayor que la mitad del incremento del valor del terreno. Ayúdale a

esta persona a determinar si debe o no comprar el automóvil.

Proceso sin_titulo Escribir "costo de terreno/auto"; Leer costo; Escribir "tasa de devaluacion del auto"; Leer dev; Escribir "tasa de valucion del terreno"; Leer val; dev1<-((dev/100)*costo)*(3*12); val1<-((val/100)*costo)*(3*12); mitad<-val/2 Si dev1<mitad Entonces Escribir "comprar coche"; Sino Escribir "comprar terreno"; FinSi FinProceso

Corrida Datos Salida

Costo del terreno/ auto Tasa de devaluacion Auto

Tasa de devaluacion del Terreno Comprar

1 800000 25 25 Terreno

2 60000 60 15 Terreno

Page 36: Problemas de Metodologia JSL

ESTRUCTURAS DE DECISIÓN MÚLTIPLES

1) Elabore un algoritmo, que calcule el aumento de sueldo de un trabajador, conociendo del

mismo, su nombre, tipo de trabajador, su sueldo y la cantidad de hijos que tiene. El

porcentaje de aumento del sueldo viene dado por el tipo de trabajador que es:

Tipo de trabajador

‘V’ 10%

‘G’ 15%

‘E’ 20%

‘O’ 30%

Adicionalmente se le paga una prima por cada hijo la cual es conocida y la misma para

todos.

Proceso sueldo

Escribir "nombre del trabajador";

Leer nombre;

Escribir "Tipo de trabajador";

Leer Tipo;

Escribir "sueldo";

Leer sueldo;

Escribir "Cantidad de hijos";

Leer cantidad;

Si tipo="V" Entonces

aumento<- sueldo*.10;

Sino

Si tipo="G" Entonces

aumento<- sueldo*.15;

Sino

Si tipo="E" Entonces

Page 37: Problemas de Metodologia JSL

aumento<- sueldo*.20;

Sino

Si tipo="O" Entonces

aumento<- sueldo*.30;

Sino

Escribir tipo + " no es un tipo de empleado";

FinSi

FinSi

FinSi

FinSi

Prima<-cantidad*50;

Escribir "Aumento de:"+ nombre+" es: ",aumento;

Escribir "La prima por hijos es: ",prima;

Escribir "Su aumento total es: ",prima+aumento;

Escribir "su sueldo total es: ", sueldo+prima+aumento;

FinProceso

Page 38: Problemas de Metodologia JSL

Corrida datos Aumento de

Abraham Prima por hijos Sueldo total

Nombre Abraham 750

100

3350

Tipo de trabajador

O

Sueldo 2500

Cantidad de hijos 2

Page 39: Problemas de Metodologia JSL

2.- Elabore un algoritmo que solicite la cantidad a pedir para un articulo, según su

inventario, se conoce para cada artículo su tipo (1, 2,3) y la cantidad en existencia,

deseando calcular la cantidad a solicitar.

Proceso inventario

Cantidad<-0;

Solicita<-0;

solicita2<-0;

tipo1<-1;

tipo2<-2;

tipo3<-3;

Tipo<-0;

Error<-0;

Escribir "Numero de artículos";

Leer cantidad;

Escribir "Tipo de articulo";

Escribir "Opciones---1";

Escribir "Opciones---2";

Escribir "Opciones---3";

Leer tipo;

Si tipo=tipo1 Entonces

Solicita<-10;

Sino

Si tipo=tipo2 Entonces

Solicita<-15;

Sino

Si tipo=tipo3 Entonces

Solicita<-5;

Sino

Page 40: Problemas de Metodologia JSL

Escribir "Error esto no es un tipo de articulo";

Error<-1;

FinSi

FinSi

FinSi

Si error=1 Entonces

Escribir "Fin del proceso";

Sino

Si cantidad < 10 Entonces

solicita2 <-20;

Sino

Si 10<= cantidad <20 Entonces

solicita2 <-15;

Sino

Si cantidad>= 20 Entonces

solicita2 <-10;

Sino

Escribir "error no se encuentra el rango";

FinSi

FinSi

FinSi

Escribir "TOTAL: se le solicita el: ", solicita+solicita2,"% ";

FinSi

Fin Proceso

Page 41: Problemas de Metodologia JSL
Page 42: Problemas de Metodologia JSL

Corrida Datos de entrada salida

Cantidad tipo sup

1 40 1 solicitar el 20%

2 30 2 Solicitar el 25%

3 20 3 Solicitar el 15%

4 15 4 error

3.- El colegio “Mi angelito” desea calcular el monto a pagar por inscripción del nuevo año escolar,

para las familias con hijos en el colegio. Para ello se conoce el número de hijos que tiene la familia

en el colegio, el monto de matricula por niño, el monto de la mensualidad del mes de septiembre

por niño y el monto de la sociedad de padres. Elabore un algoritmo que calcule el total a pagar por

la familia, si la sociedad de padres se cobra una vez por familiar y si se otorga un descuento por la

cantidad de hijos en el colegio que viene dado por la siguiente tabla.

Cantidad de hijos Descuento

2 niños 10%

3 niños 15%

> 3 niños 20%

Proceso

Escribir "Cuantos hijos tiene inscritos? ";

Leer Nh;

Monto<-600;

Si Nh=1 Entonces

desc<-(Nh*Monto)*0

MontoTotal<-600;

Escribir "Su descuento es de ",desc

Escribir "Esto es lo qe pagara ",MontoTotal ;

Sino

Si Nh=2 Entonces

desc<-(Nh*Monto)*.1;

Page 43: Problemas de Metodologia JSL

MontoTotal<-(Monto*Nh)-desc;

Escribir "Su descuento es de ",desc

Escribir "Esto es lo que pagara ",MontoTotal

Sino

desc<-(Nh*Monto)*.15;

MontoTotal<-(Monto*Nh)-desc;

Escribir "Su descuento es de ",desc

Escribir "Esto es lo que pagara ",MontoTotal

FinSi

FinSi

FinProceso

Page 44: Problemas de Metodologia JSL

Hijos inscritos Monto a pagar

1 600

2 1080

3 1530

4 2040

4.- En el Hospital "Seguimos en crisis" tienen las siguientes tarifas:

Tipo de enfermedad Costo/paciente/día

1 1500

2 1700

3 1900

Para lo cual se necesita que usted elabore un informe con el siguiente formato:

Paciente Días hospitalizados Tipo de enfermedad Total a pagar

Proceso sin_titulo

Escribir "Nombre Del Paciente: ";

Leer Paciente;

Escribir "Dias Hospitalizado: ";

Leer Dias;

Escribir "Tipo De Enfermedad";

Leer Tipo;

Si Tipo=1 Entonces

Costo<-Dias*1500;

Escribir "El Paciente ", Paciente;

Escribir "Tiene ",Dias," Dia(s) hospitalizado.";

Escribir "El cual tiene una enfermedad Tipo 1 "

Escribir "Saldo Total A Pagar Es: $",Costo;

Sino

Page 45: Problemas de Metodologia JSL

Si Tipo=2 Entonces

Costo<-Dias*1700;

Escribir "El Paciente ", Paciente;

Escribir "Tiene ",Dias," Dia(s) hospitalizado.";

Escribir "El cual tiene una enfermedad Tipo 2 "

Escribir "Saldo Total A Pagar Es: $",Costo;

Sino

Si Tipo=3 Entonces

Costo<-Dias*1900;

Escribir "El Paciente ", Paciente;

Escribir "Tiene ",Dias," Dia(s) hospitalizado.";

Escribir "El cual tiene una enfermedad Tipo 3 "

Escribir "Saldo Total A Pagar Es: $",Costo;

Sino

Escribir "Error";

FinSi

FinSi

FinSi

FinProceso

Corrida Paciente Días Enfermedad Costo

1 Marco 4 1 (1500) 6000

2 Carla 1 2 (1700) 1700

3 César 5 3 (1900) 9500

Page 46: Problemas de Metodologia JSL
Page 47: Problemas de Metodologia JSL

5.- Escriba un algoritmo para mostrar por pantalla el nombre del día de acuerdo a un número (del 1

al 7) que se pase como entrada.

Proceso sin_titulo

Escribir "Ingresa Dia de la Semana (1 al 7) ";

Leer Dia;

Si Dia=1 Entonces

Escribir "Domingo";

Sino

Si Dia=2 Entonces

Escribir "Lunes";

Sino

Si Dia=3 Entonces

Escribir "Martes";

Sino

Si Dia=4 Entonces

Escribir "Miercoles";

Sino

Si Dia=5 Entonces

Escribir "Jueves";

Sino

Si Dia=6 Entonces

Escribir "Viernes";

Sino

Si Dia=7 Entonces

Escribir "Sabado";

Sino

Escribir "Error";

Page 48: Problemas de Metodologia JSL

FinSi

FinSi

FinSi

FinSi

FinSi

FinSi

FinSi

FinProceso

Corrida Datos Salida

Dia de la semana

1 1 Domingo

2 2 Lunes

3 3 Martes

Page 49: Problemas de Metodologia JSL

ESTRUCTURAS SELECTIVAS ANIDADAS

1) Leer 2 números; si son iguales que los multiplique, si el primero es mayor que el segundo que los reste y si no que los sume.

Proceso sin_titulo Escribir "Introducir numero entero"; Leer N; Escribir "Introducir numero entero"; Leer Z; Si (N = Z) Entonces Multiplicacion<- Z*N Escribir "Multiplicacion : ", Multiplicacion; Sino Si (N > Z) Entonces Resta<- N - Z Escribir "Resta : ",Resta; Sino Suma<- N+Z Escribir "Suma : ",Suma; FinSi FinSi FinProceso

CORRIDAS DATOS SALIDA

N Z

1 4 4 16

2 5 3 2

3 3 5 8

Page 50: Problemas de Metodologia JSL

2) Leer tres números diferentes e imprimir el numero mayor de los tres.

Proceso sin_titulo Escribir "Introduce el primer numero"; Leer X; Escribir "Introduce el segundo numero "; Leer N; Escribir "Introduce el tercer numero "; Leer Z; Si (X > N) Y (X > Z) Entonces X<-X Escribir "El numero mayor es : ", X; Sino Si (N > X) Y ( N > Z) Entonces N<-N Escribir "El numero mayor es : ",N; Sino Escribir "El numero mayor es : ",Z; FinSi FinSi FinProceso

CORRIDAS DATOS SALIDA

Corrida X N Z Salida

1 8 7 6 8

2 4 9 5 9

3 2 4 6 6

Page 51: Problemas de Metodologia JSL

3) Determinar la cantidad de dinero que recibirá un trabajador por concepto de las horas

extras trabajadas en una empresa, sabiendo que cuando las horas de trabajo exceden de 40, el

resto se consideran horas extras y que estas se pagan al doble de una hora normal cuando no

exceden de 8; si las horas extras exceden de 8 se pagan las primeras 8 al doble de lo que se

pagan las horas normales y el resto al triple.

Proceso sin_titulo

Escribir "Precio de la hora de trabajo";

Leer paga;

Escribir "Horas trabajadas";

Leer horas;

Si (horas>40) Entonces

horas<-horas-40;

Si (horas>8) Entonces

total<-8*(paga*2);

horas<-horas-8;

total<-total+(horas*(paga*3));

Sino total<-horas*(paga*2);

FinSi

total<-total+(40*paga);

Sino total<-horas*paga;

FinSi

Escribir "Total:",total;

FinProceso

Corrida Datos Salida

Precio Hra de trabajo Horas trabajadas Total

1 80 8 640

2 1000 6 6000

3 69 8 552

Page 52: Problemas de Metodologia JSL

4.- Calcular la utilidad que un trabajador recibe en el reparto anual de utilidades si este se le asigna

como un porcentaje de su salario mensual que depende de su antigüedad en la empresa de

acuerdo con la siguente tabla:

Tiempo Utilidad

Menos de un año 5% del salario

1 año o mas y menos de 2 años 7% del salario

2 años o mas y menos de 5 años 10% del Salario

5 años o mas y menos de 10 años 15% del salario

10 años o mas 20% del salario

Proceso sin_titulo

Escribir "salario";

Leer sm;

Escribir "antiguedad";

Leer antig;

Si antig<1 Entonces

util<-sm*0.05

Sino

Si (antig>2)(antig<2) Entonces

util<-sm*0.07

Sino

Si (antig>2)(antig<5) Entonces

util<-sm*0.10

Sino

Si (antig>5)(antig<10) Entonces

util<-sm*0.15

Sino

util<-sm*0.20

FinSi

Page 53: Problemas de Metodologia JSL

FinSi

FinSi

FinSi

Escribir util;

FinProceso

5-.En una tienda de descuento se efectúa una promoción en la cual se hace un descuento. Sobre el valor de la compra total según el color de la bolita que el cliente saque al pagar en caja. Si la bolita es de color blanco no se le hará descuento alguno, si es verde se le hará un 10% de descuento, si es amarilla un 25%, si es azul un 50% y si es roja un 100%. Determinar la cantidad final que el cliente deberá pagar por su compra. se sabe que solo hay bolitas de los colores mencionados.

Proceso sin_titulo

Cuenta<-0;

Descuento<-0;

Pago<-0;

Escribir "Total a pagar";

Leer Cuenta;

Escribir "Color de bolita?";

Escribir "________________________";

Escribir "Para blanco escriba 1";

Escribir "Para verde escriba 2";

Escribir "Para amarilla escriba 3";

Escribir "Para azul escriba 4";

Escribir "Para rojo escriba 5";

Leer respuesta;

Si Respuesta=1 Entonces

Page 54: Problemas de Metodologia JSL

Escribir "No hay descuento su total a pagar es: ",cuenta;

Sino

Si Respuesta=2 Entonces

Descuento<-Cuenta*.10;

Escribir "Su total pagar es: ",cuenta-descuento;

Escribir "Su descuento fue de: ",descuento;

Sino

Si Respuesta=3 Entonces

Descuento<-Cuenta*.25;

Escribir "Su total pagar es: ",cuenta-descuento;

Escribir "Su descuento fue de: ",descuento;

Sino

Si Respuesta=4 Entonces

Descuento<-Cuenta*.50;

Escribir "Su total pagar es: ",cuenta-descuento;

Escribir "Su descuento fue de: ",descuento;

Sino

Si Respuesta=5 Entonces

Escribir "Felicidades no paga el dia de

hoy!!!!!! ";

Sino

Si Respuesta>=6 Entonces

Escribir "Error";

Sino

Page 55: Problemas de Metodologia JSL

FinSi

FinSi

FinSi

FinSi

FinSi

FinSi

FinProceso

Corridas Datos de entrada Salida

Cuenta Núm. De la bolita

$100 1 “No hay descuento”

$200 6 “Error”

$100 2 “Su descuento es de: $25” “Su total apagar es de: $75”

$200 5 “Felicidades el día de hoy no paga!!!!!!”

$500 3 “Su descuento es de: $250” “Su total apagar es de: $250”

$100 4 “Su descuento es de: $75” “Su total apagar es de: $25”

Page 56: Problemas de Metodologia JSL
Page 57: Problemas de Metodologia JSL

6-.El IMSS requiere clasificar a las personas que se jubilaran en el año de 1997. Existen tres tipos de jubilaciones: por edad, por antigüedad joven y por antigüedad adulta. Las personas adscritas a la jubilación por edad deben tener 60 años o más y una antigüedad en su empleo de menos de 25 años. Las personas adscritas a la jubilación por antigüedad joven deben tener menos de 60 años y una antigüedad en su empleo de 25 años o más. Las personas adscritas a la jubilación por antigüedad en su empleo de 25 años o más. Determina en qué tipo de jubilación quedara adscrita una persona

Proceso sin_titulo

Edad<-0;

Antguedad_De_Empleo<-0

Escribir "Escribir edad de la persona";

Leer Edad;

Escribir "Antiguedad de su empleo";

Leer Antiguedad;

Si Edad>=60 y Antiguedad<25 Entonces

Escribir "Jubilacion por edad";

Sino

Si Edad<60 y antiguedad>25 Entonces

Escribir "Jubilacion joven";

Sino

Si Edad>60 y Antiguedad>25 Entonces

Escribir "Jubilacion adulta";

Sino

FinSi

FinSi

FinSi

FinProceso

Page 58: Problemas de Metodologia JSL

Corridas Datos de entrada Salida

Edad Antiguedad

1 61 26 “Jubilación adulta”

2 59 26 “Jubilación joven”

3 60 24 “Jubilación por edad”

Page 59: Problemas de Metodologia JSL

7) En una fábrica de computadoras se planea ofrecer a los clientes un descuento

que dependerá del número de computadoras que compre. Si las computadoras

son menos de cinco se les dará un 10% de descuento sobre el total de la compra;

si el número de computadoras es mayor o igual a cinco pero menos de diez se le

otorga un 20% de descuento; y si son 10 o mas seles da un 40% de descuento. El

precio de cada computadora es de $11,000.

Proceso computadoras

Escribir "Ingrese cantidad de computadoras a comprar: ";

Leer comp;

Si comp<5 Entonces

desc<-11000*0.1;

Escribir "Cantidad a pagar: ",desc;

FinSi

Si comp>=5&comp<10 Entonces

desc<-11000*0.2;

Escribir "Cantidad a pagar: ",desc;

FinSi

Si comp>10 Entonces

desc<-11000*0.4;

Escribir "Cantidad a pagar: ",desc;

FinSi

FinProceso

Page 60: Problemas de Metodologia JSL

Corrida Datos Salida

Cantidad de computadoras Total a pagar

1 60 4400

2 5 2200

3 1 1100

Page 61: Problemas de Metodologia JSL

8) En una llantera se ha establecido una promoción de las llantas marca “Ponchadas”, dicha

promoción consiste en lo siguiente:

Si se compran menos de cinco llantas el precio es de $300 cada una, de $250 si se

compran de cinco a 10 y de $200 si se compran mas de 10.

Obtener la cantidad de dinero que una persona tiene que pagar por cada una de las

llantas que compra y la que tiene que pagar por el total de la compra.

Proceso llantas

Escribir "Cuantas llantas compraras? ";

Leer N;

Si N<5 Entonces

cant<-N*300;

Escribir "Tiene que pagar: ",cant;

FinSi

Si N>=5 & N<=10 Entonces

cant<-N*250;

Escribir "Tiene que pagar: ",cant;

FinSi

Si N>10 Entonces

cant<-N*200;

Escribir "Tiene que pagar: ",cant;

FinSi

FinProceso

Corrida Datos Salida

Cantidad de llantas Total a pagar

1 15 3000

2 7 1750

3 1 300

Page 62: Problemas de Metodologia JSL

9) En un juego de preguntas a las que se responde “Si” o “No” gana quien responda

correctamente las tres preguntas. Si se responde mal a cualquiera de ellas ya no se pregunta la

siguiente y termina el juego. Las preguntas son:

1. Colon descubrió América?

2. La independencia de México fue en el año 1810?

3. The Doors fue un grupo de rock Americano?

Proceso sin_titulo

Escribir "Teclea 1 para Si, y 2 para No":

Escribir "¿Colon descubrio America?":

Leer N;

Si (N = 1) Entonces

Escribir "¿La independencia de Mexico fue en el ano 1810?":

Leer N;

Si (N = 1) Entonces

Escribir "¿The Doors fue un grupo de rock Americano?":

Leer N;

Si (N = 1) Entonces

Escribir "Felicidades as ganado el premio de los $50,000,0000 de pesos"

Sino

Escribir "Siga participando":

FinSi

Sino

Escribir "Siga participando":

FinSi

Sino

Escribir "Siga participando":

FinSi

Page 63: Problemas de Metodologia JSL

FinProceso

Corridas ¿Colon descubrio America?

¿La independencia de Mexico fue en el ano 1810?

The Doors fue un grupo de rock Americano?":

Salida

1 1 1 1 Felicidades as ganado el premio de los $50,000,0000 de pesos

2 1 2 Siga participando

3 1 1 2 Siga participando

Page 64: Problemas de Metodologia JSL

10) Una frutería ofrece las manzanas con descuento según la siguiente NUM. DE KILOS %

-

2.01 - 5.01 -

10.01 en

Determinar cuanto pagara una persona que compre manzanas es esa

Proceso sin_titulo

Escribir "Escribe los Kilos" "k" ;

Escribir "Escribe el Precio por Kilo" "Precio" ;

Leer K;

Leer Precio;

Si K < = 2 Entonces

Escribir "No hay descuento";

Sino

Si K > 2 o < = 5 Entonces

Escribir Precio * .10;

Escribir "Es el descuento que se realizara" ;

Sino

Si K > 5 o < = 10 Entonces

Escribir Precio * .15

Escribir "Es el descuento que se realizara" ;

Sino

Si K > 10 Entonces

Escribir Precio * .20

Escribir "Es el descuento que se realizara" ;

Sino

Page 65: Problemas de Metodologia JSL

FinSi

FinSi

FinSi

FinSi

FinProceso

Corridas Datos de entrada Salida

k Precio

1 2 10 No hay descuento

2 5 10 1 de descuento

3 10 15 1.5 de descuento

4 20 20 2 de descuento