Vous êtes sur la page 1sur 66

Algoritmos

Algoritmos
Qu es un algoritmo?
Caractersticas
Resolucin de Problemas
Fases para la solucin de problemas

Tcnicas de Diseo
Tcnicas para la formulacin de algoritmos
Tiempo de ejecucin del algoritmo
Ejemplos
Complejidad
Desempeo

Algoritmos

Qu es Algoritmo?

Se deriva de la traduccin al latn de la palabra rabe


Alkhowarismi, nombre de un matemtico y astrnomo
rabe que escribi un tratado sobre manipulacin de
nmeros y ecuaciones en el siglo IX.

Algoritmos

Definiciones:
Un algoritmo es un mtodo para resolver un
problema mediante una serie de pasos precisos,
definidos y finitos.

Es una lista de instrucciones para efectuar paso


por paso un proceso.

Algoritmos
Qu es un algoritmo?
Caractersticas
Resolucin de Problemas
Fases para la solucin de problemas

Tcnicas de Diseo
Tcnicas para la formulacin de algoritmos
Tiempo de ejecucin del algoritmo
Ejemplos
Complejidad
Desempeo

Algoritmos
Caractersticas del Algoritmo:

Preciso, tiene que indicar el orden de realizacin en


cada paso.

Definido, es decir, si el algoritmo se prueba dos


veces, en estas dos pruebas, se debe obtener el
mismo resultado.

Finito, es decir, que el algoritmo tiene que tener un


nmero determinado de pasos.
Debe producir un resultado en un tiempo finito.

Algoritmos
Qu es un algoritmo?
Caractersticas
Resolucin de Problemas
Fases para la solucin de problemas

Tcnicas de Diseo
Tcnicas para la formulacin de algoritmos
Tiempo de ejecucin del algoritmo
Ejemplos
Complejidad
Desempeo

Algoritmos
Resolucin de Problemas
La resolucin de problemas con computadoras se pueden
dividir en tres fases:
Anlisis del problema
Diseo del algoritmo
Resolucin del algoritmo en la computadora

Algoritmos
Resolucin de Problemas
El anlisis y el diseo del algoritmo requiere la
descripcin del problema en subproblemas a base de
refinamientos sucesivos y una herramienta de
programacin:
Diagrama de flujo
Pseudocdigo
Esta ltima representacin es la mas utilizada por su sencillez y
parecido a el lenguaje humano.
Durante la tercera etapa se implementa el algoritmo en
un cdigo escrito en un lenguaje de programacin,
reflejando las ideas obtenidas en las fases de anlisis y
diseo.

Algoritmos
Qu es un algoritmo?
Caractersticas
Resolucin de Problemas
Fases para la solucin de problemas

Tcnicas de Diseo
Tcnicas para la formulacin de algoritmos
Tiempo de ejecucin del algoritmo
Ejemplos
Complejidad
Desempeo

Algoritmos
Qu es un algoritmo?
Caractersticas
Resolucin de Problemas
Fases para la solucin de problemas
Anlisis del Problema
Diseo del algoritmo
Implementacin

Tcnicas de Diseo
Tcnicas para la formulacin de algoritmos
Tiempo de ejecucin del algoritmo
Ejemplos
Complejidad
Desempeo

Implementacin del Algoritmo

Anlisis del
Problema

Diseo del
Algoritmo

Depuracin y
Verificacin

Compilacin y
ejecucin

Codificacin

D
O
C
U
M
E
N
T
A
C
I

M
A
N
T
E
N
I
M
IE
N
T
O

Fases para la Resolucin de Problemas


Anlisis del Problema
Esta fase requiere una clara definicin donde se contemple
exactamente lo que debe hacer el programa y el resultado o
solucin deseada.
Dado que se busca una solucin se precisan especificaciones de
entrada y salida.
Para poder definir bien un problema es conveniente responder
a las siguientes preguntas:
Qu entradas se requieren? (cantidad y tipo)
Cul es la salida deseada? (cantidad y tipo)
Cmo se produce la salida deseada?

Anlisis del Problema

