ici 1141 algoritmos intro semestre i 2013

43
Pontificia Universidad Católica de Valparaíso Facultad de Ingeniería Escuela de Ingeniería Informática “Introducción a los Algoritmos” Asignatura ICI 1141 – Fundamentos de Algoritmos 1er. Semestre 2013 Profesores Rodolfo Villarroel Acevedo (Paralelo 1) Laura Griffiths Molina (Paralelo 2) Profesores RVA/LGM ICI1141 – Fundamentos de Algoritmos

Upload: thepanxos

Post on 13-Apr-2015

61 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: ICI 1141 Algoritmos Intro Semestre I 2013

Pontificia Universidad Católica de ValparaísoFacultad de Ingeniería

Escuela de Ingeniería Informática

“Introducción a los Algoritmos”

Asignatura

ICI 1141 – Fundamentos de Algoritmos1er. Semestre 2013

Profesores

Rodolfo Villarroel Acevedo (Paralelo 1)Laura Griffiths Molina (Paralelo 2)

Profesores RVA/LGM ICI1141 – Fundamentos de Algoritmos

Page 2: ICI 1141 Algoritmos Intro Semestre I 2013

Definición de Algoritmo (RAE)

• Conjunto ordenado y finito de operacionesque permite hallar la solución de un problema .

• Método y notación en las distintas formas del cálculo.

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 3: ICI 1141 Algoritmos Intro Semestre I 2013

Algoritmo (Otras fuentes)

• Procedimiento para resolver un problema matemático en un número finito de pasos , lo que frecuentemente involucra repetición de una operación.

�Método detallado paso a paso para lograr una tarea.

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 4: ICI 1141 Algoritmos Intro Semestre I 2013

Algoritmo (informalmente)

Si a una persona se le entrega dicha lista, y ésta sigue las instrucciones cuidadosamente entonces al llegar al final se habrá resuelto la tarea en cuestión

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 5: ICI 1141 Algoritmos Intro Semestre I 2013

Un algoritmo es un conjunto finito de instrucciones que especifican lasecuencia de operaciones a realizar, en orden, para resolver un problemadeterminado.

En otras palabras es una fórmula para resolver un problema.

Generalmente es una lista de la siguiente forma:

Paso 1: “Hacer algo”Paso 2: “Hacer algo”Paso 3: “Hacer algo”

Paso n: “Hacer algo”

...

Nuestra Definición de Algoritmo

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

INF 140 – Informática I

Page 6: ICI 1141 Algoritmos Intro Semestre I 2013

Algoritmos

Nivel de Abstracción

Olvidar información y consecuentemente tratar cosas que son diferentes como si fueran las mismas. Esto con el fin de simplificar el análisis separando los atributos relevantes dentro de un contexto determinado.

Dividir & Vencer (divide & conquer)

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 7: ICI 1141 Algoritmos Intro Semestre I 2013

Algoritmos Cotidianos (Narrativos)

Llamar por teléfonoPlancharCocinar panquequesInscribir una asignatura…etc.

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 8: ICI 1141 Algoritmos Intro Semestre I 2013

Un alumno solicita ser el ayudante de un ramo. El profesor examina en la base de datos de la escuela el historial del alumno. Si el alumno está capacitado el profesor lo acepta como ayudante, en caso contrario la solicitud del alumno será rechazada.

Los pasos del algoritmo en descripción narrativa son los siguientes:

1. Inicio2. Leer solicitud del alumno 3. Leer historial del alumno4. Si el alumno está capacitado, el profesor acepta la solicitud, en caso contrario

la solicitud es rechazada.5. Fin

Otros Ejemplos

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 9: ICI 1141 Algoritmos Intro Semestre I 2013

Calcular el promedio de 3 notas:

1. Inicio2. Leer nota 1 3. Leer nota 23. Leer nota 34. Asignar a suma_de_notas el resultado de nota1+ nota2 + nota35. Asignar a promedio el resultado de suma_de_notas / 36. Escribir resultado7. Fin

Realizar una venta con factura…

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 10: ICI 1141 Algoritmos Intro Semestre I 2013

Características

• Correcto - Fiable • Eficiencia tiempo & recursos• Claro - Fácil de mantener• Interfaz apropiada• Preciso : orden en cada paso• Definido: siempre se obtiene el mismo resultado• Finito: número finito de pasos

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 11: ICI 1141 Algoritmos Intro Semestre I 2013

• Error – creer que:Aprender a programar significa aprender un lenguaje computacional hasta dominarlo completamente, y luego utilizarlo para expresar, en la forma que el computador entiende, el problema particular que se quiere resolver

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 12: ICI 1141 Algoritmos Intro Semestre I 2013

