2 números seguidos de básicos de la programación, eso si no se llama milagro no se que es (agradezcanle todo al todo poderoso RANDOM).
Parece que gustó lo que expliqué del método del burbujeo, así que planeo hacer más adelante una nota más grande sobre métodos de ordenamiento. Pero lo que viene a esta nota es algo totalmente distinto.
SUBPROGRAMAS
Todos los algoritmos que desarrollamos hasta ahora fueron hechos dentro de un solo bloque -el principal- lo cual servía para nuestros propósitos ya que hacíamos algoritmos pequeños. El problema es cuando tenemos cosas más grandes, entonces escribir todo dentro de un solo bloque sería muy confuso, aparte si en varias partes de nuestro programa tuvieramos que realizar tareas iguales, tendríamos que copiar muchas veces el mismo código. Vale mucho más la pena hacer el programa en varios bloques e ir llamando desde el principal el bloque que necesitemos. Esto lo podemos hacer gracias a la modularidad, lo cual significa repartir el código en pequeños módulos.
Asi se estructura esto:
COMIENZO
SUBPROGRAMA 1
SUBPROGRAMA 2
SUBPROGRAMA 3
...........................
SUBPROGRAMA N
FIN
SUBPROGRAMA 1:
instrucciones
RETORNAR
SUBPROGRAMA 2:
instrucciones
RETORNAR
SUBPROGRAMA 3:
instrucciones
RETORNAR
.........................
SUBPROGRAMA N:
instrucciones
RETORNAR
Pasemos a un ejemplo práctico para que se entienda algo de esto:
Una empresa maneja sus ventas por medio de corredores: cada uno de ellos cobra un porcentaje sobre lo vendido. Si el corredor vende más de $15000 recibe un premio de $2300.
Hay cuato corredores cuyas comisiones son:
Vendedor 1 | 7% |
Vendedor 2 | 5% |
Vendedor 3 | 10% |
Vendedor 4 | 8% |
Además conocemos el apellido de los vendedores.
Entonces tenemos que sacar:
1)Ventas totales de la empresa.
2)Ventas por corredor.
3)Comisión de cada uno.
4)Cantidad de pedidos.
5)Porcentaje de ventas de cada corredor sobre el total.
6)Nro. de corredor con + ventas.
7)Apellido del corredor con menor comisión.
La carga es por pedido, ingresandose el nro. del pedido, el nro. de corredor y el monto. La carga termina con nro. de pedido = 0
COMIENZO
INICIO
CARGA
COMISION
PORCENTAJE
MAXIMO
MINIMO
IMPRESION
FIN
Acá quedó definido el bloque principal del programa y las llamadas a subprogramas que debe hacer.
El primero es INICIO que carga el apellido de los vendedores y sus comisiones aparte de inicializar el contador de cantidad de ventas y el acumulador de dinero recaudado x ventas.
INICIO:
venta(4)
pedido(4)
compor(4)
porcent(4)
comision(4)
nombre$(4)
compor(1)=0.07
compor(2)=0.05
compor(3)=0.1
compor(4)=0.08
PARA i= 1 A 4
INGRESAR "APELLIDO: ",apellido$(i)
venta(i)=0
pedido(i)=0
PROXIMO
totventa=0
RETORNAR
Acá lo que hicimos fue inicializar todos los valores necesarios para el resto del programa, como el apellido, el acumulador de total de ventas, pusimos en las variables del vector compor los nrs. necesarios para el posterior cálculo de porcentajes, etc. Veanlo por ustedes mismos.
CARGA:
INGRESAR "Nro. de pedido: ",np
HACER MIENTRAS np<>0
INGRESAR Ingresar nro. de corredor: ",nc
INGRESAR "Monto de la venta: ",mv
totventa = totventa + mv
venta(nc) = venta(nc) + mv
pedido(nc) = pedido(nc) + 1
INGRESAR "Nro. de pedido: ",np
REPETIR
RETORNAR
Es este subprograma es donde se cocina casi todo, para empezar el punto (1) queda resuelto en la sexta linea, ya que va acumulando las ventas y al salir ya va a estar el total.
En la séptima linea vamos a tener la resolución del punto (2) y en la octava el punto (4).
Aparte estos datos son escenciales para resolver lo que queda del problema.
COMISION:
PARA i = 1 A 4
comision(i) = venta(i) * compor(i)
SI venta(i)>15000 ENTONCES
comision(i) = comision(i) + 2300
FIN SI
PROXIMO
RETORNAR
Aca sacamos por fin cual es el porcentaje que le corresponde a cada uno. No creo que haya mucho que agregar de aca en adelante. Tenemos resuelto el punto (3).
PORCENTAJE:
PARA i = 1 A 4
porcent(i) = venta(i) / totventa * 100
PROXIMO
RETORNAR
Acá resolvimos ya el punto (5). En los últimos 2 subprogramas vamos a resolver (6) y (7) (así no sigo haciendo comentarios pelotudos).
MAXIMO:
max=venta(1)
PARA i= 2 A 7
SI venta(i) > max ENTONCES
max=venta(i)
FIN SI
PROXIMO
RETORNAR
MINIMO:
PARA i= 2 A 7
min=comision(i)
SI comision(i) < min ENTONCES
min=comision(i)
FIN SI
PROXIMO
RETORNAR
Y por último viene la mustra de resultados...
IMPRESION:
IMPRIMIR "Ventas totales: ",totventa
IMPRIMIR "Ventas por corredor: "
PARA i= 1 A 4
IMPRIMIR "Corredor: ",i, "Ventas: ",venta(i)
PROXIMO
IMPRIMIR "Pedidos por corredor: "
PARA i= 1 A 4
IMPRIMIR "Corredor: ",i, "Pedidos: ",pedido(i)
PROXIMO
IMPRIMIR "Comisión por corredor: "
PARA i= 1 A 4
IMPRIMIR "Corredor: ",i, "Comisión: ",comision(i)
PROXIMO
IMPRIMIR "porcentaje de ventas x corredor: "
PARA i= 1 A 4
IMPRIMIR "Corredor: ",i, "Porcentaje: ",porcent(i)
PROXIMO
IMPRIMIR "Corredores de mayor venta: "
PARA i = 1 A 4
SI venta(i) = max ENTONCES
IMPRIMIR "Corredor: ",i
FIN SI
PROXIMO
IMPRIMIR "Nombre de los corredores de menor comisión: "
PARA i = 1 A 4
SI comision(i) = min ENTONCES
IMPRIMIR nombre$(i)
FIN SI
PROXIMO
RETORNAR
Y con eso damos por terminado este tema, ya saben que cualquier cosa me escriben un mail y lo respondo.
Ingwe