# Fundamentos de programación/Programas

* Lección 2
* Programas
Los algoritmos son secuencias de pasos para resolver un problema pero su naturaleza es puramente conceptual y las computadoras no son capaces de ejecutarlos directamente. Para poder ejecutarlos y resolver el problema deseado es necesario expresarlos como un conjunto unitario y ordenado de instrucciones que el ordenador comprenda y que le permitan realizar las diversas funciones deseadas. Este conjunto de instrucciones se llama programa, el proceso de planificación y creación de los programas se llama programación y las personas que lo realizan se denominan programadores.
Los programas más sencillos son una lista de instrucciones que se ejecutan en secuencia:
Las instrucciones se distinguen unas de otras mediante un separador que depende del lenguaje de programación que estemos utilizando. En el pseudocódigo usado en este proyecto de aprendizaje se separaran las instrucciones usando un cambio de línea (al igual que en el ejemplo anterior).
Generalmente los programas terminan cuando la ejecución llega a la última instrucción del programa pero algunos lenguajes de programación tienen instrucciones especiales que terminan la ejecución de un programa de forma inmediata, incluso si hay más instrucciones después de ellas. En el siguiente ejemplo el computador ejecuta las instrucciones número 1 y número 2. Al llegar a la tercera línea, la instrucción terminar finaliza la ejecución y las instrucciones número 3 y número 4 no se ejecutan.

### Ciclo de vida

El periodo de tiempo desde la concepción de un programa hasta su eventual retirada porque ya no es necesario o porque ha sido reemplazado con uno mejor se llama ciclo de vida. Este inicia con el desarrollo de la idea inicial, escritura y revisión de un programa, continúa con las correcciones y mejoras que se hacen durante los años para adaptarlo a las nuevas necesidades de los usuarios y para aprovechar los nuevos desarrollos en la tecnología de las computadoras y finaliza con su retiro cuando ya no es necesario o útil.
Las actividades que llevan a cabo durante ese ciclo dependen del tamaño del programa y de las técnicas de desarrollo de programas escogidas para controlar el proceso. Sin embargo, generalmente incluyen las siguientes fases:
* Análisis: En esta etapa se decide exactamente que es lo que debe hacer el programa. Consiste en analizar con los usuarios qué necesitan que haga el programa y documentarlo de forma clara y sin ambigüedades.
* Diseño: Durante el diseño de un programa se decide cómo se implementarán los requisitos de los usuarios que fueron documentados durante el análisis. Durante esta fase se identifican los algoritmos que resolverán el problema o ejecutarán la tarea deseada.
* Implementación o codificación: Durante esta etapa se crea el programa propiamente dicho y consiste en expresar los algoritmos desarrollados durante el diseño en un lenguaje que la computadora sea capaz de entender y ejecutar.
* Depuración: El programa se ejecuta y comprueba rigurosamente para eliminar todos los errores que se pueden haber introducido durante la implementación para garantizar que funciona correctamente.
* Mantenimiento: El mantenimiento consiste en la identificación e implementación de cambios a los programas para eliminar defectos y problemas identificados durante su uso o para ajustarlo a las necesidades cambiantes de los usuarios.

### Características de un buen programa

Al igual que existen muchas formas diferentes de resolver un problema, existen muchos programas de computador diferentes para realizar una misma tarea. Algunos de estos programas son buenos y otros son malos. Un programa es bueno o de calidad si satisface las necesidades que los usuarios le han expresado explícitamente al programador. Estas necesidades incluyen, además de la descripción de la tarea a ejecutar, comportamientos que el programa debe exhibir durante su ejecución y características deseadas de la estructura y organización interna del programa y de la documentación asociada.
Entre las características más comunes que debe exhibir un programa para ser considerado bueno o de calidad están las siguientes:
* Exactitud o corrección: El programa realiza correctamente y las tareas definidas por su especificación y satisface los objetivos de los usuarios. Un programa exacto regresa el resultado correcto del cálculo que realiza o realiza la tarea requerida de la forma esperada.
* Eficiencia: El programa hace un uso adecuado y no malgasta los recursos de la computadora, como la memoria y el tiempo de procesamiento. Un programa eficiente completará la tarea con mayor rapidez con respecto a otro programa que no lo es.
* Usabilidad: El programa es fácil de usar si las personas a las que está destinado pueden usarlo para realizar sus tareas de forma cómoda y sin esfuerzos innecesarios.
* Mantenibilidad: El código fuente del programa permite localizar y corregir defectos rápidamente así como hacerle cambios fácilmente para adaptarlo a las necesidades cambiantes de los usuarios.
* Fiabilidad: Un programa es fiable si realiza sus tareas cuando es necesario y con la precisión requerida.

### Documentación

Un elemento fundamental de los programas para facilitar su mantenibilidad es su documentación. Esta puede ser externa y consistir en documentos que describen en lenguaje natural la funcionalidad del programa o ser interna y tomar la forma de comentarios en el código. Los comentarios son secciones del código marcadas de forma especial para que el compilador las ignore, ya que están pensadas para que las lean las personas. Son importantes para que los programadores que deben modificar un programa el funcionamiento del programa y las intenciones programador original.
Uno de los medios usados en diversos lenguajes de programación para especificar comentarios y que se usará en este proyecto de aprendizaje consiste en precederlos de dos barras inclinadas. Los compiladores que reconocen ese formato de comentarios ignorarán todo el texto a la derecha de las barras, ya sea que se encuentren al inicio de una línea o al final de una instrucción.

## Resumen de la lección

* Un programa es una expresión de un algoritmo en términos que una computadora es capaz de entender y ejecutar.
* El ciclo de vida de un programa incluye su concepción, su creación, su mantenimiento y su retiro.
* Las fases más comunes del ciclo de vida de los programas son el análisis, el diseño, la implementación, la depuración y el mantenimiento.
* Un programa es de calidad si satisface las necesidades que sus usuarios han expresado explícitamente.
* Entre otras características, los programas de calidad son exactos, eficientes, fáciles de usar, fáciles de mantener y fiables.

## Términos clave

* Calidad
* Programa
* Programación
* Programador

## Lecturas adicionales

* Conceptos básicos de ingeniería de software

## Bibliografía

* 1 2 3 4 5 6 Joyanes Aguilar, Luis (2013). Fundamentos generales de programación (1.ª edición). Ciudad de México, México: McGraw Hill. p. 368. ISBN 978-607-15-0818-8.
* ↑ Brookshear, J. Glenn (2012). Computer Science: An overview [Introducción a la computación] (11.ª edición). Madrid, España: Pearson Educación, S. A. p. 704. ISBN 978-84-78-29139-7.
* ↑ Real Academia Española. Diccionario de la lengua española. 23ª ed., Madrid, España: Real Academia Española 2014, 2312p.
* 1 2 3 4 5 6 7 Joyanes Aguilar, Luis; Zahonero Martinez, Ignacio (1998). Estructura de datos. Algoritmos, abstracción y objetos. (1.ª edición). Madrid, España: McGraw Hill. p. 857. ISBN 84-481-2042-6.
* 1 2 3 4 Frank, Barbara; Marriott, Phil; Warzusen, Chett (2002). The Software Quality Engineer Primer (en inglés) (3.ª edición). Indiana, Estados Unidos: Quality Council of Indiana. OCLC 51070655.
* 1 2 3 4 5 Sommerville, Ian (2002). Software Engineering [Ingeniería de software] (6.ª edición). México: Pearson Educación. p. 692. ISBN 970-26-0206-8.
* Proyecto: Fundamentos de programación
* Anterior: Evaluación de la lección 1 — Programas — Siguiente: Evaluación de la lección 2