exposicion 1. 2 b
TRANSCRIPT
PROGRAMACIÓNClaudia Alvarado Briones
Paul Barrezueta Ortiz
David Luzardo Quiroz
DEFINICIÓN DE ALGORITMOS El concepto intuitivo de algoritmo, lo tenemos prácticamente todos: Un algoritmo es una serie finita de pasos para resolver un problema.
Hay que hacer énfasis en dos aspectos para que un algoritmo exista:
• El número de pasos debe ser finito. De esta manera el algoritmo debe terminar en un tiempo finito con la solución del problema,
• El algoritmo debe ser capaz de determinar la solución del problema.
RAZONES PARA ESTUDIAR LOS ALGORITMOS • Hoy día existe la gran necesidad de incorporar
metodologías que hagan más productiva la preparación del desarrollador de software.
• Así como la práctica del desarrollo de software contribuye a satisfacer las necesidades educativas en muchos campos, también permite obtener mejoras en etapas básicas de capacitación en análisis y diseño, impulsando de esta manera su propio desarrollo. El trabajo con conjuntos grandes de datos en las computadoras se facilita si los datos están ordenados
• El diseño de algoritmos es una teoría de la Investigación de operaciones.
• El diseño de un algoritmo que sea fácil de entender, codificar y depurar (Ingeniería de Software).
• El diseño de un algoritmo que haga uso eficiente de los recursos de la computadora (Análisis y Diseño de algoritmos).
DISEÑOS DE ALGORITMOS
Todo Algoritmo debe tener las siguientes
partes:
· Entrada de datos, son los datos necesarios
que el algoritmo necesita para ser
ejecutado.
· Proceso, es la secuencia de pasos
para ejecutar el algoritmo.
· Salida de resultados, son los datos
obtenidos después de la ejecución del
algoritmo.
ANÁLISIS DE ALGORITMOS
• El análisis de algoritmos nos permite medir la dificultad inherente de un problema y evaluar la eficiencia de un algoritmo.
▫ Tiempos de Ejecución Una medida que suele ser útil conocer es el tiempo de
ejecución
•Para medir el tiempo de ejecución de un algoritmo existen varios métodos.
Es posible realizar el estudio de la
complejidad de un algoritmo sólo en base a un conjunto reducido
de sentencias, por ejemplo, las que más influyen en el tiempo
de ejecución.
ALGORITMOS RECURSIVOS
• Un algoritmo recursivo es un algoritmo que expresa la solución de un problema en términos de una llamada a sí mismo. La llamada a sí mismo se conoce como llamada recursiva o recurrente.
• Las claves para construir un subprograma recurrente son:▫ Cada llamada recurrente se debería definir sobre un
problema de menor complejidad (algo más fácil de resolver).▫ Ha de existir al menos un caso base para evitar que la
recurrencia sea infinita.▫ Es frecuente que los algoritmos recurrentes sean más
ineficientes en tiempo que los iterativos aunque suelen ser mucho más breves en espacio.
• Ventajas: ▫ Puede resolver problemas complejos.
• Desventajas: ▫ Se puede llegar a un ciclo infinito.
▫ Para la gente sin experiencia es difícil de programar.
ALGORITMOS DE ORDENAMIENTO • En computación y matemáticas un algoritmo de
ordenamiento es un algoritmo que pone elementos de una lista o un vector en una secuencia dada por una relación de orden, es decir, el resultado de salida ha de ser una permutación —o reordenamiento— de la entrada que satisfaga la relación de orden dada. Las relaciones de orden más usadas son el orden numérico y el orden lexicográfico. Ordenamientos eficientes son importantes para optimizar el uso de otros algoritmos (como los de búsqueda y fusión) que requieren listas ordenadas para una ejecución rápida. También es útil para poner datos en forma canónica y para generar resultados legibles por humanos.
CLASIFICACIÓN
Los algoritmos de ordenamiento se pueden clasificar de las siguientes maneras:
• La más común es clasificar según el lugar donde se realice la ordenación
• Por el tiempo que tardan en realizar la ordenación, dadas entradas ya ordenadas o inversamente ordenadas
• Por estabilidad
FORMAS DE REPRESENTACIÓN DE ALGORITMOS • Dentro de las formas de representación de
algoritmos más conocidas, sobresalen:
La descripción narrativa
El Flujograma convencional
El diagrama Chapin
El pseudocódigo, o también conocido como lenguaje estructurado.
FORMULACIÓN Y RESOLUCIÓN DE PROBLEMAS
• Los algoritmos son los procedimientos que se construyen para la resolución de cualquier problema. De este modo, cuando se refiere a la construcción de un programa, nos estamos refiriendo a la construcción de un algoritmo.
• Un algoritmo puede ser caracterizado por una función lo cual asocia una salida: s= f (E) a cada entrada E.
• Se dice entonces que un algoritmo calcula una función f. Entonces la entrada es una variable independiente básica en relación a la que se producen las salidas del algoritmo, y también los análisis de tiempo y espacio.
La formulación la podemos descomponer en
tres etapas:
Definición del problema.
Supuestos: aserciones y limitaciones suministradas.
Resultados esperados.
La fase de planteamiento del problema lo que pretende un
algoritmo es sintetizar de alguna forma una tarea, cálculo
o mecanismo antes de ser transcrito al computador. Los pasos que hay que seguir son
los siguientes:
Análisis previo del problema.
Primera visión del método de resolución.
Descomposición en módulos.
Programación estructurada. o Búsqueda de soluciones parciales.
Ensamblaje de soluciones finales.
La fase de resolución del problema se puede
descomponer en tres etapas:
Análisis de alternativas y selección de la solución.
Especificación detallada del procedimiento
solución.
Adopción o utilización de una herramienta para su
implementación, si es necesaria.
TÉCNICAS PARA LA FORMULACIÓN DE ALGORITMOS (DIAGRAMAS DEFLUJO Y PSEUDOCODIGO)
DIAGRAMASDE
FLUJO
PSEUDOCÓDIGO
• Mezcla de lenguaje de programación y español (o inglés o cualquier otro idioma) que se emplea, dentro de la programación estructurada, para realizar el diseño de un programa. Es la representación narrativa de los pasos que debe seguir un algoritmo para dar solución a un problema determinado. El pseudocódigo utiliza palabras que indican el proceso a realizar. Si bien es cierto, podemos sentarnos frente a la computadora y programar un algoritmo, pero lo anterior corresponde a un conjunto de buenas prácticas que debemos tomar antes de comenzar a programar.
CARACTERÍSTICAS DE UN ALGORITMO1. Debe ser Preciso, porque cada uno de sus pasos debe indicar de manera precisa e inequívoca que se debe hacer.
2. Debe ser Finito, porque un algoritmo debe tener un número limitado de pasos.
3. Debe ser Definido, porque debe producir los mismos resultados para las mismas condiciones de entrada.
4. Puede tener cero o más elementos de entrada.
5. Debe producir un resultado. Los datos de salida serán los resultados de efectuar las instrucciones.
ÁREA DE ESTUDIO DE LOS ALGORITMOS
▫ Algoritmos y Estructuras de Datos: Esta área estudia algoritmos específicos y las estructuras de datos asociadas para solucionar problemas específicos. La parte de esto implica análisis matemático para analizar la eficacia del algoritmo en el uso de tiempo y memoria.
▫ Teoría de la Computación: En esta área se categorizan los problemas según la naturaleza de los algoritmos para resolverlos, algunos problemas tienen algoritmos rápidos, alguno solamente tienen algoritmos muy lentos (tales problemas se consideran a veces difícilmente insuperables), algunos no tienen ningún algoritmo.
▫ Lenguajes de Programación: La meta del área de lenguajes de programación es diseñar bien los lenguajes de programación mejores y mas naturales y los compiladores más rápidos y eficientes.
▫ Sistemas Operativos: Esta área implica el diseño e implementación de nuevos y mejores sistemas operativos.
JERARQUÍA DE OPERADORES (PARA LA ELABORACIÓN DE ALGORITMOS)
• Tipos de Operadores:▫ Aritméticos (su resultado es un número): potencia, * , / ,
mod, div, + , -▫ Relacionales (su resultado es un valor de verdad): =, <, >,
<=, >=, <>▫ Lógicos o Booleanos (su resultado es un valor de
verdad): not, and, or▫ Alfanuméricos : + (concatenación)▫ Asociativos. El único perador asociativo es el paréntesis (
) , el cual permite indicar en qué orden deben realizarse las operaciones.
Para resolver una expresión aritmética se deben seguir las siguientes reglas:
1. Primero se resuelven las expresiones que se encuentran entre paréntesis.
2. Se procede aplicando la jerarquía de operadores.3. Al evaluar una expresión, si hay dos operadores con
la misma jerarquía, se procede a evaluar de izquierda a derecha.
4. Si hay expresiones relacionales, se resuelven primero paréntesis, luego se encuentran los valores de verdad de las expresiones relacionales y por último se aplica jerarquía de operadores lógicos. En caso de haber iguales, proceder de izquierda a derecha.