Vous êtes sur la page 1sur 67

Fundamentos de Programacin

ALGORITMOS COMPUTACIONALES 1. NOCIN DE ALGORITMO


RESOLUCIN DE PROBLEMAS COMPUTACIONALES
En la vida diaria nos enfrentamos continuamente a problemas que debemos resolver en lo posible felizmente. As como cada individuo tiene formas de encarar un problema y su propia manera de solucionarlo, computacionalmente hablando podemos hacer un paralelo. Ante la presentacin de un problema encarar la mejor forma de resolverlo para arribar al resultado esperado y correcto es un desafo. Para ello debemos comprender exactamente qu se pide, qu resultados se pretenden y que restricciones y/o condiciones existen. Para realizar lo antes dicho dividiremos la resolucin de un problema en etapas, las cuales enunciamos y definimos a continuacin.

1.1.1.

ETAPAS PARA LA RESOLUCIN DE PROBLEMAS

a. Definicin del problema Est dada por la formulacin del problema en forma correcta y completa. Esta enunciacin de lo que se desea es primordial para el xito de la resolucin. b. Anlisis del problema A partir del estudio del problema se deber identificar y conocer las partes principales del mismo y de esa manera determinar los siguientes conjuntos: de DATOS : es la informacin con que contamos para resolver el problema. de RESULTADOS : es lo que se desea obtener.

de CONDICIONES: una o ms relaciones que vinculan los dos conjuntos anteriores y que permitirn plantear la solucin del problema. c. Programacin Esta etapa consiste en obtener la solucin del problema dado. Se divide en dos subetapas:

2 Fundamentos de Programacin

c.1. Eleccin y creacin del mtodo Se trata de buscar un procedimiento o mtodo general que permita resolver el problema planteado utilizando una computadora. Es muy factible que se encuentren varios mtodos para hacerlo, lo importante es determinar la mejor alternativa, de acuerdo a distintos parmetros que se establezcan para esta seleccin. Esta puede ser la que produzca los resultados esperados en el menor tiempo y al menor costo o slo en el menor tiempo u otras. c.2. Codificacin Consiste en expresar el mtodo elegido en un lenguaje, llamado lenguaje de programacin, que pueda se interpretado por la computadora. Esta subetapa ser objeto de estudio en aos superiores. d. Prueba Esta etapa consiste en la ejecucin del cdigo del mtodo elegido, es decir, suministrar los datos al computador, y obtener los resultados. Luego se analizarn los mismos determinando si son realmente los esperados. Caso contrario, debern analizarse las etapas previas, comenzando por la ltima hacia atrs, y realizar las modificaciones necesarias, repitiendo esta proceso hasta obtener los resultados esperados. Observemos grficamente las etapas descriptas Resolucin de problemas

Definicin del problema

Anlisis del problema

Programacin

Prueba

Eleccin y creacin del mtodo

Codificacin

Capitulo 1 Nocin Algoritmo 3

La etapa de eleccin y creacin del mtodo se puede dividir a su vez en el diseo de la estrategia y la definicin del algoritmo, y puede graficarse de la siguiente manera: Eleccin y creacin del mtodo

Diseo de la estrategia

Definicin del algoritmo

Ahora definamos el concepto de estrategia y de algoritmo.

1.1.2.

ESTRATEGIA

El diseo de la estrategia consiste en encontrar un mtodo que nos permita llegar a resolver el problema planteado. Como primer paso de esta etapa, debemos preparar un plan o esquema general de las tareas que deben realizarse para llegar a la solucin. Este esquema se denomina estrategia y debe ser una lista de QUE hacer. Cmo se disea una estrategia? Por lo dicho disear una estrategia consiste en dividir o descomponer el problema original en una sucesin de problemas ms simples, de tamao suficientemente pequeo como para que cada uno de ellos pueda ser comprendido en su totalidad. Esto, permitir atacar la solucin de cada problema simple por separado e independientemente de los dems, volviendo a aplicar este enfoque a cada uno de los subproblemas hasta llegar a subproblemas de solucin simple. Una vez que todos ellos han sido resueltos, se puede decir que el problema original ha sido resuelto. Este proceso de descomposicin de un problema partiendo de la formulacin completa del problema hasta llegar a problemas elementales de simple solucin, se llama diseo descendente, tambin conocido como top-down, mtodo de refinamiento sucesivos o diseo compuesto.

4 Fundamentos de Programacin

Grficamente, dado el problema P lo dividiremos en subproblemas Pi. Cada subdivisin implica un descenso de nivel. P nivel 0 P3 P4 nivel 1 nivel 2

P1

P2

P31

P32

P33

Cada Pi representa un enunciado o subproblema. Para cada uno existen 2 posibilidades: que Pi sea un subproblema o una tarea simple, dando por finalizada la descomposicin que Pi sea un subproblema o una tarea compuesta y por lo tanto sea posible su descomposicin en una nueva secuencia de subproblemas Las caractersticas generales de este tipo de diseo se basan en: ir de lo general a lo particular no existe una nica descomposicin de subproblemas en cada nivel puede verificarse que el esquema sea el correcto

finalmente se realiza un trabajo de recomposicin del esquema completo, resolviendo cada subproblema hasta lograr la solucin del problema. El diseo de una estrategia y su posterior refinamiento, constituyen las etapas ms creativas y quizs ms dificultosas de todo el proceso de resolucin de un problema.

1.1.3.

ALGORITMO

Planteada una estrategia indicando QUE tareas hacer, debemos especificar una lista detallada de COMO hacerlas, llegando as a definir una solucin paso a paso del problema llamada algoritmo. La descripcin de la solucin detallado por

Capitulo 1 Nocin Algoritmo 5

medio de un algoritmo constituye el segundo paso en la etapa de eleccin del mtodo. La palabra algoritmo se utiliza, en general, como sinnimo de procedimiento, mtodo o tcnica. Pero en el rea de computacin tiene un significado ms especfico. Un algoritmo es un conjunto finito de operaciones (instrucciones - pasos) que seguidos en un determinado orden permiten resolver un tipo de problema. Las caractersticas principales de un algoritmo son : Finito : permite arribar a la solucin de un problema despus de la ejecucin de un nmero finito de pasos. Definido : cada paso debe ser enunciado en forma clara y precisa, y no debe dar lugar a ambigedades. Para los mismos datos el algoritmo debe dar siempre los mismos resultados General : debe ser la solucin aplicable a un tipo de problemas y no un problema particular. Teniendo en cuenta las caractersticas mencionadas previamente podemos decir que un algoritmo es una secuencia ordenada y finita de pasos que constituyen un mtodo general para resolver un tipo de problemas. Es de notar que esta definicin, se refiere a ...resolver un tipo de problemas ..... y no hace hincapi en el uso del computador como herramienta para su resolucin. Esto se debe a que el concepto de algoritmo se aplica a problemas computacionales que van a ser resueltos por medio de un computador y a problemas no computacionales, en cuya resolucin no interviene esta herramienta. En ambos casos el lenguaje usado en la descripcin del algoritmo debe ser comprensible para el destinatario o para quien lo va a ejecutar. Por lo visto, para cualquier problema para el que pueda especificarse un mtodo finito de solucin puede definirse un algoritmo. Ejemplos que se pueden presentar en la vida diaria : una receta de cocina las instrucciones para utilizar un aparato electrnico el camino para llegar a un lugar determinado desde un punto de partida

6 Fundamentos de Programacin

Ejemplos de algoritmos computacionales Calcular los sueldos de los empleados de una empresa Actualizar el stock de un comercio Calcular las races de una ecuacin

Desarrollemos el siguiente ejemplo de la vida diaria Problema: Preparar un taza de caf instantneo El grado de detalle que deberemos usar en la definicin del mtodo, depender de la persona que sea la ejecutante de la solucin. Si el ejecutante es un ama de casa, probablemente con el enunciado sea suficiente, pero si se trata de alguien que nunca prepar un caf podramos detallar los siguientes pasos: PROCESO Cafe1 Calentar una taza de agua sin llegar al punto del hervor; Poner en un taza tres cucharaditas de azcar, dos de caf instantneo y media cucharadita de soda; Batir hasta que la mezcla se torne marrn claro; Llenar con el agua caliente la taza; Revolver para disolver la mezcla en el agua

FINPROCESO Obsrvese que para indicar el inicio y el fin del algoritmo se han utilizado las palabras PROCESO Y FINPROCESO respectivamente y que los pasos han sido lo suficientemente simples para un principiante en el arte de preparar caf. Otro aspecto que es importante considerar es que contamos con una serie de elementos para poder preparar el caf como por ejemplo : recipiente para calentar el agua, azcar, caf, cucharita, taza, soda Supongamos que no se tiene la certeza de que en el momento de hacer el caf se tenga soda, se podr reemplazar con agua, el algoritmo por lo tanto ser

