Informtica y Programacin Cientfica. Resolucin en C y Matlab
Autores: Jess M. Zamarreo y colaboradores Algoritmo En matemticas, ciencias de la computacin y disciplinas relacionadas, un algoritmo (del griego y latn, dixit algorithmus y este a su vez del matemtico persa Al- Juarismi) 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.
Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solucin. Los algoritmos son el objeto de estudio de la algoritmia.
Algoritmo En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas. Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que recibe un trabajador por parte de su patrn. Algunos ejemplos en matemtica son el algoritmo de la divisin para calcular el cociente de dos nmeros, el algoritmo de Euclides para obtener el mximo comn divisor de dos enteros positivos, o el mtodo de Gauss para resolver un sistema lineal de ecuaciones.
Wikipedia, Algoritmo, <http://es.wikipedia.org/wiki/Algoritmo>, [28/01/2013] Algoritmo RAE: algoritmo Conjunto ordenado y finito de operaciones que permite hallar la solucin de un problema.
Algoritmo es una secuencia finita de operaciones que resuelve un problema en un tiempo finito Sus principales atributos son que debe ser: finito, definido, preciso e independiente del lenguaje de programacin. Algoritmo Finito significa que debe tener un nmero finito de pasos por lo que debe estar limitado tanto por el tiempo de realizacin como por el nmero de pasos que realiza Definido implica que para los mismos datos de entrada se obtienen los mismos de salida Preciso debe indicarse el orden de realizacin de cada paso Independiente debe ser de propsito general Elementos de un Algoritmo Un algoritmo consta de datos y de sentencias Datos Se almacenan Variables y constantes Son involucrados En expresiones Las sentencias describen las acciones algortmicas que pueden ser ejecutadas, en general realizan clculos, entradas/salidas y control de flujo del algoritmo Variables, constantes y expresiones Variable: elemento del algoritmo que posee un valor, es conocido por un nombre o identificador y pertenece a un tipo de dato definido al inicio del algoritmo Debe ser declarada antes de usarse !!!!!!!! En un algoritmo la declaracin consta de una sentencia que especifica: el tipo de dato, su nombre y un valor inicial en algunas ocasiones VARIABLES: a, b=3, c, d : enteros n, longitud : reales Variables, constantes y expresiones Constante: elemento del algoritmo similar a una variable, pero cuyo valor no cambia a lo largo del algoritmo Las constantes deben ser inicializadas de acuerdo con el tipo de dato al que pertenecen Un valor constante o constante literal es un valor de cualquier tipo que se utiliza como tal CONSTANTES: PI = 3.1416, G=9.8 5.38 , 4, s Variables, constantes y expresiones Expresin: combinacin de variables, constantes, valores constantes, operadores y funciones que al evaluarla en el orden correcto tiene un valor concreto Las expresiones ms representativas son las numricas y las lgicas 2*PI*r Dato numrico Expresiones Las expresiones numricas tienen como resultado datos numricos Orden de precedencia de operadores aritmticos: 1. Potenciacin: ^ 2. Signo: +,- 3. Producto/Divisin: *,/ 4. Suma/Resta: +, - 5. Cociente/Resto de divisin entre enteros: DIV, MOD Las operaciones entre parntesis se evalan primero A igualdad de precedencia: de izquierda a derecha Ejemplos Expresiones Las expresiones lgicas son las que ofrecen como resultado despus de su operacin un valor lgico Los operadores lgicos que involucran son: AND, OR,NOT y los relacionales: <, >, =, <=, >=, <> Ejemplos Orden de precedencia de operadores relacionales y lgicos: 1. NOT 2. <, >, <=, >= 3. =, <> 4. AND 5. OR Sentencias Describen lo que debe hacer el algoritmo. Existen tres tipos de sentencias: de asignacin, de entrada/salida y de control del flujo del algoritmo Sentencia de asignacin: almacena un valor en una variable o constante.Se muestra con el signo Sentencia de entrada/salida: Lectura o entrada, permite introducir datos desde disp. externos (teclado) o desde ficheros Salida o escritura, permite visualizar datos en disp. externos (pantalla, impresora) o almacenarlos en ficheros Sentencias Sentencias de control del flujo del algoritmo: Secuenciales: todas las instrucciones se ejecutan una detrs de otra Selectivas (bifurcaciones): en funcin de una expresin (lgica), se opta entre varias alternativas de ejecucin Repetitivas (cclicas, bucles o lazos): Se utilizan para realizar varias veces el mismo conjunto de operaciones Tipos de Datos Dato es una informacin relativa a un objeto que es manipulable por el ordenador, que posee un valor y que es conocido en un programa o algoritmo por un nombre o identificador del dato El identificador indica una direccin de memoria Existen datos elementales y estructurados Tipos de Datos Tipos de Datos Entero: Representan nmeros positivos o negativos sin decimales, en el rango [-2 n-1 , 2 n-1 -1] Real: Almacenan un valor de la forma N=M*B E
Carcter: Representan elementos individuales de un conjunto finito de caracteres. Lgico o booleano: Slo pueden tener dos posibles valores: verdadero o falso Tipos de Datos Enumerado este tipo de dato requiere que el programador defina el rango de valores que puede tomar Subrango este tipo de dato se define a partir del tipo de dato entero, carcter o enumerado, con solo decir que el tipo de dato definido podr tomar un conjunto de valores limitado del original Puntero es aquel cuyo valor es la direccin en memoria de otro dato Datos estructurados Una estructura es esttica cuando el tamao en memoria ocupado se define antes de la ejecucin del programa y no puede modificarse durante la ejecucin Una estructura dinmica es aquella en la que no se define a priori su tamao en memoria Un conjunto homogneo es aquel que est formado por datos del mismo tipo, y es ordenado si se puede acceder a cada uno de sus elementos usando un identificador Datos estructurados Array es una estructura de datos homognea, esttica y ordenada, formada por una cantidad fija de datos de un mismo tipo, cada uno tiene asociado uno o ms ndices que determinan la posicin del dato en el array Cadenas de caracteres est formada por una secuencia de caracteres en un orden determinado, por lo tanto es una estructura homognea, esttica y de acceso por posicin Datos estructurados Registros formada por varios elementos o campos que se refieren a una misma entidad, es heterognea, esttica y de acceso por nombre. Lista es una estructura de datos homognea, dinmica y de acceso por clave. Se constituye por una cantidad no prefijada de registros, con al menos dos campos, uno de los cuales sirve para localizar al sgte. Elemento de la lista. rbol es una estructura de datos homognea y dinmica que ordena los elementos que la integran en forma de rbol, usando nodos y subrboles Representacin de algoritmos Pseudocdigo ALGORITMO nombre del algoritmo ENTRADA descripcin de los datos de entrada al algoritmo SALIDA descripcin de los datos de salida del algoritmo VARIABLES lista de variables con sus tipos INICIO sentencias FIN Representacin de algoritmos Palabras o smbolos claves que se utilizan dentro del cuerpo del algoritmo Operador asignacin: Variable Expresin Identificador declarado anteriormente Una variable, constante, constante literal o frmula a evaluar. Deben ser del mismo tipo Representacin de algoritmos Operaciones entrada/salida Entrada: Leer lista de variables separadas por comas Salida: Escribir lista de variables o expresiones separadas por comas. Estructuras de control secuencial Consta de un conjunto de sentencias ordenadas Ejemplo: Calcula la superficie de un tringulo Representacin de algoritmos Estructuras de control selectivas Permite codificar alternativas dobles o mltiples, usando dos tipos de sentencias En el caso doble: SI condicin sentencia 1 . SI NO sentencia 2 . FIN_SI Ejemplo: Dados dos nmeros enteros imprime el mayor de los dos Representacin de algoritmos Otra forma de estructura de control selectiva EN CASO DE QUE expresin VALGA Valor 1: bloque sentencias 1 Valor 2: bloque sentencias 2 Valor 3: bloque sentencias 3
[EN OTRO CASO bloque sentencia x] FIN_CASO Representacin de algoritmos Estructuras de control repetitiva bucle PARA PARA i=0 HASTA i=9 CON INCREMENTO 1 Entrar en el bucle Sentencias del bucle i=9 Sentencias del bucle i=1 Sentencias del bucle i=0 Salida del bucle Representacin de algoritmos bucle PARA En pseudocdigo sera: PARA contador = vi HASTA vf CON INCREMENTO n Bloque de sentencias FIN_PARA Ejemplo: Realizar el algoritmo para escribir los nmeros pares menores o iguales que 50 Representacin de algoritmos Estructuras de control repetitiva bucle MIENTRAS se cumple la condicin? Sentencias del bucle Entrar en el bucle Salir del bucle SI NO Representacin de algoritmos bucle MIENTRAS En pseudocdigo sera: MIENTRAS condicin HACER Bloque de sentencias FIN_MIENTRAS Representacin de algoritmos Estructuras de control repetitiva bucle REPETIR Sentencias del bucle se cumple la condicin? Salir del bucle SI NO Entrada al bucle Representacin de algoritmos bucle REPETIR En pseudocdigo sera: REPETIR Bloque de sentencias HASTA_QUE condicin Ejemplo: Realizar el algoritmo para escribir los nmeros pares menores o iguales que 50 Organigramas o diagramas de flujo INICIO FIN a b Leer b Escribir a Diagramas de flujo CONDICION SI NO Estructura SELECTIVA CONDICION NO Sentencias bucle SI Estructura MIENTRAS Diagramas de flujo CONDICION SI SENTENCIAS BUCLE ENTRADA NO SALIDA PARA i=vi HASTA vf CON INCREMENTO n SENTENCIAS BUCLE SALIDA ENTRADA HASTA PARA SUBALGORITMOS Un subalgoritmo es una parte de un algoritmo. Se utiliza para descomponer en varias partes un algoritmo que resuelve un problema complejo Esta caracterstica permite que los algoritmos sean simples, modulares y reutilizables Subalgoritmo 1 Subalgoritmo 2 Subalgoritmo 3 Paso de parmetros SUBALGORITMOS Parmetros formales son las variables que utiliza el algoritmo llamado para emitir o recibir datos a o desde el algoritmo llamante Parmetros actuales son las variables, constantes o expresiones utilizadas por el algoritmo llamante El paso de parmetros se puede realizar por valor o por referencia Existen datos globales y datos locales SUBALGORITMOS Los subalgoritmos se clasifican en funciones y procedimientos Las funciones reciben valores de entrada y devuelven un valor que es el resultado de la funcin Cmo se utiliza una funcin? El algoritmo invoca a la funcin con un nombre y una lista de parmetros actuales SUBALGORITMOS Para qu se utilizan los procedimientos? Si se desea que un subalgoritmo devuelva ms de un valor se utilizan los procedimientos Cmo se utiliza un procedimiento? Se invoca por su nombre y el algoritmo le enva una lista de parmetros actuales (que deben ser los de entrada y salida) RECURSIVIDAD Es una tcnica de programacin, donde la funcin se llama as misma. Reglas para disear algoritmos recursivos 1. Deben existir reglas lgicas en funcin de los argumentos de entrada, de manera que la funcin les devuelva un valor sin tener que llamarse as misma (solucin trivial) 2. Cuando los argumentos de entrada no cumplan las reglas lgicas, se llamar recursivamente a la funcin (solucin no trivial) 3. Asegurarse que el valor que se devuelve es la solucin correcta del algoritmo (mtodo de induccin) RESOLUCION DE PROBLEMAS METODOLOGA DE RESOLUCIN 1. Planteamiento del problema 2. Diseo del algoritmo (utilizando algoritmo conceptual) 3. Probar con ejemplos sencillos