FUNDAMENTOS DE PROGRAMACION

Plan your website and create the next important tasks for get your project rolling

Get Started. It's Free
or sign up with your email address
Rocket clouds
FUNDAMENTOS DE PROGRAMACION by Mind Map: FUNDAMENTOS DE PROGRAMACION

1. Métodos formales de verificación de programas

1.1. Vamos a considerar dos Conceptos clave, asernos (afirmaciones) y precondiciones / postcondiciones invariantes que ayuden un documentar, Corregir y clarificar el diseño de módulos y de Programas.

1.1.1. Aserciones  Una parte importante de una verificación formal es la documentación de un programa a través de asertos o afirmaciones Un aserto se escribe como un comentario y describe lo que se supone sea verdadero sobre las variables del programa en ese punto

1.1.2. Precondiciones y postcondiciones Las precondiciones y postcondiciones son afirmaciones sencillas sobre condiciones al principio y al final de los módulos. 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. Unapostcondición de un procedimiento puede ser una afirmación lógica que describe el cambio en el estado delprograma producido por la ejecución del procedimiento; la postcondición describe el efecto de llamar al procedimiento. En otras palabras, la postcondición indica que sera verdadera después que se ejecute el procedimiento

2. Diagrama de nassi-scheniderman (N-S)

2.1. También conocido como diagrama de Chapin 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 sucesivas y, como en los diagramas de flujo, se pueden escribir diferentes acciones en una caja.

3. Programación modular

3.1. La programación modular es uno de los métodos de diseño más flexible y potentes para mejorar la productividad de un programa

3.1.1. En programación modular el Programa se divide en módulos y  cada uno de estos módulos se analizan, codifican y ponen a punto por separado

3.2. Cada programa contiene un módulo denominado progruma principul que controla todo lo que sucede; se transfiere el control a submódulos de modo que ellos puedan ejecutar sus funciones; sin embargo, cada submódulo devuelve el control al módulo principal cuando se haya completado su tarea. Si la tarea asignada a cada submódulo es demasiado compleja, éste deberá romperse en otros módulos más pequeños

3.3. Un módulo puede transferir temporalmente (hifurcur) el control a otro módulo; sin embargo, cada módulo debe eventualmente devolver el control al módulo del cual se recibe originalmente el control.

3.4. Los módulos son independientes en el sentido en que ningún módulo puede tener acceso directo a cualquier otro módulo excepto el módulo al que llama y sus propios submódulos. Sin embargo, los resultados producidos por un módulo pueden ser utilizados por cualquier otro módulo cuando se transfiera a ellos el control

3.4.1. Dado Que los módulos hijo Independientes, Diferentes Programadores pueden Trabajar simultaneamente en Diferentes contradictorio del Mismo Programa. Esto! Reducira El tiempo del diseño del algoritmo y posterior Codificación del Programa. : Además, la ONU módulo Se Puede Modificar radicalmente sin afectar a módulos Otros, sin INCLUIDO Alterar su director función f.

3.4.2. La Descomposición de las Naciones Unidas Programa en módulos Independientes Más simples se conoce también Como el Método de «dividir y Vencerás» (divide y vencerás)

4. El ciclo de vida del software

4.1. Existen dos niveles en la construcción de programas: aquéllos relativos a pequeños programas y aquellos que se refieren a sistemas de desarrollo de programas grandes y que, generalmente, requieren un equipo de programadores en lugar de personas individuales. El primer nivel se denomina programación a pequeña escala; el segundo nivel se denomina programación a gran escala.

4.1.1. La Programación en Pequeña Escala se preocupa de los Conceptos que Ayudan a crear de pequeños Programas En estos programas se suele requerir claridad y precisión mental y técnica.

4.2. El desarrollo de un buen sistema de software se realiza durante el ciclo de vida que es el período de tiempo que se extiende desde la concepción inicial del sistema hasta su eventual retirada de la comercialización o uso del mismo. Las actividades humanas relacionadas con el ciclo de vida implican procesos tales como análisis de requisitos, diseño, implementación, codificación, pruebas, verificación, documentación, mantenimiento y evolución del sistema y obsolescencia. En esencia el ciclo de vida del software comienza con una idea inicial, incluye la escritura y depuración de programas, y continúa durante años con correcciones y mejoras al software original

5. Programacion estructurada

5.1. 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 módulo se codifica utilizando las tres estructuras de control básicas: secuencia, selección y repetición.

