Fundamentos de la programacion

Comienza Ya. Es Gratis
ó regístrate con tu dirección de correo electrónico
Fundamentos de la programacion por Mind Map: Fundamentos de la programacion

1. Resolución de un problema

1.1. Análisis de problema

1.1.1. En la etapa de análisis del proceso de programación se determina qué hace el programa

1.1.1.1. ¿Que entradas se requieren?

1.1.1.2. ¿Cual es la salida deseada?

1.1.1.3. ¿Que método realiza la salida deseada?

1.2. Diseño de algoritmo

1.2.1. En la etapa de diseño se determina como hace el programa la tarea solicitada. en este proceso se llevan a cabo los siguientes pasos

1.2.1.1. 1. Programar un módulo.

1.2.1.2. 2. Comprobar el módulo.

1.2.1.3. 3. Si es necesario, depurar el módulo.

1.2.1.4. 4. Combinar el módulo con los módulos anteriores.

1.3. Herramientas de porgramacion

1.3.1. Las dos herramientas más utilizadas comúnmente para diseñar algoritmos son:

1.3.1.1. Diagrama de flujo

1.3.1.2. Pseudocódigos: es una herramienta de programación en la que las instrucciones se escriben en palabras similares al inglés o español, que facilitan tanto la escritura como la lectura de programas.

1.4. Codificación

1.4.1. Es la escritura en un lenguaje de programación de la representación del algoritmo desarrollada en las etapas precedentes

1.5. Compilación y ejecución

1.5.1. El lenguaje fuente debe ser convertido a lenguaje maquina,se ejecuta y comprueba que no haya errores de compilacion

1.6. Verificación y depuracion

1.6.1. Podría ser considerado una prueba ya que el programa se lleva a cabo y revisa para comprobar que no haya errores . Hay tres tipos de errores

1.6.1.1. Error de compilación o sintaxis

1.6.1.2. Error de ejecución

1.6.1.3. Error de logica

1.7. Documentación y mantenimiento

1.7.1. Documentacion: es la descripcion de la resolucion de un probelma. Puede ser interna o externa:

1.7.1.1. Interna

1.7.1.2. externa

1.7.2. Mantenimiento

1.7.2.1. Mantenimiento es cuando se desea cambiar posibles  errores futuros o cambiar el programa.

2. Programación modular

2.1. En programación modular el programa se divide en módulos (partes independientes), cada una de las cuales ejecuta una única actividad o tarea y se codifican independientemente de otros módulos.

2.1.1. Los módulos se dividen en  submódulo cada submodulo cumple una función pero  devuelve el control al módulo principal cuando se haya completado su tarea

3. Programación Estructurada

3.1. La programación estructurada es el conjunto de técnicas que incorporan:

3.1.1. Recurso abstracto

3.1.1.1. "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 capaces de ejecutarlas o que constituyan instrucciones de computadoras disponibles. "

3.1.2. Diseño descendente

3.1.2.1. El diseño descendente (top-down) es el proceso mediante el cual un problema se descompone en una serie de niveles o pasos sucesivos de refinamiento (stepwise).

3.1.3. Estructuras básicas

3.1.3.1. Las estructuras de control de un lenguaje de programación son métodos de especificar el orden en que las instrucciones de un algoritmo se ejecutarán.

3.1.3.1.1. Un programa se define como propio si cumple las siguientes características:

3.2. es un programa estructurado en base a las siguientes reglas:

3.2.1. El programa tiene un diseño modular

3.2.2. Los modulos son diseñados de modo descendnete

3.2.3. Cada modulo se codifica utilizando las tres estructuras basicas de control

3.2.3.1. Secuencia

3.2.3.2. Seleccion

3.2.3.3. Repeticion

4. Representación gráfica de los algoritmos

4.1. Para representar un algoritmo se debe utilizar algún método que permita independizar dicho algoritmo del lenguaje de programación elegido. Ello permitirá que un algoritmo pueda ser codificado indistintamente en cualquier lenguaje.Los métodos usuales para representar un algoritmo son:

4.1.1. Diagramas de flujo

4.1.1.1. Un diagrama de flujo es un diagrama que utiliza los símbolos (cajas) estándar y que tiene los pasos de algoritmo escritos en esas cajas unidas por flechas, denominadas líneas de flujo, que indican la secuencia en que se debe ejecutar.

