Conceptos 1 Generales ALGORITMOS
Que es un Algoritmo? 2 Es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad. Conjunto finito de reglas que dan una secuencia de operaciones para resolver todos los problemas de un tipo dado. De forma más sencilla, podemos decir que un algoritmo es un conjunto de pasos que nos permite obtener un dato.
Un algoritmo debe cumplir: 3 Finitud: El algoritmo debe acabar tras un número finito de pasos. Definibilidad: El algoritmo debe definirse de forma precisa para cada paso, es decir hay que evitar toda ambigüedad. Entrada: El algoritmo tendrá cero o más entradas es decir, cantidades dadas antes de empezar el algoritmo.
Salida: El algoritmo tiene una o mas salidas en relación con las entradas. Efectividad: Se entiende por eso que una persona sea capaz de realizar el algoritmo de modo exacto y sin ayuda de una maquina en un lapso de tiempo finito. 4
Representación de un 5 Algoritmo Pseudocódigo: Significa escribir las instrucciones del algoritmo en lenguaje natural tal y como lo expresamos de manera cotidiana. Diagramas de Flujo: Son representaciones gráficas de los pasos necesarios que conllevan a la solución algorítmica de un problema. Se utilizan determinados símbolos o figuras que representan una acción.
6 Pseudocódigo. El pseudocódigo es una manera de escribir algoritmos de forma poco estricta (con una sintaxis relajada) o estructuras de datos poco detalladas, pero intentando acercar las ideas del algoritmos a estructuras y sintaxis parecidas a las de los lenguajes de alto nivel en los que vamos a programar el algoritmo. Es para ser leído por personas, por tanto no se preocupa en detalles sintácticos. Es un lenguaje de especificación de algoritmos, pero muy parecido a cualquier lenguaje de programación, por lo que luego su traducción al lenguaje de programación es muy sencillo, pero con la ventaja de que no se rige por las normas de un lenguaje en particular. Nos centramos más en la lógica del problema. El pseudocódigo también va a utilizar una serie de palabras claves o palabras especiales que va indicando lo que significa el algoritmo.
Pseudocódigo - Sintaxis Utilizada. 1. INICIO y FIN: Por donde empieza y acaba el algoritmo. 2. DATOS: Aquí se declaran e inicializan las variables que utilizará el algoritmo. 3. ALGORITMO: En esta sección se escribe el algoritmo. Pseudocódigo de un algoritmo genérico: INICIO. FIN. DATOS: ** esto es un comentario ** entero a ; ** declaración de una variable entera ** real b = 0 ; ** declaración e inicialización de una variable ** ALGORITMO: leer a ; b = a + 5 ; escribir b ;
Estructuras de Control Selectivas. Si: Si la Condición es Verdadera, se ejecuta la Acción, sino el algoritmo continua con su ejecución. Condici ón Verdad era? Si No Si < Condición > <Acción> Fin_Si Acción
Estructuras de Control Selectivas. Si Sino: Si la Condición es Verdadera, se ejecuta la Acción 1, sino el algoritmo ejecuta la Acción 2. Luego el algoritmo continua con su ejecución. Condici ón Verdad era? Si No Si < Condición > < Acción 1 > Sino < Acción 2 > Acción 1 Acción 2 Fin_Si
Estructuras de Control Selectivas. Si Sino Si: Si la Condición 1 es Verdadera, se ejecuta la Acción 1, sino el algoritmo evalúa la Condición 2. Si es Verdadera, ejecuta laacción 2 y sino laacción 3. Cond. 1 Verdad era? Si Acción 1 No Cond. 2 Verdad era? Si No Si < Condición 1 > < Acción 1 > Sino_Si < Condición 2 > < Acción 2 > Sino < Acción 3 > Acción 2 Acción 3 Fin_Si
Estructuras de Control Selectivas. Según (alternativa múltiple): Se evalúa una condición o expresión que puede tomar n valores. Según el valor que la expresión tenga en cada momento se ejecutan las acciones correspondientes al valor. El valor con el que se compara la expresión, va a depender de los lenguajes, de lo que sea ese valor. En general ese valor puede ser un valor constante, un rango de valores o incluso otra condición. Juan Ignacio Talpone Expresió n o Condici ón Según <expresión> < Valor 1 >: < Acción 1 > < Valor 2 >: < Acción 2 > < Otro >: < Acciones > Acción 1 Acción 2 Acción n Fin_Según
Estructuras de Control Repetitivas. Mientras: Se evalúa la Condición. Si es Verdadera, se ejecuta la Acción y se evalúa nuevamente la Condición. En el momento en el que la Condición sea Falsa se sale del bucle y se continua con la ejecución del algoritmo. Al evaluarse la Condición, al principio, antes de entrar en el bucle, si la condición es Falsa, nunca se entrará en el bucle. Por lo tanto se utiliza obligatoriamente este tipo de bucle en el caso de que exista la posibilidad de que el bucle pueda ejecutarse 0 veces. Condici ón Verdad era? No Mientras < Condición > < Acción > Fin_Mientras Si Acción
Estructuras de Control Repetitivas. Hacer - Mientras: En primera instancia se ejecuta la Acción. Posteriormente, se evalúa la Condición. Si es Verdadera, se ejecuta nuevamente la Acción. Si es Falsa, se continúa con la ejecución del algoritmo. Se repite el bucle mientras la condición sea Verdadera. La Condición se evalúa siempre al final del bucle, si es Verdadera se ejecuta nuevamente la Acción, si es Falsa se sale del bucle. Como la Condición se evalúa al final, incluso aunque la primera vez ya sea Falsa, el bucle (laacción) se habrá ejecutado al menos una vez. Acción Hacer < Acción > Mientras < Condición > Condici ón Verdad era? No Si
Estructuras de Control Repetitivas. Desde - Hasta: Se utiliza cuando se sabe el número exacto de veces que hay que iterar. Para ello el bucle llevará asociado una variable índice, a la que se le asigna un valor inicial y se determina cual va a ser su valor final y además se va a incrementar (o decrementar) en cada iteración de bucle en un valor constante. Inicio Variable = Inicio ; Condición? ; Inc. n Si Acción No Condici ón Verdad era? Si Acción No Para variable = Vi, variable < Vf, Inc n <Acción> Fin_Para Acción 2
Ejemplo: Mostrar el producto de números enteros positivos entrados por teclado hasta el ingreso de un número negativo. Pseudocódigo: INICIO Módulo: Principal Entero P, num P = 1 INICIO DATOS: P, num: entero Leer num ALGORITMO: No Num >= 0? P 1 Leer num Escribir num FIN Si P = P * num Leer num FIN Mientras num >= 0 P p * num Leer num Fin_mientras Escribir p
Ejemplo. Ciclo Para 16 Leer 20 números e imprimir cuantos son positivos, cuantos negativos y cuantos neutros. Inicio cn = 0 cp = 0 cneg = 0 Para x = 1 hasta 20 hacer Leer num Sin num = 0 entonces cn = cn + 1 si no Si num > 0 entonces cp = cp + 1 si no cneg = cneg + 1 Fin-si Fin-si Fin-para Imprimir cn, cp, cneg Fin.
Ejemplo 2. Ciclo Para 17 El problema es calcular la suma de los números naturales desde 1 hasta n. Inicio Entero i, n, Suma Leer( n) i=1 Suma =0 PARA i=1 hasta n hacer Suma=Suma+i Fin_para Escribir (Suma) Fin
Traducción de Estructuras Repetitivas 18
Simbología para los DFD Diagrama de Flujo 19
Variables 20 Son estructuras de datos que, como su nombre indica, pueden cambiar de contenido a lo largo de la ejecución de un programa. Una variable corresponde a un área reservada en la memoria principal del ordenador pudiendo ser de longitud fija y variable.
TIPOS DE VARIABLES UTILES EN REPETICIÓN 21 Variables contadoras Como su nombre lo indica estas variables se usan fundamentalmente para contar, por lo tanto deben ser de tipo entero. Un ejemplo de este tipo de variables es la variable de control en un ciclo para. Una variable contadora se incrementa (o decrementa) en un valor constante en cada iteración del ciclo. Ejemplo. Desarrollar un algoritmo que imprima los números impares en orden descendente que hay entre 1 y 100.
Variables acumuladoras 22 La función de una variable acumuladora es almacenar valores numéricos que generalmente se suman (o multiplican) en cada iteración, por lo tanto la variable debe ser de tipo entero o real. Por ejemplo, en los diferentes algoritmos presentados para solucionar el problema de calcular la suma de los números naturales desde 1 hasta n, la variable suma es una variable acumuladora. Ejemplo. Calcular las suma de los cuadrados de los números entre 1 y 100.
Variables acumuladoras 23 Es una variable cuyo valor se incrementa o decrementa en un valor que no tiene por qué ser fijo (en cada iteración de un bucle). Un acumulador suele utilizarse para acumular resultados producidos en las iteraciones de un bucle.
Variables bandera 24 Una variable bandera es utilizada dentro de la condición del ciclo, ya sea sin negar, negada o conectada con una expresión booleana, para determinar cuándo un ciclo se sigue iterando o cuándo no. De esta manera una variable bandera debe ser de tipo booleano. (El lenguaje C estándar no tiene tipos booleanos, C++ si)
Variables bandera 25 Ejemplo. Realizar un programa que lea una serie de números reales y los sume. El programa debe preguntar al usuario cuándo desea ingresar un siguiente dato y si el usuario responde que no desea ingresar más datos el programa debe confirmar la respuesta. Si el usuario desea continuar ingresando datos se debe seguir solicitando datos y si el usuario confirma su deseo de salir, el programa debe mostrar la suma de los datos leídos y terminar.
Variables bandera 26 Es una variable cuyo valor se incrementa o decrementa en un valor fijo (en cada iteración de un bucle). Un contador suele utilizarse para contar el número de veces que itera un bucle. Pero, a veces, se utiliza para contar, solamente, aquellas iteraciones de un bucle en las que se cumpla una determinada condición.
Traducción de Estructuras Repetitivas 27
Constante 28 Es un valor que no puede ser alterado durante la ejecución de un programa. Una constante corresponde a una longitud fija de un área reservada en la memoria principal del ordenador, donde el programa almacena valores fijos.
Expresiones 29 Se definen como una combinación de constantes, variables, símbolos de operación, paréntesis, y nombres de funciones especiales. Una expresión consta de operandos y operadores. Las expresiones se clasifican en aritméticas, lógicas y comparación.
Expresiones aritméticas 30 Operador significado + Suma - Resta * Multiplicación / División Div Mod Cociente Modulo (Residuo)
Expresiones Lógicas 31 Operador lógico Not Expresión lógica Significado Negación And P y Q Conjunción Or P o Q disyunción
Expresiones Comparación 32 Operador < > = <= >= <> Significado Menor Mayor Igual Menor o igual Mayor o igual Distinto
Reglas de prioridad 33 Operador Paréntesis Gráfo ( ) Multiplicación, divide Div y mod *, / Div, mod Más y menos +, -
Operación de Asignación 34 Es la forma de darle valores tanto a variables como constantes, se representa con los símbolos
Estructura Secuencial 35 Se caracteriza porque una acción se ejecuta detrás de otra. El flujo del programa coincide con el orden físico en el que se han ido poniendo las instrucciones. Dentro de este tipo podemos encontrar operaciones de inicio/fin, inicialización de variables, operaciones de asignación, cálculo, suma, etc.