Capitulo 1 Nocin Algoritmo 7

Algoritmo Cafe2 Calentar una taza de agua sin llegar al punto del hervor; Poner en un taza tres cucharaditas de azcar , dos de caf instantneo SI se tiene soda ENTONCES agregar en la taza media cucharadita de soda SINO agregar en la taza media cucharadita de agua fra FINSI Batir hasta que la mezcla se torne marrn claro; Llenar con el agua caliente la taza; Revolver para disolver la mezcla en el agua

Fin Algoritmo Las dos primeras instrucciones se ejecutan una a continuacin de otra, luego se presentan dos alternativas: o se agrega media cucharadita de soda o se agrega media cucharadita de agua fria. Para describirlas se ha usado las palabras SI ENTONCES SINO FINSI que se analizarn en detalle ms adelante En este caso el algoritmo cubre ya mayor cantidad de posibilidades, no previstas en la versin anterior. A partir de esto se pueden realizar las siguientes observaciones: El algoritmo debe estar compuesto por acciones tales que el ejecutante sea capaz de realizar El algoritmo debe ser enunciado en un lenguaje comprensible para el ejecutante, hombre o computador. En este ltimo caso, estar restringido a un juego de instrucciones perfectamente determinado. El algoritmo deber representar todo el conjunto de posibles resultados del problema, inclusive el caso de que no tenga solucin Para un mismo problema se pueda describir ms de un algoritmo y con cualquiera de ellos se deber llegar a la/s misma/s solucin/ es ; un algoritmo ser ms eficaz que otro. La eficacia del algoritmo depende de los recursos con que se cuente y los factores que se consideren : costos, tiempo, etc..

8 Fundamentos de Programacin

Ejemplo de resolucin de problemas de la vida cotidiana Ejemplo: Preparar un licuado de frutas Recursos: Licuadora. Fruta con cscara. Taza con leche. Taza con azcar. Cuchillo. Plato. Todos los elementos estn sobre la mesada. Se cuenta con las medidas necesarias de todos los ingredientes. Algoritmo : Algoritmo Licuado Tomar el vaso de la licuadora Colocar el vaso en la base SI la licuadora no est enchufada ENTONCES enchufarla FINSI Tomar el cuchillo REPETIR tomar la fruta pelarla cortarla sobre el plato colocar la fruta cortada en el vaso HASTAQUE no haya ms frutas Dejar el cuchillo Tomar la taza con la leche Echar la leche en el vaso Dejar la taza de la leche sobre la mesada Tomar la taza con el azcar Colocar el azcar en el vaso Dejar la taza del azcar sobre la mesada Tapar el vaso Mover la perilla de encendido hacia la derecha REPETIR esperar HASTAQUE la mezcla est licuada Mover la perilla de encendido hacia la izquierda Fin Algoritmo

En este caso ciertas acciones como la de Tomar la fruta, pelarla, cortarla, colocar..... se repiten mientras se tiene fruta para hacerlo. Aparecen aqu las palabras REPETIR y HASTAQUE , que veremos en capitulos posteriores.

1.1.4.

FORMALIZACIN

Formalizaremos algunos conceptos vistos anteriormente. Hemos mencionado que la forma de enunciar la solucin a un problema planteado depende del ejecutante o tambin llamado procesador. Por lo tanto llamaremos as a toda entidad capaz de entender un enunciado y ejecutar los pasos descriptos en un algoritmo. Si bien en los ejemplos vistos el ejecutante se trataba de un persona en la resolucin de problemas computacionales debemos pensar que el procesador ser la computadora. Tambin hemos notado que para poder realizar su tarea el ejecutante debe contar con los recursos adecuados. El conjunto de estos recursos existentes en el momento de la ejecucin de un trabajo constituye el ambiente del problema. El mtodo que se elija para proponer la solucin de un tipo de problema depende del ejecutante y de los recursos o elementos con que se cuenta (ambiente). Cuando definimos algoritmo hemos hablado de un conjunto de pasos o acciones. Una accin es un evento que modifica el ambiente y puede ser: primitiva no-primitiva

Una accin es primitiva cuando para un ejecutante dado su enunciado es suficiente para que pueda ser ejecutada sin informacin adicional. Una accin no-primitiva es aquella que puede ser descompuesta en acciones primitivas par un ejecutante dado. Tambin hemos visto que en los ejemplos se nos presentan situaciones que indicaban alternativas : SI se tiene soda ..., esta no es una accin porque no modifica el ambiente, pero son elementos que el ejecutante debe saber interpretar. A estos enunciados se los denomina condicin.

Por lo tanto una condicin es una afirmacin lgica sobre el estado de algn recurso del ambiente, que puede tomar valor verdadero o falso en el momento de la observacin. El ejecutante determina en el momento de la ejecucin del algoritmo las acciones a seguir, dependiendo de que la condicin sea satisfecha o no.

PROGRAMACIN MODULAR
Es un mtodo de diseo y tiende a dividir el problema en partes perfectamente diferenciadas que puedan ser analizadas, resueltas y puestas a punto por separado. Para atacar el anlisis de un problema, y siguiendo el diseo Top-Down, se pueden utilizar criterios de programacin modular para dividirlos en partes independientes, probando cada uno por separado y realizando su recomposicin ascendente. Cada una de las partes independientes se llama Mdulo y para su determinacin se deben tener en cuenta los siguientes criterios: un mdulo debe corresponder a una funcin lgica perfectamente bien definida. los mdulos deben ser pequeos para que sean claros y de poca complejidad. un mdulo debe tener una estructura de caja negra, es decir la salida debe ser exclusivamente funcin de la entrada. cada mdulo deber tener una nica entrada y una nica salida.

1.1.5.

Objetivos de la programacin modular

La programacin modular tiende a : disminuir complejidad: disminuye la complejidad del problema original, dividiendo un problema en partes ms simples. aumentar la claridad: el problema original es planteado ahora como un sucesin de mdulos que resulta ms fcil de comprender inclusive para terceras personas. aumentar la fiabilidad: como consecuencia de los dos puntos anteriores, aumenta la confiabilidad en todo proceso de resolucin.

Captulo III. Lgica de Control 11

facilitar modificaciones y conexiones: cada mdulo puede realizarse y probarse por separado, minimizndose los problemas de puesta a punto al final.

2. FORMALIZACION DE ALGORITMOS
Qu es un ALGORITMO COMPUTACIONAL?
Los problemas desarrollados hasta el momento, se resolvieron empleando instrucciones coloquiales y se basaban en situaciones de la vida diaria. Los algoritmos as desarrollados son fciles de entender para cualquier persona o ejecutante. Pero nuestro objetivo es llegar a desarrollar algoritmos que puedan ser interpretados por una computadora. Para ello es necesario una descripcin clara y carente de ambigedades de cada una de las acciones que llevan a la solucin del problema, por medio de rdenes comprensibles para la computadora. En este captulo nos ocuparemos de describir la formalizacin necesaria para el desarrollo de Algoritmos Computacionales. De aqu en ms cuando mencionemos al ejecutante de un algoritmo, nos estaremos refiriendo concretamente a una computadora. En el siguiente ejemplo planteamos un algoritmo completo de acuerdo a la formalizacin que propondremos posteriormente. Ejemplo: Plantear un algoritmo computacional que calcule la hipotenusa de un tringulo rectngulo, se conocen las longitudes de los catetos. Anlisis del problema: Datos: Longitudes de los catetos Resultados: Hipotenusa Relacion: Teorema de Pitgoras

Algoritmo:

Captulo III. Lgica de Control 13

Inicio

A,B

H RC( A 2 + B 2)

Hipotenusa=, H

Fin

En este ejemplo A, B y H constituyen variables; 2 e 'Hipotenusa' son constantes; el paralelogramo con una flecha hacia su interior representa la accin de LEER, el paralelogramo con la flecha hacia afuera es la accin de ESCRIBIR y la flecha representa la accin de asignacin; RC (A 2 + B 2) es una expresin numrica y RC ( ) es la funcin raz cuadrada. El signo ; (punto y coma) es el separador de acciones. En esta unidad iremos desarrollando todos estos elementos, que conforman un lenguaje algortmico grfico que nos permnite crear diagramas de fujo La forma general de un algoritmo expresado mediante u diagrama de flujo es la sigueinte en pseudocdigo es la siguiente:

