1. Resolución de problemas
1.1. Analisis del problema
1.1.1. ¿Qué debe hacer el programa?
1.1.2. Resultado o solucion deseada.
1.2. Diseño de algoritmo
1.2.1. Dividir el problema (refinamiento sucesivo).
1.3. Codificación
1.3.1. Sustituir las palabras reservadas en español por sus homonimos en ingles.
1.3.2. "Operaciones/instrucciones" expresarlas en el lenguaje de pregramación correspondiente.
1.4. Compilación y ejecución
1.4.1. Introducir el algoritmo (convertido en programa fuente) en memoria mediante el teclado y posteriomente almacenarlo en un disco.
1.4.2. El programa fuente debe ser convertido en lenguaje maquina.
1.4.3. Errores de ejecucion
1.4.3.1. Error de compilacion
1.4.3.2. Error de ejecucion
1.4.3.3. Errores logicos
1.5. Verificación
1.5.1. Proceso de ejecucion del programa con un amplia variedad de datos de entrada llamados "datos de test" o "prueba"
1.6. Depuración
1.6.1. Proceso de encontrar los errores del programa y corregir o eliminar dichos errores
1.7. Mantenimiento
1.8. Documentación
1.8.1. Descripción de los pasos a seguir en el proceso de resolución
1.8.2. Interna
1.8.2.1. Es la contenida en linea de comentarios
1.8.3. Externa
1.8.3.1. Incluye analisis, diagramas de flujo y pseudocódigos
2. Definición del problema
2.1. ¿Qué entradas se refiere? (tipo y cantidad)
2.2. ¿Cuál es la salida deseada? (tipo y cantidad)
2.3. ¿Qué metodo produce la salida deseada?
3. Algoritmo
3.1. Un algoritmo es un método para resolver un problema mediante una serie de pasos que deben ser
3.1.1. Precisos
3.1.2. Definidos
3.1.3. Finitos
3.2. Los metodos que utilizan algoritmos se denominan metodos algoritmicos
3.3. Se pueden expresar por
3.3.1. Formulas
3.3.2. Diagramas de flujo
3.3.2.1. Representación grafica de un algoritmo
3.3.2.2. Es una de las tecnicas mas antigua y a la vez utilizada
3.3.2.3. Es un diagrama que utiliza los simbolos (cajas) y que tiene los pasos de algoritmo escritos en esas cajas unidas por flechas que indican la seciencia en que deben utilizarse
3.3.3. Pseudocódigos
3.3.3.1. Un lenguaje de especificaciones de algoritmo
3.3.4. Diagrama N-S (Nassi Schneiderman)
3.3.4.1. Es como un diagrama de flujo donde se omiten las flechas de unión y las cajas son contiguas.
3.3.5. Lenguaje español Ingles
4. Software
4.1. Niveles en la construcción
4.1.1. Programacion a pequeña escala (Aquellos relativos a pequeños programas)
4.1.2. Programacion a gran escala (Proyectos de software)
5. Programación modular
5.1. Uno de los metodos mas flexible y potentes para mejorar la productividad de un programa.
5.2. Se divide en modulos.
5.2.1. Cada uno ejecuta una unica actividad o tarea.
5.2.2. Se codifican independiente mente de otros modulos.
5.2.3. Cada uno se analiza codifica y se pone a punto por separado.
6. Programación estructurada
6.1. Escribir un programa de acuerdo a las siguientes reglas
6.1.1. El programa tiene un diseño modular.
6.1.2. Los modulos son diseñados de modo decedente.
6.1.3. Cada modulo se codifica utilizando las tres estructuras de control básicas
6.1.3.1. Secuencia
6.1.3.2. Selección
6.1.3.3. Repetición
6.2. También significa "programación sin GOTO"
6.3. Conjunto de técnicas que an ido evolucionando desde los primeros trabajos de Edgar Dijkstra
6.4. Aumentan la productividad del programa
6.4.1. Reduciendo el tiempo requerido para
6.4.1.1. Escribir
6.4.1.2. Verificar
6.4.1.3. Depurar
6.4.1.4. Mantener
6.5. Conjunto de técnicas que incorporan
6.5.1. Recursos abstractos
6.5.1.1. Consiste en descomponer una determinada accion compleja en terminos de un numero de acciones mas simples capaces de ejecutarlas
6.5.2. Diseño decendente (top-down)
6.5.2.1. Proceso mediante el cual un problema se descompone jerarquicamente en una serie de niveles o pasos sucesivos de refinamiento(stepwise)
6.5.3. Estructuras básicas
7. Estructuras de control
7.1. Metodos de especificar el orden en que las instrucciones de un algoritmo se ejecutan
7.2. Tipos
7.2.1. Secuencia
7.2.2. Selección
7.2.3. Ejecución
7.3. Son fundamentales en
7.3.1. Diseños de programación
7.3.2. Diseños de algoritmos
7.3.3. Pseudocódigos
8. Teorema de la programacion estructurada.
8.1. Bohm y Jacopini
8.1.1. 1966
8.1.1.1. Demostraron que un programa propio puede ser escrito utilizando solamente tres tipos de estructuras de control.
8.1.1.1.1. Secuenciales
8.1.1.1.2. Selectivas
8.1.1.1.3. Repetitivas
8.2. Programa propio
8.2.1. Posee un solo punto de entrada y uno de salida o fin para el control del problema.
8.2.2. Existen caminos desde la entrada hasta la salida que se pueden seguir y que pasan por todas las partes del programa
8.2.3. Todas las instrucciones son ejecutables y no existen lazos o bucles infinitos
8.3. Significa
8.3.1. El programa completo tiene un diseño modular
8.3.2. Los modulos se diseñan con metodología descendente
8.3.3. Cada módulo se codifica usando las tres estructuras de control básico (ausencia total de sentencias GOTO)
8.3.4. Estructuracion y modularidad
9. Producción de un sistema se software
9.1. Análisis
9.1.1. Análisis de requisitos y especificaciones
9.1.1.1. Análisis y definición del problema
9.1.1.2. Especificación de requisitos
9.2. Diseño
9.2.1. Sistema pequeño
9.2.1.1. Tan sensillo como escribir un algoritmo en pseudocódigo
9.2.2. Sistema grande
9.2.2.1. Fase de diseño de algoritmos pero incluye el diseño e interaccion de un numero de algoritmos diferentes, con frecuencia solo bosquejados
9.3. Implementacion (Codificación)
9.3.1. Traduce los algoritmos del diseño en un programa escrito en un lenguaje de programación
9.4. Pruebas de integración
9.4.1. El programa completo se ensambla y se integra, sirve para mostrar que un programa es correcto
9.5. Verificación
9.5.1. Implica la construcción de pruebas matemáticas que ayudan a determinar que los programas hacen lo que se supone han de hacer
9.6. Mantenimiento
9.6.1. Es la correción de errores no detectados en la fase de pruebas
9.6.2. Otro aspecto es mejorar el software añadiendo más características o modificando