SlideShare una empresa de Scribd logo
1 de 10
Descargar para leer sin conexión
Diseño de algoritmos
      Jose Jesus García Rueda. Adaptado de “El algoritmo,
                  una iniciación a la programación”
        (http://www.desarrolloweb.com/manuales/67/) y de
         http://www.desarrolloweb.com/manuales/67/)
                 “Diseño estructurado de algoritmos”
    (http://www.itver.edu.mx/comunidad/material/algoritmos/)




                 Introducción
La principal razón para aprender a programar es utilizar
la computadora para resolver problemas.
“Algoritmo”: se deriva de la traducción al latín de la
palabra árabe “alkhowarizmi”, nombre del matemático
árabe que enunció reglas paso a paso para sumar,
restar, multiplicar y dividir números decimales.
Un algoritmo es una serie de pasos organizados que
describe el proceso a seguir para solucionar un
problema específico.
Dos tipos de algoritmos:
  Cualitativos: Emplean palabras. Ej: Receta de cocina, cambiar
                                    Ej:
  una rueda, usar la guía telefónica.
  Cuantitativos: Utilizan cálculos numéricos. Ej: Resolver una
                                              Ej:
  ecuación de 2º grado.




                                                                  1
Un algoritmo cotidiano
     Algoritmo para leer las páginas de un libro:
1.     Inicio.
2.     Abrir el libro en la 1ª página.
3.     Leer la página.
4.     ¿Es la última que deseo leer?
      Sí: Ve al paso 7.
      No: Ve al paso 5
5.     Pasar a la siguiente página.
6.     Ve al paso 3.
7.     Cerrar el libro.
8.     Fin.




        Lenguajes algorítmicos
Un lenguaje algorítmico es un
conjunto de símbolos y reglas
que permiten describir de
manera explícita un proceso.
Es independiente de cualquier
lenguaje de programación.
Debe permitir una traducción
clara del algoritmo al
programa.
                                    INICIO
Dos tipos de lenguajes                Edad: Entero
algorítmicos:                         ESCRIBE “¿cuál es tu edad?”
     Gráficos: Por ejemplo, los
     Gráficos:                        Lee Edad
     diagramas de flujo.              SI Edad >= 18 entonces
     No gráficos: Por ejemplo, el
         gráficos:                       ESCRIBE “Eres mayor de edad”
     pseudocódigo.
     pseudocódigo.                    FINSI
                                      Escribe “fin del algoritmo”
                                      FIN




                                                                        2
Creación de algoritmos
       Proceso de programación típico:
         Dado un determinado problema…
         …el programador idea una solución…
         …y la expresa mediante un algoritmo.
         Codificación del algoritmo.
         Ejecución del programa.
       Metodología para la solución de problemas por medio
       de un ordenador:
  1.     Definición del problema: clara y precisa. Es casi la mitad del
         trabajo…
  2.     Análisis del problema: Colocarse en el lugar del ordenador y
         analizar qué requeriríamos para realizar la tarea.
            Datos de entrada.
            Información a producir (salida)
            Métodos y fórmulas para procesar los datos
  3.     Diseño del algoritmo.




         Características de un buen
                 algoritmo
  Debe tener un punto particular de inicio.
  No debe ser ambiguo.
  Debe ser general.
  Debe ser finito en tamaño y en tiempo de
  ejecución.
Prueba de escritorio: se toman datos
  específicos como entrada y se sigue el
  algoritmo hasta obtener un resultado.




                                                                          3
Técnicas de diseño
Top Down: Se descompone sucesivamente el problema
      Down:
inicial en subproblemas.
           subproblemas.
  Con cada descomposición, se simplifican los subproblemas.
                                              subproblemas.
  Las diferentes partes del problema pueden ser programadas de
  forma independiente.
  El programa final queda estructurado en forma de bloques o
  módulos.
Bottom Up: Se programa cada proceso según vaya
       Up:
apareciendo.
  Difícil llegar a una integración tal que el desempeño global sea
  fluido.
  Proclive a la duplicación de esfuerzos.
  Pueden no satisfacerse los requisitos globales de la aplicación.
La creación de algoritmos se basa en la técnica
descendente.




          Diagramas de flujo
Es una forma de                                      Inicio/Final
representar gráficamente
un algoritmo.                                      Entrada/ Salida
Cada paso se escribe                                   Proceso
dentro de un símbolo.
Los pasos se conectan                                 Salida por
unos con otros mediante                               impresora
líneas de flujo.
            flujo.
Son fáciles de diseñar,                            Conector dentro
pero difíciles de                                     página
actualizar.                                        Conector fuera
Los símbolos que utiliza                              página
están normalizados:                                   Salida por
                                                       pantalla




                                                                     4
Diagramas de flujo (II)
               Decisión

               Selección
               múltiple



               Mientras




Diagramas de flujo (III)
             Para




             Repite hasta




             Líneas de flujo




                               5
Ejemplo de diagrama de flujo
Diseñe un algoritmo
que lea 3 números,
los sume e imprima el
resultado por
impresora.




   Recomendaciones para los
      diagramas de flujo
Emplear solamente líneas de flujo horizontales
y/o verticales.
Evitar el cruce de líneas (usando los conectores)
Usar los conectores sólo cuando sea necesario.
No dejar líneas de flujo sin conectar.
Se deberá poder leer de arriba abajo y de
izquierda a derecha.
Ser escuetos y claros con lo que se escriba
dentro de los símbolos.




                                                    6
Pseudocódigo
Mezcla de lenguaje de programación y de
lenguaje natural.
Representación narrativa de los pasos que debe
seguir un algoritmo.
Utiliza palabras, no gráficos.
Ventajas:
  Ocupa menos espacio.
  Permite representar fácilmente operaciones
  repetitivas complejas.
  Es muy fácil pasar del pseudocódigo al lenguaje de
  programación.
  Quedan claros los niveles que tiene cada operación.




Principales características de los
         pseudocódigos
Utilizan operadores aritméticos y lógicos.
Se pueden incluir comentarios.
Se debe respetar una indentación en los
bloques de instrucciones.
Usan ciertas palabras clave: PSEUDOCÓDIGO,
VARIABLES, INICIO, FIN, LEE, ESCRIBE,
IMPRIME, IF_THEN_ELSE, CASE OF, FOR
DO, WHILE DO, REPEAT UNTIL, ARRAY…
Comienzan con el nombre del pseudocódigo,
seguido de la declaración de variables, y luego
el cuerpo del pseudocódigo.




                                                        7
Ejemplo de pseudocódigo
 Algoritmo que lee 3 números, los suma e
 imprime su resultado.

PSEUDOCÓDIGO sumatorio
VARIABLES
    eN1, eN2, 3N3, eSuma: Entero
    eN1, eN2,      eSuma:
INICIO
    ESCRIBE “Dame tres números:”
    LEE eN1, eN2, eN3
        eN1, eN2,
    eSuma = eN1 + eN2 + eN3
    ESCRIBE “El resultado de la suma es: “, eSuma
FIN




Diagramas estructurados (Nassi-
       Schneiderman)
Como un diagrama
de flujo en el que se
omiten las flechas de
unión, y las cajas son
contiguas.
Son fáciles de diseñar
y difíciles de
actualizar.
Las acciones
sucesiva se escriben
en cajas sucesivas.




                                                    8
EJEMPLO
Diseñar un algoritmo que, dada una
operación aritmética expresada en el
formato habitual (y String), vaya leyéndola
carácter a carácter, para así calcular su
resultado.
Respetar las reglas típicas de precedencia
entre operaciones aritméticas (+ y - < * y /)




             Paso 1: Análisis
Datos de entrada: una cadena de caracteres
representando una operación aritmética.
Datos de salida: Un número, resultado de realizar la
operación aritmética.
Forma de operar: Emplearemos dos pilas, una de
operadores y otra de operandos.
                      operandos.
  En la primera guardaremos los operadores que vayamos
  leyendo, siempre que su precedencia sea mayor que los
  operadores ya en la pila. De no ser así, se extraen los
  operadores de precedencia mayor y se operan.
  En la segunda iremos guardando los operandos que vayamos
  leyendo, así como los resultados de las operaciones parciales.




                                                                   9
Paso 2: Diseño del algoritmo
Desarrollo del algoritmo en pseudocódigo:
  …




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




                                            10

Más contenido relacionado

La actualidad más candente

Unidad 4 Técnicas para la formulación de algoritmos
Unidad 4 Técnicas para la formulación de algoritmosUnidad 4 Técnicas para la formulación de algoritmos
Unidad 4 Técnicas para la formulación de algoritmosCarlos M. Sandoval
 
Presentacion algoritmos
Presentacion algoritmosPresentacion algoritmos
Presentacion algoritmosaralylopez88
 
Disenoestructuradoalgoritmos
DisenoestructuradoalgoritmosDisenoestructuradoalgoritmos
Disenoestructuradoalgoritmosarmando_franco
 
Algoritmos Conceptos Basicos - www.ingfiis.tk
Algoritmos Conceptos Basicos - www.ingfiis.tkAlgoritmos Conceptos Basicos - www.ingfiis.tk
Algoritmos Conceptos Basicos - www.ingfiis.tkLaurence HR
 
Introducción a la Programación
Introducción a la ProgramaciónIntroducción a la Programación
Introducción a la ProgramaciónJeckson Loza
 
Fundamentos de programación
Fundamentos de programaciónFundamentos de programación
Fundamentos de programaciónEdison Morales
 
Conceptos de algoritmo, programa y lenguaje de
Conceptos de algoritmo, programa y lenguaje deConceptos de algoritmo, programa y lenguaje de
Conceptos de algoritmo, programa y lenguaje de'Felipe Lozada
 

La actualidad más candente (16)

manual 10
manual 10manual 10
manual 10
 
Unidad 4 Técnicas para la formulación de algoritmos
Unidad 4 Técnicas para la formulación de algoritmosUnidad 4 Técnicas para la formulación de algoritmos
Unidad 4 Técnicas para la formulación de algoritmos
 
Algoritmos diagrama-de-flujo
Algoritmos diagrama-de-flujoAlgoritmos diagrama-de-flujo
Algoritmos diagrama-de-flujo
 
Presentacion algoritmos
Presentacion algoritmosPresentacion algoritmos
Presentacion algoritmos
 
Disenoestructuradoalgoritmos
DisenoestructuradoalgoritmosDisenoestructuradoalgoritmos
Disenoestructuradoalgoritmos
 
Conceptos sobre algoritmos
Conceptos sobre algoritmosConceptos sobre algoritmos
Conceptos sobre algoritmos
 
Clase de programacion
Clase  de  programacionClase  de  programacion
Clase de programacion
 
Algoritmos Conceptos Basicos - www.ingfiis.tk
Algoritmos Conceptos Basicos - www.ingfiis.tkAlgoritmos Conceptos Basicos - www.ingfiis.tk
Algoritmos Conceptos Basicos - www.ingfiis.tk
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Conceptos basicos algoritmos
Conceptos basicos algoritmosConceptos basicos algoritmos
Conceptos basicos algoritmos
 
Introducción a la Programación
Introducción a la ProgramaciónIntroducción a la Programación
Introducción a la Programación
 
Fundamentos de programación
Fundamentos de programaciónFundamentos de programación
Fundamentos de programación
 
Logica algoritmos
Logica algoritmosLogica algoritmos
Logica algoritmos
 
Actividad 3.4
Actividad 3.4Actividad 3.4
Actividad 3.4
 
Conceptos de algoritmo, programa y lenguaje de
Conceptos de algoritmo, programa y lenguaje deConceptos de algoritmo, programa y lenguaje de
Conceptos de algoritmo, programa y lenguaje de
 
Algoritmos y diagramas de flujo
Algoritmos y diagramas de flujoAlgoritmos y diagramas de flujo
Algoritmos y diagramas de flujo
 

Similar a Diseno dealgoritmos (20)

Manual de java_3
Manual de java_3Manual de java_3
Manual de java_3
 
Manual de java
Manual de java Manual de java
Manual de java
 
Manual de java 3
Manual de java 3Manual de java 3
Manual de java 3
 
MANUAL DE JAVA 1
MANUAL DE JAVA 1MANUAL DE JAVA 1
MANUAL DE JAVA 1
 
Manual de javaa2
Manual de javaa2Manual de javaa2
Manual de javaa2
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Algoritmos (DFD, Pseudocodigos).pptx
Algoritmos (DFD, Pseudocodigos).pptxAlgoritmos (DFD, Pseudocodigos).pptx
Algoritmos (DFD, Pseudocodigos).pptx
 
Resolución de problemas y algoritmo
Resolución de problemas y algoritmoResolución de problemas y algoritmo
Resolución de problemas y algoritmo
 
Unidad I Algoritmos
Unidad I   AlgoritmosUnidad I   Algoritmos
Unidad I Algoritmos
 
Unidad I Algoritmos
Unidad  I    AlgoritmosUnidad  I    Algoritmos
Unidad I Algoritmos
 
Desarrollo de lógica algorítmica_PARTE 1.PPTX
Desarrollo de lógica algorítmica_PARTE 1.PPTXDesarrollo de lógica algorítmica_PARTE 1.PPTX
Desarrollo de lógica algorítmica_PARTE 1.PPTX
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Fpr Tema 1 www.fresymetal.com
Fpr Tema 1 www.fresymetal.comFpr Tema 1 www.fresymetal.com
Fpr Tema 1 www.fresymetal.com
 
Proyecto de-programacion
Proyecto de-programacionProyecto de-programacion
Proyecto de-programacion
 
Algoritmos y programacion en C++
Algoritmos y programacion en C++Algoritmos y programacion en C++
Algoritmos y programacion en C++
 
DisenoDiseño
DisenoDiseñoDisenoDiseño
DisenoDiseño
 
Programación
ProgramaciónProgramación
Programación
 
Tema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmicoTema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmico
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 

Diseno dealgoritmos

  • 1. Diseño de algoritmos Jose Jesus García Rueda. Adaptado de “El algoritmo, una iniciación a la programación” (http://www.desarrolloweb.com/manuales/67/) y de http://www.desarrolloweb.com/manuales/67/) “Diseño estructurado de algoritmos” (http://www.itver.edu.mx/comunidad/material/algoritmos/) Introducción La principal razón para aprender a programar es utilizar la computadora para resolver problemas. “Algoritmo”: se deriva de la traducción al latín de la palabra árabe “alkhowarizmi”, nombre del matemático árabe que enunció reglas paso a paso para sumar, restar, multiplicar y dividir números decimales. Un algoritmo es una serie de pasos organizados que describe el proceso a seguir para solucionar un problema específico. Dos tipos de algoritmos: Cualitativos: Emplean palabras. Ej: Receta de cocina, cambiar Ej: una rueda, usar la guía telefónica. Cuantitativos: Utilizan cálculos numéricos. Ej: Resolver una Ej: ecuación de 2º grado. 1
  • 2. Un algoritmo cotidiano Algoritmo para leer las páginas de un libro: 1. Inicio. 2. Abrir el libro en la 1ª página. 3. Leer la página. 4. ¿Es la última que deseo leer? Sí: Ve al paso 7. No: Ve al paso 5 5. Pasar a la siguiente página. 6. Ve al paso 3. 7. Cerrar el libro. 8. Fin. Lenguajes algorítmicos Un lenguaje algorítmico es un conjunto de símbolos y reglas que permiten describir de manera explícita un proceso. Es independiente de cualquier lenguaje de programación. Debe permitir una traducción clara del algoritmo al programa. INICIO Dos tipos de lenguajes Edad: Entero algorítmicos: ESCRIBE “¿cuál es tu edad?” Gráficos: Por ejemplo, los Gráficos: Lee Edad diagramas de flujo. SI Edad >= 18 entonces No gráficos: Por ejemplo, el gráficos: ESCRIBE “Eres mayor de edad” pseudocódigo. pseudocódigo. FINSI Escribe “fin del algoritmo” FIN 2
  • 3. Creación de algoritmos Proceso de programación típico: Dado un determinado problema… …el programador idea una solución… …y la expresa mediante un algoritmo. Codificación del algoritmo. Ejecución del programa. Metodología para la solución de problemas por medio de un ordenador: 1. Definición del problema: clara y precisa. Es casi la mitad del trabajo… 2. Análisis del problema: Colocarse en el lugar del ordenador y analizar qué requeriríamos para realizar la tarea. Datos de entrada. Información a producir (salida) Métodos y fórmulas para procesar los datos 3. Diseño del algoritmo. Características de un buen algoritmo Debe tener un punto particular de inicio. No debe ser ambiguo. Debe ser general. Debe ser finito en tamaño y en tiempo de ejecución. Prueba de escritorio: se toman datos específicos como entrada y se sigue el algoritmo hasta obtener un resultado. 3
  • 4. Técnicas de diseño Top Down: Se descompone sucesivamente el problema Down: inicial en subproblemas. subproblemas. Con cada descomposición, se simplifican los subproblemas. subproblemas. Las diferentes partes del problema pueden ser programadas de forma independiente. El programa final queda estructurado en forma de bloques o módulos. Bottom Up: Se programa cada proceso según vaya Up: apareciendo. Difícil llegar a una integración tal que el desempeño global sea fluido. Proclive a la duplicación de esfuerzos. Pueden no satisfacerse los requisitos globales de la aplicación. La creación de algoritmos se basa en la técnica descendente. Diagramas de flujo Es una forma de Inicio/Final representar gráficamente un algoritmo. Entrada/ Salida Cada paso se escribe Proceso dentro de un símbolo. Los pasos se conectan Salida por unos con otros mediante impresora líneas de flujo. flujo. Son fáciles de diseñar, Conector dentro pero difíciles de página actualizar. Conector fuera Los símbolos que utiliza página están normalizados: Salida por pantalla 4
  • 5. Diagramas de flujo (II) Decisión Selección múltiple Mientras Diagramas de flujo (III) Para Repite hasta Líneas de flujo 5
  • 6. Ejemplo de diagrama de flujo Diseñe un algoritmo que lea 3 números, los sume e imprima el resultado por impresora. Recomendaciones para los diagramas de flujo Emplear solamente líneas de flujo horizontales y/o verticales. Evitar el cruce de líneas (usando los conectores) Usar los conectores sólo cuando sea necesario. No dejar líneas de flujo sin conectar. Se deberá poder leer de arriba abajo y de izquierda a derecha. Ser escuetos y claros con lo que se escriba dentro de los símbolos. 6
  • 7. Pseudocódigo Mezcla de lenguaje de programación y de lenguaje natural. Representación narrativa de los pasos que debe seguir un algoritmo. Utiliza palabras, no gráficos. Ventajas: Ocupa menos espacio. Permite representar fácilmente operaciones repetitivas complejas. Es muy fácil pasar del pseudocódigo al lenguaje de programación. Quedan claros los niveles que tiene cada operación. Principales características de los pseudocódigos Utilizan operadores aritméticos y lógicos. Se pueden incluir comentarios. Se debe respetar una indentación en los bloques de instrucciones. Usan ciertas palabras clave: PSEUDOCÓDIGO, VARIABLES, INICIO, FIN, LEE, ESCRIBE, IMPRIME, IF_THEN_ELSE, CASE OF, FOR DO, WHILE DO, REPEAT UNTIL, ARRAY… Comienzan con el nombre del pseudocódigo, seguido de la declaración de variables, y luego el cuerpo del pseudocódigo. 7
  • 8. Ejemplo de pseudocódigo Algoritmo que lee 3 números, los suma e imprime su resultado. PSEUDOCÓDIGO sumatorio VARIABLES eN1, eN2, 3N3, eSuma: Entero eN1, eN2, eSuma: INICIO ESCRIBE “Dame tres números:” LEE eN1, eN2, eN3 eN1, eN2, eSuma = eN1 + eN2 + eN3 ESCRIBE “El resultado de la suma es: “, eSuma FIN Diagramas estructurados (Nassi- Schneiderman) Como un diagrama de flujo en el que se omiten las flechas de unión, y las cajas son contiguas. Son fáciles de diseñar y difíciles de actualizar. Las acciones sucesiva se escriben en cajas sucesivas. 8
  • 9. EJEMPLO Diseñar un algoritmo que, dada una operación aritmética expresada en el formato habitual (y String), vaya leyéndola carácter a carácter, para así calcular su resultado. Respetar las reglas típicas de precedencia entre operaciones aritméticas (+ y - < * y /) Paso 1: Análisis Datos de entrada: una cadena de caracteres representando una operación aritmética. Datos de salida: Un número, resultado de realizar la operación aritmética. Forma de operar: Emplearemos dos pilas, una de operadores y otra de operandos. operandos. En la primera guardaremos los operadores que vayamos leyendo, siempre que su precedencia sea mayor que los operadores ya en la pila. De no ser así, se extraen los operadores de precedencia mayor y se operan. En la segunda iremos guardando los operandos que vayamos leyendo, así como los resultados de las operaciones parciales. 9
  • 10. Paso 2: Diseño del algoritmo Desarrollo del algoritmo en pseudocódigo: … Paso 3: Prueba de escritorio ¿Qué tal funciona el algoritmo para “1*2*3+4*5*6+1*3*4”? 10