SlideShare une entreprise Scribd logo
1  sur  35
Licenciatura en Tecnologías de la Información
Universidad de Guadalajara
Fundamentos de Programación
Métodos y herramientas
para resolución de problemas
Diagramas de Flujo
Integrantes del Equipo
Adriana Guadalupe Zamora Quintana
Irma Rebeca Andalón García
Jorge Luis Huizar Salas
Fases de resolución de problemas
3
La principal razón para que las personas aprendan un
lenguaje de programación es utilizar la computadora
como una herramienta para la resolución de
problemas.
La realización de trabajos mediante computadora, como
cualquier otra actividad requiere un método que
explique de un modo ordenado y secuencial hasta los
últimos detalles a realizar por la máquina.
Fases de resolución de problemas
4
Tres fases pueden ser identificadas en el proceso de
resolución de problemas ayudados por computadora:
 Análisis del problema
 Diseño del algoritmo
 Implementación en un computador (realización en un
lenguaje de programación)
Fases de resolución de problemas
5
Las fases de resolución de un problema en
computadora son:
1. Análisis del problema
2. Diseño del algoritmo
3. Codificación
4. Compilación y Ejecución
5. Verificación y Depuración
6. Documentación
7. Mantenimiento
6
Análisis del
problema
Diseño del
algoritmo
Verificación del
algoritmo
Codificación del
algoritmo
Compilación y
Ejecución del
programa
Verificación y
Depuración
Documentación y
Mantenimiento
Fases de resolución de problemas
Análisis del problema
7
 El primer paso para la solución del problema es el
análisis del mismo.
 Se debe examinar cuidadosamente el problema a fin de
