[Inf 140] Introduccion A Los Algoritmos (6 Diap X Hoja)
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. 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. 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. 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. 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. 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. 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