Realidad:La parte medular de la programaciónconsiste en resolver el problema.Esto es independiente del lenguaje en el cual se expresará posteriormente esta solución

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 13: ICI 1141 Algoritmos Intro Semestre I 2013

• Programar NO es fácil, ya que no es fácil resolver problemas

• ... y enseñar a programar tampoco lo es porque en realidad lo que se debe enseñar son técnicas de solución de problemas.

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 14: ICI 1141 Algoritmos Intro Semestre I 2013

• Resolver un problema usando un computador no essolamente conocer un lenguaje de programación.

• Es disponer de la capacidad para analizar un problema, entenderlo y especificar el algoritmo que permite solucionarlo, usando un lenguaje de programación.

• Para ello no basta con aprender un lenguaje de programación, además hay que disponer de una metodología que permita resolver problemas computacionalmente.

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 15: ICI 1141 Algoritmos Intro Semestre I 2013

• El medio para resolver un problema en forma computacional es un conjunto preciso de instrucciones expresadas en un cierto lenguaje, lo cual constituye lo que se denomina un programa.

• Pero el programa puede ser visto simplemente como un algoritmo expresado en un lenguaje de programación.

• Este algoritmo es independiente del lenguaje y constituye la forma en que se resuelve el problema.

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 16: ICI 1141 Algoritmos Intro Semestre I 2013

¿Qué es un lenguaje? (1)

Def. RAE:

� “Conjunto de sonidos articulados con que el hombre manifiesta lo que piensa o siente.”

� “Estilo y modo de hablar y escribir de cada persona en particular.”

� “Conjunto de señales que dan a entender algo. (El lenguaje de los ojos, el de las flores).”

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 17: ICI 1141 Algoritmos Intro Semestre I 2013

¿Qué es un lenguaje? (2)

• Un lenguaje es un medio de comunicación entre los seres humanos a través de signos orales y escritos que poseen un significado .

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 18: ICI 1141 Algoritmos Intro Semestre I 2013

¿Qué es un lenguaje de programación?

• Es un lenguaje utilizado es la escritura de programas para computadores, de tal modo que puedan ser entendidos por estos últimos.

• Se clasifican en tres grupos:

– Máquina – Bajo Nivel– Alto Nivel

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 19: ICI 1141 Algoritmos Intro Semestre I 2013

Lenguaje Máquina

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

• Es el lenguaje propio de los computadores , basado en la lógica binaria , de ceros y unos (00010111).

• Este lenguaje resulta difícil de utilizar para las personas, ya que el programador debe introducir todos y cada uno de los comandos y datos en forma binaria.

• La programación en lenguaje máquina es una tarea tan tediosa y consume tanto tiempo que raras veces lo que se ahorra en la ejecución del programa justifica los días o semanas que se han necesitado para escribir el mismo.

Page 20: ICI 1141 Algoritmos Intro Semestre I 2013

Lenguaje de Bajo Nivel

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

• La programación en lenguaje máquina es difícil. Es por ello se necesitan lenguajes que faciliten este proceso. En base a esto se han sido diseñados los lenguajes de bajo nivel.

• Los lenguajes de bajo nivel permiten crear programas muy rápidos, pero que son a menudo difíciles de comprender.

• Se requiere que el programador piense a nivel de máquina.

• Un ejemplo de este tipo de lenguaje es el ensamblador.

Page 21: ICI 1141 Algoritmos Intro Semestre I 2013

Lenguaje Ensamblador

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

• El lenguaje ensamblador es un lenguaje funcionalmente similar al lenguaje máquina, pero más sencillo de utilizar.

• En este lenguaje, los programadores utilizan códigos alfabéticos que se corresponden con instrucciones de tipo numérico de las máquinas.

• El “enlace” entre el programador y el computador, un programa llamado ensamblador, traduce cada instrucción de este lenguaje en la sentencia máquina que corresponda.

Page 22: ICI 1141 Algoritmos Intro Semestre I 2013

Lenguaje de Alto Nivel (1)• Los llamados lenguajes de alto nivel son los que se emplean

con mayor frecuencia como lenguajes de programación , porque permiten expresar los algoritmos de una manera y con un estilo fácilmente reconocible por parte de diversos programadores.

• Son útiles para simplificar el proceso de programación.

• Algunos ejemplos de lenguaje de alto nivel son:– Java– C/C++– Visual Basic– HTML, XML, Prolog, Lisp, …y un gran etc…

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 23: ICI 1141 Algoritmos Intro Semestre I 2013

Lenguaje de Alto Nivel (2)• Ventaja:

