Estructures de control: Condicionals

Els programes no solen limitar-se a llistes d’ordres que s’executen de manera seqüencial, sinó que hi sol haver parts que s’executen solament si es compleixen certes condicions o que ho fan de manera repetitiva. Veurem ara les estructures condicionals i les iteracions en Python.

Les sentencies condicionals serveixen per a alterar el flux d’execució d’un programa o, dit d’altra manera, per a fer que un determinat fragment del codi s’execute o no depenent de certes condicions. Dins d’aquestes estructures seran molt importants les variables de tipus booleà i els operadors lògics i relacionals, amb els quals podrem construir aquestes condicions.

if

L’estructura condicional més simple és if (de l’anglès si). Aquesta estructura es construeix escrivint if i a continuació la condició a avaluar seguida de dos punts ( : ). Les ordres que es troben dins de l’estructura if, és a dir, les que s’executaran solament si la condició és vertadera, estaran sagnades a la dreta amb quatre espais.

Molts editors de text insereixen espais quan es prem la tecla de tabulació. Podem aconseguir açò amb el gedit anant a Edita -> Preferències -> Editor, marcant la opció «Insereix espais en lloc de tabuladors» i establint l’amplada de la tabulació a «4».

A continuació tens un exemple d’utilització de l’estructura if:

nombre = 3
if nombre == 5:
    print('El nombre és igual a cinc.')
print('Adeu!')

Aquest programa imprimirà el primer missatge solament si la condició nombre == 5 és certa, el missatge d’acomiadament està fora de l’estructura if i es mostrarà sempre.

if … else

Observa el programa següent:

1nombre = 3
2if nombre == 5:
3    print('El nombre és igual a cinc.')
4if nombre != 5:
5    print('El nombre és diferent de cinc.')
6print('Adeu!')

En aquest cas s’executa una ordre en el cas que la condició siga vertadera, i altra si és falsa. Encara que aquesta manera d’escriure funciona introdueix una complexitat innecessària, ja que el condicional es pot construir d’una manera més simple utilitzant else:

1nombre = 3
2if nombre == 5:
3    print('El nombre és igual a cinc.')
4else:
5    print('El nombre és diferent de cinc.')
6print('Adeu!')

if … elif … else

En ocasions hi ha més de dos possibilitats, així que l’estructura if … else és insuficient. Observa l’exemple següent, en el qual un programa ens indica si el valor emmagatzemat en la variable nombre és major, menor o igual a cinc:

1nombre = 3
2if nombre < 5:
3    print('El nombre és menor que cinc.')
4else:
5    if nombre > 5:
6        print('El nombre és major que cinc.')
7    else:
8        print('El nombre és igual a cinc.')
9print('Adeu!')

Novament aquest programa funciona, però hi ha una forma més simple si utilitzem elif, que es pot interpretar com una abreviació de else if.

1nombre = 3
2if nombre < 5:
3    print('El nombre és menor que cinc.')
4elif nombre > 5:
5    print('El nombre és major que cinc.')
6else:
7    print('El nombre és igual a cinc.')
8print('Adeu!')

En aquest exemple hi ha solament un elif però poden haver tants com siga necessari. El codi que es troba dins del else només s’executa si totes les condicions anteriors resulten ser falses. Observa que quan s’executa una d’aquestes estructures i una condició resulta ser vertadera, s’executarà el seu codi i immediatament es sortirà del condicional de manera que les següents condicions i el else final ni tan sols es comprovaran. Observa l’exemple següent:

 1nombre = 3
 2if nombre < 5:
 3    print('El nombre és menor que cinc.')
 4elif nombre > 5:
 5    print('El nombre és major que cinc.')
 6elif nombre > 10:
 7    # Aquesta línia mai arribarà a imprimir-se.
 8    print('El nombre és major que deu.')
 9else:
10    print('El nombre és igual a cinc.')
11print('Adeu!')

Amb un programa com l’anterior el missatge «El nombre és major que deu.» no s’imprimirà mai, ja que qualsevol nombre que complisca aquesta condició també complirà l’anterior, de manera que mostrarà el missatge «El nombre és major que cinc.» i després sortirà del condicional i imprimirà el missatge «Adeu!».