obtener la idea sobre lo que se solicita y determinar los
datos necesarios para conseguir solucionarlo.
Análisis del problema
8
Análisis del
problema
Datos de
entrada
Datos de salida
= resultados
Definición del
problema
Diseño del algoritmo
9
Para diseñar un algoritmo se debe comenzar por identificar las
tareas más importantes para resolver el problema y disponerlas
en el orden en que han de ser ejecutadas.
Los pasos en esta primera descripción de actividades deberán ser
refinados, añadiendo más detalles a los mismos e incluso,
algunos de ellos, pueden requerir un refinamiento adicional antes
de obtener un algoritmo claro, preciso y completo.
Este método de diseño en etapas, yendo de los conceptos
generales a los detalles por refinamientos sucesivos, se conoce
como método descendente.
Diseño del algoritmo
10
En la etapa de diseño se determina cómo el programa,
hace la tarea solicitada.
•Los métodos más eficaces para el proceso de diseño se
basan en el conocido por divide y vencerás.
•El problema se divide en subproblemas y éstos a su
vez en otros de nivel más bajo, hasta que la solución
pueda ser implementada en la computadora.
Diseño del algoritmo
11
• Este método se conoce como diseño descendente
(top-down) o modular.
• El proceso de romper el problema en cada etapa y
expresar cada paso en forma más detallada se
denomina refinamiento sucesivo.
• Cada subprograma es resuelto mediante un módulo
que tiene un solo punto de entrada y un solo punto de
salida.
Diseño del algoritmo
12
• El proceso implica la ejecución de los siguientes
pasos:
– Programar un módulo
– Comprobar el módulo
– Si es necesario, depurar el módulo
– Combinar el módulo con otros módulos.
Diseño del algoritmo
13
El diseño del algoritmo
es independiente del lenguaje de
programación
en el que se vaya a codificar
posteriormente.
Implementación mediante el computador
14
Una vez que el algoritmo está diseñado, es representado
mediante una herramienta de programación
(diagrama de flujo, diagrama N-S, o pseudocódigo) y
verificado se debe pasar a la fase de codificación.
Codificación, traducción del algoritmo a un
determinado lenguaje de programación, que deberá ser
completada con la Ejecución.
Implementación mediante el computador
15
Verificación del algoritmo. Una vez que se ha terminado
de escribir un algoritmo es necesario comprobar que
realiza las tareas para las que se ha diseñado y produce el
resultado correcto y esperado.
Una forma de comprobar un algoritmo es mediante su
ejecución manual, usando datos significativos que
abarquen todo el posible rango de valores y anotando en una
hoja de papel las modificaciones que se producen en las
diferentes fases hasta la obtención de resultados.
Representación de algoritmos
16
Un algoritmo puede ser escrito en castellano
narrativo, pero esta descripción suele ser demasiado
prolija y además, ambigua.
Para representar un algoritmo se debe utilizar
algún método que permita independizar dicho
algoritmo de los lenguajes de programación y, al
mismo tiempo, conseguir que sea fácilmente
codificable.
Representación de algoritmos
17
Detallada. El algoritmo escrito en un determinado
lenguaje de programación. Por ejemplo: lenguaje de
máquina, ensamblador, fortran, basic, pascal, C, etc.
Simbólica. Las etapas son descritas con lenguaje
próximo al natural, con el grado de detalle adecuado
a la etapa de desarrollo del programa.
Representación de algoritmos
18
Los herramientas más usuales para la representación de
algoritmos son:
Diagrama de flujo
Diagrama N-S (Nassi-Schneiderman)
Seudocódigo
Representación de algoritmos
19
Diagrama de flujo. Se utilizan entre otros para la
representación gráfica de la secuencia de pasos
necesarios para describir un procedimiento particular.
Utiliza unos símbolos normalizados, con los pasos
del algoritmo escritos en el símbolo adecuado y los
símbolos unidos por flechas, denominadas líneas de
flujo, que indican el orden en que los pasos deben ser
ejecutados.
Representación de algoritmos
20
Diagrama N-S (Nassi-Schneiderman). Denominados
así por sus inventores, o también N-S, o de Chapin, son
una herramienta que favorece la programación
estructurada y reúne características gráficas propias de
diagramas de flujo y lingüísticas propias de los
seudocódigos.
Constan de una serie de cajas contiguas que se leerán
siempre de arriba-abajo y se documentarán de la
forma adecuada.
Representación de algoritmos
21
Seudocódigo. Es un lenguaje de especificación de algoritmos
que utiliza palabras reservadas y exige la sangría en el
margen izquierdo, de algunas líneas.
En nuestros seudocódigos usaremos determinadas palabras en
español como palabras reservadas.
Se concibió para superar las dos principales desventajas del
diagrama de flujo: lento de crear y difícil de modificar sin un
nuevo redibujo.
Es una herramienta muy buena para el seguimiento de la
lógica del algoritmo y para transformar con facilidad los
algoritmos a programas escritos en un lenguaje de
programación específico.
Diagrama de Flujo
22
Diagrama de Flujo
23
Es la representación gráfica de unos procedimientos y
de la secuencia u orden en que deben ejecutarse, en
resumen la representación gráfica de la solución de un
problema o de un procedimiento.
Diagrama de detalle. Son las órdenes en secuencia que
se deben dar a la máquina para la resolución del
problema.
Los principales símbolos son: inicio y fin del
algoritmo, proceso, entrada/salida, decisión y
comentario.
Diagrama de Flujo
24
Proceso (Cualquier tipo de operación definida que pueda
originar cambio de valor, formato o posición de la
información almacenada en memoria: operaciones
aritméticas, de transferencia de datos, etc.).
Terminal (Representa generalmente el comienzo, “inicio”
y el final “fin” de un programa).
Entrada / Salida (Cualquier tipo de operación de
introducción de datos en la memoria desde los periféricos
“entrada”, o registro de la información procesada en un
periférico “salida”).
Diagrama de Flujo
25
Decisión (Indica operaciones lógicas o de comparación
entre datos -normalmente dos- y en función del resultado de
la misma determina cuál de los distintos caminos
alternativos del programa seguir; normalmente tiene dos
salidas -respuestas Si o No-)
Línea conectora (Sirve de unión entre dos símbolos)
Comentarios (Se utiliza para añadir comentarios
clasificadores a otros símbolos del diagrama de flujo. Se
pueden dibujar a cualquier lado del símbolo)
Indicador de dirección o línea de flujo (indica el sentido
de ejecución de las operaciones)
Diagrama de Flujo
26
Reglas para la construcción de diagramas de flujo:
La finalidad de un diagrama de flujo es describir de modo
gráfico la estructura lógica del programa y que
posteriormente permita una fácil codificación en un lenguaje
específico.
El proceso para la construcción de un diagrama de flujo no
supone un método rígido, sin embargo se pueden enunciar unas
reglas útiles de tipo general.
Diagrama de Flujo
27
La elaboración de un diagrama de flujo debe comenzar con un
diagrama de bloques que represente las relaciones
fundamentales y posteriormente ir descomponiéndolas en otras
más sencillas pero sin tratar que correspondan instrucción a
instrucción con el funcionamiento real del programa, ya que
serían excesivamente recargados y no serían útiles.
Todo diagrama debe tener un inicio y un fin, al objeto de que
pueda ser utilizado como sub-módulo de otro módulo de nivel
superior.
Diagrama de Flujo
28
Las líneas de conexión o de flujo deber ser siempre rectas y, si
es posible, que sean sólo verticales y horizontales (no
cruzarse ni inclinadas); para conseguir lo anterior se debe
recurrir a conectores numerados convenientemente y sólo en
los casos estrictamente necesarios.
Las líneas que enlazan los símbolos entre sí deben estar todas
conectadas. Cada línea o flecha debe estar en un bloque, en un
símbolo de decisión, terminar en Fin o unirse a otra flecha.
Se deben dibujar todos los símbolos de modo que se pueda
seguir el proceso visualmente de arriba a abajo y de
izquierda a derecha.
Diagrama de Flujo
29
Evitar la utilización de terminología específica de un
lenguaje de programación, sobre todo en las expresiones
donde se tiene tendencia natural a ello.
Se debe dejar un bloque o dos de proceso libres al
comienzo del diagrama para variables, acumuladores,
inicializaciones, etc.
Indicar con comentarios al margen, las variables utilizadas
y su descripción, procurando no abusar de su uso.
Diferenciar las variables propias del proceso de las
seudovariables o variables ficticias (contadores,
conmutadores, etc.).
Diagrama de Flujo
30
En las operaciones lógicas recurrir preferentemente a la
lógica positiva que a la negativa (es siempre más claro Si
A=B que Si no es A<>B).
Realizar un gráfico claro y equilibrado, procurando que el
flujo central del diagrama sea la parte central de la hoja de
papel.
A cada bloque o símbolo se accede por arribar y/o por la
izquierda y se sale por abajo y/o por la derecha.
Diagrama de Flujo
LTI
31
Realizar todos los comentarios marginales al diagrama para
que este sea comprensible no sólo por la persona que lo ha
elaborado, sino también por cualquier persona ajena al mismo
y sobre todo al paso del tiempo, cuando se necesite una
actualización o modificación.
Siempre que sea posible, es conveniente que el diagrama no
sobrepase una página; si no es posible, numeras las hojas y
usar conectores de páginas que indiquen la dirección correcta
del flujo (de donde viene y a donde va).
Cada una de las estructuras tiene una sola flecha de entrada y
cada una de ellas es legible de arriba hacia abajo.
Irma Rebeca Andalón García Fundamentos de Programación
Diagrama de Flujo
32
Inicio
Entrada de Datos
Proceso
Salida de Datos
Fin
Diagrama de Flujo
33
Problema. Diseñar un algoritmo que lea cuatro variables
enteras y calcule e imprima su producto y su suma.
• Análisis del problema:
Datos de Entrada: iNum1, iNum2, iNum3, iNum4
Datos de Salida: iProd, iSum
Escribir(iProd, iSum)
Diagrama de Flujo
34
Inicio
iProd = iNum1 * iNum2 * iNum3 * iNum4
iSum = iNum1 + iNum2 + iNum3 + iNum4
Fin
Leer (iNum1, iNum2, iNum3, iNum4)
Escribir(“Dame 4 numeros”)
El aprendizaje es
experiencia,
todo lo demás es
información.
Albert Einstein
35
Frase