INPUT

Algoritmo

OUTPUT

Fases para la Resolucin de Problemas


Anlisis del Problema
Ejemplo:
Leer el radio de un crculo y calcular e imprimir los valores de
rea y permetro.

Fases para la Resolucin de Problemas


Anlisis del Problema
Las entradas de datos en este problema se concentran en el
radio del crculo. Dado que el radio puede tomar cualquier
valor dentro del rango de los nmeros reales, el tipo de
datos radio debe ser tipo nmero real.

Tambin requiero el valor constante de =3.1416, para realizar


los clculos.

Las salidas sern dos valores : superficie y circunferencia que


tambin sern de tipo numrico real.

Fases para la Resolucin de Problemas


Anlisis del Problema

Entradas: Radio del crculo (variable RADIO).


Valor de (constante Pi)
Salidas: Permetro del crculo (variable CIRCUNFERENCIA)
rea del Crculo (variable AREA)
VARIABLES DEL ALGORITMO:
Variables : RADIO, AREA, CIRCUNFERENCIA (tipo real).
CONSTANTES DEL ALGORITMO:
=3.1416 (tipo REAL)

Algoritmos
Qu es un algoritmo?
Caractersticas
Resolucin de Problemas
Fases para la solucin de problemas
Anlisis del Problema
Diseo del algoritmo
Implementacin

Tcnicas de Diseo
Tcnicas para la formulacin de algoritmos
Tiempo de ejecucin del algoritmo
Ejemplos
Complejidad
Desempeo

Implementacin del Algoritmo

Anlisis del
Problema

Diseo del
Algoritmo

Depuracin y
Verificacin

Compilacin y
ejecucin

Codificacin

D
O
C
U
M
E
N
T
A
C
I

M
A
N
T
E
N
I
M
IE
N
T
O

Fases para la Resolucin de Problemas

Diseo del Algoritmo

En la fase de anlisis en el proceso de programacin se


determina que hace el programa.
En la fase de diseo se determina como hace el
programa la tarea solicitada.

Fases para la Resolucin de Problemas


Diseo del Algoritmo
Los mtodos utilizados para el proceso del diseo se
basan en el conocido divide y vencers.

Es decir la resolucin de un problema complejo se realiza


dividiendo el problema en subproblemas y a
continuacin dividir estos subproblemas en otros de
nivel mas bajo, hasta que sea implementada una
solucin en la computadora. Este mtodo se conoce
tcnicamente como diseo descendente (top-down) o
modular.

Fases para la Resolucin de Problemas


Diseo del Algoritmo
Cada programa bien diseado consta de un programa
principal (el mdulo de nivel mas alto) que llama a
subprogramas (mdulos) de nivel mas bajo, que a su
vez pueden llamar a otros subprogramas.
Los mdulos pueden ser planeados, codificados,
comprobados y depurados independientemente y a
continuacin combinados entre s.

Fases para la Resolucin de Problemas


Diseo del Algoritmo
Este proceso implica la ejecucin de estos pasos hasta
que el programa se ha terminado:

Programar un mdulo.
Comprobar el mdulo.
Depurar el mdulo.
Combinar el mdulo, con el resto de los otros
mdulos

El diseo del algoritmo es independiente del lenguaje de


programacin en el que se vaya a codificar
posteriormente.

Fases para la Resolucin de Problemas


Diseo del Algoritmo
Ejemplo:
Los problemas complejos se pueden resolver ms
eficazmente por la computadora cuando se dividen en
subproblemas que sean ms fcil de solucionar.

Fases para la Resolucin de Problemas


Diseo del Algoritmo
Lectura:
Los algoritmos ejecutados por una computadora pueden
combinar en un clculo matemtico complicado, millones de
pasos elementales, tales como adiciones y
substracciones. Una computadora puede tambin, mediante
el uso de algoritmos controlar un proceso de manufactura o
coordinar las reservaciones de una lnea area conforme se
reciben del sitio web y las oficinas de venta de boletos.
Los algoritmos para tales procesos en gran escala son muy
complicados, pero estn construidos en base a mdulos.