– Son fácilmente transportables de una máquina a otra sin necesidad de realizar grandes cambios en ellos, por lo que se dice que son independientes de la máquina empleada.

• Tanto los lenguajes de alto nivel como de bajo nivel no son entendibles directamente por la máquina, sino que necesitan ser traducidos a instrucciones en lenguaje máquina.

• Para ello se emplean Compiladores , e Intérpretes .

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 24: ICI 1141 Algoritmos Intro Semestre I 2013

Compiladores (1)• Un compilador es un traductor .

• El compilador traduce un código fuente íntegramente a lenguaje máquina antes de su ejecución, por lo que el resultado se ejecuta con tanta rapidez como si se hubiese escrito directamente en lenguaje máquina.

• El compilador es el más eficaz para la mayor parte de las máquinas, puesto que presenta la ventaja que cada una de las sentencias del programa es interpretada y traducida al lenguaje máquina sólo una vez.

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 25: ICI 1141 Algoritmos Intro Semestre I 2013

Compiladores (2)• Un compilador crea una lista de instrucciones de código

máquina, basándose en un código fuente.

• El código objeto resultante es un programa rápido y listo para funcionar, pero que puede hacer que falle el computador si no está bien diseñado.

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 26: ICI 1141 Algoritmos Intro Semestre I 2013

Intérpretes• Son programas que se traducen línea por línea el código

fuente.

• Son traductores más lentos que los compiladores, ya que no producen un código objeto, sino que recorren el código fuente una línea cada vez.

• Cada línea se traduce a código máquina y se ejecuta.

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 27: ICI 1141 Algoritmos Intro Semestre I 2013

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Alto Nivel

Compilador / Intérprete

Código fuente

Ensamblador

Bajo Nivel

Código Objeto

SUB …

Máquina

011010100010

Ejecutable

Incorporación de bibliotecas ya

existentes

Page 28: ICI 1141 Algoritmos Intro Semestre I 2013

Resolución de Problemas• Entender el problema -> Definir el problema con claridad !!!

• Idear un plan para resolver el problema– Identificar recursos, personas, información, etc.– Establecer el modo de utilizar los elementos identificados.

• Ejecutar el plan

• Evaluar la solución obtenida– ¿Se ha resuelto efectivamente el problema existente?– La solución alcanzada, ¿es útil para otros problemas?

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 29: ICI 1141 Algoritmos Intro Semestre I 2013

Proceso de Programación• La programación es una forma especializada del modelo de

resolución de problemas…

• Sus fases son:

– Definición del problema.– Creación, depuración y verificación del algoritmo.– Escritura del programa.– Verificación y depuración del programa.

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 30: ICI 1141 Algoritmos Intro Semestre I 2013

Alcances… (1)• En general, los problemas a resolver son tan complejos, que no

es posible resolverlos de una sola vez.

• Es por ello que usualmente se divide un problema mayor en un listado de sub-problemas más pequeños y abordables.

• Cada uno de estos sub-problemas son, a la vez, divisibles en otros sub-problemas de menor tamaño.

• Algunos autores llaman a esto Dividir y Conquistar, oRefinamiento por Pasos.

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 31: ICI 1141 Algoritmos Intro Semestre I 2013

Alcances… (2)• Este tipo de proceso se asocia a un enfoque “de arriba abajo” (Top

Down), ya que el problema se aborda desde lo más general (“desde arriba”), y progresivamente se introducen mayores detalles según se requiera (“hacia abajo)”.

• El resultado es un algoritmo , que corresponde a un conjunto de instrucciones paso a paso que, luego de ser ejecutadas, resuelven el problema original.

• Este algoritmo suele estar escrito en un formato denominado Pseudocódigo , una mezcla entre lenguaje informático y lenguaje natural.

• Una vez que los detalles del algoritmo están correctos, el paso siguiente es traducir las instrucciones existentes en pseudocódigo a un lenguaje de programación de alto nivel.

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 32: ICI 1141 Algoritmos Intro Semestre I 2013

Forma Difícil de Resolver un Problema

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Problema

Solución en forma de programa

• Énfasis en dar una solución rápida al problema, pero… ¿Qué problema estoy resolviendo?¿Abordé el problema de manera adecuada?

?

Page 33: ICI 1141 Algoritmos Intro Semestre I 2013

Forma Adecuada de Resolver un Problema (1)

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Problema

Solución en forma de programaSolución en

forma algorítmica

Comprensión del problema

Implementación de la Solución

Page 34: ICI 1141 Algoritmos Intro Semestre I 2013

Forma Adecuada de Resolver un Problema (2)

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

