Programación estruturada
Durante as primeiras décadas de existencia da programación de ordenadores, era habitual que os programadores estiveran máis preocupados por conseguir unha solución viable e funcional que por lograr o que o hoxe chamaríamos calidade no software.
A solución de problemas mediante programas abordábase como un proceso no que o programador ía encadeando as instrucións que o achegaban a un resultado válido, sen poñer esforzo algún en que o código resultante fose doado de entender e modificar.
E mentres os problemas a resolver foron de escasa complexidade, esta aproximación funcionou. Pero coas continuas mellorar do hardware e a estensión do software a todo tipo de ámbitos, fíxose preciso elaborar novas formas de traballo para superar as dificultades de xestionar código cada vez máis complexo.
A programación estruturada é un xeito de abordar a creación de programas imperativos tratando de reducir a complexidade do proceso para facelo máis eficaz e menos propenso a erros. A idea, proposta inicialmente por dous matemáticos ([Corrado Bohm e Guiseppe Jacopini][1]), consiste en que calquera programa de ordenador pode ser construído utilizando unicamente tres tipos de estruturas ou bloques: a secuencia, a decisión e os bucles. Calquera programa poderase dividir en subrutinas ou módulos compostos deses elementos básicos, mantendo así unha organización clara. Desaconséllase ademais o uso de variables globais para recomendar a utilización de variables locais a cada un dos bloques, sempre que sexa posible.
As avantaxes desta aproximación poderían resumirse en que:
- Redúcese a complexidade de cada un dos problemas a resolver.
- Prodúcese un fluxo de control claro, doado de entender.
- Mellórase a productividade ao permitir a diferentes programadores colaborar en diferentes partes do mesmo proxecto.
- Os módulos producidos poderanse reutilizar no mesmo ou en distintos proxectos, aforrando tempo, reducindo a complexidade e incrementando a fiabilidade.
- Facilítase a corrección ou adaptación do software ao ser posible substituir módulos individuais en vez de ter que modificar grandes cantidades de código.
- Elimínanse os saltos arbitrarios no fluxo do programa, que fan máis difícil de manipular o código.