SlideShare una empresa de Scribd logo
1 de 10
Descargar para leer sin conexión
1
Diseño de algoritmosDiseño de algoritmos
Jose Jesus García Rueda. Adaptado de “El algoritmo,Jose Jesus García Rueda. Adaptado de “El algoritmo,
una iniciación a la programación”una iniciación a la programación”
((http://www.desarrolloweb.com/manuales/67/http://www.desarrolloweb.com/manuales/67/) y de) y de
“Diseño estructurado de algoritmos”“Diseño estructurado de algoritmos”
(http://www.itver.edu.mx/comunidad/material/algoritmos/)(http://www.itver.edu.mx/comunidad/material/algoritmos/)
IntroducciónIntroducción
La principal razón para aprender a programar es utilizarLa principal razón para aprender a programar es utilizar
la computadora para resolver problemas.la computadora para resolver problemas.
“Algoritmo”: se deriva de la traducción al latín de la“Algoritmo”: se deriva de la traducción al latín de la
palabra árabe “alkhowarizmi”, nombre del matemáticopalabra árabe “alkhowarizmi”, nombre del matemático
árabe que enunció reglas paso a paso para sumar,árabe que enunció reglas paso a paso para sumar,
restar, multiplicar y dividir números decimales.restar, multiplicar y dividir números decimales.
Un algoritmo es una serie de pasos organizados queUn algoritmo es una serie de pasos organizados que
describe el proceso a seguir para solucionar undescribe el proceso a seguir para solucionar un
problema específico.problema específico.
Dos tipos de algoritmos:Dos tipos de algoritmos:
Cualitativos: Emplean palabras.Cualitativos: Emplean palabras. EjEj: Receta de cocina, cambiar: Receta de cocina, cambiar
una rueda, usar la guía telefónica.una rueda, usar la guía telefónica.
Cuantitativos: Utilizan cálculos numéricos.Cuantitativos: Utilizan cálculos numéricos. EjEj: Resolver una: Resolver una
ecuación de 2º grado.ecuación de 2º grado.
2
Un algoritmo cotidianoUn algoritmo cotidiano
Algoritmo para leer las páginas de un libro:Algoritmo para leer las páginas de un libro:
1.1. Inicio.Inicio.
2.2. Abrir el libro en la 1ª página.Abrir el libro en la 1ª página.
3.3. Leer la página.Leer la página.
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 5No: Ve al paso 5
5.5. Pasar a la siguiente página.Pasar a la siguiente página.
6.6. Ve al paso 3.Ve al paso 3.
7.7. Cerrar el libro.Cerrar el libro.
8.8. Fin.Fin.
Lenguajes algorítmicosLenguajes algorítmicos
Un lenguaje algorítmico es unUn lenguaje algorítmico es un
conjunto de símbolos y reglasconjunto de símbolos y reglas
que permiten describir deque permiten describir de
manera explícita un proceso.manera explícita un proceso.
Es independiente de cualquierEs independiente de cualquier
lenguaje de programación.lenguaje de programación.
Debe permitir una traducciónDebe permitir una traducción
clara del algoritmo alclara del algoritmo al
programa.programa.
Dos tipos de lenguajesDos tipos de lenguajes
algorítmicos:algorítmicos:
GráficosGráficos: Por ejemplo, los: Por ejemplo, los
diagramas de flujo.diagramas de flujo.
No gráficosNo gráficos: Por ejemplo, el: Por ejemplo, el
pseudocódigopseudocódigo..
INICIO
Edad: Entero
ESCRIBE “¿cuál es tu edad?”
Lee Edad
SI Edad >= 18 entonces
ESCRIBE “Eres mayor de edad”
FINSI
Escribe “fin del algoritmo”
FIN
3
Creación de algoritmosCreación de algoritmos
Proceso de programación típico:Proceso de programación típico:
Dado un determinado problema…Dado un determinado problema…
…el programador idea una solución……el programador idea una solución…
…y la expresa mediante un algoritmo.…y la expresa mediante un algoritmo.
Codificación del algoritmo.Codificación del algoritmo.
Ejecución del programa.Ejecución del programa.
Metodología para la solución de problemas por medioMetodología para la solución de problemas por medio
de un ordenador:de un ordenador:
1.1. Definición del problema: clara y precisa. Es casi la mitad delDefinición del problema: clara y precisa. Es casi la mitad del
trabajo…trabajo…
2.2. Análisis del problema: Colocarse en el lugar del ordenador yAnálisis del problema: Colocarse en el lugar del ordenador y
analizar qué requeriríamos para realizar la tarea.analizar qué requeriríamos para realizar la tarea.
Datos de entrada.Datos de entrada.
Información a producir (salida)Información a producir (salida)
Métodos y fórmulas para procesar los datosMétodos y fórmulas para procesar los datos
3.3. Diseño del algoritmo.Diseño del algoritmo.
Características de un buenCaracterísticas de un buen
algoritmoalgoritmo
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 tamaño y en tiempo deDebe ser finito en tamaño y en tiempo de
ejecución.ejecución.
Prueba de escritorio: se toman datosPrueba de escritorio: se toman datos
específicos como entrada y se sigue elespecíficos como entrada y se sigue el
algoritmo hasta obtener un resultado.algoritmo hasta obtener un resultado.
4
Técnicas de diseñoTécnicas de diseño
TopTop DownDown: Se descompone sucesivamente el problema: Se descompone sucesivamente el problema
inicial eninicial en subproblemassubproblemas..
Con cada descomposición, se simplifican losCon cada descomposición, se simplifican los subproblemassubproblemas..
Las diferentes partes del problema pueden ser programadas deLas diferentes partes del problema pueden ser programadas de
forma independiente.forma independiente.
El programa final queda estructurado en forma de bloques oEl programa final queda estructurado en forma de bloques o
módulos.módulos.
BottomBottom UpUp: Se programa cada proceso según vaya: Se programa cada proceso según vaya
apareciendo.apareciendo.
Difícil llegar a una integración tal que el desempeño global seaDifícil llegar a una integración tal que el desempeño global sea
fluido.fluido.
Proclive a la duplicación de esfuerzos.Proclive a la duplicación de esfuerzos.
Pueden no satisfacerse los requisitos globales de la aplicación.Pueden no satisfacerse los requisitos globales de la aplicación.
La creación de algoritmos se basa en la técnicaLa creación de algoritmos se basa en la técnica
descendente.descendente.
Diagramas de flujoDiagramas de flujo
Es una forma deEs una forma de
representar gráficamenterepresentar gráficamente
un algoritmo.un algoritmo.
Cada paso se escribeCada paso se escribe
dentro de un símbolo.dentro de un símbolo.
Los pasos se conectanLos pasos se conectan
unos con otros medianteunos con otros mediante
líneas de flujolíneas de flujo..
Son fáciles de diseñar,Son fáciles de diseñar,
pero difíciles depero difíciles de
actualizar.actualizar.
Los símbolos que utilizaLos símbolos que utiliza
están normalizados:están normalizados: Salida porSalida por
pantallapantalla
Conector fueraConector fuera
páginapágina
Conector dentroConector dentro
páginapágina
Salida porSalida por
impresoraimpresora
ProcesoProceso
Entrada/ SalidaEntrada/ Salida
Inicio/FinalInicio/Final
5
Diagramas de flujo (II)Diagramas de flujo (II)
MientrasMientras
SelecciónSelección
múltiplemúltiple
DecisiónDecisión
Diagramas de flujo (III)Diagramas de flujo (III)
Líneas de flujoLíneas de flujo
Repite hastaRepite hasta
ParaPara
6
Ejemplo de diagrama de flujoEjemplo de diagrama de flujo
Diseñe un algoritmoDiseñe un algoritmo
que lea 3 números,que lea 3 números,
los sume e imprima ellos sume e imprima el
resultado porresultado por
impresora.impresora.
Recomendaciones para losRecomendaciones para los
diagramas de flujodiagramas de flujo
Emplear solamente líneas de flujo horizontalesEmplear solamente líneas de flujo horizontales
y/o verticales.y/o verticales.
Evitar el cruce de líneas (usando los conectores)Evitar el cruce de líneas (usando los conectores)
Usar los conectores sólo cuando sea necesario.Usar los conectores sólo cuando sea necesario.
No dejar líneas de flujo sin conectar.No dejar líneas de flujo sin conectar.
Se deberá poder leer de arriba abajo y deSe deberá poder leer de arriba abajo y de
izquierda a derecha.izquierda a derecha.
Ser escuetos y claros con lo que se escribaSer escuetos y claros con lo que se escriba
dentro de los símbolos.dentro de los símbolos.
7
PseudocódigoPseudocódigo
Mezcla de lenguaje de programación y deMezcla de lenguaje de programación y de
lenguaje natural.lenguaje natural.
Representación narrativa de los pasos que debeRepresentación narrativa de los pasos que debe
seguir un algoritmo.seguir un algoritmo.
Utiliza palabras, no gráficos.Utiliza palabras, no gráficos.
Ventajas:Ventajas:
Ocupa menos espacio.Ocupa menos espacio.
Permite representar fácilmente operacionesPermite representar fácilmente operaciones
repetitivas complejas.repetitivas complejas.
Es muy fácil pasar delEs muy fácil pasar del pseudocódigopseudocódigo al lenguaje deal lenguaje de
programación.programación.
Quedan claros los niveles que tiene cada operación.Quedan claros los niveles que tiene cada operación.
Principales características de losPrincipales características de los
pseudocódigospseudocódigos
Utilizan operadores aritméticos y lógicos.Utilizan operadores aritméticos y lógicos.
Se pueden incluir comentarios.Se pueden incluir comentarios.
Se debe respetar unaSe debe respetar una indentaciónindentación en losen los
bloques de instrucciones.bloques de instrucciones.
Usan ciertas palabras clave: PSEUDOCÓDIGO,Usan ciertas palabras clave: PSEUDOCÓDIGO,
VARIABLES, INICIO, FIN, LEE, ESCRIBE,VARIABLES, INICIO, FIN, LEE, ESCRIBE,
IMPRIME,IMPRIME, IF_THEN_ELSEIF_THEN_ELSE, CASE OF, FOR, CASE OF, FOR
DO, WHILE DO, REPEAT UNTIL, ARRAY…DO, WHILE DO, REPEAT UNTIL, ARRAY…
Comienzan con el nombre delComienzan con el nombre del pseudocódigopseudocódigo,,
seguido de la declaración de variables, y luegoseguido de la declaración de variables, y luego
el cuerpo delel cuerpo del pseudocódigopseudocódigo..
8
Ejemplo deEjemplo de pseudocódigopseudocódigo
Algoritmo que lee 3 números, los suma eAlgoritmo que lee 3 números, los suma e
imprime su resultado.imprime su resultado.
PSEUDOCÓDIGOPSEUDOCÓDIGO sumatoriosumatorio
VARIABLESVARIABLES
eN1eN1,, eN2eN2, 3N3,, 3N3, eSumaeSuma: Entero: Entero
INICIOINICIO
ESCRIBE “Dame tres números:”ESCRIBE “Dame tres números:”
LEELEE eN1eN1,, eN2eN2,, eN3eN3
eSumaeSuma == eN1eN1 ++ eN2eN2 ++ eN3eN3
ESCRIBE “El resultado de la suma es: “, eSumaESCRIBE “El resultado de la suma es: “, eSuma
FINFIN
Diagramas estructurados (Diagramas estructurados (NassiNassi--
SchneidermanSchneiderman))
Como un diagramaComo un diagrama
de flujo en el que sede flujo en el que se
omiten las flechas deomiten las flechas de
unión, y las cajas sonunión, y las cajas son
contiguas.contiguas.
Son fáciles de diseñarSon fáciles de diseñar
y difíciles dey difíciles de
actualizar.actualizar.
Las accionesLas acciones
sucesiva se escribensucesiva se escriben
en cajas sucesivas.en cajas sucesivas.
9
EJEMPLOEJEMPLO
Diseñar un algoritmo que, dada unaDiseñar un algoritmo que, dada una
operación aritmética expresada en eloperación aritmética expresada en el
formato habitual (yformato habitual (y StringString), vaya leyéndola), vaya leyéndola
carácter a carácter, para así calcular sucarácter a carácter, para así calcular su
resultado.resultado.
Respetar las reglas típicas de precedenciaRespetar las reglas típicas de precedencia
entre operaciones aritméticas (+ yentre operaciones aritméticas (+ y -- < * y /)< * y /)
Paso 1: AnálisisPaso 1: Análisis
Datos de entrada: una cadena de caracteresDatos de entrada: una cadena de caracteres
representando una operación aritmética.representando una operación aritmética.
Datos de salida: Un número, resultado de realizar laDatos de salida: Un número, resultado de realizar la
operación aritmética.operación aritmética.
Forma de operar: Emplearemos dos pilas, una deForma de operar: Emplearemos dos pilas, una de
operadores y otra deoperadores y otra de operandosoperandos..
En la primera guardaremos los operadores que vayamosEn la primera guardaremos los operadores que vayamos
leyendo, siempre que su precedencia sea mayor que losleyendo, siempre que su precedencia sea mayor que los
operadores ya en la pila. De no ser así, se extraen losoperadores 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 losEn la segunda iremos guardando los operandosoperandos que vayamosque vayamos
leyendo, así como los resultados de las operaciones parciales.leyendo, así como los resultados de las operaciones parciales.
10
Paso 2: Diseño del algoritmoPaso 2: Diseño del algoritmo
Desarrollo del algoritmo enDesarrollo del algoritmo en pseudocódigopseudocódigo::
……
Paso 3: Prueba de escritorioPaso 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”?

Más contenido relacionado

La actualidad más candente (14)

2. escritura de algoritmos
2.  escritura de algoritmos2.  escritura de algoritmos
2. escritura de algoritmos
 
Diaposittivas tecnologia yoicar
Diaposittivas tecnologia yoicarDiaposittivas tecnologia yoicar
Diaposittivas tecnologia yoicar
 
Fundamentos de p
Fundamentos de pFundamentos de p
Fundamentos de p
 
Fundamentos de programación
Fundamentos de programaciónFundamentos de programación
Fundamentos de programación
 
Tema 5
Tema 5Tema 5
Tema 5
 
Practica 1
Practica 1Practica 1
Practica 1
 
Diseno dealgoritmos
Diseno dealgoritmosDiseno dealgoritmos
Diseno dealgoritmos
 
Tema 5 1
Tema 5 1Tema 5 1
Tema 5 1
 
Programación Logica
Programación LogicaProgramación Logica
Programación Logica
 
Programacion
ProgramacionProgramacion
Programacion
 
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
 
Programacion lenguaje-c
Programacion lenguaje-cProgramacion lenguaje-c
Programacion lenguaje-c
 
Intropseint
IntropseintIntropseint
Intropseint
 
Entrada y salida de información; Escritura de algoritmos.
Entrada y salida de información; Escritura de algoritmos.Entrada y salida de información; Escritura de algoritmos.
Entrada y salida de información; Escritura de algoritmos.
 

Similar a Diseno dealgoritmos

Similar a Diseno dealgoritmos (20)

Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Resolver problemas con_una_computadora
Resolver problemas con_una_computadoraResolver problemas con_una_computadora
Resolver problemas con_una_computadora
 
Resolver problemas con_una_computadora
Resolver problemas con_una_computadoraResolver problemas con_una_computadora
Resolver problemas con_una_computadora
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Metodología para la creación de algoritmos 0
Metodología para la creación de algoritmos 0Metodología para la creación de algoritmos 0
Metodología para la creación de algoritmos 0
 
Metodología para la creación de algoritmos
Metodología para la creación de algoritmosMetodología para la creación de algoritmos
Metodología para la creación de algoritmos
 
Unidad I. Algoritmo y Programas. Parte 1
Unidad I. Algoritmo y Programas. Parte 1Unidad I. Algoritmo y Programas. Parte 1
Unidad I. Algoritmo y Programas. Parte 1
 
algoritmos
algoritmosalgoritmos
algoritmos
 
Desarrollo de habilidades de pensamiento
Desarrollo de habilidades de pensamientoDesarrollo de habilidades de pensamiento
Desarrollo de habilidades de pensamiento
 
Programación
ProgramaciónProgramación
Programación
 
C:\Documents And Settings\Alumnos\Escritorio\Programaion1
C:\Documents And Settings\Alumnos\Escritorio\Programaion1C:\Documents And Settings\Alumnos\Escritorio\Programaion1
C:\Documents And Settings\Alumnos\Escritorio\Programaion1
 
Generacionlenguajes
GeneracionlenguajesGeneracionlenguajes
Generacionlenguajes
 
Semana 1
Semana 1Semana 1
Semana 1
 
PRESENTACIÓN Y PUBLICACIÓN EN SLIDESHARE
PRESENTACIÓN Y PUBLICACIÓN EN SLIDESHAREPRESENTACIÓN Y PUBLICACIÓN EN SLIDESHARE
PRESENTACIÓN Y PUBLICACIÓN EN SLIDESHARE
 
Fpr Tema 1 www.fresymetal.com
Fpr Tema 1 www.fresymetal.comFpr Tema 1 www.fresymetal.com
Fpr Tema 1 www.fresymetal.com
 
Programacion
ProgramacionProgramacion
Programacion
 
Presentación1
Presentación1Presentación1
Presentación1
 
Etapas del desarrolo de un programa
Etapas del desarrolo de un programaEtapas del desarrolo de un programa
Etapas del desarrolo de un programa
 
Algoritmos y programacion en C++
Algoritmos y programacion en C++Algoritmos y programacion en C++
Algoritmos y programacion en C++
 
algoritmo
algoritmoalgoritmo
algoritmo
 

Último

TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
jlorentemartos
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Fernando Solis
 

Último (20)

Los dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la VerdadLos dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la Verdad
 
AEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxAEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptx
 
Lecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigosLecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigos
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
Actividades para el 11 de Mayo día del himno.docx
Actividades para el 11 de Mayo día del himno.docxActividades para el 11 de Mayo día del himno.docx
Actividades para el 11 de Mayo día del himno.docx
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
Educacion Basada en Evidencias SM5 Ccesa007.pdf
Educacion Basada en Evidencias  SM5  Ccesa007.pdfEducacion Basada en Evidencias  SM5  Ccesa007.pdf
Educacion Basada en Evidencias SM5 Ccesa007.pdf
 
Desarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por ValoresDesarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por Valores
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptx
 
UNIDAD DE APRENDIZAJE DE PRIMER GRADO DEL MES DE MAYO PARA TRABAJAR CON ESTUD...
UNIDAD DE APRENDIZAJE DE PRIMER GRADO DEL MES DE MAYO PARA TRABAJAR CON ESTUD...UNIDAD DE APRENDIZAJE DE PRIMER GRADO DEL MES DE MAYO PARA TRABAJAR CON ESTUD...
UNIDAD DE APRENDIZAJE DE PRIMER GRADO DEL MES DE MAYO PARA TRABAJAR CON ESTUD...
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 
La Evaluacion Formativa SM6 Ccesa007.pdf
La Evaluacion Formativa SM6  Ccesa007.pdfLa Evaluacion Formativa SM6  Ccesa007.pdf
La Evaluacion Formativa SM6 Ccesa007.pdf
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdf
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
Sesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdfSesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdf
 

Diseno dealgoritmos

  • 1. 1 Diseño de algoritmosDiseño de algoritmos Jose Jesus García Rueda. Adaptado de “El algoritmo,Jose Jesus García Rueda. Adaptado de “El algoritmo, una iniciación a la programación”una iniciación a la programación” ((http://www.desarrolloweb.com/manuales/67/http://www.desarrolloweb.com/manuales/67/) y de) y de “Diseño estructurado de algoritmos”“Diseño estructurado de algoritmos” (http://www.itver.edu.mx/comunidad/material/algoritmos/)(http://www.itver.edu.mx/comunidad/material/algoritmos/) IntroducciónIntroducción La principal razón para aprender a programar es utilizarLa principal razón para aprender a programar es utilizar la computadora para resolver problemas.la computadora para resolver problemas. “Algoritmo”: se deriva de la traducción al latín de la“Algoritmo”: se deriva de la traducción al latín de la palabra árabe “alkhowarizmi”, nombre del matemáticopalabra árabe “alkhowarizmi”, nombre del matemático árabe que enunció reglas paso a paso para sumar,árabe que enunció reglas paso a paso para sumar, restar, multiplicar y dividir números decimales.restar, multiplicar y dividir números decimales. Un algoritmo es una serie de pasos organizados queUn algoritmo es una serie de pasos organizados que describe el proceso a seguir para solucionar undescribe el proceso a seguir para solucionar un problema específico.problema específico. Dos tipos de algoritmos:Dos tipos de algoritmos: Cualitativos: Emplean palabras.Cualitativos: Emplean palabras. EjEj: Receta de cocina, cambiar: Receta de cocina, cambiar una rueda, usar la guía telefónica.una rueda, usar la guía telefónica. Cuantitativos: Utilizan cálculos numéricos.Cuantitativos: Utilizan cálculos numéricos. EjEj: Resolver una: Resolver una ecuación de 2º grado.ecuación de 2º grado.
  • 2. 2 Un algoritmo cotidianoUn algoritmo cotidiano Algoritmo para leer las páginas de un libro:Algoritmo para leer las páginas de un libro: 1.1. Inicio.Inicio. 2.2. Abrir el libro en la 1ª página.Abrir el libro en la 1ª página. 3.3. Leer la página.Leer la página. 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 5No: Ve al paso 5 5.5. Pasar a la siguiente página.Pasar a la siguiente página. 6.6. Ve al paso 3.Ve al paso 3. 7.7. Cerrar el libro.Cerrar el libro. 8.8. Fin.Fin. Lenguajes algorítmicosLenguajes algorítmicos Un lenguaje algorítmico es unUn lenguaje algorítmico es un conjunto de símbolos y reglasconjunto de símbolos y reglas que permiten describir deque permiten describir de manera explícita un proceso.manera explícita un proceso. Es independiente de cualquierEs independiente de cualquier lenguaje de programación.lenguaje de programación. Debe permitir una traducciónDebe permitir una traducción clara del algoritmo alclara del algoritmo al programa.programa. Dos tipos de lenguajesDos tipos de lenguajes algorítmicos:algorítmicos: GráficosGráficos: Por ejemplo, los: Por ejemplo, los diagramas de flujo.diagramas de flujo. No gráficosNo gráficos: Por ejemplo, el: Por ejemplo, el pseudocódigopseudocódigo.. INICIO Edad: Entero ESCRIBE “¿cuál es tu edad?” Lee Edad SI Edad >= 18 entonces ESCRIBE “Eres mayor de edad” FINSI Escribe “fin del algoritmo” FIN
  • 3. 3 Creación de algoritmosCreación de algoritmos Proceso de programación típico:Proceso de programación típico: Dado un determinado problema…Dado un determinado problema… …el programador idea una solución……el programador idea una solución… …y la expresa mediante un algoritmo.…y la expresa mediante un algoritmo. Codificación del algoritmo.Codificación del algoritmo. Ejecución del programa.Ejecución del programa. Metodología para la solución de problemas por medioMetodología para la solución de problemas por medio de un ordenador:de un ordenador: 1.1. Definición del problema: clara y precisa. Es casi la mitad delDefinición del problema: clara y precisa. Es casi la mitad del trabajo…trabajo… 2.2. Análisis del problema: Colocarse en el lugar del ordenador yAnálisis del problema: Colocarse en el lugar del ordenador y analizar qué requeriríamos para realizar la tarea.analizar qué requeriríamos para realizar la tarea. Datos de entrada.Datos de entrada. Información a producir (salida)Información a producir (salida) Métodos y fórmulas para procesar los datosMétodos y fórmulas para procesar los datos 3.3. Diseño del algoritmo.Diseño del algoritmo. Características de un buenCaracterísticas de un buen algoritmoalgoritmo 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 tamaño y en tiempo deDebe ser finito en tamaño y en tiempo de ejecución.ejecución. Prueba de escritorio: se toman datosPrueba de escritorio: se toman datos específicos como entrada y se sigue elespecíficos como entrada y se sigue el algoritmo hasta obtener un resultado.algoritmo hasta obtener un resultado.
  • 4. 4 Técnicas de diseñoTécnicas de diseño TopTop DownDown: Se descompone sucesivamente el problema: Se descompone sucesivamente el problema inicial eninicial en subproblemassubproblemas.. Con cada descomposición, se simplifican losCon cada descomposición, se simplifican los subproblemassubproblemas.. Las diferentes partes del problema pueden ser programadas deLas diferentes partes del problema pueden ser programadas de forma independiente.forma independiente. El programa final queda estructurado en forma de bloques oEl programa final queda estructurado en forma de bloques o módulos.módulos. BottomBottom UpUp: Se programa cada proceso según vaya: Se programa cada proceso según vaya apareciendo.apareciendo. Difícil llegar a una integración tal que el desempeño global seaDifícil llegar a una integración tal que el desempeño global sea fluido.fluido. Proclive a la duplicación de esfuerzos.Proclive a la duplicación de esfuerzos. Pueden no satisfacerse los requisitos globales de la aplicación.Pueden no satisfacerse los requisitos globales de la aplicación. La creación de algoritmos se basa en la técnicaLa creación de algoritmos se basa en la técnica descendente.descendente. Diagramas de flujoDiagramas de flujo Es una forma deEs una forma de representar gráficamenterepresentar gráficamente un algoritmo.un algoritmo. Cada paso se escribeCada paso se escribe dentro de un símbolo.dentro de un símbolo. Los pasos se conectanLos pasos se conectan unos con otros medianteunos con otros mediante líneas de flujolíneas de flujo.. Son fáciles de diseñar,Son fáciles de diseñar, pero difíciles depero difíciles de actualizar.actualizar. Los símbolos que utilizaLos símbolos que utiliza están normalizados:están normalizados: Salida porSalida por pantallapantalla Conector fueraConector fuera páginapágina Conector dentroConector dentro páginapágina Salida porSalida por impresoraimpresora ProcesoProceso Entrada/ SalidaEntrada/ Salida Inicio/FinalInicio/Final
  • 5. 5 Diagramas de flujo (II)Diagramas de flujo (II) MientrasMientras SelecciónSelección múltiplemúltiple DecisiónDecisión Diagramas de flujo (III)Diagramas de flujo (III) Líneas de flujoLíneas de flujo Repite hastaRepite hasta ParaPara
  • 6. 6 Ejemplo de diagrama de flujoEjemplo de diagrama de flujo Diseñe un algoritmoDiseñe un algoritmo que lea 3 números,que lea 3 números, los sume e imprima ellos sume e imprima el resultado porresultado por impresora.impresora. Recomendaciones para losRecomendaciones para los diagramas de flujodiagramas de flujo Emplear solamente líneas de flujo horizontalesEmplear solamente líneas de flujo horizontales y/o verticales.y/o verticales. Evitar el cruce de líneas (usando los conectores)Evitar el cruce de líneas (usando los conectores) Usar los conectores sólo cuando sea necesario.Usar los conectores sólo cuando sea necesario. No dejar líneas de flujo sin conectar.No dejar líneas de flujo sin conectar. Se deberá poder leer de arriba abajo y deSe deberá poder leer de arriba abajo y de izquierda a derecha.izquierda a derecha. Ser escuetos y claros con lo que se escribaSer escuetos y claros con lo que se escriba dentro de los símbolos.dentro de los símbolos.
  • 7. 7 PseudocódigoPseudocódigo Mezcla de lenguaje de programación y deMezcla de lenguaje de programación y de lenguaje natural.lenguaje natural. Representación narrativa de los pasos que debeRepresentación narrativa de los pasos que debe seguir un algoritmo.seguir un algoritmo. Utiliza palabras, no gráficos.Utiliza palabras, no gráficos. Ventajas:Ventajas: Ocupa menos espacio.Ocupa menos espacio. Permite representar fácilmente operacionesPermite representar fácilmente operaciones repetitivas complejas.repetitivas complejas. Es muy fácil pasar delEs muy fácil pasar del pseudocódigopseudocódigo al lenguaje deal lenguaje de programación.programación. Quedan claros los niveles que tiene cada operación.Quedan claros los niveles que tiene cada operación. Principales características de losPrincipales características de los pseudocódigospseudocódigos Utilizan operadores aritméticos y lógicos.Utilizan operadores aritméticos y lógicos. Se pueden incluir comentarios.Se pueden incluir comentarios. Se debe respetar unaSe debe respetar una indentaciónindentación en losen los bloques de instrucciones.bloques de instrucciones. Usan ciertas palabras clave: PSEUDOCÓDIGO,Usan ciertas palabras clave: PSEUDOCÓDIGO, VARIABLES, INICIO, FIN, LEE, ESCRIBE,VARIABLES, INICIO, FIN, LEE, ESCRIBE, IMPRIME,IMPRIME, IF_THEN_ELSEIF_THEN_ELSE, CASE OF, FOR, CASE OF, FOR DO, WHILE DO, REPEAT UNTIL, ARRAY…DO, WHILE DO, REPEAT UNTIL, ARRAY… Comienzan con el nombre delComienzan con el nombre del pseudocódigopseudocódigo,, seguido de la declaración de variables, y luegoseguido de la declaración de variables, y luego el cuerpo delel cuerpo del pseudocódigopseudocódigo..
  • 8. 8 Ejemplo deEjemplo de pseudocódigopseudocódigo Algoritmo que lee 3 números, los suma eAlgoritmo que lee 3 números, los suma e imprime su resultado.imprime su resultado. PSEUDOCÓDIGOPSEUDOCÓDIGO sumatoriosumatorio VARIABLESVARIABLES eN1eN1,, eN2eN2, 3N3,, 3N3, eSumaeSuma: Entero: Entero INICIOINICIO ESCRIBE “Dame tres números:”ESCRIBE “Dame tres números:” LEELEE eN1eN1,, eN2eN2,, eN3eN3 eSumaeSuma == eN1eN1 ++ eN2eN2 ++ eN3eN3 ESCRIBE “El resultado de la suma es: “, eSumaESCRIBE “El resultado de la suma es: “, eSuma FINFIN Diagramas estructurados (Diagramas estructurados (NassiNassi-- SchneidermanSchneiderman)) Como un diagramaComo un diagrama de flujo en el que sede flujo en el que se omiten las flechas deomiten las flechas de unión, y las cajas sonunión, y las cajas son contiguas.contiguas. Son fáciles de diseñarSon fáciles de diseñar y difíciles dey difíciles de actualizar.actualizar. Las accionesLas acciones sucesiva se escribensucesiva se escriben en cajas sucesivas.en cajas sucesivas.
  • 9. 9 EJEMPLOEJEMPLO Diseñar un algoritmo que, dada unaDiseñar un algoritmo que, dada una operación aritmética expresada en eloperación aritmética expresada en el formato habitual (yformato habitual (y StringString), vaya leyéndola), vaya leyéndola carácter a carácter, para así calcular sucarácter a carácter, para así calcular su resultado.resultado. Respetar las reglas típicas de precedenciaRespetar las reglas típicas de precedencia entre operaciones aritméticas (+ yentre operaciones aritméticas (+ y -- < * y /)< * y /) Paso 1: AnálisisPaso 1: Análisis Datos de entrada: una cadena de caracteresDatos de entrada: una cadena de caracteres representando una operación aritmética.representando una operación aritmética. Datos de salida: Un número, resultado de realizar laDatos de salida: Un número, resultado de realizar la operación aritmética.operación aritmética. Forma de operar: Emplearemos dos pilas, una deForma de operar: Emplearemos dos pilas, una de operadores y otra deoperadores y otra de operandosoperandos.. En la primera guardaremos los operadores que vayamosEn la primera guardaremos los operadores que vayamos leyendo, siempre que su precedencia sea mayor que losleyendo, siempre que su precedencia sea mayor que los operadores ya en la pila. De no ser así, se extraen losoperadores 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 losEn la segunda iremos guardando los operandosoperandos que vayamosque vayamos leyendo, así como los resultados de las operaciones parciales.leyendo, así como los resultados de las operaciones parciales.
  • 10. 10 Paso 2: Diseño del algoritmoPaso 2: Diseño del algoritmo Desarrollo del algoritmo enDesarrollo del algoritmo en pseudocódigopseudocódigo:: …… Paso 3: Prueba de escritorioPaso 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”?