Inicio

accin 1

accin 2 .. accin n

Fin Donde cada boque grfico representa una accin deteminada del algoritmo. Esudiaremos varias acciones y su correspondiente forma en el diagama de flujo.

CONSTANTES, VARIABLES Y EXPRESIONES


Definimos constante, como un elemento cuyo valor que no puede alterarse en el transcurso de la ejecucin de un algoritmo. Por ejemplo: 123, 'Lpez', 3.14459 Pero adems en un algoritmo existen otros elementos cuyo valor cambia durante la ejecucin del mismo, llamados variables. En el ejemplo inicial A, B y H son variables -correpondientes a los catetos y a la hipotenusa del tringulo, respectivamente- que adquieren un valor en el momento de la ejecucin del algoritmo. Una variable es un elemento o lugar asociado a un valor el que puede variar conforme se ejecuta el algoritmo, se representa por un nombre que identifica a

Captulo III. Lgica de Control 15

una posicin de memoria donde puede asignarse o almacenarse un nico valor por vez. Para proponer el nombre de una variable observaremos tres reglas simples: 1) Utilizar slo letras y/o dgitos, comenzando siempre con una letra. 2) No utilizar las palabras claves o reservadas del lenguaje de codificacin (por ahora, no endremos incovenientes en este aspecto, pues usaremos diagramas de flujo); o para las funciones internas o predefinidas: RC, SEN, TRUNC, LN, etc. 3) No hacer distincin entre maysculas y minsculas. Esto implica que VENTA, venta y Venta, constituyen en el algoritmo la misma variable. Esta sintaxis y sus restricciones no presentan inconvenientes para proponer nombres de variables, pues disponemos de un sinnmero de combinaciones diferentes de letras y dgitos. Por ejemplo: NOMBRE, DIRECCION, Res1, MONTO. Ejercicio: En los siguientes ejemplos de variables, indique si son vlidas; caso contrario especifique la causa:
a) venta b) x12 c) (total) d) resultado e) *PRODU f) promedio El diseador del algoritmo tiene total libertad para proponer nombres a sus variables, aunque como consejo, es conveniente proponer identificadores que tengan alguna relacin con el dato que representan. En nuestro ejemplo inicial, podramos haber empleado CATETO1, CATETO2, HIPOT, en lugar de A, B, H.

Por ltimo, definimos expresin a un conjunto de operandos ligados por operadores, que describe una operacin o clculo arrojando un nico resultado. En nuestro primer ejemplo RC (A 2 + B 2) es una expresin que permite obtener el valor de la hipotenusa. Algunos ejemplos de expresiones: 1) 2+a-x*5, 2) A < B, 3) TRUNC( R ) + 1

TIPOS DE DATOS
Un algoritmo computacional puede emplear los siguientes tipos de datos:
Numrico Caracter Lgico

Esta clasificacin nos define los tipos primitivos de datos. Estudiaremos a cada uno de ellos y su modo de empleo.

2.1.1.

Tipo numrico

Es el conjunto formado por los valores numricos que pueden incluir un punto decimal y pueden estar precedidos por los signos '+' o '-'. La ausencia de signo implica un valor positivo. Se clasifican a su vez en tipo entero o tipo real, pero no haremos distinciones en su empleo. Los datos de tipo numrico pueden representarse como constantes, variables y /o expresiones . Constantes numricas Una constante numrica es un valor formado por algn elemento del conjunto numrico. Veamos algunos ejemplos de constantes numricas que puedan emplearse en un algoritmo computacional: 12 -25000 +1.2345 -2345 -23576.998 0.45E+02 En el ltimo ejemplo se indica una constante numrica con notacin cientfica, donde E+02 indica la potencia de base diez, es decir: 0.45E+02 = 0.45 * 10 2 = 45 Variables numricas Cualquier identificador o variable que represente a un dato numrico se denomina variable numrica. Si una variable se define en un algoritmo como numrica, no podr adoptar valores de tipo no numrico.

Expresiones numricas Una expresin numrica es aquella que combina operandos numricos (constantes numricas, variables numricas u otras expresiones numricas) con los operadores algebraicos.

Captulo III. Lgica de Control 17

Los operadores algebraicos y su funcin son: Operador + * / Funcin Suma Resta Producto Cociente Potencia

La jerarqua de estos operadores es la misma que plantea el lgebra de los nmeros, y podr ser alterada con la intercalacin de niveles de parntesis. Ejemplos: 2 + a * 10 2 - 800 / C 1 - (2 * TOT - 30) P) 4 * (VENTA / 5 2 - 25) donde a, C, TOT, P, VENTA son todas variables numricas. En cada caso, al evaluar la expresin se obtiene un nico resultado. El operador de radicacin no existe, ya que esta operacin puede plantearse a travs de la potenciacin de exponente fraccionario. De todas maneras utilizaremos una funcin para el clculo de la raiz cuadrada, como se indica en el ejemplo inicial. Supondremos adems, que el ejecutante de nuestro algoritmo (la computadora ) conoce y puede resolver ciertas funciones numricas. A estas funciones las llamaremos "funciones internas" y, tienen la propiedad de devolver un valor o resultado al ser aplicadas sobre un argumento indicado entre parntesis. Funcin RC( ) ABS( ) EXP( ) SEN( ) Significado Raz cuadrada Valor absoluto Exponenciacin Seno

Funcin COS( ) TAN( ) ATAN( ) TRUNC( ) LN( ) REDON( ) Ejemplos: TRUNC(2/3) - ABS(A) * 3 SEN(X) + 1 - TAN(C/2) 12/ RC(TAN(3.1416 / 4))

Significado Coseno Tangente Arco tangente Parte entera Logaritmo natural Redondeo

Con esto podemos ampliar el uso de expresiones numricas antes mencionadas.

2.1.2.

Tipo Caracter

El tipo caracter incluye a un conjunto formado por todos los caracteres o smbolos de cdigo ASCII (Cdigo Estadard Americano para el Intercambio de Informacin). La mayora de ellos se generan en el teclado de una computadora, es decir, las letras de nuestro alfabeto en mayscula, en minscula, los dgitos, los operadores relacionales '<', '>', '=', el espacio en blanco ' ',los operadores aritmticos '+', '-', '*', '/', los caracteres de puntuacin y otros especiales '!', '@', '%', '(', etc. Este conjunto de 256 caracteres es un conjunto ordenado, y por lo tanto, existe una relacin de precedencia u orden entre sus elementos (de menor a mayor) determinado por su nmero de cdigo. El orden lo establece el cdigo ASCII (ver la tabla con algunos de los cdigos). Tener e cuenta que en el orden de precedencia del cdigo ASCII, los siguientes grupos se hallan propuestos de menor a mayor: El espacio en blanco Los dgitos '0', '1', '2',.........'9'. Las letras maysculas 'A', 'B',......'Z'.

Captulo III. Lgica de Control 19

Las letras minsculas 'a', 'b',......'z'.

32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47

