Programação estruturada e orientada a objectos
Em linguagens puramente imperativas, como Assembly, é muito fácil o programador criar códigos de difícil leitura, pois esse tipo de linguagem possui o que se chama de saltos (jumps) em sua estrutura. Estes saltos funcionam da seguinte forma: o programador define uma marcação (label) no código e depois, a partir de qualquer parte do programa, ele pode executar um desvio do fluxo de execução (salto) para aquela marcação. Pode ser que à primeira vista isso não tenha problema, contudo, na depuração do código, o programador fica em apuros com tantas marcações e saltos, pois isso dificulta o entendimento do fluxo de execução do programa.
Neste contexto, surge a programação estruturada, como uma forma de possibilitar que o programador tenha maior controle sobre sobre o fluxo de execução do programa. Para isso, segundo a Wikipédia, qualquer programa pode ser reduzido a 3 estruturas: 1. Estruturas de sequência: Onde as tarefa são executadas uma após a outra, linearmente. 2. Estruturas de decisão: Onde, a partir de um teste lógico, determinada parte do código é executada, ou não. 3. Estruturas de iteração: Onde, a partir de um teste lógico, determinada parte do código é repetida por um número finito ou infinito de vezes.
No código Python a seguir, podemos observar o emprego das três estruturas citadas acima. Nas linhas 1, 2 e 3 temos um exemplo de uma estrutura de sequência. Cada linha é executada uma após a outra, começando pela primeira. Entre as linhas 5 e 9, temos uma estrutura de decisão, exemplificada pelo comando if. Na linha 5 este comando executa um teste lógico. Caso o valor seja verdadeiro, as linhas 6 e 7 serão executadas. Caso contrário, o fluxo se desvia para a linha 8, que executará a linha 9. Nas linhas 6 e 7, temos uma estrutura de iteração. Na linha 6 está declarada a estrutura, que regula quantas vezes a linha 7 será executada.
1. print "Tabuada!" 2. a = int(raw_input("Entre com a tabuada que deseja