Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 1 UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS . DISEÑO DE ALGORITMOS . OBJETIVOS : � Que el alumno comprenda el concepto de dato y las nociones básicas más importantes para la construcción de algoritmos, la forma de realizar cálculos y la noción de acción. � Que el alumno comience a formularse y resolver problemas, diseñando las estrategias correspondientes de manera clara, sistémica y por sobre todo sencilla, mediante el diseño de algoritmos. � Que el alumno logre aumentar la capacidad de reflexión, reforzando las conductas logradas mediante la Unidad 1.- TEMAS: 2.1. La operación de asignación y de transferencia. 2.2. Contadores, acumuladores, banderas. 2.3. Concepto y definición de algoritmo. 2.4. Su representación gráfica: el diagrama de flujo lógico. 2.5. Símbolos utilizados. 2.6. Ventajas de la diagramación. 2.7. Prueba de escritorio. 2.8. Pautas básicas para el diseño general de un algoritmo. 2.9. El diseño descendente. 2.10. El teorema fundamental de la programación estructurada. 2.11. Estructuras: secuencial, de selección y repetición. UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 2 2.1. LA OPERACIÓN DE ASIGNACIÓN Y OPERACIÓN DE TRANSFEREN CIA ASIGNACIÓN La operación de asignación es la conocida del álgebra y por la cual una variable o constante recibe un valor. El operador de asignación puede ser =, ←. Ejemplos: A = 3 o A ← 3 A = “d” o A ← “d” A = FALSO o A ← FALSO TRANSFERENCIA La operación de transferencia es aquella por la cual se asigna valores a una variable. Se clasifica en: ���� Transferencia Unidireccional: Es aquella por la cual se asigna valor a una variable pero en un solo sentido. Ejemplo: A = 4 (operación de asignación) B = A (operación de transferencia por la cual B recibe el valor de A, ahora B también tiene el valor 4.) ���� Transferencia Bidireccional: operación por la cual se intercambian los valores de dos variables en ambos sentidos. Ejemplo: A=4 B=17 La idea es intercambiar los valores de las variables de tal forma que: A=17 B=4 Si este intercambio se realiza con transferencias unidireccionales, tendríamos dos posibilidades: asignar primero el valor de B a A y luego el valor de A a B; o asignar primero el valor de A a B y luego el valor de B a A. En ambos casos se pierde siempre un valor, ya que al asignar el valor de una variable a la otra se borra el valor de la primera para que tome el valor de la segunda. Por lo cual se necesita indefectiblemente de una variable auxiliar, de tal manera que se realicen las siguientes operaciones: UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 3 A=4 A=B B=17 AUX=A B=A UX AHORA: A=17 B=4 2.2. CONTADORES, ACUMULADORES , BANDERAS Son variables auxiliares que se introducen en los problemas para permitir o facilitar su solución, de tal modo que entran en la categoría de Datos Variables Secundarios. CONTADOR Es una variable cuyo valor se incrementa o decrementa en una cantidad constante en cada iteración o ciclo de un proceso repetitivo. Se utiliza con frecuencia para contar la cantidad de veces que se debe repetir una tarea. Posee en general la siguiente sintaxis: IDENTIFICADOR = IDENTIFICADOR + CONSTANTE Por ejemplo: C = C + 1 ACUMULADOR Es una variable cuyo valor se incrementa o decrementa en una cantidad variable en cada iteración o ciclo de un proceso repetitivo. Se utiliza con frecuencia para sumar una determinada cantidad de valores. Posee en general la siguiente sintaxis: IDENTIFICADOR = IDENTIFICADOR + VARIABLE Por ejemplo: S = S + X 4 17 A B Aux 1 4 17 4 1° A B Aux 2 17 17 4 2° A B Aux 3 17 4 4 3° A B Aux 4 UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 4 BANDERA Es una varible que puede cambiar de valor varias veces a lo largo de la ejecución de un proceso y que permite comunicar información de una parte a otra del mismo. En general toma un valor inicial y luego, de acuerdo al flujo del proceso de solución, va cambiando de valor; de tal modo que luego, según el valor que va tomando, permite desviar dicho flujo. Por ejemplo: IDENTIFICADOR = CONSTANTE1 (VALOR INICIAL) Si ocurre un suceso: IDENTIFICADOR = CONSTANTE2 Si ocurre otro suceso: IDENTIFICADOR = CONSTANTE3 2.3. CONCEPTO Y DEFINICIÓN DE ALGORITMO CONCEPTO: Proceso de metodización del plan heurístico de solución del problema. DEFINICIONES: � Método o procedimiento en que establece la secuencia de pautas a cumplir para realizar un determinado trabajo. � Conjunto de instrucciones que permiten obtener una salida (output) específica partiendo de una entrada (input) conocida. Según Donald Knuth (científico de computación), para que sea considerado un algoritmo informático debe cumplir las siguientes condiciones: 1) SECUENCIAL : “Los pasos deben tener un orden perfectamente definido”. 2) DEFINIDO: "Cada paso de un algoritmo debe estar precisamente definido; las operaciones a llevar a cabo deben ser especificadas de manera rigurosa y no ambigua para cada caso". 3) GENERAL : “Al encararse la solución de un problema, ésta debe desarrollarse para la generalidad de los casos que pueden presentarse dentro del ámbito de validez de esa solución”. 4) FINITO: "Un algoritmo siempre debe terminar después de un número finito de pasos". Ejemplo 1 : Realice el algoritmo para el siguiente enunciado: Ingresar tres valores enteros, calcule y muestre el promedio. 1. Inicio 2. Ingresar A, B, C 3. S = A + B + C 4. P = S/3 5. Mostrar P 6. Fin UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 5 Ejemplo 2 : Indique si el siguiente algoritmo es o no un Algoritmo Informático: Ingresar dos valores enteros, calcule y muestre el cociente entre ambos valores. 1. Inicio 2. Ingresar A, B 3. C = A/B 4. Mostrar C 5. Fin El algoritmo anterior no es un algoritmo informáti co porque no cumple las condiciones de ser: � General: no cumple para la generalidad del universo de datos (B=0). � Definido: cuando B toma el valor cero, el resultado no está definido. 2.4. SU REPRESENTACIÓN GRÁFICA : EL DIAGRAMA DE FLUJO LÓGICO Es un esquema para representar gráficamente un algoritmo. Se basan en la utilización de diversos símbolos para representar operaciones específicas. Se les llama diagramas de flujo porque los símbolos utilizados se conectan por medio de flechas para indicar la secuencia de operación. Para hacer comprensibles los diagramas a todas las personas, los símbolos se someten a una normalización; es decir, se hicieron símbolos casi universales, ya que, en un principio cada usuario podía tener sus propios símbolos para representar sus procesos en forma de Diagrama de flujo. Esto trajo como consecuencia que sólo aquel que conocía sus símbolos, los podía interpretar. La simbología utilizada para la elaboración de diagramas de flujo se estandarizó a nivel mundial mediante la Organizacipon Internacional de Estándares (International Standards Organization) con la Norma ISO 1028 – Information Processing Flowchart Symbols - del año 1973 y en nuestro país el Instituto Argentino de Racionalización de Materiales con la Norma IRAM 36002 – Procesamiento Electrónico de Datos, Símbolos para la Representación Gráfica - del año 1975. 2.5. SÍMBOLOS UTILIZADOS Existen diferentes símbolos utilizados en la diagramación, de los cuales podemos destacarcinco símbolos básicos mediante los que se puede representar cualquier algoritmo informático por muy complejo que éste sea. UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 6 Estos símbolos son los siguientes: Símbolo Descripción Inicio / Terminación. Este símbolo se utiliza para señalar el comienzo así como el final de un diagrama. Tradicionalmente se colocan las palabras “INICIO” ó “FIN” dentro de la figura para hacerlo más explícito. Es el único símbolo que solamente tiene una conexión (flecha) ya sea de salida, en el de inicio, o de entrada, para el de fin. Entrada de datos. En este símbolo se indican la lectura de las variables primarias, dándole los valores iniciales que deberán recibir en el proceso. Esto se hace colocando los identificadores de dichas variables en el interior de la figura. El trapecio normalmente se utiliza para entrada por teclado y el paralelogramo para cualquier dispositivo de entrada. Este símbolo siempre deberá tener al menos una conexión entrante (generalmente del inicio) y una de salida. Proceso de datos. Este símbolo lo utilizaremos para señalar operaciones matemáticas, aritméticas o procesos específicos que se realicen con nuestros datos. La manera de anotar dichos procesos, puede ser mediante una descripción breve de la operación o mediante una asignación de dicha operación hacia una variable como por ejemplo: R = A + B Este símbolo siempre deberá tener al menos una conexión de entrada y una de salida. Decisión. Este símbolo nos representa una decisión. En su interior se anota una expresión lógica o pregunta que pueda ser evaluada como cierta o falsa y que determinará el flujo del programa. Este símbolo es el único que puede contener dos salidas y en cada una de las salidas se suele poner un rótulo de “si/no” indicando con esto cual de ellas se tomará según el resultado de la evaluación de la decisión. Es una buena práctica de diagramación utilizar siempre el mismo lado para el “si” siempre que esto sea posible, normalmente a la derecha. Desplegado de información. Este símbolo se utiliza para mostrar un resultado, el cual puede representar la solución al problema que se pretende resolver y que fue conseguida a través del resto del diagrama. Dentro de su interior se anotará el identificado del resultado o un valor constante que represente el mismo, acompañado de un mensaje aclaratorio. El primer símbolo se usa habitualmente para salida impresa y el otro para salida por monitor o pantalla. Este símbolo siempre deberá tener al menos una conexión de entrada y una de salida. En la diagramación, también contamos con una serie de símbolos auxiliares que no intervienen en el proceso del algoritmo, pero que pueden ser útiles para ayudarnos a dar claridad a nuestros diagramas, algunos de ellos son los siguientes: UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 7 Símbolo Descripción Conector . Este símbolo se utiliza para indicar un salto dentro del diagrama. Se utiliza con el propósito de facilitar la disposición plana de un diagrama y evitar el cruce excesivo de líneas a través del mismo. Este conector va asociado a un conector “gemelo” y junto con él, representa una puerta de entrada y de salida para el flujo del diagrama, es decir que cuando una flecha termina en un conector marcado con la letra “A”, se continuará el diagrama a partir de otro conector marcado con la misma letra tal como si se tratara de una línea continua ininterrumpida. Conector de página . Este conector es idéntico en funcionamiento que el anterior, pero su forma pentagonal lo distingue y nos indica que debemos buscar el “gemelo” en una página distinta de la actual. Este conector lleva asociado una especie de salto entre páginas. Ejemplo : Realice el diagrama de flujo para el siguiente enunciado: Ingresar tres valores enteros, calcule y muestre el promedio. 2.6. VENTAJAS DE LA DIAGRAMACIÓN � Favorecen la comprensión del proceso a través de mostrarlo como un dibujo. El cerebro humano reconoce fácilmente los dibujos. � De uso: Facilita su empleo. � De destino: Permite la correcta identificación de actividades. � De comprensión e interpretación: Simplifica su comprensión. � De simbología: Disminuye la complejidad y accesibilidad. � De diagramación: Se elabora con rapidez y no requiere de recursos sofisticados. INICIO A,B,C S=A+B+C P=S/3 P FIN UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 8 2.7. PRUEBA DE ESCRITORIO La prueba de escritorio es una herramienta útil para entender que hace un determinado algoritmo, o para verificar que un algoritmo cumple con la especificación sin necesidad de ejecutarlo. Básicamente, una prueba de escritorio es una ejecución ‘a mano’ del algoritmo, por lo tanto se debe llevar registro de los valores que va tomando cada una de las variables involucradas en el mismo. La prueba de escritorio es una tabla en la cual en la primera fila se colocan todos los identificadores de las variables y constantes y a continuación se completa con los valores que toma cada una de ellas. Ejemplo : Realice la prueba de escritorio para el diagrama de flujo que responde al siguiente enunciado: Ingresar tres valores enteros, calcule y muestre el promedio. PRUEBA DE ESCRITORIO A B C S P 3 4 5 12 4 2.8. PAUTAS BÁSICAS PARA EL DISEÑO GENERAL DE UN ALGORITM O Los principios de George Polya, nos llevan al conocimiento de una técnica ordenada para el conocimiento y comprensión de los problemas. No existe un método para la resolución de problemas en forma metódica o mecánica, sin embargo los principios de este matemático brindan una serie de pautas para conducir nuestro pensamiento durante el proceso de solución de un problema, disponiendo así de un método heurístico para la resolución de problemas. ENUNCIADO GENERAL DE LOS PRINCIPIOS DE GEORGE POLYA 1. Comprender el problema. 2. Elaborar un plan. INICIO A,B,C S=A+B+C P=S/3 P FIN UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 9 3. ¿Es un problema de computadora? o Afirmativo: Instrumentar el plan. o Negativo: Llevar a cabo el plan. 4. Mirar hacia atrás. Gráficamente: 1. Comprender el problema. 1.1. ¿Cuáles son los output deseados? 1.2. ¿Cuáles son los input necesarios? 1.3. ¿Cuál o cuáles serían las condiciones vinculantes entre los output y los input? 1.4. Dibujar una figura representativa esquematizando el enunciado del problema. 1.5. Introducir una notación adecuada, a usar durante el desarrollo resolutivo del problema. 1.6. Separar clara y adecuadamente las distintas partes del problema. 2. Elaborar un Plan 2.1. Encontrar conexiones entre los input y los output 2.2. ¿Puede derivarse algo del uso de determinados input? 2.3. Tal vez sea útil introducir algún problema auxiliar. 2.4. Tratar de hacer una buena suposición. 2.5. ¿Vió antes este problema? 2.6. ¿Conoce Usted algún problema similar? 2.7. Mirar lo desconocido. 2.8. Tal vez convenga simplificar el problema tratando de acercarnos a la solución. UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 10 3. ¿Es un problema de computadora? Revisar si cumple con las condiciones para que el algoritmo sea considerado informático: Secuencial – Definido – Finito – General. o Afirmativo: Instrumentar el plan, elaborando el algoritmo correspondiente. o Negativo: Llevar a cabo el plan utilizando otros medios. 4. Mirar hacia atrás 4.1.Revisar lo hecho y preguntarnos si podemos mejorar el plan. 4.2. ¿Podríamos usar esta solución en otros problemas? 4.3. ¿Puede usted controlar los resultados? 4.4. En base a los estudios anteriores se podrían derivar los resultados en forma diferente? 2.9. EL DISEÑO DESCENDENTE También denominado diseño Top-Down, o de arriba hacia abajo, ya que se refiere a ver una gran imagen del sistema y luego de explotarla en partes o subsistemas pequeños, tal como, se muestra en la siguiente figura. Esta forma de razonar la solución de un problema forma parte de las Técnicas de Programación Modular. El diseño descendente permite que el analista de sistemas logre primero los objetivos organizacionales generales. Luego, el analista se mueve para dividir el sistema en subsistemas y sus requerimientos. El diseño descendente es compatible con la manera de pensar sobre los sistemas en general. Cuando el analista de sistemas emplea un enfoque descendente, esta pensando acerca de las interdependencias de los subsistemas, tal como es en la organización existente. Dentro de las ventajas de la utilización de un enfoque descendente en el diseño de sistemas, se encuentra: � Evitar el caos originado al tratar de diseñar el sistema "en un solo paso". Como la planeación y la implementación de sistemas de información es increíblemente compleja. � Posibilidad de contar con grupos de analistas de sistemas trabajando por separado pero simultáneamente en subsistemas independientes, pero necesarios. Esto puede ahorrar una gran cantidad de tiempo. El trabajo de grupos integrados par el diseño subsistemas es particularmente conveniente para la búsqueda de asegurar la calidad total. UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 11 Existen ciertos inconvenientes en el diseño descendente que el analista de sistemas debe mantener en mente. � Riesgo de que el sistema se divida en subsistemas "incorrectos". Se debe prestar atención a la necesidad dé la superposición y la distribución de los recursos, de tal forma que una participación de subsistemas tenga sentido en el esquema global del sistema. Además, es importante que cada subsistema se integre dé manera correcta al sistema. � Una vez que se realizan las divisiones en subsistemas, sus interfaces pueden descuidarse o simplemente ignorarse. La responsabilidad para lograr la adecuada interrelación debe quedar bien detallada. El enfoque descendente proporciona al grupo de sistemas una clara división establecida de los usuarios en fuerzas de tareas para los subsistemas. Los grupos asignados a las tareas establecidos por esta manera pueden tener una función doble, tal y como los círculos de control de calidad de los sistemas informáticos para la administración. 2.10. EL TEOREMA FUNDAMENTAL DE LA PROGRAMACIÓN ESTRUCTURA DA La técnica de la programación modular posee dos ventajas fundamentales: � Parcializar el estudio de la solución del problema, resolviendo el tema que plantea un determinado módulo. � Trabajar en equipo. Con el objetivo de formalizar la representación de cada módulo definiremos los siguientes conceptos, dentro de las Técnicas de Programación Estructurada: PROGRAMA Es un conjunto ordenado de instrucciones que permiten transformar los datos de entrada en datos de salida. PROGRAMA PROPIO Es aquel que posee un solo punto de entrada y uno de salida para controlar el programa. INICIO B, H A = B * H A FIN UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 12 PROGRAMA EQUIVALENTE Son aquellos programas que producen iguales transformaciones de datos, es decir que para las mismas entradas producen idénticas salidas. TEOREMA FUNDAMENTAL DE LA PROGRAMACIÓN ESTRUCTURADA “Todo programa propio puede ser sustituido por un programa equivalente que tenga únicamente como estructuras lógicas las siguientes estructuras básicas: 1. Secuencial, 2. Condicional, de Decisión o Selección, 3. Repetición o Iteración” La Filosofía de la Programación Estructurada se basa en 3 pautas fundamentales: 1. Estructuras Básicas. 2. Recursos abstractos. 3. Razonamiento Top-Down o Diseño Descendente. 2.11. ESTRUCTURAS: SECUENCIAL, DE SELECCIÓN Y REPETICIÓN ESTRUCTURA SECUENCIAL Representa una secuencia simple de problemas de evaluación, se representa esquemáticamente usando bloques convencionales de procesos de datos. Trabajo1 Trabajo2 Trabajo3 INICIO A, B,C S=A+B+C P=S/3 P FIN INICIO A,B,C P=(A+B+C)/3 P FIN PROGRAMAS EQUIVALENTES UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 13 Ejemplo 1 : Introduzca la altura y la base de un triángulo, encuentre y muestre el área del mismo. Resultado A: identificador que indica el valor del área del triángulo. Datos B: identificador que indica la base del triángulo. H: identificador que indica la altura del triángulo. Condiciones Vinculantes Fórmula del área: A = B * H / 2 ESTRUCTURA DE SELECCIÓN Su uso es evidente en los casos en los cuales se necesita bifurcar la solución por dos caminos alternativos de acuerdo a alguna condición lógica. Las estructuras de selección pueden ser: 1. Selección Simple 2. Selección Doble 3. Selección Múltiple � Estructura de Selección Simple Esta estructura presenta trabajo por una sola rama, generalmente por la rama cuyo resultado de la condición lógica es verdadero. CL Trabajo Verdadero Falso INICIO B, H A=B*H/2 A FIN UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 14 Ejemplo 1 : Introduzca un número entero e indique si el mismo es positivo. Resultado Mensaje que indica “X es positivo” Datos X: identificador que indica el valor del número entero ingresado. Condiciones Vinculantes Si (X > 0) entonces “X es positivo” � Estructura de Selección Doble Esta estructura presenta trabajo por ambas ramas. Ejemplo 1 : Introduzca un número entero e indique si el mismo es positivo o no lo es. Resultado Mensajes: “X es positivo” “X no es positivo” Datos X: identificador que indica el valor del número entero ingresado. CL Trabajo Verdadero Falso Trabajo INICIO X FIN x>0 “X es positivo” UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 15 Condiciones Vinculantes Si (X > 0) entonces “X es positivo” caso contrario “X no es positivo” � Estructura de Selección Múltiple La estructura de selección múltiple presenta condiciones lógicas anidadas, es decir que por una o por varias ramas existen también otras condiciones lógicas. Este es un ejemplo de una estructura de selección múltiple. Ejemplo 1 : Introduzca las coordenadas de un punto en el plano, e indique a qué cuadrante pertenece dicho punto. Resultados Mensajes: “I cuadrante” “II cuadrante” “III cuadrante” “IV cuadrante” Datos X: identificador que indica el valor de la abscisas del número ingresado. Y: identificador que indica el valor de las ordenadas del número ingresado. CL1 Trabajo1 Verdadero Falso CL2 Trabajo2 Verdadero Falso INICIO X FIN x>0 “X es positivo” “X no es positivo” UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 16 Condiciones Vinculantes (X > 0) and (Y > 0) ⇒ “I cuadrante”(X < 0) and (Y > 0) ⇒ “II cuadrante” (X < 0) and (Y < 0) ⇒ “III cuadrante” (X > 0) and (Y < 0) ⇒ “IV cuadrante” Toda estructura de selección múltiple que se abre a lo ancho puede ser representada por una estructura más simple pero cuyas condiciones lógicas serán expresiones compuestas. INICIO X, Y “I cuadrante” X>0 and Y>0 FIN “II cuadrante” X<0 and Y>0 “III cuadrante” X<0 and Y<0 “IV cuadrante” X>0 and Y<0 INICIO X, Y X>0 FIN Y>0 Y<0 “IV cuadrante” “I cuadrante” X<0 Y>0 Y<0 “ III cuadrante” “II cuadrante” UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 17 CL Trabajo No Si CL Trabajo Si No ESTRUCTURA DE REPETICIÓN O ITERACIÓN El manejo de la vida diaria nos hace repetir determinadas operaciones, como por ejemplo para encontrar el resultado de la multiplicación de 2x3 se debe sumar 2 veces el número 3 ó 3 veces el número 2. Es en estos casos en los cuales tienen su aplicación estas estructuras. Las estructuras de iteración y las reglas de funcionamiento de cada una de ellas son: 1. Estructura While do 2. Estructura Repeat Until � Estructura While � La expresión lógica se evalúa antes de la ejecución del bucle. Si la condición es verdadera se ejecuta las acciones incluidas en el bucle, caso contrario el control pasa a la sentencia siguiente al lazo. � Si la expresión lógica no se cumple cuando se ejecuta el bucle por primera vez, el conjunto de acciones del lazo no se ejecuta nunca. � Mientras la expresión lógica se cumpla el bucle se ejecuta. � Estructura Repeat Until � La expresión lógica se evalúa luego de ejecutarse todas las sentencias del bucle. � Si la expresión lógica es falsa, se repite el bucle ejecutándose nuevamente todas las acciones incluidas en él. � Si la expresión lógica es cierta, se interrumpe la ejecución del bucle y se transfiere el control a la sentencia siguiente a Until. Esta estructura tiene su correspondiente en Lenguaje C, es la estructura Do while . Con la diferencia que en ella siempre se ejecuta el trabajo y se repite el mismo si la condición es verdadera. CL Trabajo Si No UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 18 Dentro de los problemas que se pueden resolver con estas estructuras encontramos: 1. Problemas donde se conoce la cantidad de veces que se repite el ciclo. Generalmente N. 2. Problemas donde NO se conoce la cantidad de veces que se repite el ciclo. 3. Problemas de generación de valores. 1. PROBLEMAS DONDE SE CONOCE LA CANTIDAD DE VECES QUE S E REPITE EL CICLO . Ejemplo 1 : Introduzca N números enteros. Se tratará de determinar en este problema cuáles son los datos y cuáles los resultados. En este caso particular se poseen datos pero no resultados, ya que no se especifica un trabajo con ellos. Para tener en cuenta : Cuando se utiliza en el enunciado de un problema alguna de las siguientes palabras: “introduzca”, “ingrese”, o “cargue”, se hace referencia a los datos del mismo; mientras que cuando se expresa “muestre”, “averigüe”, “de a conocer”, “obtenga”, o “se necesita saber”, estamos señalando cuáles son los resultados requeridos. Datos N: identificador que indica la cantidad de números a Ingrese. X: identificador que indica a cada uno de los números. Ejemplo 2 : Introduzca N números enteros y muestre la suma de los mismos. Resultado S: identificador que indica la suma de los valores introducidos. N C=1 C<=N X C=C+1 FIN SI NO UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 19 Datos N: identificador que indica la cantidad de números a ingresar. X: identificador que indica a cada uno de los números. Cabe señalar que al diagrama del punto anterior lo único que se agrega es una variable acumulador. Variable ACUMULADOR : este tipo de variable debe ser inicializada con el valor neutro de la operación en la que intervenga: 0 (cero) si se intenta sumar ó 1 (uno) si se pretende acumular sucesivos productos. Expresiones generales en la que interviene: S:=S+X, donde S es la variable acumulador de la suma y X es la variable numérica que modifica el valor de S. F:= F*X donde F es la variable acumulador del producto y X es la variable que modifica el valor de F. Ejemplo 3 : Introduzca N números enteros y muestre el promedio de los mismos. Resultado P: identificador que indica el promedio de los valores introducidos. Datos N: identificador que indica la cantidad de números a ingresar. X: identificador que indica a cada uno de los números. SI N C=1 C<=N X S=0 S=S+X C=C+1 S FIN UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 20 Condiciones Vinculantes Las condiciones vinculantes son aquellas acciones necesarias de realizar con los datos que brinda el problema para conseguir los resultados esperados. Algunas de estas operaciones pueden ser evaluaciones o decisiones. En nuestro caso particular, las condiciones vinculantes son dos: 1) realizar la suma de los números ingresados y luego 2) realizar el cociente entre la suma y N para obtener el promedio aritmético, previa verificación que N sea distinto de 0 (cero), ya que en este caso se produciría un error de tipo lógico. N C=1 C<=N X C=C+1 S=0 S=S+X P=S/N P N!=0 ‘No se puede realizar la división por cero’ N O N O SI SI FIN UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 21 Ejemplo 4 : Introduzca N números enteros y muestre la cantidad de números positivos ingresados. Resultado CP: identificador que indica la cantidad de números positivos introducidos. Datos N: identificador que indica la cantidad de números a ingresar. X: identificador que indica a cada uno de los números. En este caso se solicita determinar la cantidad de números positivos, por lo tanto es necesario introducir una variable contador para este propósito. Esta variable se incrementará en una unidad cada vez que se ingrese un número positivo. Condiciones Vinculantes Condición lógica para saber si un número N es posit ivo: N>0 Ejemplo 5 : Introduzca N números enteros y muestre el porcentaje de números positivos ingresados. Resultado P: identificador que indica el porcentaje de números positivos introducidos. C=1 CP=0 C<=N X C=C+1 X >0 CP=CP+1 CP N FIN NO SI NO SI UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 22 Datos N: identificador que indica la cantidad de números a ingresar. X: identificador que indica a cada uno de los números. Condiciones Vinculantes Para calcular porcentajes siempre este debe ser con respecto a algo, en este caso nos piden sobre los números positivos, para la cual se debe acumular por un lado estos números y contar la cantidad de ellos; para tal fin se deben introducir dos variables una acumulador y otra contador. La fórmula del porcentaje se consigue con una regla de tres simple en donde se considera que la Cantidad Total de Valores N es el 100%, mientras que el porcentaje solicitado se calcula con respecto al valor de la variable contador. N C=1 CP=0 C<=N X C=C+1 FIN X >0 CP=CP+1 P P=CP*100/N SI SI NO NO N > 0 SI N O UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 23 Ejemplo 6 : Introduzca N valores enteros y positivos , determine el mayor de ellos. Resultado may: identificador que indica el mayor valor. Datos N: identificador que indica la cantidad de números a ingresar. X: identificador que indica a cada uno de los números. Condiciones Vinculantes Para poder encontrar el mayor valor se puede realizar de dos formas: a) Como es este caso se conoce el rango de los números pues se sabe que son enteros y positivos, se puede asignar a la variable mayor el menor valor posible dentro del rango de esos números (0 cero) ya que cualquier valor posterior será mayor al valor asignado inicialmente. b) Cuando no conocemos el rango de valores de los números el procedimiento correcto es asignar el primer valor ingresado a la variable mayor, para que a partir de ella se puedan comenzar a realizar las comparaciones. En este punto se realizará el procedimiento indicado en a) ya que se conoce el rango de los números. De igual forma se puede encontrar el menor de los N valores ingresados. N C=1 may=0 C<=N X C=C+1 X>may may=X FIN may NO SI SI NO UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 24 Ejemplo 7 : Introduzca N valores y determine el mayor de ellos. En este caso que sería el punto b) explicado en el ejercicio anterior, no se conoce el rango de validez de los valores por lo que se asigna el primer valor ingresado a la variable mayor. Resultado may: identificador que indica el mayor valor Datos N: identificador que indica la cantidad de números a Ingrese. X: identificador que indica a cada uno de los números. Condiciones Vinculantes Comparaciones del valor may con cada uno de los números ingresados. C=1 C<=N X C=C+1 FIN C == 1 may X>may may=X N!=0 SI NO NO SI NO SI SI NO N may=X UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 25 Ejemplo 8 : Introduzca N valores y determine el mayor de ellos y en qué posición se encuentra. En este caso lo único que hay que agregar al diagrama anterior es una variable que indique en posición ingresó el mayor valor, lo cual está indicado por la variable contadora C. Resultado may: identificador que indica el mayor valor pos: posición que indica el mayor valor Datos N: identificador que indica la cantidad de números a Ingrese. X: identificador que indica a cada uno de los números. Condiciones Vinculantes Comparaciones del valor may con cada uno de los números ingresados, conservando el mayor valor y la posición en que ingresa. C<=N X C:=C+1 C = = 1 may:=X pos:=C; X>may may:=X pos:=C; SI NO NO SI SI FIN may,pos N!=0 NO SI NO N C = 1 UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 26 2. PROBLEMAS DONDE NO SE CONOCE LA CANTIDAD DE VECES QUE SE REPITE EL CI CLO. Ejemplo 1 : Introduzca una cantidad no determinada de valores, cuyo final está determinado por el valor cero, y determine la suma de ellos. En este caso los valores se introducen pero al no conocerse la cantidad de valores que se deben Ingrese no se puede poner un contador para que gobierne el corte de control del ciclo de iteración ya que no tenemos N (que era la cantidad de valores) con quien comparar; por lo cual este corte de control es gobernado por una condición de negación a la dada en el ciclo mientras se utiliza una estructura While. En este ejemplo la condición de corte será: X<>0. Resultado S: Suma de los valores ingresados Dato X: identificador que indica a cada uno de los números. Condiciones Vinculantes Fórmula del acumulador, para incrementar el valor ingresado. X!=0 S=S+X FIN X X NO SI S S = 0 UNIDAD 2.- ESTRUCTURA ELEMENTAL DE DATOS. DISEÑO DE ALGORITMOS. Cátedra: Algoritmos y Estructuras de Datos – Departamento Sistemas - 27 3. PROBLEMAS DE GENERACIÓN DE VALORES . Ejemplo 1 : Genere los números impares menores a 100 y dé a conocer la suma de ellos. En este caso los valores no se introducen se generan de acuerdo a una determinada fórmula que se da en el enunciado del problema o que es ya conocida, como en este caso donde se sabe que se comienza con el número 1 y los demás se generan sumándole el valor 2 (dos) al número anterior. Además se conoce la cantidad de valores que se deben generar por lo que se puede poner un contador para que gobierne el corte de control del ciclo de iteración. En este ejemplo la condición de corte será: C<=100. Resultado S: Suma de los valores generados. Dato No se poseen datos pues no se ingresa ninguna variable, todos los valores deben ser generados. Condiciones Vinculantes Se comienza con el contador C=1 y se lo incrementa de a dos. C:=1 S:=0 C<=1 S=S+C C=C+2 S FIN
Compartir