Está en la página 1de 10

1

Diseo de algoritmos
Diseo de algoritmos
J ose J esus Garca Rueda. Adaptado de El algoritmo, J ose J esus Garca Rueda. Adaptado de El algoritmo,
una iniciacin a la programacin una iniciacin a la programacin
( (http://www.desarrolloweb.com/manuales/67/ http://www.desarrolloweb.com/manuales/67/) y de ) y de
Diseo estructurado de algoritmos Diseo estructurado de algoritmos
(http://www.itver.edu.mx/comunidad/material/algoritmos/) (http://www.itver.edu.mx/comunidad/material/algoritmos/)
Introduccin Introduccin
La principal razn para aprender a programar es utilizar La principal razn para aprender a programar es utilizar
la computadora para resolver problemas. la computadora para resolver problemas.
Algoritmo: se deriva de la traduccin al latn de la Algoritmo: se deriva de la traduccin al latn de la
palabra rabe alkhowarizmi, nombre del matemtico palabra rabe alkhowarizmi, nombre del matemtico
rabe que enunci reglas paso a paso para sumar, rabe que enunci reglas paso a paso para sumar,
restar, multiplicar y dividir nmeros decimales. restar, multiplicar y dividir nmeros decimales.
Un algoritmo es una serie de pasos organizados que Un algoritmo es una serie de pasos organizados que
describe el proceso a seguir para solucionar un describe el proceso a seguir para solucionar un
problema especfico. problema especfico.
Dos tipos de algoritmos: Dos tipos de algoritmos:
Cualitativos: Emplean palabras. Cualitativos: Emplean palabras. Ej Ej: Receta de cocina, cambiar : Receta de cocina, cambiar
una rueda, usar la gua telefnica. una rueda, usar la gua telefnica.
Cuantitativos: Utilizan clculos numricos. Cuantitativos: Utilizan clculos numricos. Ej Ej: Resolver una : Resolver una
ecuacin de 2 grado. ecuacin de 2 grado.
2
Un algoritmo cotidiano Un algoritmo cotidiano
Algoritmo para leer las pginas de un libro: Algoritmo para leer las pginas de un libro:
1. 1. Inicio. Inicio.
2. 2. Abrir el libro en la 1 pgina. Abrir el libro en la 1 pgina.
3. 3. Leer la pgina. Leer la pgina.
4. 4. Es la ltima que deseo leer? Es la ltima que deseo leer?
S: Ve al paso 7. S: Ve al paso 7.
No: Ve al paso 5 No: Ve al paso 5
5. 5. Pasar a la siguiente pgina. Pasar a la siguiente pgina.
6. 6. Ve al paso 3. Ve al paso 3.
7. 7. Cerrar el libro. Cerrar el libro.
8. 8. Fin. Fin.
Lenguajes algortmicos Lenguajes algortmicos
Un lenguaje algortmico es un Un lenguaje algortmico es un
conjunto de smbolos y reglas conjunto de smbolos y reglas
que permiten describir de que permiten describir de
manera explcita un proceso. manera explcita un proceso.
Es independiente de cualquier Es independiente de cualquier
lenguaje de programacin. lenguaje de programacin.
Debe permitir una traduccin Debe permitir una traduccin
clara del algoritmo al clara del algoritmo al
programa. programa.
Dos tipos de lenguajes Dos tipos de lenguajes
algortmicos: algortmicos:
Grficos Grficos: Por ejemplo, los : Por ejemplo, los
diagramas de flujo. diagramas de flujo.
No grficos No grficos: Por ejemplo, el : Por ejemplo, el
pseudocdigo pseudocdigo. .
INICIO
Edad: Entero
ESCRIBE cul es tu edad?
Lee Edad
SI Edad >=18 entonces
ESCRIBE Eres mayor de edad
FINSI
Escribe fin del algoritmo
FIN
3
Creacin de algoritmos Creacin de algoritmos
Proceso de programacin tpico: Proceso de programacin tpico:
Dado un determinado problema Dado un determinado problema
el programador idea una solucin el programador idea una solucin
y la expresa mediante un algoritmo. y la expresa mediante un algoritmo.
Codificacin del algoritmo. Codificacin del algoritmo.
Ejecucin del programa. Ejecucin del programa.
Metodologa para la solucin de problemas por medio Metodologa para la solucin de problemas por medio
de un ordenador: de un ordenador:
1. 1. Definicin del problema: clara y precisa. Es casi la mitad del Definicin del problema: clara y precisa. Es casi la mitad del
trabajo trabajo
2. 2. Anlisis del problema: Colocarse en el lugar del ordenador y Anlisis del problema: Colocarse en el lugar del ordenador y
analizar qu requeriramos para realizar la tarea. analizar qu requeriramos para realizar la tarea.
Datos de entrada. Datos de entrada.
Informacin a producir (salida) Informacin a producir (salida)
Mtodos y frmulas para procesar los datos Mtodos y frmulas para procesar los datos
3. 3. Diseo del algoritmo. Diseo del algoritmo.
Caractersticas de un buen Caractersticas de un buen
algoritmo algoritmo
Debe tener un punto particular de inicio. Debe tener un punto particular de inicio.
No debe ser ambiguo. No debe ser ambiguo.
Debe ser general. Debe ser general.
Debe ser finito en tamao y en tiempo de Debe ser finito en tamao y en tiempo de
ejecucin. ejecucin.
Prueba de escritorio: se toman datos Prueba de escritorio: se toman datos
especficos como entrada y se sigue el especficos como entrada y se sigue el
algoritmo hasta obtener un resultado. algoritmo hasta obtener un resultado.
4
Tcnicas de diseo Tcnicas de diseo
Top Top Down Down: Se descompone sucesivamente el problema : Se descompone sucesivamente el problema
inicial en inicial en subproblemas subproblemas. .
Con cada descomposicin, se simplifican los Con cada descomposicin, se simplifican los subproblemas subproblemas. .
Las diferentes partes del problema pueden ser programadas de Las diferentes partes del problema pueden ser programadas de
forma independiente. forma independiente.
El programa final queda estructurado en forma de bloques o El programa final queda estructurado en forma de bloques o
mdulos. mdulos.
Bottom BottomUp Up: Se programa cada proceso segn vaya : Se programa cada proceso segn vaya
apareciendo. apareciendo.
Difcil llegar a una integracin tal que el desempeo global sea Difcil llegar a una integracin tal que el desempeo global sea
fluido. fluido.
Proclive a la duplicacin de esfuerzos. Proclive a la duplicacin de esfuerzos.
Pueden no satisfacerse los requisitos globales de la aplicacin. Pueden no satisfacerse los requisitos globales de la aplicacin.
La creacin de algoritmos se basa en la tcnica La creacin de algoritmos se basa en la tcnica
descendente. descendente.
Diagramas de flujo Diagramas de flujo
Es una forma de Es una forma de
representar grficamente representar grficamente
un algoritmo. un algoritmo.
Cada paso se escribe Cada paso se escribe
dentro de un smbolo. dentro de un smbolo.
Los pasos se conectan Los pasos se conectan
unos con otros mediante unos con otros mediante
lneas de flujo lneas de flujo. .
Son fciles de disear, Son fciles de disear,
pero difciles de pero difciles de
actualizar. actualizar.
Los smbolos que utiliza Los smbolos que utiliza
estn normalizados: estn normalizados:
Salida por Salida por
pantalla pantalla
Conector fuera Conector fuera
pgina pgina
Conector dentro Conector dentro
pgina pgina
Salida por Salida por
impresora impresora
Proceso Proceso
Entrada/ Salida Entrada/ Salida
Inicio/Final Inicio/Final
5
Diagramas de flujo (II) Diagramas de flujo (II)
Mientras Mientras
Seleccin Seleccin
mltiple mltiple
Decisin Decisin
Diagramas de flujo (III) Diagramas de flujo (III)
Lneas de flujo Lneas de flujo
Repite hasta Repite hasta
Para Para
6
Ejemplo de diagrama de flujo Ejemplo de diagrama de flujo
Disee un algoritmo Disee un algoritmo
que lea 3 nmeros, que lea 3 nmeros,
los sume e imprima el los sume e imprima el
resultado por resultado por
impresora. impresora.
Recomendaciones para los Recomendaciones para los
diagramas de flujo diagramas de flujo
Emplear solamente lneas de flujo horizontales Emplear solamente lneas de flujo horizontales
y/o verticales. y/o verticales.
Evitar el cruce de lneas (usando los conectores) Evitar el cruce de lneas (usando los conectores)
Usar los conectores slo cuando sea necesario. Usar los conectores slo cuando sea necesario.
No dejar lneas de flujo sin conectar. No dejar lneas de flujo sin conectar.
Se deber poder leer de arriba abajo y de Se deber poder leer de arriba abajo y de
izquierda a derecha. izquierda a derecha.
Ser escuetos y claros con lo que se escriba Ser escuetos y claros con lo que se escriba
dentro de los smbolos. dentro de los smbolos.
7
Pseudocdigo Pseudocdigo
Mezcla de lenguaje de programacin y de Mezcla de lenguaje de programacin y de
lenguaje natural. lenguaje natural.
Representacin narrativa de los pasos que debe Representacin narrativa de los pasos que debe
seguir un algoritmo. seguir un algoritmo.
Utiliza palabras, no grficos. Utiliza palabras, no grficos.
Ventajas: Ventajas:
Ocupa menos espacio. Ocupa menos espacio.
Permite representar fcilmente operaciones Permite representar fcilmente operaciones
repetitivas complejas. repetitivas complejas.
Es muy fcil pasar del Es muy fcil pasar del pseudocdigo pseudocdigo al lenguaje de al lenguaje de
programacin. programacin.
Quedan claros los niveles que tiene cada operacin. Quedan claros los niveles que tiene cada operacin.
Principales caractersticas de los Principales caractersticas de los
pseudocdigos pseudocdigos
Utilizan operadores aritmticos y lgicos. Utilizan operadores aritmticos y lgicos.
Se pueden incluir comentarios. Se pueden incluir comentarios.
Se debe respetar una Se debe respetar una indentacin indentacin en los en los
bloques de instrucciones. bloques de instrucciones.
Usan ciertas palabras clave: PSEUDOCDIGO, Usan ciertas palabras clave: PSEUDOCDIGO,
VARIABLES, INICIO, FIN, LEE, ESCRIBE, VARIABLES, INICIO, FIN, LEE, ESCRIBE,
IMPRIME, IMPRIME, IF_THEN_ELSE IF_THEN_ELSE, CASE OF, FOR , CASE OF, FOR
DO, WHILE DO, REPEAT UNTIL, ARRAY DO, WHILE DO, REPEAT UNTIL, ARRAY
Comienzan con el nombre del Comienzan con el nombre del pseudocdigo pseudocdigo, ,
seguido de la declaracin de variables, y luego seguido de la declaracin de variables, y luego
el cuerpo del el cuerpo del pseudocdigo pseudocdigo. .
8
Ejemplo de Ejemplo de pseudocdigo pseudocdigo
Algoritmo que lee 3 nmeros, los suma e Algoritmo que lee 3 nmeros, los suma e
imprime su resultado. imprime su resultado.
PSEUDOCDIGO PSEUDOCDIGO sumatorio sumatorio
VARIABLES VARIABLES
eN1 eN1, , eN2 eN2, 3N3, , 3N3, eSuma eSuma: Entero : Entero
INICIO INICIO
ESCRIBE Dame tres nmeros: ESCRIBE Dame tres nmeros:
LEE LEE eN1 eN1, , eN2 eN2, , eN3 eN3
eSuma eSuma = =eN1 eN1 + +eN2 eN2 + +eN3 eN3
ESCRIBE El resultado de la suma es: , eSuma ESCRIBE El resultado de la suma es: , eSuma
FIN FIN
Diagramas estructurados ( Diagramas estructurados (Nassi Nassi- -
Schneiderman Schneiderman) )
Como un diagrama Como un diagrama
de flujo en el que se de flujo en el que se
omiten las flechas de omiten las flechas de
unin, y las cajas son unin, y las cajas son
contiguas. contiguas.
Son fciles de disear Son fciles de disear
y difciles de y difciles de
actualizar. actualizar.
Las acciones Las acciones
sucesiva se escriben sucesiva se escriben
en cajas sucesivas. en cajas sucesivas.
9
EJ EMPLO EJ EMPLO
Disear un algoritmo que, dada una Disear un algoritmo que, dada una
operacin aritmtica expresada en el operacin aritmtica expresada en el
formato habitual (y formato habitual (y String String), vaya leyndola ), vaya leyndola
carcter a carcter, para as calcular su carcter a carcter, para as calcular su
resultado. resultado.
Respetar las reglas tpicas de precedencia Respetar las reglas tpicas de precedencia
entre operaciones aritmticas (+ y entre operaciones aritmticas (+ y - - < * y /) < * y /)
Paso 1: Anlisis Paso 1: Anlisis
Datos de entrada: una cadena de caracteres Datos de entrada: una cadena de caracteres
representando una operacin aritmtica. representando una operacin aritmtica.
Datos de salida: Un nmero, resultado de realizar la Datos de salida: Un nmero, resultado de realizar la
operacin aritmtica. operacin aritmtica.
Forma de operar: Emplearemos dos pilas, una de Forma de operar: Emplearemos dos pilas, una de
operadores y otra de operadores y otra de operandos operandos. .
En la primera guardaremos los operadores que vayamos En la primera guardaremos los operadores que vayamos
leyendo, siempre que su precedencia sea mayor que los leyendo, siempre que su precedencia sea mayor que los
operadores ya en la pila. De no ser as, se extraen los operadores ya en la pila. De no ser as, se extraen los
operadores de precedencia mayor y se operan. operadores de precedencia mayor y se operan.
En la segunda iremos guardando los En la segunda iremos guardando los operandos operandos que vayamos que vayamos
leyendo, as como los resultados de las operaciones parciales. leyendo, as como los resultados de las operaciones parciales.
10
Paso 2: Diseo del algoritmo Paso 2: Diseo del algoritmo
Desarrollo del algoritmo en Desarrollo del algoritmo en pseudocdigo pseudocdigo: :

Paso 3: Prueba de escritorio Paso 3: Prueba de escritorio
Qu tal funciona el algoritmo para Qu tal funciona el algoritmo para
1*2*3+4*5*6+1*3*4? 1*2*3+4*5*6+1*3*4?

También podría gustarte