4.1.2. Diagramas N-S (Nassi-Schneiderman)

4.1.3. pseudocodigo

4.1.4. Lenguaje español, ingles...

4.1.4.1. Una descripción en español narrativo no es satisfactoria, ya que es demasiado prolija y generalmente ambigua

4.1.5. Formulas

5. Factores de calidad del Software

5.1. La eficiencia de un software es su capacidad para hacer un buen uso de los recursos que manipula.

5.2. La transportabilidad o portabilidad es la facilidad con la que un software puede ser transportado sobre diferentes sistemas físicos o lógicos.

5.3. La verificabilidad -facilidad de verificación de un software- es su capacidad para soportar los procedimientos de validación y de aceptar juegos de test o ensayo de programas.

5.4. La integridad es la capacidad de un software a proteger sus propios componentes contra los procesos que no tenga el derecho de acceder

5.5. Un software es fácil de utilizar si se puede comunicar consigo de manera cómoda.

5.6. Corrección capacidad de los productos software de realizar exactamente las tareas definidas por su especificación.

5.7. Robustez capacidad de los productos software de funcionar incluso en situaciones anormales

5.8. Extensibilidad facilidad que tienen los productos de adaptarse a cambios en su especificación. Existen dos principios fundamentales para conseguir esta característica:

5.8.1. Diseño simple

5.8.2. Descentralización

5.9. Reutilización capacidad de los productos de ser reutilizados, en su totalidad o en parte, en nuevas aplicaciones.

5.10. Compatibilidad facilidad de los productos para ser combinados con otros.

6. Diagrama de Nassi-Schneiderman

6.1. Es como un diagrama de flujo en el que se omiten las flechas de unión y las cajas son contiguas. Las acciones sucesivas se escriben en cajas consecutivas y, como en los diagramas de flujo, se pueden escribir diferentes acciones en una caja. Un algoritmo se representa con un rectángulo en el que cada banda es una acción a realizar.

7. Métodos formales para la verificación de programas

7.1. Aserciones

7.1.1. Una parte importante de una verificación formal es la documentación de un programa a través de asertos o afirmaciones -sentencias lógicas acerca del programa que se declaran «verdaderas»-.

7.2. Precondiciones y postcondiciones

7.2.1. Una precondición de un procedimiento es una afirmación lógica sobre sus parámetros de entrada; se supone que es verdadera cuando se llama al procedimiento.

7.2.2. La postcondición indica que sera verdadera después que se ejecute el procedimiento.

7.3. Reglas para prueba de programas

7.3.1. Un medio útil para probar que un programa P hace lo que realmente ha de hacer es proporcionar aserciones que expresen las condiciones antes y después de que P sea ejecutada. En realidad las aserciones son como sentencias o declaraciones que pueden ser o bien verdaderas o bien falsas

7.4. lnvariantes de bucles

7.4.1. Una invariante de bucle es una condición que es verdadera antes y después de la ejecución de un bucle. Las invariantes de bucles se utilizan para demostrar la corrección (exactitud) de algoritmos iterativos. Utilizando invariantes, se pueden detectar errores antes de comenzar la codificación y por esa razón reducir tiempo de depuración y prueba.

7.5. Etapas a establecer la exactitud (corrección) de un programa

7.5.1. Se pueden utilizar invariantes para establecer la corrección de un algoritmo iterativo

7.5.1.1. 1. El invariante debe ser inicialmente verdadero, antes de que comience la ejecución por primera vez del bucle.

7.5.1.2. 2. Una ejecución del bucle debe mantener el invariante. Esto es si el invariante es verdadero antes de cualquier iteración del bucle, entonces se debe demostrar que es verdadero después de la iteración.

7.5.1.3. 3. El invariante debe capturar la exactitud del algoritmo. Esto es, debe demostrar que si el invariante es verdadero cuando termina el bucle, el algoritmo es correcto.

7.5.1.4. 4. El bucle debe terminar. Esto es, se debe demostrar que el bucle termina después de un número finito de iteraciones .

7.6. Programación segura contra fallos

7.6.1. Un programa es seguro contra fallos cuando se ejecuta razonablemente por cualquiera que lo utilice. Para conseguir este objetivo se han de comprobar los errores en datos de entrada y en la lógica del programa.