Contenu connexe

Tendances

Fundamentos básicos de algoritmos (1)
Fundamentos básicos de algoritmos (1)Fundamentos básicos de algoritmos (1)
Fundamentos básicos de algoritmos (1)
Karlos Valladares
 
Arquitectura Multiprocesadores
Arquitectura Multiprocesadores Arquitectura Multiprocesadores
Arquitectura Multiprocesadores
JUANR1022
 
Herramientas case alto y bajo nivel
Herramientas case alto y bajo nivelHerramientas case alto y bajo nivel
Herramientas case alto y bajo nivel
sistemaaabbbb
 
Lema de bombeo
Lema de bombeoLema de bombeo
Lema de bombeo
Omega Tech
 
Registros de control y estados de la CPU
Registros de control y estados de la CPURegistros de control y estados de la CPU
Registros de control y estados de la CPU
Ivan Porras
 

Tendances (20)

Teoría de autómatas
Teoría de autómatasTeoría de autómatas
Teoría de autómatas
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Tipos de gramatica y arboles de derivacion
Tipos de gramatica y arboles de derivacionTipos de gramatica y arboles de derivacion
Tipos de gramatica y arboles de derivacion
 
UNIDAD 1 INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR
UNIDAD 1 INTRODUCCIÓN AL LENGUAJE ENSAMBLADORUNIDAD 1 INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR
UNIDAD 1 INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR
 
