exposicion 1. 2 b

22
PROGRAMACIÓN Claudia Alvarado Briones Paul Barrezueta Ortiz David Luzardo Quiroz

Upload: claudia-alvarado

Post on 21-Jul-2015

67 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Exposicion 1. 2 b

PROGRAMACIÓNClaudia Alvarado Briones

Paul Barrezueta Ortiz

David Luzardo Quiroz

Page 2: Exposicion 1. 2 b

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.

Page 3: Exposicion 1. 2 b

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

Page 4: Exposicion 1. 2 b

• 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

Page 5: Exposicion 1. 2 b

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.

Page 6: Exposicion 1. 2 b

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

Page 7: Exposicion 1. 2 b

•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.

Page 8: Exposicion 1. 2 b

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.

Page 9: Exposicion 1. 2 b

• Ventajas: ▫ Puede resolver problemas complejos.

• Desventajas: ▫ Se puede llegar a un ciclo infinito.

▫ Para la gente sin experiencia es difícil de programar.

Page 10: Exposicion 1. 2 b

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.

Page 11: Exposicion 1. 2 b

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

Page 12: Exposicion 1. 2 b

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.

Page 13: Exposicion 1. 2 b

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.

Page 14: Exposicion 1. 2 b

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.

Page 15: Exposicion 1. 2 b

TÉCNICAS PARA LA FORMULACIÓN DE ALGORITMOS (DIAGRAMAS DEFLUJO Y PSEUDOCODIGO)

Page 16: Exposicion 1. 2 b

DIAGRAMASDE

FLUJO

Page 17: Exposicion 1. 2 b
Page 18: Exposicion 1. 2 b

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.

Page 19: Exposicion 1. 2 b

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.

Page 20: Exposicion 1. 2 b

Á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.

Page 21: Exposicion 1. 2 b

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.

Page 22: Exposicion 1. 2 b

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.