• Lo importante radica en comprender efectivamente qué problema pretendemos resolver , y plantear una solución analítica que lo resuelva.

• Si fallamos en la comprensión del problema , sus consecuencias se arrastran hasta la solución final…

Page 35: ICI 1141 Algoritmos Intro Semestre I 2013

Resolución de Problemas: Enfoque Algorítmico

• 3 fases básicas:

– 1. Análisis del Problema => entrada(s) proceso, salida(s)

– 2. Diseño del Algoritmo => Pseudolenguaje, Gráfico

– 3. Codificación del Algoritmo en un LP

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 36: ICI 1141 Algoritmos Intro Semestre I 2013

1. Análisis del Problema

• AYUDA a tener una compresión de la naturaleza del problema.

– PROBLEMA bien definido →→→→ solución satisfactoria.

– Especificaciones de entrada y salida descritas con detalle.

SON REQUISITOS fundamentales para una solución eficaz.

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

• El análisis del problema requiere de una primera lectura, para tener una idea general.

• Una segunda lectura nos permitirá responder las siguientes preguntas :

– ¿ Qué datos se necesitan para resolver el problema ? ENTRADA

– ¿ Qué información debe proporcionar la resolución del problema ? SALIDA

Page 37: ICI 1141 Algoritmos Intro Semestre I 2013

Aspectos a tener en cuenta en un algoritmo (1)

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

• Como ya se ha mencionado, un algoritmo se desarrolla con el objetivo de resolver un problema.

• Por lo tanto, se espera que, luego de la ejecución del algoritmo, exista un resultado o salida .

• Pero para obtener esta salida, es necesario que exista un proceso que sea capaz de entregarlo.

• Ahora bien, un proceso requiere de entradas , elementos inicialmente externos al proceso, pero que se incorporan a él con el fin de obtener la salida esperada (solución).

Page 38: ICI 1141 Algoritmos Intro Semestre I 2013

Aspectos a tener en cuenta en un algoritmo (2)

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Entrada 1

Entrada 2

Entrada 3

Entrada N

……

Salida 1

Salida 2

Salida 3

Salida N

PROCESO

Page 39: ICI 1141 Algoritmos Intro Semestre I 2013

Aspectos a tener en cuenta en un algoritmo (3)

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

• Entradas:– ¿Cuántas entradas son requeridas por el proceso establecido?– ¿Qué tipo de entradas son requeridas por el proceso

establecido?

• Proceso:– ¿Cuál es el proceso más adecuado para resolver el problema

planteado?

• Salidas:– ¿Cuál es el resultado final esperado?

Page 40: ICI 1141 Algoritmos Intro Semestre I 2013

EJEMPLO : Análisis del Problema

• Calcular promedio de 3 Notas

Entrada : 3 NotasProceso: Suma aritmética de las Notas dividido por el Total de Notas Salida : Promedio de Notas

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 41: ICI 1141 Algoritmos Intro Semestre I 2013

2. Diseño del Algoritmo• Computador sólo resuelve problemas cuando : se le indican los pasos

sucesivos que debe ejecutar (ALGORITMO).

• Técnicas de Diseño :

– Diseño Descendente (DIVIDE y VENCERAS)– Refinamiento Sucesivo (Primeros pasos INCOMPLETOS-

GENERALES)

• ALGORITMO debe ser representado a través de alguna técnica que permita independizarlo del lenguaje de programación que se seleccionará para codificarlo.

• La técnica de representación puede ser :

– Descriptiva (PSEUDOLENGUAJE)– Gráfica (Diagrama de Flujo, Diagrama de Nassi-Schneiderman)

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 42: ICI 1141 Algoritmos Intro Semestre I 2013

Diseño de Algoritmos: Pseudocódigo

•Lenguaje de especificación formal de algoritmos que permite representar lasestructuras de control de la programación estructurada.

•No puede ser ejecutado por un computador (debe ser traducido a un LP).

•Compuesto por palabras reservadas, similares a las de sus homónimos en los lenguajes de programación que permiten representar acciones.

•Su escritura exige el uso de indentación.•Ventajas:

• Programador se CONCENTRA en la LÓGICA y en las ESTRUCTURAS DE CONTROL, y no tanto en las REGLAS SINTÁCTICAS propias de los LP.

• Fácil de modificar.• Fácil de traducir a LP.• Originalmente en Inglés , EN LA ACTUALIDAD en ESPAÑOL

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática

Page 43: ICI 1141 Algoritmos Intro Semestre I 2013

Fin

Pontificia Universidad Católica de ValparaísoEscuela de Ingeniería Informática