'' '!' '"' '#' '$' '%' '&' ''' '(' ')' '*' '+' ',' '-' '.' '/'

48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

'0' '1' '2' '3' '4' '5' '6' '7' '8' '9' ':' ';' '<' '=' '>' '?'

64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79

'@' 'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M' 'N' 'O'

80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95

'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z' '[' '\' ']' '^' '_'

96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111

'`' 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o'

112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127

'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z' '{' '|' '}' '~' ''

Algunos caracteres del cdigo ASCII con su nmero de orden correspondiente

Constantes tipo caracter Una constante tipo caracter es una constante cuyo valor pertenece al conjunto mencionado anteriormente delimitada por apstrofes. ( ). De acuerdo a la relacin de orden establecida, podemos afirmar que son verdaderas las siguientes proposiciones: La letra 'a' es mayor que la letra 'B'. El caracter '5' es menor que la letra 'A'. Dentro de este tipo incluiremos a las cadenas de caracteres: secuencia finita de caracteres encerrados entre apstrofes y por lo tanto tienen una longitud que est dada por la cantidad de caracteres que la forman. Por ejemplo, los nombres, apellidos y direcciones, constituyen informacin formada con sucesiones o cadenas finitas de los caracteres mencionados anteriormente. Ejemplos: 'Jorge Fernndez' '043-234558' 'Resultado=' 'HIPOTENUSA' 'San Martn 2377 - Dpto. 5' '*************'

Aqu tambin es vlido establecer una relacin de orden basada en la precedencia entre caracteres ya sealada. Para establecer dicho orden entre dos cadenas, se compara caracter por caracter hasta encontrar una desigualdad. Entonces son vlidas las proposiciones: 'Mario' '043-553456' 'mesa' es mayor que es menor que es menor que 'Mariana' 'TE:043-553456' 'mesas'

Observemos que en nuestra formalizacin algortmica, los datos de tipo caracter o las cadenas de caracteres se indican siempre entre apstrofos. Esto es para evitar confusiones con otros elementos algortmicos que desarrollaremos ms adelante.

Captulo III. Lgica de Control 21

Variables tipo caracter Una variable o identificador que represente a un caracter o a una cadena de caracteres es una variable de tipo caracter.

2.1.3.

Tipo Lgico

El tipo lgico nos permite expresar un valor de verdad en un algoritmo a travs constantes, variables y/o expresiones. Constantes Lgicas Las constantes lgicas son solo 2 y estn respresentadas por los valores Verdadero y Falso. Variables Lgicas Una variable lgica ser una variable que representa a alguno de los dos valores lgicos: Verdadero o Falso. Expresiones lgicas Las expresiones lgicas ms sencillas se plantean con la combinacin de operandos del mismo tipo y los operadores relacionales matemticos. Operador < > = >= <= <> Significado Menor que Mayor que Igual que Mayor o igual que Menor o igual que Distinto

Ejemplos:

Expresin Lgica 45 > 12 56 <= 30 Andrea' > 'Mariana' 'Andrea' > 'Ana' 60 < '23'

Resultado Verdadero Falso Falso Verdadero expresin no vlida

Las expresiones lgicas simples mostradas en el ejemplo, tambin son conocidas como expresiones relacionales, pues permiten comparar o relacionar a dos operandos del mismo tipo. Justamente, la ltima expresin del ejemplo anterior no es vlida pues compara a una constante numrica con una constante de tipo caracter. La algortmica computacional, permite tambin formar expresiones lgicas ms complejas, a travs de operandos lgicos y los operadores que emplea la lgica proposicional: Conector Lgico ~ Significado Conjuncin Disyuncin Negacin

Observemos entonces el valor de verdad de las siguientes expresiones lgicas: Expresin Lgica (7 < 10) ('a' < 'c') ('Ana' < 'Angel') (12 > 19) ~ (37 > 18) (VENTA > X) (SEN(X) <= 1) Resultado Verdadero Verdadero Falso Verdadero

Captulo III. Lgica de Control 23

PRIMITIVAS
En la unidad anterior definimos a primitiva como la accin algortmica cuyo enunciado es suficiente para que el ejecutante pueda realizarla sin ningn tipo de informacin adicional. En un lenguaje algortmico como lo son los lenguajes de programacin, las primitivas se identifican con palabras claves o reservadas. Nosotros empleamos bloques grficos en el diagrama de flujo para representar acciones primitivas. En algortmica computacional las acciones primitivas se clasifican en: Secuenciales Condicionales Repetitivas

Desarrollaremos a continuacin algunas acciones primitivas fundamentales de tipo Secuencial.

2.1.4.

ASIGNACIN

Esta accin permite a un identificador o variable, representar o memorizar cierto valor. Para describirla utilizaremos la notacin siguiente:
V E

Donde V es la variable a la cual el ejecutante debe asignar el valor de E. El smbolo '' puede leerse 'toma el valor'. Segn sean los tipos de V y E una asignacin puede ser: aritmtica caracter lgica

Asignacin aritmtica La asignacin V E es aritmtica si V es una variable numrica y E es una constante numrica, una variable numrica o cualquier expresin de tipo numrico.

Ejemplos: A 43; X A; (A toma el valor 43) (X toma el valor contenido en la variable A)

NUM 3*X+2; (NUM toma el valor que resulta de evaluar la expresin 3*X+2) Notemos que para poder realizar una asignacin aritmtica debemos evaluar la expresin de la derecha y luego ese resultado se almacena en la variable que figura a la izquierda. Por lo tanto es perfectamente vlida la accin: N N+1; que

equivale a: tomar el valor actual de N, sumarle 1 y asignarle ese resultado a la variable N. Por ejemplo, si antes de la accin N contena el valor 8, luego de dicha accin contendr 9. Observemos que esta accin algortmica no tiene nada que ver con los conceptos asimilados en matemtica, donde N= N+1 es una expresin incompatible.

Asignacin tipo caracter La asignacin V E es una asignacin de tipo caracter si V es una variable tipo caracter y E es un constante caracter o una variable tipo caracter Ejemplos: A '7'; X3 A; (A toma el valor '7') (X3 toma el valor contenido almacenado en la variable A) (APELLIDO toma el valor 'Lpez')

APELLIDO 'Lpez'; Asignacin lgica

La asignacin VE es una asignacin lgica si V es una variable de tipo lgico y E es una constante lgica (Verdadero o Falso), una variable lgica o una expresin lgica.
Ejemplos: M F ; TRUE 34 <= 78; (M toma el valor F) (TRUE toma el valor lgico V)

GA < 2) (C = 10) (G toma el valor lgico resultante de la expresin(A<2) (C=10))

Captulo III. Lgica de Control 25

2.1.5.

ENTRADA Y SALIDA

Todo algoritmo tiene por objetivo principal producir resultados, pudiendo o no incorporar informacin del medio externo (datos), al ambiente o sistema que observa. Esta incorporacin de valores desde el exterior al ambiente del algoritmo, nos lleva a definir una accin primitiva de lectura o entrada. Usaremos para ello un bloque grfico representado por un paraelogramo con una flecha hacia su inteior: De esta manera, la accin de lectura o LEER nos permite ingresar, desde el medio externo, uno o ms valores los cuales son asignados a la variable V o a las variables que figuran dentro del paraelogramo.
Ejemplos:

DAT

NOMBRE, APELLIDO, DNI

Esta accin tiene el mismo efecto que una asignacin, slo que sta utiliza valores del ambiente del algoritmo; en cambio la lectura asigna valores desde el medio exterior. Esta accin contribuye a hacer a los algoritmos de uso general, pues permite incorporar datos nuevos para producir nuevos resultados. Sin esta accin, la ejecucin de un algoritmo producir siempre la misma respuesta. La accin primitiva que permite a un algoritmo comunicar resultados o salida de informacin al medio exterior, la describiremos en el diagrama de flujo con un parelogramo y una flecha dirigida hacia el exterior. Representa la accin ed ESCRIBIR. Podemos colocar en este bloque una variable, una constante, una expresin o una lista de variables y/o constantes. Su formato general es: C

donde C representa una constante, una variable del ambiente, una expresin o una lista de variables. En esta accin el valor almacenado en una variable o el de una constante es comunicado al mundo exterior. Ejemplos: Apellido

DAT, NOMBRE

'Total =', X

Destaquemos algunas diferencias entre las acciones de lectura y escritura. La lectura se realiza solamente a travs de variables y, por lo tanto, si se lee una variable que ya fue definida en el algoritmo, implicar un acceso destructivo, esto es, la variable perder su valor para tomar el del nuevo dato que se ingresa. En cambio, si se escriben resultados a travs de variables el ejecutante realizar un acceso no destructivo a dichas variables, pues slo necesita conocer su contenido para ejecutar la escritura. Aqu las variables conservan sus valores despus de la accin. Las acciones de lectura y escritura son conocidas como acciones de entrada/salida o abreviadamente E/S.

DIAGRAMAS DE FLUJO
Las acciones antes desciptas corresponden a un lenguaje algortmico que llamaremos pseudocdigo. Adems, disearemos algoritmos en forma grfica a travs de los llamados diagramas de flujo. En un diagrama de flujo, las estructuras de las primitivas del pseudocdigo se identifican con una forma geomtrica identificatoria o bloque. Estos bloques se

Captulo III. Lgica de Control 27

unen con flechas que nos indican la secuencia u orden en que deben ejecutarse las instrucciones, es decir el flujo o recorrido que ha de seguirse en el diagrama. Para las acciones de lectura y escritura emplearemos un paralelogramo con una pequea flecha que apunta hacia adentro o hacia afuera del bloque respectivamente. Para la accin de asignacin usaremos un rectngulo.

Cada bloque se corresponde con una nica accin. Una de las ventajas del empleo de diagramas de flujo, es la visualizacin plana de las acciones que forman el algoritmo, permitiendo seguir facilmente su lgica. Estas ventajas se apreciarn ms adelante, cuando desarrollemos primitivas de estructura condicional y repetitiva. Veamos ahora algunas de las formas geomtricas que usaremos como bloques que identifican acciones en un diagrama de flujo: Bloque Significado o Uso
Inicio o fin de proceso Asignacin Lectura o ingreso de datos Escritura o salida Expresin lgica con una salida por V y otra por F Subalgoritmo

Conectores

MODELO PARA LA RESOLUCION DE PROBLEMAS


Propondremos ahora para este curso, un modelo para la presentacin del planteo y diseo de un algoritmo, que permita resolver un problema dado. Para ello, y habiendo abordado las etapas de Definicin del problema y del Anlisis del problema - vistas en la unidad anterior - nos centraremos en la etapa de Eleccin y creacin del mtodo, en la cual debemos considerar tres elementos: Estrategia y refinamiento de la misma Ambiente Algoritmo

Hemos desarrollado en la unidad anterior el objetivo de la estrategia. En el ambiente se definen y describen las variables que se emplearn, indicando por cada una su nombre, su tipo, su clase ( por el momento solamente: simples) y su significado. Y por ltimo, se define el algoritmo escrito en un lenguaje algortmico. En el curso emplearemos como lenguajes algortmicos el PSEUDOCODIGO y los DIAGRAMAS DE FLUJO. En estos primeros captulos, en la resolucin de problemas no incluiremos la estrategia y su posterior refinamiento. Veamos en un ejemplo como aplicamos el modelo de resolucin de problemas. INICIO Problema: intercambiar los valores de dos variables numricas que se leen como datos. A, B Ambiente: Variable Numrica AUX A A X B A B Aux Algoritmo B AUX A, B FIN X X Carcter Lgica Clase Simple Simple Simple Significado Dato Dato Auxiliar

Captulo III. Lgica de Control 29

(Inicio) (Leer A y B) (Asignar el valor de A a AUX) (Asignar el valor de B a A) (Asignar el valor de AUX a B ) (Informar los contenidos de A y B) (Bloque de finalizacin)

CONCLUSION
Los conceptos tratados hasta aqu, contribuyen a formalizar la metodologa de la definicin de algoritmos. Quien los disee dispone ahora de reglas claras y formales, eliminando acciones ambiguas o carentes de precisin.

Esto no quiere decir que, planteado un problema, el algoritmo que describe la solucin del mismo sea nico. Al contrario, el diseo de los algoritmos requiere una gran dosis de creatividad y, es comn, hallar varios caminos para la obtencin de un resultado. Slo se trata de establecer pautas claras y precisas para que distintos ejecutantes que interpreten dichas pautas, puedan realizar la secuencia de acciones que conforman el algoritmo.

3. LOGICA DE CONTROL
INTRODUCCIN
La formalizacin algortmica que comenzamos a desarrollar en la unidad anterior, nos ha permitido disear algunos algoritmos computacionales, en los cuales empleamos tres acciones primitivas fundamentales: asignacin, lectura y escritura, para resolver problemas sencillos, con la caracterstica adems, de que las acciones que lo formaban se ejecutaban secuencialmente, en el orden en que aparecan, es decir: una a continuacin de otra. Pero en el diseo de algoritmos, para la resolucin de problemas ms complejos, es necesario contar con herramientas que nos permitan modificar el orden lineal de ejecucin de las acciones, donde el ejecutante pueda tomar decisiones y determinar qu accin realizar en el momento de ejecucin del algoritmo. Para ello, la diagramacin estructurada nos brinda recursos propios. En rigor, esta metodologa establece que todo algoritmo por ms complejo que seapuede elaborarse mediante el uso de slo tres estructuras lgicas de control: secuencia seleccin iteracin

Estas estructuras presentan la caractersticas de tener un nco punto de entrada y una nica salida. Un algoritmo definido en base a estas estructuras, es mas fcil de entender, y permite, por lo tanto, detectar los errores de lgica ms rpidamente.

ESTRUCTURAS LGICAS DE CONTROL


3.1.1 SECUENCIA
A Es un conjunto de acciones que se ejecutan en el mismo orden en que aparecen en el algoritmo, una a continuacin de la otra. La representacin grfica en un diagrama de flujo es: B

Captulo III. Lgica de Control 31

Los bloques A, B, C representan una accin elemental o un mdulo; cada uno de ellos, con un nico punto de entrada y un nico punto de salida. En pseudocdigo la secuencia se especifica indicando las acciones en el orden en que deben ser ejecutadas, separadas entre s por el signo de puntuacin ";", (escritas en el mismo rengln o en diferente):
A; B; C;

Ambas representaciones indican la ejecucin primero del bloque A, luego del B, y finalmente del C. Las acciones primitivas de LEER, ASIGNAR y ESCRIBIR que estudiamos en la unidad 2 responden a este tipo de estructura

3.1.2 SELECCIN
Con frecuencia, la definicin de un problema nos leva a tener que tomar una o ms decisiones en la codificacin de un algoritmo. Por ejemplo, supongamos que conocemos el precio unitario de un producto y la cantidad de unidades a comprar, y sabemos que la empresa vendedora hace un descuento del 10% si compramos ms de 25 unidades. Para conocer el monto total a pagar debemos tomar una decisin dentro del algoritmo y realizar el clculo correspondiente a la compra de 25 o menos unidades, y por otro lado el clculo correspondiente a la compra de ms de 25 unidades. Si Cantidad > 25 Por Verdadero: Monto PU*Cantidad* 0.90 ( descontamos 10% del PU) Por Falso: Monto PU*Cantidad Fin de la estructura Las estructuras de seleccin permiten, al ejecutante, alterar el flujo lineal de control de las acciones de un algoritmo. Permiten tomar decisiones y elegir un camino a seguir en base a ciertos valores o informacin del algoritmo, ya sean datos que se ingresan o resultados de clculos que se realizan.

Disponemos de 2 tipos de estructuras de seleccin : condicional o de decisin seleccin mltiple

a. ESTRUCTURA CONDICIONAL O DE DECISIN Esta estructura permite elegir el camino a seguir segn el valor de verdad de una condicin. La estructura condicional permite al ejecutante o procesador elegir las acciones a seguir entre dos alternativas especficas, de acuerdo al valor de una condicin en el momento de ejecucin del algoritmo. La representacin de esta estructura en un diagrama es: donde condicin es cualquier elemento del ambiente del algoritmo que arroje un resultado lgico Verdadero o Falso, es decir que el elemento condicin puede ser una variable o expresin lgica. Tanto A como B representan una accin primitiva o un conjunto de acciones. La presencia de esta estructura en un algoritmo, le indica al procesador que debe: 1) evaluar la condicin planteada a) si la condicin toma un valor Verdadero (V), ejecutar el bloque A; y finaliza la estructura condicional indicada con el punto. b) si la condicin toma un valor Falso (F), ejecutar el bloque B; y finaliza la estructura condicional. 2) En ambos casos, luego contina la ejecucin del algoritmo con la accin posterior al punto.

Condicin

Captulo III. Lgica de Control 33

Esta estructura se la considera como una unidad, con un nico punto de entrada y un nico punto de salida. Su punto de entrada es la evaluacin de la condicin y su punto de salida -- luego de haberse ejecutado el camino correspondiente-- se plantea en la unin de las 2 ramas de la bifurcacin que plantea la estructura: la rama por Verdadero y la rama por Falso. Ejemplo 1: Una compaa de turismo ha definido una poltica de promocin de sus empresa para lo cual ha fijado descuentos para sus clientes en funcin de los viajes anteriores realizados. El valor del descuento es del 20% para aquellos clientes que, considerando los viajes realizados en el ltimo ao y el que desean realizar, han recorrido ms de 3000 Kms. y del 5% para aquellos que no han alcanzado dicha cifra. Turismo Se desea realizar un algoritmo que calcule el importe a pagar por un cliente, si se ingresa su nombre y apellido, el total de kilmetros recorridos hasta el momento, y los datos del viaje a contratar: precio, destino, kilmetros a recorrer. Informar NYA, TACUM, PRECIO, DEST, los datos ingresados, el monto del descuento y elKMS monto a pagar por el cliente. Ambiente: Variable NYA TACUM PRECIO DEST TOTAL DESC IMP Algoritmo: X X X V X X Num. TOTAL:= Carac. Lg. TACUM Clase + KMS X Simple Significado

Nombre y Apellido del Cliente

F Simple TOTAL > 300 Kilmetros acumulados hasta la fecha Simple Precio del viaje Simple Kms. recorrer DESC := PRECIO *a 0.05 Simple Simple IMP:= PRECIO - DESC Destino del Viaje Kilmetros totales includos los del viaje actual

KMS DESC:= X PRECIO * 0.20

Simple Descuento a realizar Cliente:, NYA, Acumulados:, TACUM X Simple Importe Total Datos del viaje:$, PRECIO, KMS, Kms., DEST Descuento: $, DESC, Importe: $, IMP FIN

Seguimiento: Datos: Juan Perez, 3100, 350, Misiones, 800

Captulo III. Lgica de Control 35

NYA Juan Prez

TACUM PRECIO KMS 3100 350 800

DEST Misiones

TOTAL 3900

DESC 70

IMP 289

Acciones de Escritura Cliente: Juan Prez Acumulados: 3100 Datos del Viaje: $350 800 Kms. Misiones Descuento: $70 Importe: $289 La estructura condicional brinda la posibilidad de plantear que por la alternativa falsa no se especifiquen acciones a ejecutar. De esta manera, en el condicional, la salida por VERDADERO deber presentar al menos una accin a ejecutar, mientras que por FALSO no se plantea ninguna accin. Esta variante de la estructura condicional se representa en diagrama de la siguiente manera:

Condicin

Ejemplo 2: Realizar un algoritmo que ingrese como datos, el precio unitario y la cantidad de unidades vendidas de un artculo e informe el monto neto de venta, sabiendo que para cantidades superiores a 500, se efecta un descuento del 20 %.

Algoritmo:

Venta

Precio, Cant

Monto := Precio * Cant Cuestion := Cant > 500

Cuestion Monto:= Monto 0.2 * Monto

Monto Neto Venta:, Monto

Fin

Ambiente: Variable PRECIO CANT Num. Carac. X X Lg. Clase Simple Simple Significado Precio de venta del artculo Cantidad de artculos vendidos

Captulo III. Lgica de Control 37

MONTO CUESTION

X X

Simple Simple

Monto de la venta Valor de la condicin Cant > 500

Ejercicio propuesto: Una compaa de turismo ha definido una poltica de promocin de sus empresa para lo cual ha fijado un descuento del 20% para aquellos clientes que, considerando los viajes realizados en el ltimo ao y el que desean realizar, superen los 3000 Kms. de recorrido. Se desea realizar un algoritmo que calcule el importe a pagar por un cliente, si se ingresa su nombre y apellido, el total de Kms. recorridos hasta el momento, y los datos del viaje a contratar: precio, destino, Kms. a recorrer. Informar los datos ingresados, el monto del descuento y el monto a pagar por el cliente.

Estructuras condicionales anidadas En una estructura condicional, tanto la alternativa verdadera como la falsa pueden presentar a su vez, otras estructuras condicionales, dando lugar a esquemas como el siguiente: En diagrama de flujo: Condicin 1 Condicin 2 A B C

En este esquema hablamos de condicionales anidados, con un condicional externo- el primero que se plantea (evala la Condicin1) - y condicionales internos (en este caso, aparece uno slo que evala la Condicin2). Este esquema puede complicarse, si en A, B, y/o C planteamos otros condicionales internos, pero debe tenerse en cuenta que cada anidado finaliza antes del condicional anidante, quedando completamente encerrado en el condicional mayor que lo abarca. Ejemplo 3: Una compaa de turismo ha definido una poltica de promocin de sus empresa para lo cual ha fijado descuentos para sus clientes en funcin de los viajes anteriores realizados. El valor del descuento es del 30% para aquellos clientes que, considerando los viajes realizados en el ltimo ao y el que desean realizar, han recorrido ms de 3500 Kms. , del 15 % lsi han sumado ms de 1500 Kms., del 5% para aquellos que han superado los 500 kms.. Se desea realizar un algoritmo que calcule el importe a pagar por un cliente, si se ingresa su nombre y apellido, el total de Kms. recorridos hasta el momento, y los datos del viaje a contratar: precio, destino, Kms. a recorrer. Informar los datos ingresados, el monto del descuento y el monto a pagar por el cliente. Ambiente: Variable NYA TACUM PRECIO KMS DEST TOTAL DESC IMP X X X X X X X Num. Carac. X Lg. Clase Simple Simple Simple Simple Simple Simple Simple Simple Significado Nombre y Apellido del Cliente Kilmetros acumulados hasta la fecha Precio del viaje Kms. a recorrer Destino del Viaje Kilmetros totales includos los del viaje actual Descuento a realizar Importe Total

Captulo III. Lgica de Control 39 Algoritmo:

TURISMO NYA, TOTACUM, PRECIO, DEST, KMS TOTAL := TOTACUM + KMS TOTAL > 3500 DESC := PRECIO * 0.3 TOTAL > 2000

DESC : = PRECIO * 0.15

TOTAL > 500 DESC : = 0 DESC := PRECIO * 0.05

DESC := PRECIO * 0.05

IMP : = PRECIO - DESC Cliente:, NYA, Kms.acumulados:, TOTACUM Datos del viaje: $, PRECIO, KMS, DEST Descuento a realizar:, DESC, Importe:, IMP

Fin

b. ESTRUCTURA DE SELECCIN MLTIPLE Esta estructura es una generalizacin de la estructura condicional y brinda la posibilidad de elegir entre ms de dos alternativas de acuerdo al valor de una variable de control numrica, previamente fijado. En un diagrama de flujo se representa de la siguiente manera: donde E es la variable de control, numrica, que toma todos los valores enteros positivos, acotados dentro de un rango preestablecido, generalmente N Otros de 1 a N. R A B A U A En presencia de esta estructura el procesador deber: observar el valor de la variable E decidir el camino a ejecutar de acuerdo al valor de E: Si E toma el valor 1, realizar la accin A Si E toma el valor 2, ejecutar la accin B y as sucesivamente para cada uno de los valores posibles de E que se hayan indicado. Si E toma valores fuera del rango 1 a N, deber ejecutar la accin U, indicada en "otros". en todos los casos, ejecutada la accin asociada, deber salir de la estrucutra y continuar con la accin siguiente especificada despus del punto. A, B, ... U representan una accin elemental. La estructura de decisin mltiple, mantiene las caractersticas vistas en las anteriores, de tener un nico punto de entrada y un nico punto de salida. La sintaxis equivalente en pseudocdigo es la siguiente:

E 1 A 2 .... .

Captulo III. Lgica de Control 41

SEGUN E HACER 1: A 2: B . . . . n: R DEOTROMODO: U FINSEGUN El comienzo y el fin de la estructura estn identificados por las palabras claves SEGN y FINSEGN, respectivamente. Ejecutada la accin asociada al valor de la variable E, el ejecutante finaliza la estructura y contina con la accin siguiente a la palabra clave FinSegn. Puede suceder que para alguno de los caminos indicados se deba ejecutar ms de una accin. En este caso en el diagrama de flujo se graficarn las acciones a realizar:

E 1 A B A 2 .... . N Otros R A D R A

C A

U A

En sintaxis correspondiente es:

pseudocdigo,

la

SEGUN E HACER 1: COMENZAR A; C FINCOM 2: B . . . . n: COMENZAR R; D FINCOM DEOTROMODO: U FINSEGUN Observacin: no se coloca punto y coma (;): en la accin que precede a la estructura de desicin mltiple despus de la palabra clave FINSEGUN

en la accin que precede a la palabra clave FINSEGUN y a cada uno de los valores que puede tomar la variable de control Otros formatos de la estructura de seleccin mltiple: a) Si cuando la variable de control toma valores mayores a los especificados no existe accin a realizar, esta estructura permite omitir la rama correspondiente a "otros" ( o DEOTROMODO en el pseudocdigo). Esta alternativa nos queda:

Captulo III. Lgica de Control 43 En diagrama: En pseudocdigo: SEGUN E HACER 1: A 2: B . . . . n: R FINSEGUN

E 1 A B A 2 .... . N

R U A

b) Cuando para distintos valores de la variable de control se deban ejecutar la/s misma/s accin/es, la estructura permite agrupar dichos valores indicando el camino de accines a realizar, por nica vez. En el diagrama nos queda: En el pseudocdigo: SEGUN E HACER E 1,2 ,3 4 ......... N Otro 1, 2, 3: A 4: B A B R T n: R DEOTROMODO: T FINSEGUN En este caso se consider que para los valores de E igual a 1, 2 o 3 se debe ejecutar la accin A.

Ejemplo 4: Se desea calcular el sueldo de un empleado, conociendo como datos su legajo, nombre y apellido, categora (1, 2, 3, o 4) y sueldo bsico. Se le paga adems, una bonificacin que depende de la categora. Para la categora 1 y 3, la bonificacin es del 30 % del sueldo bsico, para la categora 2, del 20 % y para la categora 4, del 15 %. Informar legajo, sueldo bsico, bonificacin y sueldo a cobrar. (en el dato categora, slo pueden venir los valores indicados). Ambiente: Variable LEG NYA CAT SB BON TOT Algoritmo: a) Pseudocdigo PROCESO SUELDO LEER LEG, NYA, CAT, SB SEGUN CAT HACER 1, 3: BON := 0.30 * SB 2: BON := 0.20 * SB 4: BON := 0.15 * SB FINSEGUN TOT := SB + BON; ESCRIBIR LEG, SB, BON; ESCRIBIR 'Sueldo a cobrar:', TOT FINPROCESO NOTA: En el ejemplo las acciones a realizar para 2 valores de la variable CAT, son las mismas. En estos casos, es posible agrupar dichos valores e indicar una nica vez las acciones a realizar. X X X X Num. X X Carac. Lg. Clase Simple Simple Simple Simple Simple Simple Significado Legajo del empleado Nombre y apellido del empleado Categora del empleado Sueldo bsico del empleado Bonificacin que cobra Sueldo neto a cobrar

b) En diagrama

Sueldo LEG, NYA, CAT, SB

CAT 1, 3 BON : = 0.3 * SB 2 4 BON : = 0.15 * SB

BON : = 0.2 * SB

TOT : = SB + BON LEG, SB, BON Sueldo a Cobrar: , TOT

FIN

4. Estructuras Iterativas
Analizaremos ahora las diferentes formas de plantear, en la construccin de algoritmos, la repeticin de la ejecucin de una o varias acciones, a travs de las estructuras de Iteracin. Las estructuras de iteracin son aquellas que nos permiten ejecutar una accin o un conjunto de acciones varias veces, dependiendo de una condicin. En la solucin de problemas computacionales, se presentan casos en los que no se conoce de antemano la cantidad de veces que se quiere repetir un conjunto de acciones, en otros, ese nmero de repeticiones es conocido. Definiremos estructuras algortmicas que nos permitan describir ambas situaciones. Dentro de las estructuras de iteracin, veremos tres esquemas: Mientras Repetir Para

ESTRUCTURA MIENTRAS
En diagrama, esta estructura se representa como:

condicin

V A

donde condicin puede ser una variable o expresin lgica y A representa cualquier accin primitiva o conjunto de estructuras, llamado rango del ciclo. Como en las estructuras vistas anteriormente - secuencia y seleccin - la iteracin se considera una unidad, con un slo punto de entrada y un slo punto de salida. Cuando el procesador encuentra esta estructura deber: Observar la condicin

Si la condicin es V

ejecutar A

Observar nuevamente la condicin

Si es V , ejecutar A y volver a evaluar la condicin y as sucesivamente hasta que


de la observacin de la condicin se obtenga un valor falso

Si es F, finaliza la ejecucin Si la condicin es F


Debemos notar que: El bloque A puede no llegar a ejecutarse, si al principio, la condicin es falsa. salir de la estructura

Entre el conjunto de acciones de A, deber existir una accin que permita modificar,
en determinado momento, indefinidamente. su valor de verdad; sino el bloque A se repetir

No es necesario conocer de antemano el nmero de repeticiones, o bien no es


necesario expresarlo en forma directa.

Ejemplo 1: Una compaa de turismo ha definido una poltica de promocin de sus empresa para lo cual ha fijado descuentos para sus clientes en funcin de los viajes anteriores realizados. El valor del descuento es del 20% para aquellos clientes que, considerando los viajes realizados en el ltimo ao y el que desean realizar, han recorrido ms de 3000 Kms. y del 5% para aquellos que no han alcanzado dicha cifra. Se desea realizar un algoritmo que calcule la recaudacin de la compaa en un da. Para ello, por cada cliente se ingresa su nombre y apellido , el total de Kms. recorridos hasta el momento, y los datos del viaje a contratar: precio, destino, Kms. a recorrer. El fin de datos se produce al ingresar como nombre y apellido un valor ZZZ `

Para cada cliente informar los datos ingresados, el monto del descuento y el monto a pagar. Informar adems el total recaudado y el total de descuentos realizados por la Compaa, con leyendas alusivas. Ambiente:

Variable NYA TACUM PRECIO KMS DEST TOTAL DESC IMP

Num

Carac. Lg X

Clase Simple Simple Simple Simple

Significado Nombre y Apellido del Cliente Kms. acumulados hasta la fecha Precio del viaje Kms. a recorrer Destino del Viaje Kms.Tot. includos los del viaje actual Descuento a realizar Importe a Pagar Total de Decuentos Total recaudado por la Compaa

X X X X X X X

Simple Simple Simple Simple Simple Simple

TOTDES X TOTIMP X

Algoritmo- En Diagrama

Turismo

tdes:=0

Totimp:=0

NyA

NyA <> ZZZ V tacum, precio, dest, kms

total:=tacum + kms

Total > 300

desc:= precio*0.20

desc:precio*0.05

imp:= precio - desc

Cliente:, NyA, Acumulados :, tacum

Datos del viaje : $, precio, kms, Kms, dest

Descuento a realizar: $ , desc, Importe: $, imp

totdes:= totdes + desc

totimp:= totimp + imp

NyA

Seguimiento a) Datos: Juan Perez, 3100, 350, Misiones, 800 Jos Diaz, 300, 500, Mendoza, 956 ZZZ

NYA

TACUM

PRECIO KMS

DEST

TOTAL

DESC

IMP

TOTDES TOTIMP

Juan Perez

3100

350

800

Mision es

3900

70

289 0 70

0 299

Jos Diaz 300 ZZZ

500

956

Mendo 1256 za

25

475 95

774

Acciones de escritura Cliente: Juan Perez Acumulados: 3100 Datos del viaje: $350 Misiones 800 Kms.

Descuento: $70 Importe: $289 Cliente: Jos Diaz Acumulados: 3000

Datos del viaje: $500 Mendoza

956 Kms.

Descuento: $25 Importe: $475 Recaudacin de la Cia: $ 774 Total de Descuentos: $ 95

b) Datos:

ZZZ

NYA

TACUM

PRECIO

KMS

DEST

TOTAL

DESC

IMP

TOTDES

TOTIMP

0 ZZZ

Acciones de escritura Recaudacin de la Cia: $ 0 Total de Descuentos: $ 0

Obsevacin: Debemos notar que en este ejemplo se desconoce a priori la cantidad de veces que se repite el proceso. Sin embargo, el mismo algoritmo puede utilizarse para el caso de `ningn cliente ( ejemplo b) , para un solo cliente, para 2 (ejemplo a) o para ms.

ESTRATEGIA
En la unidad 1, definimos ESTRATEGIA y ubicamos a la Definicin de una estrategia como una etapa dentro de la Resolucin de problemas, que debe realizarse previa a la Definicin de algoritmos. Comenzaremos a aplicar estos conceptos y los vistos en esa unidad referidos a diseo descendente, en la resolucin de problemas que se nos plantean. Ejemplo 2: Una compaa paga a cada uno de sus vendedores una bonificacin anual basada en el sueldo del vendedor y en su total de ventas durante el ao. El valor de la bonificacin es del 3 % del total de las ventas si las ventas son inferiores a 4 veces el sueldo del vendedor, o del 5 % si son mayores o iguales a ese monto. Realizar un algoritmo que ingrese por cada vendedor el nombre y apellido, el sueldo y el total de ventas. El fin de datos se produce al ingresar como nombre y apellido 'ZZZZ'. Para cada empleado informar el nombre y apellido y la bonificacin correspondiente, y adems informar el total que debe pagar la compaa en concepto de bonificaciones, con leyenda indicativa. Para resolver este problema, luego de realizar el anlisis del mismo, debemos plantear la estrategia, definiendo las etapas que deben seguirse para arribar a la solucin del problema, indicando QU debe hacerse y no el CMO.

En el enunciado planteado una alternativa de Estrategia es:

Compaa

Inicializar Acumulador

Vendedor

Informar Total Bonif.

Ingresar Datos Vendedor

Determinar Bonificacin

Informar Datos Vendedor

Acumular Bonificacin

Calcular

Bonif.

Calcular

Bonif.

Notacin:

Representa un proceso iterativo. Debajo de l pueden graficarse los mdulos que forman el ciclo.

Representa una alternativa condicin.

cuya

ejecucin depender

de una

ESTRUCTURA REPETIR
En diagrama la estructura se grafica de la siguiente manera:

condicin
V

donde condicin puede ser una variable o expresin lgica y A representa cualquier accin primitiva o conjunto de estructuras, de la misma manera que en el esquema anterior. Esta estructura plantea la ejecucin del bloque A, reiteradamente, hasta que se cumpla la condicin. En presencia de este esquema, el procesador deber: ejecutar el bloque A Observar la condicin

Si la condicin es F

ejecutar A

Observar nuevamente la condicin

Si es F , ejecutar A y vuelve a evaluar la condicin y as sucesivamente hasta que


de la observacin de la condicin se obtenga un valor verdadero

Si es V, sale de la estructura Si la condicin es V


finaliza la ejecucin de la estructura

Observamos que la condicin es evaluada despus de cada ejecucin del bloque A, por lo tanto ste ser ejecutado al menos una vez. La diferencia entre la estructura Mientras y sta, reside en el punto de evaluacin de la condicin. Esto hace que en la estructura Mientras el bloque A pueda ser ejecutado desde 0 a n veces, mientras que en el Repetir desde 1 a n veces.

Tal como en el caso anterior, esta estructura es considerada como una unidad, con un nico punto de entrada y un nico punto de salida. Ejemplo 3: Una compaa de turismo ha definido una poltica de promocin de su empresa para lo cual ha fijado descuentos para sus clientes en funcin de los viajes anteriores realizados. El valor del descuento es del 20% para aquellos clientes que, considerando los viajes realizados en el ltimo ao y el que desean realizar, han recorrido ms de 3000 Kms. y del 5% para aquellos que no han alcanzado dicha cifra. Se desea definir un algoritmo que calcule la recaudacin diaria de la compaa para sus N clientes. Para ello, por cada cliente se ingresa su nombre y apellido, el total de Kms. recorridos hasta el momento, y los datos del viaje a contratar: precio, destino, Kms. a recorrer. Para cada cliente informar los datos ingresados, el monto del descuento y el monto a pagar. Informar adems el total recaudado y el total de descuentos efectuados por la Compaa, con leyendas alusivas. El valor N se ingresa como primer dato.

Ambiente:

Variable Num Carac. Lg N NYA TACUM PRECIO X KMS DEST X X X X X

Clase Simple Simple Simple Simple Simple Simple

Significado Cantidad de Clientes Nombre y Apellido del Cliente Kms. acumulados hasta la fecha Precio del viaje Kms. a recorrer Destino del Viaje

TOTAL DESC IMP TOTDE S

X X X X

Simple Simple Simple Simple Simple Simple

Kms.Tot. includos los del viaje actual Descuento a realizar Importe a Pagar Total de Decuentos Total recaudado por la Compaa Contador de Clientes

TOTIMP X CONT X

Algoritmo - En Diagrama

(Ver Diagrama en la siguiente Pgina)

Seguimiento Datos: 2, Juan Perez, 3100, 350, Misiones, 800 Jos Diaz, 300, 500, Mendoza, 956

NYA TACUM PRECI O

KMS DEST

TOTA DES IMP TOTDE TOTIM L C S P

CONT

Jua n Pere z

3100

350

800

Misione s

3900

70

289

70

299

Jos Diaz

300

500

956

Mendoz a

1256

25

475

95

774

Vemos en este ejemplo , que conocemos de antemano la cantidad de clientes a procesar a travs de la variable N.

Turismo

tdes:=0

Totimp:=0

cont:= 0

NyA, tacum, precio, dest, kms

total:=tacum + kms

Total > 300

desc:= precio*0.20

desc:precio*0.05

imp:= precio - desc

Cliente:, NyA, Acumulados:, tacum

Datos del viaje: $, precio, kms, Kms, dest

Descuento a realizar: $ , desc, Importe: $, imp

totdes:= totdes + desc

totimp:= totimp + imp

cont:= cont + 1

ESTRUCTURA PARA
La estructura de repeticin llamada PARA nos permite realizar un conjunto de acciones un nmero determinado de veces. Formato general

Accin 1

Accin 2

V VI VF P

Accin 3

Accin n

Donde: V : es una variable numrica llamada variable de control VI: es variable o constante numrica, es el valor inicial que toma V VF: variable o constante numrica, es el valor final que toma V P : variable o constante numrica, es el paso, el valor de P puede ser positivo o negativo pero no puede ser cero. A diferencia de las estructuras REPETIR y MIENTRAS, en esta estructura iterativa el procesador tiene a su cargo la variacin de la variable de control ya que se incrementa su valor automticamente de acuerdo a P, hasta llegar a VF. El procesador ejecutar las acciones en el siguiente orden:

1. 2. 3. 4.

A la variable V le asigna el valor de VI. Ejecuta las acciones previstas (accin 1 hasta accin n). Incrementa la variable V sumndole P. Evala si el valor de la variable V de control es menor o igual a VF en ese caso contina a partir de 2. con la ejecucin del algoritmo.

5. Si la variable V es mayor a VF finaliza la ejecucin de la estructura y contina

Cuando P = 1 el formato se reduce a:

Accin 1

Accin 2 VI

V VF

Accin 3

Accin n

Observaciones: 1- Cuando P > 0 el valor de VF debe ser mayor o igual a VI. 2- Cuando P < 0 el valor de VF debe ser menor o igual a VI 3- Las acciones 1 a n se ejecutan siempre al menos una vez

Ejemplo 4: informar los primeros veinte nmeros pares, a partir del nmero 2.

Pares

Nro

Nro 2 40 2

Finproceso

Vamos a resolver el Ejemplo 3. utilizando la estructura Para. El contador cont que lleva el control del nmero de iteraciones, ser la variable de control de la estructura Para. Observar el Diagrama que se encuentra en la siguiente pgina.

Turismo

tdes:=0

Totimp:=0

NyA, tacum, precio, dest, kms

total:=tacum + kms

Total > 300

desc:= precio*0.20

desc:precio*0.05 cont imp:= precio - desc 1 N

Cliente:, NyA, Acumulados:, tacum Datos del viaje : $, precio, kms, Kms, dest

Descuento a realizar: $ , desc, Importe: $, imp

totdes:= totdes + desc

totimp:= totimp + imp

Recaudacin de la Ca.: $, totimp

CICLOS ANIDADOS
En el diseo de algoritmos, es comn la utilizacin de estructuras lgicas de control complejas, las que se basan en la combinacin de estructuras bsicas. As vimos, en las estructuras de decisin que era posible formar condicionales anidados, es decir incluir dentro de una estructura de decisin otra estructura de decisin, siempre que el condicional interno est totalmente comprendido por el condicional externo. De la misma manera pueden presentarse ciclos anidados, es decir, estructuras de iteracin incluidas dentro de otras siguiendo las mismas reglas: la estructura interna debe estar totalmente incluida en la estructura externa. Veamos algunos ejemplos: a.-)

El diagrama representa una seleccin en base a una condicin Y. Cuando sta es verdadera se ejecutan las acciones A, B y luego finaliza la estructura. cuando no se cumple la condicin se ejecuta la accin C, y luego finaliza la estructura.

b)

Y V A M B

F F

El diagrama plantea una seleccin en base a la condicin Y. Cuando Y es verdadera, se presenta el caso dado en a). Cuando Y es falsa, se ingresa en una estructura de seleccin, que depende de la condicin Q. Se evala Q, y si Q es verdadera se ejecuta la accin M, se va al fin de la estructura de seleccin de Q, se ejecuta W y se finaliza la estructura de seleccin de Y. Si Q es falsa, se ejecutan las acciones R y S, se va al fin de la estructura que depende de Q, se ejecuta W, y se finaliza la estructura de seleccin de Y. c)

P V V Q F

Este ejemplo presenta una iteracin con la condicin lgica P. El bloque de accin que se debe ejecutar cuando P es verdadero, est formado por una estructura de seleccin regido por la condicin Q. d)

V R

F F V

S Z T

El diagrama plantea una seleccin que depende de la condicin lgica P. Si P es verdadera, se ejecuta una secuencia de acciones: R, S, T. Si P es falsa, se ejecuta una iteracin regida por Q e)

Z V V V B X F

El diagrama plantea una iteracin que depende de la condicin lgica Z. Las acciones que se deben ejecutar para Z verdadera, plantean una seleccin que depende de X, a su vez si sta es verdadera, plantea una seleccin regida por Y. Si X es falsa se ejecuta una accin A. f)

B M C D F 1 N

X V

Se plantea una iteracin con una estructura PARA, que ejecuta las acciones A y B. Luego comienza una estructura REPETIR, que itera las acciones C y D mientras la condicin X es falsa. Cuando X es verdadera, termina el Repetir y se vuelve a la accin A para continuar con la siguiente iteracin del PARA, hasta que M llega al valor N.

Vous aimerez peut-être aussi