Presentacion 2 - Maquinas de Estado Finito
Presentacion 2 - Maquinas de Estado FinitoPresentacion 2 - Maquinas de Estado Finito
Presentacion 2 - Maquinas de Estado Finito
 
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesPortafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
 
Autómatas de pila
Autómatas de pila Autómatas de pila
Autómatas de pila
 
Ppt algoritmo
Ppt algoritmoPpt algoritmo
Ppt algoritmo
 
Sistemas operativos memoria virtual
Sistemas operativos memoria virtualSistemas operativos memoria virtual
Sistemas operativos memoria virtual
 
Analisis Semantico
Analisis Semantico Analisis Semantico
Analisis Semantico
 
Fundamentos básicos de algoritmos (1)
Fundamentos básicos de algoritmos (1)Fundamentos básicos de algoritmos (1)
Fundamentos básicos de algoritmos (1)
 
Arquitectura Multiprocesadores
Arquitectura Multiprocesadores Arquitectura Multiprocesadores
Arquitectura Multiprocesadores
 
Algoritmos y pseudocodigo
Algoritmos y pseudocodigoAlgoritmos y pseudocodigo
Algoritmos y pseudocodigo
 
Unidad 2 expresiones regulares
Unidad 2 expresiones regularesUnidad 2 expresiones regulares
Unidad 2 expresiones regulares
 
Herramientas case alto y bajo nivel
Herramientas case alto y bajo nivelHerramientas case alto y bajo nivel
Herramientas case alto y bajo nivel
 
Lema de bombeo
Lema de bombeoLema de bombeo
Lema de bombeo
 
Clase 1. lógica de la programación
Clase 1. lógica de la programaciónClase 1. lógica de la programación
Clase 1. lógica de la programación
 
Registros de control y estados de la CPU
Registros de control y estados de la CPURegistros de control y estados de la CPU
Registros de control y estados de la CPU
 
Diagramas estados
Diagramas estadosDiagramas estados
Diagramas estados
 
Programación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaProgramación 3: Clases y objetos en Java
Programación 3: Clases y objetos en Java
 

Similaire à Diagramas de Flujo (20)

Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Informatica
InformaticaInformatica
Informatica
 
Concepto y representaciones de un Algoritmo
Concepto y representaciones de un AlgoritmoConcepto y representaciones de un Algoritmo
Concepto y representaciones de un Algoritmo
 
Aj
AjAj
Aj
 
Aj
AjAj
Aj
 
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
 
Manual de java_3
Manual de java_3Manual de java_3
Manual de java_3
 
Manual de javaa2
Manual de javaa2Manual de javaa2
Manual de javaa2
 
Manual de java
Manual de java Manual de java
Manual de java
 
manual 10
manual 10manual 10
manual 10
 
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
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Diagramas de flujo
Diagramas de flujoDiagramas de flujo
Diagramas de flujo
 
Etapas del desarrolo de un programa
Etapas del desarrolo de un programaEtapas del desarrolo de un programa
Etapas del desarrolo de un programa
 
Programacion
ProgramacionProgramacion
Programacion
 
Algoritmos (DFD, Pseudocodigos).pptx
Algoritmos (DFD, Pseudocodigos).pptxAlgoritmos (DFD, Pseudocodigos).pptx
Algoritmos (DFD, Pseudocodigos).pptx
 
Conceptos básicos para la programación
Conceptos básicos para la programaciónConceptos básicos para la programación
Conceptos básicos para la programación
 

Dernier

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
 

Dernier (20)