Fases para la Resolucin de Problemas

Diseo del Algoritmo


El problema de clculo de la longitud y superficie de un
crculo se puede descomponer en subproblemas ms
simples :

Leer datos de entrada.


Calcular rea y permetro.
Escribir resultados (datos de salida).

Fases para la Resolucin de Problemas


Diseo del Algoritmo
Cmo se produce la salida deseada?
1.
2.
3.
4.
5.
6.
7.
8.

Inicio
Declaro las variables de entrada y salida
Leo el valor de RADIO y Pi
Calculo el valor de CIRCUNFERENCIA=2 Pi RADIO
Calculo el valor de AREA= Pi (RADIO)2
Imprimo el valor de CIRCUNFERENCIA
Imprimo el valor de AREA
Fin

Fases para la Resolucin de Problemas


Administracin de
Datos por Institucin

Administrar Contactos

Agregar
Contactos

Eliminar
Contactos

Editar
Contactos

Contactos por
Autorizar

Administrar Institucin

Agregar
Institucin

Eliminar
Institucin

Editar
Institucin

Institucin por
Autorizar

Autorizacin de Datos
por Institucin

Acceso

Restringido

Administrar Cursos

Agregar
Cursos

Eliminar
Cursos

Editar
Cursos

Curso(s) por
Autorizar

Algoritmos
Qu es un algoritmo?
Caractersticas
Resolucin de Problemas
Fases para la solucin de problemas
Anlisis del Problema
Diseo del algoritmo
Implementacin

Tcnicas de Diseo
Tcnicas para la formulacin de algoritmos
Tiempo de ejecucin del algoritmo
Ejemplos
Complejidad
Desempeo

Fases para la Resolucin de Problemas


Implementacin del Algoritmo
Para implementar un algoritmo en la computadora, se
debe ejecutar los siguientes pasos:
Codificacin
Compilacin y ejecucin
Verificacin
Depuracin
Documentacin
Mantenimiento

Implementacin del Algoritmo

Anlisis del
Problema

Diseo del
Algoritmo

Depuracin y
Verificacin

Compilacin y
ejecucin

Codificacin

D
O
C
U
M
E
N
T
A
C
I

M
A
N
T
E
N
I
M
IE
N
T
O

Fases para la Resolucin de Problemas


Implementacin del Algoritmo
Codificacin:
Es la escritura en un lenguaje de programacin de la
representacin de un algoritmo. Dado que el diseo
del algoritmo es independiente del lenguaje de
programacin utilizado en su implementacin, el
cdigo puede ser escrito con igual facilidad en un
lenguaje o en otro.

Fases para la Resolucin de Problemas


Implementacin del Algoritmo
Codificacin:
import java.util.*;
public class Circulo {
/** Creates a new instance of Circulo */
public Circulo() {
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
double radio,area, perimetro;
double PI=Math.PI;
Scanner LeerRadio = new Scanner(System.in);
System.out.println("Escribe el valor del radio ");
radio = LeerRadio.nextDouble();
perimetro = (2.0) * PI * radio;
area = PI * Math.pow(radio,2);
System.out.println("r= " + radio + "\tPerimetro= " + perimetro + " \tArea= " + area);
System.exit(0);
}
}

Fases para la Resolucin de Problemas


