Por Rui Oliveira para o Pplware
Actualmente são muitas as linguagens de programação ao dispor dos programadores e curiosos pela “arte” de programar. O desenvolvimento de aplicações está hoje em dia direcionado para a Web e para os dispositivos móveis mas há ainda muito a fazer no que diz respeito à integração de sistemas. Depois de iniciarmos a nossa rubrica sobre a linguagem de programação Python, hoje iremos começar a explicar alguns elementos/sintaxe que fazem parte desta.
Na rubrica de hoje: Ciclos e decisões.
Hoje vamos falar de mais capacidades básicas da programação: A capacidade de repetir uma operação várias vezes e a capacidade de tomar uma decisão baseada nas mudanças das condições dos dados apresentados ao programa.
numero=float(input(“Introduza um número”))
if = is_prime==True:
print(“O número é primo”)
else:
print(“O número não é primo”)
Para isso hoje vamos apresentar os ciclos while e for do Python (aproveitando para mencionar a função range(k,i,j)) e os elementos if, elif e else.
Começando por estes últimos:
If, elif, else:
Quando fazemos um programa há recorrentemente a necessidade de mudar o comportamento do programa consoante os dados introduzidos. Considere-se o seguinte problema: dada uma função is_prime(n) que retorna True se n for um número primo ou False caso contrário, queremos que o nosso programa nos pergunte por um número e nos diga se ele é primo ou não. Isso pode ser feito com recurso ao seguinte programa:
Com este pequeno programa se percebe o uso básico do if e do else. O if serve para verificar se uma determinada comparação é verificada e executar algum código nesse caso. O código associado ao else é executado caso a comparação em if não se verifique.
Agora subindo a fasquia: a função is_prime(n) foi modificada e caso o número introduzido não for passível de ser avaliado como primo (isto é se for introduzido um 0, um número negativo ou um número decimal) a função retorna o valor None. Isto leva a que a função possa retornar tanto True, False ou None. Como podemos agora fazer com o que programa escolha o print correcto para cada retorno da função? Existem várias respostas. A mais simples é recorrendo ao elif:
numero=float(input(“Introduza um número”))
if = is_prime==None:
print(“O número não pode ser avaliado como primo ou não-primo”)
elif is_prime==False:
print(“O número não é primo”)
else:
print(“O número é primo”)
O número de elif que podem estar presentes num if-statement (nome dado ao bloco de instruções if+elif+else) é ilimitado, tal como é o número de if. A diferença entre usar um if, vários elif e um else ou usar vários if e um else é que no primeiro caso só é executado o primeiro a ter uma comparação verdadeira, enquando que numa série de if, todos o que forem verdadeiros são executados.
Ciclo for e função range(j,k,l):
O ciclo for é das maneiras mais simples em Python de repetir uma instrução n vezes. Isto leva a função incluída no Python range(j,k,l). Pedindo “ajuda” ao Python sobre o assunto:
>>> help(range)
Help on class range in module builtins:
class range(object)
| range(stop) -> range object
| range(start, stop[, step]) -> range object
|
| Returns a virtual sequence of numbers from start to stop by step.
Os objectos desta função podem ser equiparados a listas. Por exemplo:
Portanto vamos supor que queremos avaliar quais dos números entre 1 e 10 são primos. Podemos faze-lo com o seguinte código (só corre em Python 3.x):
for number in range(1,11): #Note-se que para termos todos os números de 1 a 10 o limite superior da função range tem de ser 11
if is_prime(number)==True:
print("O número %s é primo" % (number))
else:
print("O número %s não é primo" % (number))
Que é equivalente a este:
for number in [1,2,3,4,5,6,7,8,9,10]:
if is_prime(number)==True:
print("O número %s é primo" % (number))
else:
print("O número %s não é primo" % (number))
Ciclos while:
Os ciclos while são mais rudimentares que os ciclos for. Os ciclos while exigem uma sintaxe mais complexa.
A sintaxe básica de um ciclos while pode ser verificada no exemplo que se segue, que não é mais que todo o problema anterior reescrito para usar um ciclo while em vez de for.
num=1 #Inicialização da variavél de contagem
while num<=10:
if is_prime(num)==True:
print("O número %s é primo" % (num))
else:
print("O número %s não é primo" % (num))
num+=1 #Atualização da variavél de contagem - equivalente a escrever num+=1
As restantes potencialidades destes ciclos podem e devem ser exploradas pelos leitores, pois não há nada melhor para aprender do que experimentar.