5.1.1. Si està familiarizado con lenguajes de Como BASIC, Pascal, FORTRAN o C, la programación cuándo estructurada SIGNIFICA también progrumación pecado GOTO

5.2. El término programación estructurada se refiere a un conjunto de técnicasx estas técnicas aumentan considerablemente la productividad del programa reduciendo en elevado grado el tiempo requerido para escribir, verificar, Los programas deben estar dotados de una estructura. depurar y mantener los programas.Los programas deben estar dotados de una estructura.

5.2.1. *Recursos abstractos, *Diseño descendente (top-down), *Etructuras Básicas.

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

5.2.1.2. Diseño descendente es el proceso mediante el cual un problema se descompone en una serie de niveles o pasos sucesivos de refinamiento 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?

5.2.1.3. Estructuras basicas. son métodos de especificar el orden en que las instrucciones de un algoritmo se ejecutarán.  El orden de ejecución de las sentencias (lenguaje) o instrucciones determinan el flujo de control Las tres estructuras de control básico son:  *secuencia    *selección   *repetición

6. Fases en la resolución de problemas.

6.1. El proceso en una computadora, conduce a la escritura de un programa y a su ejecucion en la misma

6.2. Las fases de resolución de un problema con computadora son: Análisis del problema, diseño del algoritmo, codificación. Compilación y ejecución, verificación depuración, mantenimiento., documentación.

6.3. Las dos primeras fases conducen a un diseño detallado escrito en forma de algoritmo. Durante la tercera etapa (cod$cación) se implementa’ el algoritmo en un código escrito en un lenguaje de programación, reflejando las ideas desarrolladas en las fases de análisis y diseño. La fase de compilación y ejecución traduce y ejecuta el programa. En las fases de verijicación y depuración el programador busca errores de las etapas anteriores y los elimina. Comprobará que mientras más tiempo se gaste en la fase de análisis y diseño, menos se gastará en la depuración del programa. Por último, se debe realizar la documentación del programa

6.3.1. Características de un algoritmo *preciso (indicar el orden de realización en cada paso), *definido (si se sigue dos veces, obtiene el mismo resultado cada vez), *finito (tiene fin; un número determinado de pasos).

6.4. Un algoritmo debe producir un resultado en un tiempo finito. Los métodos que utilizan algoritmos se denominan métodos algorítmicos, en oposición a los métodos que implican algún juicio o interpretación que se denominan métodos heurísticos. Los métodos algorítmicos se pueden implementar en computadoras; sin embargo, los procesos heurísticos no han sido convertidos fácilmente en las computadoras. En los últimos años las técnicas de inteligencia artificial han hecho posible la implementacicín del proceso heurístico en computadoras

6.5. Ejemplos de algoritmos.

6.5.1. *Instrucciones para montar en una bicicleta *Hacer una receta de cocina  *obtener el máximo común divisor de dos números Etc.

7. Representación gráfica de los algoritmos

7.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

7.2. Los métodos usuales para representar un algoritmo son: 1. diagrama de flujo, 2. diagrama N-S (Nassi-Schneiderman), 3. lenguaje de especificación de algoritmos: pLseudoccídigo, 4. lenguaje esparlol, inglés ... 5. ~ fórmulas .

7.2.1. Los métodos 4 y 5 no suelen ser fáciles de transformar en programas. Una descripción en español narrativo no es satisfactoria, ya que es demasiado prolija y generalmente ambigua. Una fórmula, sin embargo, es buen sistema de representación. Por ejemplo, las fórmulas para la solución de una ecuación cuadrática es un medio sucinto de expresar el procedimiento algorítmico que se debe ejecutar para obtener las raíces de dicha ecuación.

7.2.1.1. XI = (- b + m) / 2ax2 = (- b - <b '- 4ac) / 2a y significa lo siguiente: 1. Eleve al cuadrado b. 2. Toma a; multiplicar por c; multiplicar por 4. 3. Restar el resultado obtenido de 2 del resultado de I, etc.   Sin embargo, no es frecuente que un algoritmo pueda ser expresado por medio de una simple fórmula.

8. Factores en la calidad del software

8.1. La construcción de software requiere el cumplimiento de numerosas características. Entre ellas se destacan las siguientes:

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

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

8.1.3. Verificabilidad 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.

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

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

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

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

8.1.8. Extensibilidad Facilidad que tienen los productos de adaptarse a cambios en su especificación. Existen dos principios fundamentales para conseguir esta característica: O diseño simple; descentralización.

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

8.1.10. Compatibilidad Facilidad de los productos para ser combinados con otros.