Diapositivas de animales reptiles secundaria
Diapositivas de animales reptiles secundariaDiapositivas de animales reptiles secundaria
Diapositivas de animales reptiles secundaria
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtuales
 
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
 
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
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADOTIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
 
Infografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfInfografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdf
 
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
 
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
 
Abril 2024 - Maestra Jardinera Ediba.pdf
Abril 2024 -  Maestra Jardinera Ediba.pdfAbril 2024 -  Maestra Jardinera Ediba.pdf
Abril 2024 - Maestra Jardinera Ediba.pdf
 
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...
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 
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
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
 
semana 4 9NO Estudios sociales.pptxnnnn
semana 4  9NO Estudios sociales.pptxnnnnsemana 4  9NO Estudios sociales.pptxnnnn
semana 4 9NO Estudios sociales.pptxnnnn
 

Diagramas de Flujo

  • 1. Licenciatura en Tecnologías de la Información Universidad de Guadalajara Fundamentos de Programación Métodos y herramientas para resolución de problemas Diagramas de Flujo
  • 2. Integrantes del Equipo Adriana Guadalupe Zamora Quintana Irma Rebeca Andalón García Jorge Luis Huizar Salas
  • 3. Fases de resolución de problemas 3 La principal razón para que las personas aprendan un lenguaje de programación es utilizar la computadora como una herramienta para la resolución de problemas. La realización de trabajos mediante computadora, como cualquier otra actividad requiere un método que explique de un modo ordenado y secuencial hasta los últimos detalles a realizar por la máquina.
  • 4. Fases de resolución de problemas 4 Tres fases pueden ser identificadas en el proceso de resolución de problemas ayudados por computadora:  Análisis del problema  Diseño del algoritmo  Implementación en un computador (realización en un lenguaje de programación)
  • 5. Fases de resolución de problemas 5 Las fases de resolución de un problema en computadora son: 1. Análisis del problema 2. Diseño del algoritmo 3. Codificación 4. Compilación y Ejecución 5. Verificación y Depuración 6. Documentación 7. Mantenimiento
  • 6. 6 Análisis del problema Diseño del algoritmo Verificación del algoritmo Codificación del algoritmo Compilación y Ejecución del programa Verificación y Depuración Documentación y Mantenimiento Fases de resolución de problemas
  • 7. Análisis del problema 7  El primer paso para la solución del problema es el análisis del mismo.  Se debe examinar cuidadosamente el problema a fin de obtener la idea sobre lo que se solicita y determinar los datos necesarios para conseguir solucionarlo.
  • 8. Análisis del problema 8 Análisis del problema Datos de entrada Datos de salida = resultados Definición del problema
  • 9. Diseño del algoritmo 9 Para diseñar un algoritmo se debe comenzar por identificar las tareas más importantes para resolver el problema y disponerlas en el orden en que han de ser ejecutadas. Los pasos en esta primera descripción de actividades deberán ser refinados, añadiendo más detalles a los mismos e incluso, algunos de ellos, pueden requerir un refinamiento adicional antes de obtener un algoritmo claro, preciso y completo. Este método de diseño en etapas, yendo de los conceptos generales a los detalles por refinamientos sucesivos, se conoce como método descendente.
  • 10. Diseño del algoritmo 10 En la etapa de diseño se determina cómo el programa, hace la tarea solicitada. •Los métodos más eficaces para el proceso de diseño se basan en el conocido por divide y vencerás. •El problema se divide en subproblemas y éstos a su vez en otros de nivel más bajo, hasta que la solución pueda ser implementada en la computadora.
  • 11. Diseño del algoritmo 11 • Este método se conoce como diseño descendente (top-down) o modular. • El proceso de romper el problema en cada etapa y expresar cada paso en forma más detallada se denomina refinamiento sucesivo. • Cada subprograma es resuelto mediante un módulo que tiene un solo punto de entrada y un solo punto de salida.
  • 12. Diseño del algoritmo 12 • El proceso implica la ejecución de los siguientes pasos: – Programar un módulo – Comprobar el módulo – Si es necesario, depurar el módulo – Combinar el módulo con otros módulos.
  • 13. Diseño del algoritmo 13 El diseño del algoritmo es independiente del lenguaje de programación en el que se vaya a codificar posteriormente.
  • 14. Implementación mediante el computador 14 Una vez que el algoritmo está diseñado, es representado mediante una herramienta de programación (diagrama de flujo, diagrama N-S, o pseudocódigo) y verificado se debe pasar a la fase de codificación. Codificación, traducción del algoritmo a un determinado lenguaje de programación, que deberá ser completada con la Ejecución.
  • 15. Implementación mediante el computador 15 Verificación del algoritmo. Una vez que se ha terminado de escribir un algoritmo es necesario comprobar que realiza las tareas para las que se ha diseñado y produce el resultado correcto y esperado. Una forma de comprobar un algoritmo es mediante su ejecución manual, usando datos significativos que abarquen todo el posible rango de valores y anotando en una hoja de papel las modificaciones que se producen en las diferentes fases hasta la obtención de resultados.
  • 16. Representación de algoritmos 16 Un algoritmo puede ser escrito en castellano narrativo, pero esta descripción suele ser demasiado prolija y además, ambigua. Para representar un algoritmo se debe utilizar algún método que permita independizar dicho algoritmo de los lenguajes de programación y, al mismo tiempo, conseguir que sea fácilmente codificable.
  • 17. Representación de algoritmos 17 Detallada. El algoritmo escrito en un determinado lenguaje de programación. Por ejemplo: lenguaje de máquina, ensamblador, fortran, basic, pascal, C, etc. Simbólica. Las etapas son descritas con lenguaje próximo al natural, con el grado de detalle adecuado a la etapa de desarrollo del programa.
  • 18. Representación de algoritmos 18 Los herramientas más usuales para la representación de algoritmos son: Diagrama de flujo Diagrama N-S (Nassi-Schneiderman) Seudocódigo
  • 19. Representación de algoritmos 19 Diagrama de flujo. Se utilizan entre otros para la representación gráfica de la secuencia de pasos necesarios para describir un procedimiento particular. Utiliza unos símbolos normalizados, con los pasos del algoritmo escritos en el símbolo adecuado y los símbolos unidos por flechas, denominadas líneas de flujo, que indican el orden en que los pasos deben ser ejecutados.
  • 20. Representación de algoritmos 20 Diagrama N-S (Nassi-Schneiderman). Denominados así por sus inventores, o también N-S, o de Chapin, son una herramienta que favorece la programación estructurada y reúne características gráficas propias de diagramas de flujo y lingüísticas propias de los seudocódigos. Constan de una serie de cajas contiguas que se leerán siempre de arriba-abajo y se documentarán de la forma adecuada.
  • 21. Representación de algoritmos 21 Seudocódigo. Es un lenguaje de especificación de algoritmos que utiliza palabras reservadas y exige la sangría en el margen izquierdo, de algunas líneas. En nuestros seudocódigos usaremos determinadas palabras en español como palabras reservadas. Se concibió para superar las dos principales desventajas del diagrama de flujo: lento de crear y difícil de modificar sin un nuevo redibujo. Es una herramienta muy buena para el seguimiento de la lógica del algoritmo y para transformar con facilidad los algoritmos a programas escritos en un lenguaje de programación específico.
  • 23. Diagrama de Flujo 23 Es la representación gráfica de unos procedimientos y de la secuencia u orden en que deben ejecutarse, en resumen la representación gráfica de la solución de un problema o de un procedimiento. Diagrama de detalle. Son las órdenes en secuencia que se deben dar a la máquina para la resolución del problema. Los principales símbolos son: inicio y fin del algoritmo, proceso, entrada/salida, decisión y comentario.
  • 24. Diagrama de Flujo 24 Proceso (Cualquier tipo de operación definida que pueda originar cambio de valor, formato o posición de la información almacenada en memoria: operaciones aritméticas, de transferencia de datos, etc.). Terminal (Representa generalmente el comienzo, “inicio” y el final “fin” de un programa). Entrada / Salida (Cualquier tipo de operación de introducción de datos en la memoria desde los periféricos “entrada”, o registro de la información procesada en un periférico “salida”).
  • 25. Diagrama de Flujo 25 Decisión (Indica operaciones lógicas o de comparación entre datos -normalmente dos- y en función del resultado de la misma determina cuál de los distintos caminos alternativos del programa seguir; normalmente tiene dos salidas -respuestas Si o No-) Línea conectora (Sirve de unión entre dos símbolos) Comentarios (Se utiliza para añadir comentarios clasificadores a otros símbolos del diagrama de flujo. Se pueden dibujar a cualquier lado del símbolo) Indicador de dirección o línea de flujo (indica el sentido de ejecución de las operaciones)
  • 26. Diagrama de Flujo 26 Reglas para la construcción de diagramas de flujo: La finalidad de un diagrama de flujo es describir de modo gráfico la estructura lógica del programa y que posteriormente permita una fácil codificación en un lenguaje específico. El proceso para la construcción de un diagrama de flujo no supone un método rígido, sin embargo se pueden enunciar unas reglas útiles de tipo general.
  • 27. Diagrama de Flujo 27 La elaboración de un diagrama de flujo debe comenzar con un diagrama de bloques que represente las relaciones fundamentales y posteriormente ir descomponiéndolas en otras más sencillas pero sin tratar que correspondan instrucción a instrucción con el funcionamiento real del programa, ya que serían excesivamente recargados y no serían útiles. Todo diagrama debe tener un inicio y un fin, al objeto de que pueda ser utilizado como sub-módulo de otro módulo de nivel superior.
  • 28. Diagrama de Flujo 28 Las líneas de conexión o de flujo deber ser siempre rectas y, si es posible, que sean sólo verticales y horizontales (no cruzarse ni inclinadas); para conseguir lo anterior se debe recurrir a conectores numerados convenientemente y sólo en los casos estrictamente necesarios. Las líneas que enlazan los símbolos entre sí deben estar todas conectadas. Cada línea o flecha debe estar en un bloque, en un símbolo de decisión, terminar en Fin o unirse a otra flecha. Se deben dibujar todos los símbolos de modo que se pueda seguir el proceso visualmente de arriba a abajo y de izquierda a derecha.
  • 29. Diagrama de Flujo 29 Evitar la utilización de terminología específica de un lenguaje de programación, sobre todo en las expresiones donde se tiene tendencia natural a ello. Se debe dejar un bloque o dos de proceso libres al comienzo del diagrama para variables, acumuladores, inicializaciones, etc. Indicar con comentarios al margen, las variables utilizadas y su descripción, procurando no abusar de su uso. Diferenciar las variables propias del proceso de las seudovariables o variables ficticias (contadores, conmutadores, etc.).
  • 30. Diagrama de Flujo 30 En las operaciones lógicas recurrir preferentemente a la lógica positiva que a la negativa (es siempre más claro Si A=B que Si no es A<>B). Realizar un gráfico claro y equilibrado, procurando que el flujo central del diagrama sea la parte central de la hoja de papel. A cada bloque o símbolo se accede por arribar y/o por la izquierda y se sale por abajo y/o por la derecha.
  • 31. Diagrama de Flujo LTI 31 Realizar todos los comentarios marginales al diagrama para que este sea comprensible no sólo por la persona que lo ha elaborado, sino también por cualquier persona ajena al mismo y sobre todo al paso del tiempo, cuando se necesite una actualización o modificación. Siempre que sea posible, es conveniente que el diagrama no sobrepase una página; si no es posible, numeras las hojas y usar conectores de páginas que indiquen la dirección correcta del flujo (de donde viene y a donde va). Cada una de las estructuras tiene una sola flecha de entrada y cada una de ellas es legible de arriba hacia abajo. Irma Rebeca Andalón García Fundamentos de Programación
  • 32. Diagrama de Flujo 32 Inicio Entrada de Datos Proceso Salida de Datos Fin
  • 33. Diagrama de Flujo 33 Problema. Diseñar un algoritmo que lea cuatro variables enteras y calcule e imprima su producto y su suma. • Análisis del problema: Datos de Entrada: iNum1, iNum2, iNum3, iNum4 Datos de Salida: iProd, iSum
  • 34. Escribir(iProd, iSum) Diagrama de Flujo 34 Inicio iProd = iNum1 * iNum2 * iNum3 * iNum4 iSum = iNum1 + iNum2 + iNum3 + iNum4 Fin Leer (iNum1, iNum2, iNum3, iNum4) Escribir(“Dame 4 numeros”)
  • 35. El aprendizaje es experiencia, todo lo demás es información. Albert Einstein 35 Frase