Programación Metodología para la solución de problemas MC. Claudia M. Rangel López
Introducción
Los seres humanos nos movemos por un motivo o una necesidad
Y para satisfacer la necesidad, realizamos una serie de acciones que en su conjunto nos llevarán a un fin.
• Herramientas
La computadora como herramienta
• Ahora bien, ¿cómo hacemos un programa?
Fases para la solución de problemas 1. Análisis. Se analiza el problema considerándose las especificaciones.
2. Diseño. Se diseña la solución: Algoritmo
3. Codificación. Se implementa en un lenguaje de programación: Programa fuente.
4. Compilación y ejecución. Se compila el programa fuente en un compilador: programa objeto. Si hay errores se arreglan. Una vez hecho esto, se ejecuta ( enlazando librerías necesarias) :programa ejecutable.
5. Verificación y depuración. Cuando se ejecuta un programa se pueden producir: Errores de compilación. No entiende la instrucción. Ej: Errores de sintaxis.
Errores de ejecución. La computadora entiende la instrucción pero no puede ejecutarla. Ej: División entre cero, raíces cuadradas negativas, …
Errores lógicos. Si se ejecutan, pero por lo regular son problemas del algoritmo. Son más difíciles de encontrar.
6. Documentación y mantenimiento Interna. En el programa como comentarios.
Externa. Diagramas de flujo, pseudocódigos, etc.
• Fases para la solución Problema
Programa Solución
Algoritmo
• El programador es antes que nada, una persona que resuelve problemas.
• Un algoritmo es un método o conjunto de reglas para resolver un problema.
• Los pasos para la resolución de un problema son:
1. Diseño del algoritmo, que describe la secuencia ordenada de pasos ( sin ambigüedades) que conducen a la solución de un problema dado.
2. Expresar el algoritmo como un programa de lenguaje de programación adecuado.
3. Ejecución y validación del programa por la computadora.
Características de los algoritmos
• Un algoritmo debe ser preciso e indicar el orden de realización de cada paso.
• Un algoritmo debe estar definido. Si se sigue el algoritmo dos veces, se debe obtener el mismo resultado cada vez.
• Un algoritmo debe ser finito. Debe tener un núm. Finito de pasos
Partes de un algoritmo
• Entrada
• Proceso
• Salida
Ejemplo: Cocinar pozole
• Entrada: ingredientes y utensilios empleados.
• Proceso: Elaboración de la receta en la cocina.
• Salida: Terminación del platillo.
Actividad en clase
• Diseñar un algoritmo para saber si un número es primo o no.
• Un número es primo si sólo puede dividirse por sí mismo y por la unidad.
Diseño de un algoritmo • Una computadora no tiene capacidad de solucionar
problemas. Sólo lo hace cuando se le proporcionan los pasos sucesivos a realizar: el algoritmo.
• Los problemas complejos se pueden resolver más eficazmente cuando se subdividen en subproblemas que sean más fáciles de resolver.
• Éste método se conoce como divide y vencerás. • Ej: Obtener la circunferencia y el área de un círculo.
Obtener circunferencia y área de un circulo
Entrada de datos
Cálculo de la circunferencia
(c )
Cálculo del área (a)
Salida de resultados
Entrada radio (r)
c= 2* pi * r a= pi * r ^2 Salida c Salida a
RAIZ MÓDULOS
Herramientas de programación
• Las dos herramientas más comunes para diseñar algoritmos son: diagramas de flujo y pseudocódigos.
• Un diagrama de flujo (flowchart) es una representación gráfica de un algoritmo o de una parte del mismo.
• La ventaja de utilizar un diagrama de flujo es que se le puede construir independientemente del lenguaje de programación, pues al momento de llevarlo a código se puede hacer en cualquier lenguaje.
• Se construyen utilizando ciertos símbolos de uso especial como son rectángulos, óvalos, pequeños círculos, etc.; estos símbolos están conectados entre sí por flechas conocidas como líneas de flujo.
Símbolos de los diagramas de flujo
Pseudocódigo
• Es una herramienta de programación en la que las instrucciones se escriben en palabras similares al ingles o español, facilitando la escritura como lectura de programas.
• En esencia, el pseudocódigo es como un lenguaje de especificaciones de algoritmos.
Ejemplo: de palabras reservadas:
Programación estructurada
La programación estructurada significa escribir un programa de acuerdo a las siguientes reglas:
• El programa tiene un diseño modular.
• Los módulos son diseñados de modo descendente.
• Cada modulo se codifica utilizando las tres estructuras de control básicas:
• Secuencial,
• alternativa y,
• repetitiva.
• La programación estructurada utiliza un número limitado de estructuras de control que minimizan la complejidad de los programas y por consiguiente reducen los errores.
La programación estructurada es el conjunto de técnicas que incorporan:
• Recursos abstractos.
• Diseño descendente (top – Down).
• Estructuras básicas de control.
Recursos abstractos
• Descomponer un programa en términos de recursos abstractos – según Dijkstra – consiste en descomponer una determinada acción compleja en términos de un número de acciones más simples.
Diseño descendente
• El diseño descendente es el proceso mediante el cual un problema se descompone en una serie de niveles o pasos sucesivos de refinamiento.
• La metodología descendente consiste en efectuar una relación entre las sucesivas etapas de estructuración, de modo que se relacionen unas con otras mediante entradas y salidas de información. Es decir, se descompone el problema en etapas o estructuras jerárquicas de forma que se puede considerar cada estructura desde dos puntos de vista: ¿Qué hace? Y ¿Cómo lo hace?.
Diseño descendente
• Si se considera un nivel n de refinamiento, las estructuras se consideran de la siguiente manera:
Diseño descendente
Estructuras básicas
• Cualquier programa con un solo punto de entrada y un solo punto de salida puede resolverse con tres tipos de estructuras básicas de control: Secuencial, alternativa y repetitiva.
Actividad en clase
• Ir al cine a ver LEGO.
Puedes utilizar:
si
si_no
mientras … hacer
repetir… hasta
Actividad en clase
• Hacer el diagrama de flujo del algoritmo que suma los pares del 2 al 1000.