Pontificia Universidad Católica de Valparaíso
                                                                            ...
Pontificia Universidad Católica de Valparaíso                                                      Pontificia Universidad ...
Pontificia Universidad Católica de Valparaíso                                                     Pontificia Universidad C...
Pontificia Universidad Católica de Valparaíso                                                 Pontificia Universidad Catól...
Pontificia Universidad Católica de Valparaíso                                                          Pontificia Universi...
Pontificia Universidad Católica de Valparaíso                                                     Pontificia Universidad C...
Pontificia Universidad Católica de Valparaíso                                                              Pontificia Univ...
Próxima SlideShare
Cargando en…5
×

[Inf 140] Introduccion A Los Algoritmos (6 Diap X Hoja)

442 visualizaciones

Publicado el

Publicado en: Estilo de vida
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
442
En SlideShare
0
De insertados
0
Número de insertados
3
Acciones
Compartido
0
Descargas
21
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

[Inf 140] Introduccion A Los Algoritmos (6 Diap X Hoja)

  1. 1. Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Pontificia Universidad Católica de Valparaíso Definición de Algoritmo (RAE) Facultad de Ingeniería Escuela de Ingeniería Informática • Conjunto ordenado y finito de operaciones que permite hallar la solución de un problema. “Introducción a los Algoritmos” • Método y notación en las distintas formas del cálculo. Asignatura INF 140 – Informática I Profesores Pamela Hermosilla Monckton Daniel Cabrera Paniagua Ayudantes Profesores Profesores INF 140 – Informática I PHM/DCP PHM/DCP Pontificia Universidad Católica de Valparaíso Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Escuela de Ingeniería Informática Algoritmo (Otras fuentes) Algoritmo (informalmente) Si a una persona se le entrega dicha lista, y ésta • Procedimiento para resolver un problema sigue las instrucciones cuidadosamente matemático en un número finito de pasos, lo entonces al llegar al final se habrá resuelto la que frecuentemente involucra repetición de una tarea en cuestión operación. Método detallado paso a paso para lograr una tarea. Profesores Profesores INF 140 – Informática I INF 140 – Informática I PHM/DCP PHM/DCP Pontificia Universidad Católica de Valparaíso Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Escuela de Ingeniería Informática Algoritmos Nuestra Definición de Algoritmo Un algoritmo es un conjunto finito de instrucciones que especifican la secuencia de operaciones a realizar, en orden, para resolver un problema Nivel de Abstracción determinado. En otras palabras es una fórmula para resolver un problema. Olvidar información y consecuentemente tratar Generalmente es una lista de la siguiente forma: cosas que son diferentes como si fueran las Paso 1: “Hacer algo” mismas. Esto con el fin de simplificar el análisis Paso 2: “Hacer algo” Paso 3: “Hacer algo” separando los atributos relevantes dentro de un . . contexto determinado. . Paso n: “Hacer algo” Dividir & Vencer (divide & conquer) Profesores Profesores INF 140 – Informática I INF 140 – Informática I PHM/DCP PHM/DCP 1
  2. 2. Pontificia Universidad Católica de Valparaíso Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Escuela de Ingeniería Informática Otros Ejemplos Algoritmos Cotidianos (Narrativos) 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á Llamar por teléfono capacitado el profesor lo acepta como ayudante, en caso contrario la solicitud del alumno será rechazada. Planchar Los pasos del algoritmo en descripción narrativa son los siguientes: Cocinar panqueques 1. Inicio Inscribir una asignatura… 2. Leer solicitud del alumno etc. 3. Leer historial del alumno 4. Si, el alumno está capacitado, el profesor acepta la solicitud, en caso contrario la solicitud es rechazada. 5. Fin Profesores Profesores INF 140 – Informática I INF 140 – Informática I PHM/DCP PHM/DCP Pontificia Universidad Católica de Valparaíso Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Escuela de Ingeniería Informática Características Calcular el promedio de 3 notas: 1. Inicio • Correcto - Fiable 2. Leer nota 1 3. Leer nota 2 • Eficiencia tiempo & recursos 3. Leer nota 3 • Claro - Fácil de mantener 4. Asignar a suma_de_notas el resultado de nota1+ nota2 + nota3 5. Asignar a promedio el resultado de suma_de_notas / 3 • Interfaz apropiada 6. Escribir resultado 7. Fin • Preciso : orden en cada paso • Definido: siempre se obtiene el mismo resultado Realizar una venta con factura… • Finito: número finito de pasos Profesores Profesores INF 140 – Informática I INF 140 – Informática I PHM/DCP PHM/DCP Pontificia Universidad Católica de Valparaíso Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Escuela de Ingeniería Informática • Error – creer que: Realidad: Aprender a programar significa aprender un La parte medular de la programación lenguaje computacional hasta dominarlo consiste en resolver el problema. completamente, y luego utilizarlo para Esto es independiente del lenguaje en el cual expresar, en la forma que el computador se expresará posteriormente esta solución entiende, el problema particular que se quiere resolver Profesores Profesores INF 140 – Informática I INF 140 – Informática I PHM/DCP PHM/DCP 2
  3. 3. Pontificia Universidad Católica de Valparaíso Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Escuela de Ingeniería Informática • Resolver un problema usando un computador no es solamente conocer un lenguaje de programación. • Programar NO es fácil, ya que no es fácil resolver problemas • Es disponer de la capacidad para analizar un problema, entenderlo y especificar el algoritmo que permite solucionarlo, usando un lenguaje de programación. • ... y enseñar a programar tampoco lo es porque en realidad lo que se debe • Para ello no basta con aprender un lenguaje de enseñar son técnicas de solución de programación, además hay que disponer de una metodología que permita resolver problemas problemas. computacionalmente. Profesores Profesores INF 140 – Informática I INF 140 – Informática I PHM/DCP PHM/DCP Pontificia Universidad Católica de Valparaíso Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Escuela de Ingeniería Informática ¿Qué es un lenguaje? (1) • El medio para resolver un problema en forma computacional es un conjunto preciso de instrucciones expresadas en un cierto lenguaje, lo Def. RAE: cual constituye lo que se denomina un programa. “Conjunto de sonidos articulados con que el hombre • Pero el programa puede ser visto simplemente como manifiesta lo que piensa o siente.” un algoritmo expresado en un lenguaje de programación. “Estilo y modo de hablar y escribir de cada persona en particular.” • Este algoritmo es independiente del lenguaje y “Conjunto de señales que dan a entender algo. (El lenguaje constituye la forma en que se resuelve el problema. de los ojos, el de las flores).” Profesores Profesores INF 140 – Informática I INF 140 – Informática I PHM/DCP PHM/DCP Pontificia Universidad Católica de Valparaíso Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Escuela de Ingeniería Informática ¿Qué es un lenguaje de ¿Qué es un lenguaje? (2) programación? • Un lenguaje es un medio de comunicación entre los • Es un lenguaje utilizado es la escritura de programas para seres humanos a través de signos orales y escritos que computadores, de tal modo que puedan ser entendidos por poseen un significado. estos últimos. • Se clasifican en tres grupos: – Máquina – Bajo Nivel – Alto Nivel Profesores Profesores INF 140 – Informática I INF 140 – Informática I PHM/DCP PHM/DCP 3
  4. 4. Pontificia Universidad Católica de Valparaíso Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Escuela de Ingeniería Informática Lenguaje Máquina Lenguaje de Bajo Nivel • Es el lenguaje propio de los computadores, basado en la • La programación en lenguaje máquina es difícil. Es por ello se lógica binaria, de ceros y unos (00010111). necesitan lenguajes que faciliten este proceso. En base a esto se han sido diseñados los lenguajes de bajo nivel. • Este lenguaje resulta difícil de utilizar para las personas, ya que el programador debe introducir todos y cada uno de los • Los lenguajes de bajo nivel permiten crear programas muy comandos y datos en forma binaria. rápidos, pero que son a menudo difíciles de comprender. • La programación en lenguaje máquina es una tarea tan • Se requiere que el programador piense a nivel de máquina. tediosa y consume tanto tiempo que raras veces lo que se ahorra en la ejecución del programa justifica los días o • Un ejemplo de este tipo de lenguaje es el ensamblador. semanas que se han necesitado para escribir el mismo. Profesores Profesores INF 140 – Informática I INF 140 – Informática I PHM/DCP PHM/DCP Pontificia Universidad Católica de Valparaíso Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Escuela de Ingeniería Informática Lenguaje Ensamblador Lenguaje de Alto Nivel (1) • El lenguaje ensamblador es un lenguaje funcionalmente • Los llamados lenguajes de alto nivel son los que se emplean similar al lenguaje máquina, pero más sencillo de utilizar. 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 • En este lenguaje, los programadores utilizan códigos programadores. alfabéticos que se corresponden con instrucciones de tipo numérico de las máquinas. • Son útiles para simplificar el proceso de programación. • El “enlace” entre el programador y el computador, un programa llamado ensamblador, traduce cada instrucción de • Algunos ejemplos de lenguaje de alto nivel son: este lenguaje en la sentencia máquina que corresponda. – Java – C/C++ – Visual Basic – HTML, XML, Prolog, Lisp, …y un gran etc… Profesores Profesores INF 140 – Informática I INF 140 – Informática I PHM/DCP PHM/DCP Pontificia Universidad Católica de Valparaíso Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Escuela de Ingeniería Informática Lenguaje de Alto Nivel (2) Compiladores (1) • Ventaja: • Un compilador es un traductor. – Son fácilmente transportables de una máquina a otra sin necesidad de realizar grandes cambios en ellos, por lo que se • El compilador traduce un código fuente íntegramente a dice que son independientes de la máquina empleada. lenguaje máquina antes de su ejecución, por lo que el resultado se ejecuta con tanta rapidez como si se hubiese • Tanto los lenguajes de alto nivel como de bajo nivel no son escrito directamente en lenguaje máquina. entendibles directamente por la máquina, sino que necesitan ser traducidos a instrucciones 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 • Para ello se emplean Compiladores, e Intérpretes. sentencias del programa es interpretada y traducida al lenguaje máquina sólo una vez. Profesores Profesores INF 140 – Informática I INF 140 – Informática I PHM/DCP PHM/DCP 4
  5. 5. Pontificia Universidad Católica de Valparaíso Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Escuela de Ingeniería Informática Compiladores (2) Intérpretes • Un compilador crea una lista de instrucciones de código • Son programas que se traducen línea por línea el código máquina, basándose en un código fuente. fuente. • El código objeto resultante es un programa rápido y listo para • Son traductores más lentos que los compiladores, ya que no funcionar, pero que puede hacer que falle el ordenador si no producen un código objeto, sino que recorren el código fuente está bien diseñado. una línea cada vez. • Cada línea se traduce a código máquina y se ejecuta. Profesores Profesores INF 140 – Informática I INF 140 – Informática I PHM/DCP PHM/DCP Pontificia Universidad Católica de Valparaíso Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Escuela de Ingeniería Informática Resolución de Problemas Alto Nivel Bajo Nivel Máquina • Entender el problema -> Definir el problema con claridad !!! Ejecutable Código Código • Idear un plan para resolver el problema fuente Objeto – Identificar recursos, personas, información, etc. Compilador / Ensamblador Intérprete – Establecer el modo de utilizar los elementos identificados. SUB 011010 100010 … • Ejecutar el plan Incorporación de • Evaluar la solución obtenida bibliotecas ya – ¿Se ha resuelto efectivamente el problema existente? existentes – La solución alcanzada, ¿es útil para otros problemas? Profesores Profesores INF 140 – Informática I INF 140 – Informática I PHM/DCP PHM/DCP Pontificia Universidad Católica de Valparaíso Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Escuela de Ingeniería Informática Proceso de Programación Alcances… (1) • La programación es una forma especializada del modelo de • En general, los problemas a resolver son tan complejos, que no resolución de problemas… es posible resolverlos de una sola vez. • Sus fases son: • Es por ello que usualmente se divide un problema mayor en un listado de sub-problemas más pequeños y abordables. – Definición del problema. • Cada uno de estos sub-problemas son, a la vez, divisibles en – Creación, depuración y verificación del algoritmo. otros sub-problemas de menor tamaño. – Escritura del programa. – Verificación y depuración del programa. • Algunos autores llaman a esto Dividir y Conquistar, o Refinamiento por Pasos. Profesores Profesores INF 140 – Informática I INF 140 – Informática I PHM/DCP PHM/DCP 5
  6. 6. Pontificia Universidad Católica de Valparaíso Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Escuela de Ingeniería Informática Alcances… (2) Alcances… (3) • Este tipo de proceso se asocia a un enfoque “de arriba abajo” • Este algoritmo suele estar escrito en un formato denominado (Top Down), ya que el problema se aborda desde lo más Pseudocódigo, una mezcla entre lenguaje informático y general (“desde arriba”), y progresivamente se introducen lenguaje natural. mayores detalles según se requiera (“hacia abajo)”. • Una vez que los detalles del algoritmo están correctos, el paso • El resultado es un algoritmo, que corresponde a un conjunto siguiente es traducir las instrucciones existentes en de instrucciones paso a paso que, luego de ser ejecutadas, pseudocódigo a un lenguaje de programación de alto nivel. resuelven el problema original. Profesores Profesores INF 140 – Informática I INF 140 – Informática I PHM/DCP PHM/DCP Pontificia Universidad Católica de Valparaíso Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Escuela de Ingeniería Informática Forma Difícil de Resolver un Forma Adecuada de Resolver un Problema Problema (1) Solución en forma de programa Solución en forma de programa Solución en ? forma Problema Problema algorítmica • Énfasis en dar una solución rápida al problema, pero… Comprensión Implementación ¿Qué problema estoy resolviendo? del problema de la Solución ¿Abordé el problema de manera adecuada? Profesores Profesores INF 140 – Informática I INF 140 – Informática I PHM/DCP PHM/DCP Pontificia Universidad Católica de Valparaíso Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Escuela de Ingeniería Informática Forma Adecuada de Resolver un Aspectos a tener en cuenta en Problema (2) un algoritmo (1) • Como ya se ha mencionado, un algoritmo se desarrolla con • Lo importante radica en comprender efectivamente qué el objetivo de resolver un problema. problema pretendemos resolver, y plantear una solución analítica que lo resuelva. • Por lo tanto, se espera que, luego de la ejecución del algoritmo, exista un resultado o salida. • Si fallamos en la comprensión del problema, sus consecuencias se arrastran hasta la solución final… • 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). Profesores Profesores INF 140 – Informática I INF 140 – Informática I PHM/DCP PHM/DCP 6
  7. 7. Pontificia Universidad Católica de Valparaíso Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Escuela de Ingeniería Informática Aspectos a tener en cuenta en Aspectos a tener en cuenta en un algoritmo (2) un algoritmo (3) • Entradas: – ¿Cuántas entradas son requeridas por el proceso establecido? PROCESO Salida 1 Entrada 1 – ¿Qué tipo de entradas son requeridas por el proceso Salida 2 Entrada 2 establecido? Salida 3 Entrada 3 • Proceso: … … – ¿Cuál es el proceso más adecuado para resolver el problema … … planteado? Entrada N Salida N • Salidas: – ¿Cuál es el resultado final esperado? Profesores Profesores INF 140 – Informática I INF 140 – Informática I PHM/DCP PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Fin Profesores INF 140 – Informática I PHM/DCP 7

×