Implementacin del Algoritmo
Codificacin:
import java.util.*;
public class Circulo {
/** Creates a new instance of Circulo */
public Circulo() {
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
double radio,area, perimetro;
double PI=Math.PI;

Declaro las variables de entrada y salida

Scanner LeerRadio = new Scanner(System.in);

Leo el valor de radio

System.out.println("Escribe el valor del radio ");


radio = LeerRadio.nextDouble();
perimetro = (2.0) * PI * radio;
area = PI * Math.pow(radio,2);

Calculo Permetro y Area

System.out.println("r= " + radio + "\tPerimetro= " + perimetro + " \tArea= " + area);
System.exit(0);
}
Imprimo Permetro y Area

Implementacin del Algoritmo

Anlisis del
Problema

Diseo del
Algoritmo

Depuracin y
Verificacin

Compilacin y
ejecucin

Codificacin

D
O
C
U
M
E
N
T
A
C
I

M
A
N
T
E
N
I
M
IE
N
T
O

Fases para la Resolucin de Problemas


Implementacin del Algoritmo
Compilacin y ejecucin:
PASO 1. INTRODUCIR EL PROGRAMA

Una vez que el algoritmo se ha convertido en un programa fuente, es


preciso introducirlo en memoria mediante el teclado y almacenarlo
posteriormente en un disco. Esta operacin se realiza con un editor de
texto, posteriormente el programa fuente se convierte en un archivo
de programa que se guarda en un disco.

Fases para la Resolucin de Problemas

Implementacin del Algoritmo


Compilacin y ejecucin:
PASO 2. COMPILACIN
El programa fuente debe ser traducido a lenguaje mquina. Este proceso
se realiza con el compilador y el sistema operativo que se encarga
prcticamente de la compilacin.
Si al compilar el programa fuente se presentan errores (errores de
compilacin), es necesario volver a editar el programa, corregir los
errores y compilar de nuevo. Esto se repite hasta que ya no se
presenten mas errores.

Fases para la Resolucin de Problemas


Implementacin del Algoritmo
Compilacin y ejecucin:
PASO 3. OBTENCIN DEL PROGRAMA OBJETO Y EJECUCIN

El programa objeto se obtiene cuando ya no hay errores,


pero an no es ejecutable directamente. Al ya no
existir errores en el programa fuente se debe instruir
al sistema operativo para que efecte la fase de
montaje o enlace, del programa fuente con las
libreras del programa del compilador. Este proceso de
montaje produce un programa ejecutable.
Suponiendo que no existen errores durante la ejecucin
(errores en tiempo de ejecucin), se obtendr la
salida de resultados correctos del programa.

Implementacin del Algoritmo

Anlisis del
Problema

Diseo del
Algoritmo

Depuracin y
Verificacin

Compilacin y
ejecucin

Codificacin

D
O
C
U
M
E
N
T
A
C
I

M
A
N
T
E
N
I
M
IE
N
T
O

Fases para la Resolucin de Problemas


Implementacin del Algoritmo
Verificacin y depuracin:
Es el proceso de ejecucin del programa con una amplia
variedad de datos de entrada, llamados datos de test
o prueba como son: valores normales de entrada,
valores extremos de entrada que comprueben los
lmites del programa y valores de entrada que
comprueben aspectos especiales del programa. Estos
determinarn si el programa contiene errores o no.

Fases para la Resolucin de Problemas


Implementacin del Algoritmo
Verificacin y depuracin:
Al ejecutar un programa se pueden producir tres tipos de errores:
Errores de Compilacin:

Errores de Ejecucin:

Errores Lgicos:

Fases para la Resolucin de Problemas


Implementacin del Algoritmo
Verificacin y depuracin:
Al ejecutar un programa se pueden producir tres tipos de errores:
Errores de Compilacin: Se producen normalmente por un uso
incorrecto de las reglas del lenguaje de programacin, suelen ser
errores de sintaxis.

Errores de Ejecucin: Se producen por instrucciones que la


computadora puede comprender pero no ejecutar. En estos casos se
detiene la ejecucin del programa y se imprime un mensaje de error.
Ejemplo de esto puede ser una divisin por cero.

Errores Lgicos: Se producen en la lgica del programa y la fuente del


error suele ser el diseo del algoritmo, son mas difciles de detectar
puesto que el programa puede funcionar y no producir errores de
compilacin ni de ejecucin pero regresar resultados incorrectos. En
este caso se debe regresar a la fase de diseo, modificar el algoritmo,
cambiar el programa fuente y compilar y depurar una vez mas.

Fases para la Resolucin de Problemas


Verificacin y depuracin:

Implementacin del Algoritmo

Anlisis del
Problema

Diseo del
Algoritmo

Depuracin y
Verificacin

Compilacin y
ejecucin

Codificacin

D
O
C
U
M
E
N
T
A
C
I

M
A
N
T
E
N
I
M
I
E
N
T
O

Fases para la Resolucin de Problemas


Implementacin del Algoritmo
Documentacin:
La importancia de la documentacin debe ser destacada por su influencia
en la etapa final, ya que programas pobremente documentados son
difciles de leer, mas difciles de depurar y casi imposibles de
mantener y modificar.

Puede ser interna y externa. La documentacin interna es la contenida en


lneas de comentarios. La documentacin externa incluye anlisis,
diagramas de flujo y/o pseudocdigos, manuales de usuarios con
instrucciones para ejecutar el programa y para interpretar los
resultados.

Fases para la Resolucin de Problemas


Implementacin del Algoritmo
Documentacin:

La documentacin es vital cuando se desea corregir posibles errores


futuros o bien cambiar el programa. Estos cambios se denominan
mantenimiento del programa.

Adems es de buena costumbre para todo buen programador, dejar


comentado su cdigo, esto es para que el futuro programador pueda
darle mantenimiento fcilmente a el programa, o incluso, si es el
mismo creador quien debe darle mantenimiento.

Implementacin del Algoritmo

Anlisis del
Problema

Diseo del
Algoritmo

Depuracin y
Verificacin

Compilacin y
ejecucin

Codificacin

D
O
C
U
M
E
N
T
A
C
I

M
A
N
T
E
N
I
M
I
E
N
T
O

Fases para la Resolucin de Problemas


Implementacin del Algoritmo
Mantenimiento:
Se refiere a las actualizaciones que deban aplicarse al
programa cuando las circunstancias as lo requieran.
Este programa deber ser susceptible de ser
modificado para adecuarlo a nuevas condiciones de
operacin.
Cualquier actualizacin o cambio en el programa deber
reflejarse en su documentacin.

Algoritmos
Qu es un algoritmo?
Caractersticas
Resolucin de Problemas
Fases para la solucin de problemas

Tcnicas de Diseo
Tcnicas para la formulacin de algoritmos
Tiempo de ejecucin del algoritmo
Ejemplos
Complejidad
Desempeo

Algoritmos
Tcnicas de Diseo
Top Down:
El problema se descompone en etapas o estructuras
jerrquicas, de modo que se puede considerar cada
estructura como dos puntos de vista : lo que hace?, y
cmo lo hace ?. Si se considera un nivel n de
refinamiento, las estructuras se consideran de la
siguiente forma :
nivel n :
Vista desde el exterior.
"lo que hace ?"
Nivel n+1 :
Vista desde el interior.
"cmo lo hace ?"

Algoritmos
Tcnicas de Diseo
Top Down:
Ejemplo de un control de almacn:

Algoritmos
Tcnicas de Diseo
Bottom Up:
Este mtodo es el inverso del anterior y es recomendable
cuando se tiene un modelo a seguir o se cuenta con
amplia experiencia en la resolucin de problemas
semejantes.

La tcnica de Botton Up es frecuentemente utilizada para la


realizacin de pruebas a sistemas ya concluidos.

Algoritmos
Tcnicas de Diseo
Warnier Orr:
Es una tcnica que utiliza una representacin semejante a la de
cuadros sinpticos para mostrar el funcionamiento y
organizacin de los elementos que conforman el algoritmo.
Utiliza la siguiente simbologa para indicar operaciones de
control.
SIMBOLO

SIGNIFICADO

OR (uno, otro o varios)


XOR (uno u otro, solo uno)

(x,y)

Puede hacerse tantas veces desde x hasta y

Algoritmos
Tcnicas de Diseo
Warnier Orr:
Los diagramas se leen de izquierda a derecha y de arriba hacia
abajo.

(0,n) = De cero a n veces


(1,n) = De una vez a n veces

Algoritmos
Qu es un algoritmo?
Caractersticas
Resolucin de Problemas
Fases para la solucin de problemas

Tcnicas de Diseo
Tcnicas para la formulacin de algoritmos
Tiempo de ejecucin del algoritmo
Ejemplos
Complejidad
Desempeo

Algoritmos
Tcnicas para la Formulacin de Algoritmos
Diagramas de Flujo:
Se basan en la utilizacin de diversos smbolos para
representar operaciones especficas.
Se les llama diagramas de flujo porque los smbolos utilizados
se conectan por medio de flechas para indicar la secuencia
de operacin.

Tcnicas para la Formulacin de Algoritmos


Diagramas de Flujo:
SIMBOLOGA

Decisin

Decisin

Tcnicas para la Formulacin de Algoritmos


Diagramas de Flujo:
EJEMPLO

Calcular el
rea y el
permetro de
una
circunferencia

Inicio

RADIO

Pi

CIRCUNFERENCIA=2*Pi*RADIO

AREA=Pi*(RADIO)2

CIRCUNFERENCIA
AREA

Fin

Del diagrama de flujo a la codificacin


import java.util.*;
public class Circulo {
/** Creates a new instance of Circulo */
public Circulo() {
}
public static void main(String[] args) {

// TODO code application logic here

double radio,area, perimetro;


double PI=Math.PI;
Scanner LeerRadio = new Scanner(System.in);
System.out.println("Escribe el valor del radio ");
radio = LeerRadio.nextDouble();
perimetro = (2.0) * PI * radio;
area = PI * Math.pow(radio,2);
System.out.println("r= " + radio + "\tPerimetro= " +
perimetro + " \tArea= " + area);
System.exit(0);
}
}

Tcnicas para la Formulacin de Algoritmos


Diagramas de Flujo:

Inicio

EJEMPLO
Leer nombre,
horas, precio

Calcular el salario neto


de un trabajador en funcin
del nmero de horas trabajadas,
precio de las horas trabajadas y
considerando descuentos por
concepto de impuestos del 20%

salario_bruto

impuesto

salario_neto

horas * precio

0.20 * salario_bruto

salario_bruto - impuesto

Escribir
nombre,
salario_bruto,
salario_neto

Fin

Tcnicas para la Formulacin de Algoritmos


Diagramas de Flujo:
EJEMPLO

Realizar un diagrama de flujo


que permita mostrar en
pantalla un mensaje si una
persona ha alcanzado la
mayora de edad.

Algoritmos
Calcule el salario neto de un trabajador en base a las
siguientes consideraciones:
Para un salario bruto menor de $10,000.00 no hay
retencin
Si el salario bruto est entre $10,000.00 y $30,000.00
la retencin es del 8%
Si el salario bruto es mayor de $30,000.00 la retencin
es del 15%.

Bibliografa
Metodologa de la Programacin
Algoritmos, Diagramas de Flujo y Programas
Cairo Battistutti Osvaldo
Alfa Omega, Computec, Mxico, D.F.
1995
Fundamentos de Algoritmia
Brassord G., Bratley P.
Pearson Education. USA
III Edicin, 2000
Fundamentos de Programacin, Algoritmos,
Estructuras de Datos y Objetos
Joyanes Aguilar Luis
McGraw-Hill / Interamericana de Espaa, S.A.
III Edicin, 2002

Bibliografa
Introduction to Algorithmics
T.H. Cormen, C.E. Leiserson, R.L. Rives
The MIT Press / Mc Graw Hill
1990
Desarrollo de Algoritmos y sus aplicaciones
Correa Uribe, Guillermo
Mc Graw - Hill Inc. USA
III Edicin, Abril/1992
Algortmica, Anlisis y Diseo de Algoritmos
Glvez Javier, Gonzlez Juan
RA-MA (Addison-Wesley Iberoamericana)
II Edicin, Septiembre/1993
Anlisis y Diseo de Sistemas de Informacin
Sean, James A
McGraw Hill USA
II Edicin, Diciembre/1998

Bibliografa
Lenguajes de Diagramas de Flujo
Forsythe, Keenan, Organick, Stenberg
Editorial Limusa
1989
ISBN 968-18-0813-4

Algoritmos

Vous aimerez peut-être aussi