Un algoritmo es una secuencia no ambigua, finita
y ordenada de instrucciones que han de seguirse para resolver un problema. Un
programa normalmente implementa (traduce a un lenguaje de programación
concreto) uno o más algoritmos. Un algoritmo puede expresarse de distintas
maneras: en forma gráfica, como un diagrama de flujo, en forma de código como en pseudocódigo o un lenguaje de programación, en forma explicativa,
etc.
Los programas suelen subdividirse en
partes menores, llamadas módulos, de modo que la complejidad algorítmica de
cada una de las partes sea menor que la del programa completo, lo cual ayuda al
desarrollo del programa. Esta es una práctica muy utilizada y se conoce como
"refino progresivo".
Según Niklaus Wirth, un programa
está formado por los algoritmos y la estructura de datos.
Se han propuesto diversas técnicas
de programación cuyo objetivo es mejorar tanto el proceso de creación de software como su mantenimiento. Entre ellas, se pueden
mencionar las siguientes:
§ Programación
estructurada
§ Programación modular
§ Programación
orientada a objetos (POO)
§ Programación
declarativa