PROFESORADO DE INFORMTICA - 1A ALGORITMOS Y PROGRAMACIN 2013
Prof. MACIEL CASTILLOS RODOLFO
TEORA DE LA PRCTICA N 1 TEMA: DIAGRAMAS DE FLUJO Contenidos: Elementos bsicos de un diagrama de flujo Reglas para la generacin de DdF - Variables y Constantes - Contadores Acumuladores Deteccin de Mayor y Menor - Seleccin Mltiple (Case) Iteraciones - Arreglos: Vectores y Matrices. DIAGRAMAS DE FLUJO: Elementos Bsicos Un diagrama de flujo es un tipo de notacin grfica algortmica. Un diagrama de flujo es una herramienta grfica de descripcin de algoritmos que se caracteriza por utilizar un conjunto de smbolos grficos y expresar de forma clara los flujos de control u orden lgico en el que se realizan las acciones de un algoritmo. Smbolos ms comunes Definicin / Usos
Usado para dar indicar INICIO y FIN
Indica el flujo lgico al ejecutarse el algoritmo
Ingreso de datos: a) desde teclado b) acceso secuencial de archivo c) acceso directo de archivo
Utilizado para preguntar y definir el curso del programa. Se puede preguntar sobre el contenido de una variable a travs de relacionales (=, >, <, >=, <=, <>), lgicos ( OR, AND, NOT) y de archivos (EOF)
Cuadro donde se especifican los procesos que debe realizar el algoritmo. Generalmente involucra contadores, acumuladores, operaciones con cadena, transferencias y operaciones matemticas entre otras.
Utilizado para mostrar los datos que van a la impresora. A efectos prcticos se lo puede utilizar de forma genrica para indicar salida por pantalla o impresora.
Conectores dentro y fuera de pgina. Evitan la generacin de excesivos flujos que dificultan la lectura del DdF.
Utilizado para representar un bucle o iteracin. Var: es el nombre de la variable, I: indica el valor de inicio, F: indica el valor final.
Si no se coloca el incremento, se asume que lo hace de a uno en uno.
Indica un proceso de subrutina. inicio CONDICIN var I F ISFD DR JUAN PUJOL CORRIENTES Pg 2/16 PROFESORADO DE INFORMTICA - 1A ALGORITMOS Y PROGRAMACIN 2013 Prof. MACIEL CASTILLOS RODOLFO
Las combinaciones sucesivas y lgicas de estos diagramas generan diferentes estructuras las cuales pueden ser: Estructuras de control: las estructuras secuenciales, selectivas y repetitivas se denominan estructuras de control porque son las que controlan el modo o flujo de ejecucin del algoritmo. Su importancia es tal, que una vez que se entienda su estructura y funcionamiento, puede decirse que en esencia es todo lo que hay que saber respecto al control y flujo de los algoritmos. Otro aspecto importante consiste en saber en dnde utilizarlas, pero esto es muy dependiente del problema a resolver. Aqu podemos encontrar: Estructura secuencial
CONDICIN Sentencia(s) SI NO CONDICIN Sentencia-1 Sentencia-2 INDICADOR Sentencia(s)-1 Sentencia(s)-2 Sentencia(s)-(n-1) Sentencia(s)-(n) Valor-1 Valor-2 Valor- (n-1) Else Sentencia-1 Sentencia-2 Sentencia-n ISFD DR JUAN PUJOL CORRIENTES Pg 3/16 PROFESORADO DE INFORMTICA - 1A ALGORITMOS Y PROGRAMACIN 2013 Prof. MACIEL CASTILLOS RODOLFO
Estructuras de repeticin
a) hacer mientras (while) y b) repetir hasta (do-while). Lo que caracteriza a la estructura de repeticin hacer mientras, es que los enunciados del cuerpo del ciclo se realizan cuando la condicin es verdadera, adems de que se pregunta por la condicin al principio, de donde se deduce que las sentencias se podrn ejecutar de 0 a N veces. En la estructura de repeticin repetir hasta, las sentencias del interior del ciclo se ejecutan una vez y continan repitindose hasta que la condicin sea falsa. La verificacin de la condicin se realiza al final del ciclo, por lo que se deduce que las sentencias se ejecutarn al menos una vez y hasta un mximo de N.
REGLAS BSICAS 1. Todos los smbolos han de estar conectados 2. A un smbolo de proceso pueden llegarle varias lneas 3. De un smbolo de proceso slo puede salir una lnea. 4. A un smbolo de decisin pueden llegarle varias lneas, pero slo saldrn dos. 5. A un smbolo de inicio nunca le llegan lneas. 6. De un smbolo de fin no parte ninguna lnea. 7. Los diagramas de flujo se desarrollan de arriba hacia abajo y de izquierda a derecha.
Sentencia(s) Verdadero Falso CONDICIN Sentencia(s) Verdadero Falso CONDICIN ISFD DR JUAN PUJOL CORRIENTES Pg 4/16 PROFESORADO DE INFORMTICA - 1A ALGORITMOS Y PROGRAMACIN 2013 Prof. MACIEL CASTILLOS RODOLFO
VARIABLES Y CONSTANTES Todos los datos ingresados y procesados en la computadora deben ser contenidos temporariamente en la memoria hasta que finalice la ejecucin del programa y/o sean almacenados de forma permanente en archivos. Los datos son guardados en posiciones de memoria y depende de cmo el programador los defina, el contenido de esas posiciones podr ser VARIABLE CONSTANTE. Una VARIABLE es una posicin de memoria a la cual se le asigna un valor inicial para reservar dicho espacio (zona de inicializacin, seteo o cereo) que cambia su contenido por cada evento de programa (ingreso de datos nuevos u operaciones internas). P.e. A = 0 (valor inicial) A = A + 1 (a su valor original le suma la constante 1, es el caso de los contadores) A = A + EDAD (a su valor original le suma el contenido de otra variable de entrada EDAD es el caso de los acumuladores) Una CONSTANTE es un valor esttico asignado por el programador y que se mantiene inalterable durante toda la ejecucin del programa (salvo excepciones), puede ser definida en el rea de inicializacin directamente usada en las operaciones. VALOR_DOLAR = 4.56 (para este caso particular hablamos de una constante cuyo valor flucta diariamente, por lo tanto cada vez que se ejecute el programa se tomarn las previsiones para solicitar la cotizacin del da, ste valor puede ser modificado por el operador cada vez que inicia el programa o se contempla en la programacin la posibilidad de modificarlo). Ms adelante se lo puede usar de la siguiente manera: PRECIO_FINAL = COSTO_DOLAR * VALOR_DOLAR (guardamos en la variable PRECIO_FINAL el producto de la variable COSTO_DOLAR por VALOR_DOLAR que es nuestra constante contenida en una variable) A= A + 1 (tomando el caso anterior, el 1 es una constante que slo puede ser modificada por el programador, es la forma ms comn de utilizar una constante).
TIPOS DE VARIABLES: Depende del contenido podemos tener: NUMRICAS: slo guardan nmeros reales con los cuales se pueden aplicar las operaciones matemticas ms frecuentes. Dentro de stas se pueden definir otras ms especficas, como INTEGER que aceptan slo nmeros enteros (es el caso de la EDAD) u otras llamadas de punto flotante que definen la cantidad de trminos y de decimales esperados. Por ahora nos manejamos de la manera ms sencilla.
ISFD DR JUAN PUJOL CORRIENTES Pg 5/16 PROFESORADO DE INFORMTICA - 1A ALGORITMOS Y PROGRAMACIN 2013 Prof. MACIEL CASTILLOS RODOLFO
PROMEDIO= TOTAL_EDAD / CANTIDAD_PERSONAS RAIZ = SQR (N) (obtiene la raz cuadrada de N) ALFABTICAS: guardan slo texto, pueden guardar hasta 256 caracteres. El contenido a transferir tiene que estar encerrado entre comillas, porque de lo contrario se interpretara una transferencia de contenidos entre variables. NOMBRE =MARCOS (Guarda Marcos en la variable NOMBRE_APELLIDO) NOMBRE=MARCOS (transfiere el contenido de la Variable MARCOS a la variable NOMBRE) ALFANUMRICAS: guardan una combinacin de textos y nmeros, pero aqu los nmeros son tratados como texto, por lo tanto no se puede operar con ellos. DIRECCION: Lamadrid 4560
IMPRESIN DE VARIABLES Cuando se quiere informar el contenido de las variables en el rea de impresin se debe colocar de la siguiente manera: El nombre del ganador es: NOMBRE (siempre la leyenda va entre comillas) CONVERSION DE VARIABLES Algunas veces, variables numricas necesitan ser tratadas como alfanumricas y viceversa, para ello existen funciones de conversin: Pasar de numrica a alfanumrica (string o cadena) : NUEVA_EDAD = STRING (EDAD) Para el sistema EDAD contiene 25 y NUEVA_EDAD contiene 25 (lo trata como si fueran letras) Pasar de alfanumrica a numrica: EDAD = VALUE (NUEVA_EDAD)
Existen otros tipos de variables utilizadas como de FECHA (donde se define el formato (DD/MM/AAAA), HORA (HH:MM:SS), MEMO (puede guardar gran extensin de caracteres), OBJECT (puede guardar cualquier tipo de objetos complejos, se usa en Programacin Orientada a Objetos), BOOLEANAS (puede guardar slo dos contenidos TRUE FALSE)
ISFD DR JUAN PUJOL CORRIENTES Pg 6/16 PROFESORADO DE INFORMTICA - 1A ALGORITMOS Y PROGRAMACIN 2013 Prof. MACIEL CASTILLOS RODOLFO
CONTADORES y ACUMULADORES Tal cual lo definimos anteriormente, los contadores y acumuladores son variables numricas que modifican continuamente su contenido a lo largo de la ejecucin del programa. A los contadores siempre se le suman valores fijos o constantes , esto es: CONTA = CONTA + 1 CONTA= CONTA + 2 . A los acumuladores siempre se le suman otras variables, generalmente son algunas de las variables de entrada de datos, esto es : ACUMULA = ACUMULA + EDAD (se acumula en ACUMULA la EDAD que puede ser cualquier valor) El clculo del promedio es un caso tpico de uso combinado de contadores y acumuladores Ejemplo: Calcular el promedio de edades de una lista de alumnos ingresados por teclado e informar.
INICIO CONTA = 0 ACUMULA = 0 NOMBRE EDAD EDAD=0 CONTA = CONTA + 1 ACUMULA = ACUMULA + EDAD PROM = ACUMULA/CONTA EL PROMEDIO DE EDADES ES: PROM FIN SE INICIALIZAN AMBOS MODIFICAN SUS CONTENIDOS CON CADA EVENTO DE ENTRADA SE UTILIZAN SUS VALORES GUARDADOS SE UTILIZAN SUS VALORES GUARDADOS SI INICIO CONTA = 0 ACUMULA = 0 NOMBRE EDAD EDAD=0 CONTA = CONTA + 1 ACUMULA = ACUMULA + EDAD PROM = ACUMULA/CONTA EL PROMEDIO DE EDADES ES: PROM FIN SE INICIALIZAN AMBOS MODIFICAN SUS CONTENIDOS CON CADA EVENTO DE ENTRADA SE UTILIZAN SUS VALORES GUARDADOS SE UTILIZAN SUS VALORES GUARDADOS SIEMPRE SE PREGUNTA POR EL POSIBLE CONTENIDO ILGICO DE UNA VARIABLE DE ENTRADA PARA INDICAR FIN DE PROCESO NO ISFD DR JUAN PUJOL CORRIENTES Pg 7/16 PROFESORADO DE INFORMTICA - 1A ALGORITMOS Y PROGRAMACIN 2013 Prof. MACIEL CASTILLOS RODOLFO
DETECCIN DE MAYOR Y MENOR En varias ocasiones se solicita informar los valores extremos de una lista de datos: el mayor y menor valor. Para realizar estas acciones, debemos DETECTAR y ALMACENAR el mayor/menor valor y a quien corresponde (si pide que se informe esto ltimo por supuesto). Siguiendo el ejemplo anterior, tenemos
INICIO MY = -999 MN = 999 CONTA=0 ACUMULA= 0 NOMBRE EDAD EDAD = 0 EDAD > MY EDAD < MN PROCESO NORMAL PROCESO POR FINAL MN = EDAD MN_NOMBRE= NOMBRE
MY = EDAD MY_NOMBRE= NOMBRE
Impresin normal . LA MAYOR EDAD ES: MY Y CORRESPONDE A: MY_NOMBRE LA MENOR EDAD ES: MN Y CORRESPONDE A: MN_NOMBRE
FIN Siempre se inicializa el mayor con el menor valor posible y el menor con el mayor valor posible. Las preguntas se colocan aqu porque se solicita la mayor y menor edad de la lista de personas. Ahora si pidiera la mayor/menor edad de los varones de la lista, tendra que: 1. Agregar una variable de entrada SEXO 2. Preguntar si SEXO = M, 2.1. en caso positivo hacer el procedimiento de MAYOR Y MENOR; 2.2. en caso negativo seguir el PROCESO NORMAL.
SI NO SI NO SI NO ISFD DR JUAN PUJOL CORRIENTES Pg 8/16 PROFESORADO DE INFORMTICA - 1A ALGORITMOS Y PROGRAMACIN 2013 Prof. MACIEL CASTILLOS RODOLFO
SELECCIN MULTIPLE Algunas veces los datos contenidos en determinadas variables de ENTRADA indican categoras u opciones que de alguna manera provocan la bifurcacin en una parte del programa para hacer algo especfico y luego vuelve a integrarse nuevamente para seguir un camino comn. El caso ms tpico son los mens en pantalla (tal cual vemos por ejemplo en un cajero automtico), al finalizar el proceso particular nuevamente regresa a la pantalla principal para solicitar otra entrada de opciones. Es evidente que el camino del procesamiento est dado en base a preguntas tal cual las vimos anteriormente (EDAD=0? EDAD> MY?). Por otro lado, el excesivo nmero de preguntas lentifica el procesamiento y ocupa importantes espacios en memoria. Para evitar esto y SLO PARA EL CASO DE IGUALDAD, se utiliza la herramienta de seleccin mltiple CASE y en el caso de tener que hacer 3 preguntas o ms. Ejemplo: Detectar la cantidad de personas por pas considerando que: 1: Alemania 2: Argentina - 3: Bolivia 4: Brasil 5:Paraguay Ejemplo SIN CASE
SI SI SI SI SI NO NO NO NO NO FIN ISFD DR JUAN PUJOL CORRIENTES Pg 9/16 PROFESORADO DE INFORMTICA - 1A ALGORITMOS Y PROGRAMACIN 2013 Prof. MACIEL CASTILLOS RODOLFO
Ejemplo CON CASE
Otherwise: (en otro caso) esta parte del programa se ejecuta cuando PAIS no asume el valor 1,2, 3 4; por lo tanto la lgica afirma que sera 5. Para que realmente funcione con seguridad es necesario crear una mscara de entrada al ingresar los datos (1.5) ya que si pusieran un 6 un CERO,, se lo contara como Paraguay.
ARREGLOS Los arreglos son posibilidades que brindan las variables de poder guardar temporalmente una gran cantidad de datos de igual tipo utilizando un mismo nombre de variable. Para poder acceder a cada dato en particular, se utiliza uno o dos punteros para recorrerlo (segn sea el caso). Si los arreglos son unidimensionales se los llaman vectores, pero si tienen ms dimensiones (2, 3, 4, ,,,n) se los llaman matrices de n dimensiones. Por ejemplo: Vec(5) vector de 5 elementos Mat(3,5) matriz de 3x5 elementos, (3 filas, 5 columnas). Para poder generarlo es necesario utilizar bucles, los datos pueden ser cargados directamente de teclado ser ledos de archivos. Es importante saber cundo utilizarlos. FIN INICIO NOMBRE EDAD PAIS
SI NO ISFD DR JUAN PUJOL CORRIENTES Pg 10/16 PROFESORADO DE INFORMTICA - 1A ALGORITMOS Y PROGRAMACIN 2013 Prof. MACIEL CASTILLOS RODOLFO A B C D E F MODELO DE PARCIAL con uso de ARREGLOS (arrays), deteccin de Mayor y Menor, seleccin mltiple, contadores y acumuladores Enunciado: Un importador de productos recibe un cargamento #2309845HER# en el puerto de BA, los mismos son de diferentes pases y estn cotizados al valor de la moneda de origen. En el proceso de gravacin de impuestos la AFIP agrupa todos los productos por importador sin interesar el origen. A los efectos de organizar los pagos se requiere un algoritmo que permita calcular los impuestos a pagar por la importacin segn el rubro de los productos; al mismo tiempo se requiere un detalle de todos los productos como as tambin calcular la cantidad de productos por rubro y el rubro que ms y que menos se import, asimismo la cantidad de dinero gravado por importar de cada pas y el total del gravamen del embarque. Datos: Pases de importacin: (1) Alemania - (2) China (3) Estados Unidos - (4) Brasil Rubros de exportacin: (AL) Alimentos Enlatados - (EL) Electrnicos (MA) Maquinarias Agrcolas - (AU) Autopartes Porcentajes de gravado: Cotizacin de las monedas (cantidad de $ ARG para comprar una unidad)
Formato de Entrada de Datos
AL EL MA AU 1,8% 2,1% 1,5% 2,5% Alemania - Euro China - Yuan EEUU - Dlar Brasil - Real 5,583 0,7149 4,557 2,25 CODIGO PRODUCTO C A N T
R U B R O
P R E C I O
U N I T A R I O
O R I G E N
A275 SALMON AHUMADO 300 AL 1,20 2 4F15 COSECHADORAS 15 MA 10.000,00 3 98U6 PALMITOS 140 AL 0,25 4 486H ODOMETROS 45 AU 180,00 1 458Y BOMBA DE AGUA 23 AU 87,50 2 AK23 WII VIDEO GAME 08 EL 700,00 2 .. . .. . .. LISTADO DE PRODUCTOS DE IMPORTADORA LOS ROBLES S.A. CORRIENTES CODIGO PRODUCTO CANTIDAD RUBRO ORIGEN A275 SALMN AHUMADO 300 ALIMENTOS ENLATADOS CHINA 4F15 COSECHADORAS 15 MAQUINARIAS AGRICOLAS ESTADOS UNIDOS 98U6 PALMITOS 140 ALIMENTOS ENLATADOS BRASIL 486H ODOMETROS 45 AUTOPARTES ALEMANIA 458Y BOMBA DE AGUA 23 AUTOPARTES CHINA AK23 WII VIDEO GAME 08 ELECTRNICOS CHINA
CANTIDAD DE IMPORTADOS AL: 9999 | MA: 999 | AU:9999 | EL: 999 RUBRO CON MAYOR CANTIDAD DE UNIDADES: AL MENOR CANTIDAD UNIDADES: MA
TOTAL GRAVADO POR ALIMENTOS ENLATADOS: $9999.99 POR AUTOPARTES: $9999.99 POR MAQUINARIAS AGRCOLAS: $9999.99 POR ELECTRNICOS: $9999.99 TOTAL GRAVADO POR EMBARQUE #2309845HER# : $ 999999.99 TOTAL DE $$ GRAVADOS POR IMPORTAR DE: ALEMANIA: $$$$$ | CHINA: $$$$$$ | EEUU: $$$$$ | BRASIL: $$$$
ISFD DR JUAN PUJOL CORRIENTES Pg 11/16 PROFESORADO DE INFORMTICA - 1A ALGORITMOS Y PROGRAMACIN 2013 Prof. MACIEL CASTILLOS RODOLFO A B C D E F Pasos para resolver el ejercicio 1) Se debe mirar atentamente los DATOS de entrada y la SALIDA esperada de manera que con las entradas, previo procesamiento, se pueda obtener los requerimientos de salida. Podemos observar que:
Es una lnea de ttulos por lo tanto deber imprimirse al iniciar el algoritmo Son lneas de detalle considerar una impresin de datos dentro del PROCESO NORMAL del algoritmo, hay que tener cuidado porque tanto en rubros como en pases sale el texto completo, mientras que en la entrada de datos slo se tienen cdigos. Solicita cantidad de productos por rubro utilizar contadores en el PROCESO NORMAL en este caso se utiliza un acumulador. Solicita detectar el rubro con mayor y menor cantidad de unidades importadas. El total por rubros lo obtendremos en el punto C y al finalizar carga de todos los datos de entrada recin estaremos en condiciones de comparar quien ha sumado la mayor y menor cantidad; por lo tanto el proceso de deteccin de mayor y menor lo haremos por PROCESO DE FIN DE ARCHIVO.
El total gravado por rubro habilitar acumuladores en el PROCESO NORMAL para luego informarlos al final. Cmo lo que acumulamos es Dinero que se obtiene de aplicar frmulas, es importante conformar las mismas: GRAVADO = (CANT * PRECIO_UNITARIO * PORC_GRAV) /100 nos arroja en la moneda de origen lo que se grava por ese producto GRAV_PESOS = GRAVADO * COTIZACION convierte a pesos lo que graba ese producto proveniente de ese pas en cuestin
As por ejemplo, si tomamos nuestro primer registro de la tabla de datos de entrada tendramos: GRAV_PESOS = ((300 * 1,20 * 1,80) /100) * 0,7149 Este GRAV_PESOS es lo que deberemos acumular para informar al final. Ojo!!! Eso pasara para el primer registro pero nuestro programa deber estar preparado para todos los registros y todos los casos posibles, por lo tanto cuando llevemos esta frmula a nuestro DdF sufrir algunas modificaciones.
El total gravado por embarque usar tambin acumuladores, lo lgico sera ponerlos en el PROCESO NORMAL, pero ese mismo dato lo podremos obtener sumando los totales obtenidos por rubro ms arriba y lo haremos en el PROCESO DE FIN DE ARCHIVO, esto es: TOTAL_GRAV_EMB = TOTAL_AL + TOTAL_EL + TOTAL_MA + TOTAL_AU Seguramente esta frmula variar en el DdF, pero lo importante aqu es saber que va en el PROCESO DE FIN DE ARCHIVO.
El total gravado por pas se procede de la misma forma que en el total gravado por rubro
Porque en cada registro viene ms de 1 artculo. ISFD DR JUAN PUJOL CORRIENTES Pg 12/16 PROFESORADO DE INFORMTICA - 1A ALGORITMOS Y PROGRAMACIN 2013 Prof. MACIEL CASTILLOS RODOLFO A Por ltimo, nuestra propuesta de solucin estara dada por la creacin de 1 matriz y 5 vectores:
RUBROS
PAISES AL EL MA AU ACUM_PAIS COTIZAC
ACUM_RUBRO
PORC_GRAV
5,583 0,7149 4,557 2,25 ALEMANIA CHINA ESTADOS UNIDOS BRASIL
1,8% 2,1% 1,5% 2,5% Cada posicin acumular el total en dinero Reservo en memoria los espacios para los vectores y las matrices INICIO COTIZAC (n) = 4 ACUM_RUBRO(n) = 4 PORC_GRAV (n) = 4 RUBRO_PAIS(mxn) = (4,4) MY = -9999 MN= 9999 PAISES(n) = 4 ACUM_PAIS(n)= 4
LISTADO DE PRODUCTOS DE IMPORTADORA LOS ROBLES S.A. CORRIENTES CODIGO PRODUCTO CANTIDAD RUBRO ORIGEN
1 RUBRO_PAIS (PF,PC)=0 PC 1 1 4 PF 1 1 4 De esta manera se recorre la matriz, en este caso se la inicializa con 0, se posiciona en la fila 1 y recorre todas las columnas ( de 1 a 4), luego se posiciona en la fila 2 y repite el proceso. Se aprovecha el bucle de la fila para inicializar los vectores que contarn la cantidad de productos por RUBRO y por PAS. ACUM_PAIS (PF)=0 ACUM_RUBRO (PF)=0 ISFD DR JUAN PUJOL CORRIENTES Pg 13/16 PROFESORADO DE INFORMTICA - 1A ALGORITMOS Y PROGRAMACIN 2013 Prof. MACIEL CASTILLOS RODOLFO NO SI
COTIZ_DIA, POR_GRA, PAIS
CODI, PRODU, CANT, RUBRO, PU, ORIGEN
1 COTIZAC (PF) = COTIZ_DIA PORC_GRAV(PF) = POR_GRA PAISES(PF)= PAIS PF 1 1 4 Pide por teclado los 4 valores de cotizacin, los porcentajes de gravado por cada producto y el nombre de los pases de los cuales se importan. El bucle tiene un puntero PF (puntero fila), que vara de 1 a 4 en intervalos de 1. De manera que en el primer ingreso se cargar 5,583 (el valor del euro) y 1,83 (el porcentaje de gravado de AL) y Alemania. Se supone que la posicin 1 es para Euros, Alimentos y Alemania; la 2 para Yuan, Electrnicos y China; la 3 para Dlar, Maquinarias y Estados Unidos; y la 4 para Real, Autopartes y Brasil. CODI = 0
CASE RUBRO RUBRO =AL RUBRO=EL RUBRO=MA OTHERWISE PC=1 2 PC es el puntero de columna, y como definimos anteriormente al detectar el contenido del valor en letras, y siguiendo nuestra lgica de las matrices, se asigna un nmero que va de 1 a 4 segn rubro. Aprovechando el CASE, definimos la leyenda que va en la impresin ms adelante. RUB = ALIMENTOS ENLATADOS PC=2 RUB = ELECTRODOMSTICOS PC=3 RUB = MAQUINARIAS AGRICOLAS PC=4 RUB = AUTOPARTES 3 4 ISFD DR JUAN PUJOL CORRIENTES Pg 14/16 PROFESORADO DE INFORMTICA - 1A ALGORITMOS Y PROGRAMACIN 2013 Prof. MACIEL CASTILLOS RODOLFO B 4
Calculo el gravamen en pesos, para ello recupero el % del vector y la cotizacin de la moneda de origen. Almaceno en la matriz RUBRO_PAIS el valor en pesos de lo grabado por ese producto de ese pas. CODI, PRODU, CANT, RUB, PAISES(ORIGEN)
Imprime la lnea de detalle 3 ACUM_RUBRO(PC) = ACUM_RUBRO(PC) + CANT OTHERWISE POS = 1 POS = 2 POS = 3 CASE POS PRMY= ALIMENTOS ENLATADOS PRMY= ELECTRNICOS PRMY= MAQUINARIAS AGRICOLAS PRMY= AUTOPARTES 5 Aqu realizamos la deteccin de la Mayor cantidad de productos importados y guardamos en POS la posicin del mismo, para luego con un CASE poder recuperar el nombre del producto. A travs de un proceso de subrutinas (o funciones) se puede simplificar la repeticin de determinados procesos. Esto lo veremos ms adelante. SI MY < ACUM_RUBRO(PF)
MY = ACUM_RUBRO(PF) POS= PF PF 1 1 4 NO ISFD DR JUAN PUJOL CORRIENTES Pg 15/16 PROFESORADO DE INFORMTICA - 1A ALGORITMOS Y PROGRAMACIN 2013 Prof. MACIEL CASTILLOS RODOLFO C D
RUBRO CON MAYOR CANTIDAD DE UNIDADES: PRMY MENOR CANTIDAD UNIDADES: PRMN
ACUM_RUBRO(PF) = 0 6 PF 1 1 4 Se vuelve a inicializar el vector para reutilizarlo ms adelante. ISFD DR JUAN PUJOL CORRIENTES Pg 16/16 PROFESORADO DE INFORMTICA - 1A ALGORITMOS Y PROGRAMACIN 2013 Prof. MACIEL CASTILLOS RODOLFO E F
TOTAL GRAVADO POR EMBARQUE #2309845HER# : $ TOTAL TOTAL DE $$ GRAVADOS POR IMPORTAR DE: ALEMANIA : $ ACUM_PAIS(1) CHINA : $ ACUM_PAIS(2) ESTADOS UNIDOS: $ ACUM_PAIS(3) BRASIL : $ ACUM_PAIS(4)
ACUM_RUBRO(PC) = ACUM_RUBRO(PC) + RUBRO_PAIS(PF,PC) ACUM_PAIS(PF) = ACUM_PAIS(PF) + RUBRO_PAIS(PF,PC) PF 1 1 4 PC 1 1 4 Recorre la matriz para recuperar los datos y los va acumulando en los vectores que contienen las cantidades por PAIS y por RUBRO 6 TOTAL = ACUM_RUBRO(1) + ACUM_RUBRO(2) + ACUM_RUBRO(3) + ACUM_RUBRO(4) FIN