SlideShare una empresa de Scribd logo
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

PDF
Razonamiento algoritmico
PPTX
Programas diseñados para realizar algoritmo
DOCX
Programacion lenguaje-c
PDF
Clase pseint
PPTX
Algoritmos
DOC
Algoritmos
PDF
estructuras algoritmicas ciclicas mientras
Razonamiento algoritmico
Programas diseñados para realizar algoritmo
Programacion lenguaje-c
Clase pseint
Algoritmos
Algoritmos
estructuras algoritmicas ciclicas mientras

La actualidad más candente (16)

PDF
manual 10
PPTX
Unidad 4 Técnicas para la formulación de algoritmos
PPT
Algoritmos diagrama-de-flujo
PPT
Presentacion algoritmos
PDF
Disenoestructuradoalgoritmos
PPTX
Conceptos sobre algoritmos
PPTX
Clase de programacion
PPT
Algoritmos Conceptos Basicos - www.ingfiis.tk
PPTX
Algoritmo
PDF
Conceptos basicos algoritmos
PPTX
Introducción a la Programación
PPTX
Fundamentos de programación
PPTX
Logica algoritmos
PPTX
Actividad 3.4
PPTX
Conceptos de algoritmo, programa y lenguaje de
PPT
Algoritmos y diagramas de flujo
manual 10
Unidad 4 Técnicas para la formulación de algoritmos
Algoritmos diagrama-de-flujo
Presentacion algoritmos
Disenoestructuradoalgoritmos
Conceptos sobre algoritmos
Clase de programacion
Algoritmos Conceptos Basicos - www.ingfiis.tk
Algoritmo
Conceptos basicos algoritmos
Introducción a la Programación
Fundamentos de programación
Logica algoritmos
Actividad 3.4
Conceptos de algoritmo, programa y lenguaje de
Algoritmos y diagramas de flujo
Publicidad

Similar a Diseno dealgoritmos (20)

PDF
Manual de javaa2
PDF
Manual de java
PDF
MANUAL DE JAVA 1
PDF
Manual de java_3
PPTX
PPTX
Unidad 1
PPTX
Algoritmos (DFD, Pseudocodigos).pptx
PDF
Resolución de problemas y algoritmo
DOC
Unidad I Algoritmos
DOC
Unidad I Algoritmos
PPTX
Desarrollo de lógica algorítmica_PARTE 1.PPTX
PPTX
Algoritmos
PPT
Fpr Tema 1 www.fresymetal.com
PDF
Proyecto de-programacion
PDF
Algoritmos y programacion en C++
PPT
Programación
PPTX
Tema 4 -_introduccion_a_razonamiento_algoritmico
PPTX
Algoritmos
Manual de javaa2
Manual de java
MANUAL DE JAVA 1
Manual de java_3
Unidad 1
Algoritmos (DFD, Pseudocodigos).pptx
Resolución de problemas y algoritmo
Unidad I Algoritmos
Unidad I Algoritmos
Desarrollo de lógica algorítmica_PARTE 1.PPTX
Algoritmos
Fpr Tema 1 www.fresymetal.com
Proyecto de-programacion
Algoritmos y programacion en C++
Programación
Tema 4 -_introduccion_a_razonamiento_algoritmico
Algoritmos
Publicidad

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